Help:Requêtes intégrées

From HackerspaceWiki
Jump to: navigation, search

Manuel de l'utilisateur de SMW

Introduction

Naviguer et rechercher

Interfaces de navigation

Recherche sémantique

Éditer

Propriétés et types

Unités configurables

Modèles sémantiques

Requêtes intégrées

Service de lien

Web sémantique

Export OWL/RDF

Outils externes

Import de vocabulaire

Import d'ontologie

Semantic MediaWiki comporte un langage de requête de recherche sémantique qui permet aux utilisateurs de rechercher directement certaines informations du wiki. Les lecteurs qui ne souhaitent pas apprendre cette syntaxe de requête peuvent cependant en bénéficier : les requêtes intégrées insèrent directement les résultats des requêtes dans les pages. Ainsi, les requêtes créées par peu de rédacteurs peuvent être utiles à beaucoup de lecteurs.

Les requêtes intégrées sont similaires aux autres fonctions sémantiques et peuvent donc être inactivées sur certains sites pour y garantir des performances satisfaisantes. Parce que les requêtes intégrées utilisent les méchanismes de cache existants de MediaWiki, beaucoup des requêtes d'une page avec de tels contenus dynamiques peuvent cependant être exécutées sans impact sur les performances.

Introduction[edit]

On met une requête intégrée dans sur le texte wiki d'une page en utilisant la fonction d'analyse ask implémentée par Semantic MediaWiki. Comme les autres fonctions d'analyse des extensions, sa syntaxe se présente sous la forme

 {{#ask:argument 1 | argument 2 | … }}

dans laquelle les arguments … décrivent la requête.

(Notez que dans les versions de MediaWiki antérieures à 1.0, une autre syntaxe de requête intégrée existait, avec la balise <ask>. Elle fonctionne encore et est documentée à la fin de cette page.)

L'argument le plus important de la fonction #ask est la condition pour l'affichage, décrite dans la page d'aide sur la recherche sémantique. Par exemple, on peut écrire

{{#ask: [[Category:City]] [[located in::Germany]] }}

pour obtenir la liste de toutes les villes situées en Allemagne. À l'endroit où se trouve cette requête dans le texte wiki, une liste simple de tous les titre des pages correspondantes s'affichera à l'intérieur de la page.

Faisons le ici : Resultat : Amberg, Augsburg, Bamberg, Berlin, Bochum, Bonn, Braunschweig, Bremen, Chemnitz, Cologne, Darmstadt, Dortmund, Dresden, Duesseldorf, Duisburg, Erfurt, Erlangen, Essen, Flensburg, Frankfurt, Freiburg, Goettingen, Greifswald, Halle, Hamburg, Hannover, Hildesheim, Ingolstadt, Itzehoe, Jena, Kaiserslautern, Karlsruhe, Kassel, Kiel, Kleinmachnow, Kruft, Leipzig, Lübbenau, Lübeck, Magdeburg, Mannheim, Marburg, Munich, Neuss, Nuremberg, Oldenburg, Paderborn, Potsdam, Regensburg, Requêtes intégrées … further results

Remarquez que tous les arguments à la fonction #ask: sont ignorés par l'analyse des pages. En conséquence, l'exemple ci-dessus n'ajoute aucune catégorie ou annotation de la proprité « Situé en » à la page considérée.

Pour afficher d'autres propriétés de la page remplissant les conditions, ajoutez d'autres arguments sous la forme ?nom de la propriété, par exemple

{{#ask: [[Category:City]] [[located in::Germany]]
 | ?Population
}}
Résultat :
 Population
Amberg
Augsburg
Bamberg
Berlin
Bochum
Bonn
Braunschweig
Bremen
Chemnitz
Cologne
Darmstadt
Dortmund
Dresden
Duesseldorf
Duisburg
Erfurt
Erlangen
Essen
Flensburg
Frankfurt
Freiburg
Goettingen
Greifswald
Halle
Hamburg
Hannover
Hildesheim
Ingolstadt
Itzehoe
Jena
Kaiserslautern
Karlsruhe
Kassel
Kiel
Kleinmachnow
Kruft
Leipzig
Lübbenau
Lübeck
Magdeburg
Mannheim
Marburg
Munich
Neuss
Nuremberg
Oldenburg
Paderborn
Potsdam
Regensburg
Requêtes intégrées
… further results

}}

Notez certaines choses :

  • Nous utilisons le symbole barre verticale | pour séparer les conditions de la propriété à afficher ;
  • Les conditions d'affichage sont un argument simple à la fonction ask, c'est pourquoi il n'y a pas de symbole '|' entre elles ;
  • Comme vous pouvez le voir, vous pouvez ajoutez des espaces vides dans la fonction #ask, l'analyse est très flexible&nbps;;
  • Le format de l'affichage des résultats change lorsque vous demandez l'affichage de propriétés supplémentaires. SMW sélectionne par défaut le format approprié aux résultats de la requête, mais vous pouvez un large contrôle de l'apparence des résultats d'une requête.

Arguments des requêtes intégrées[edit]

En général, une requête intégrée est une requête pour trouver un nombre de de pages répondant à certaines conditions. Cette requête doit répondre à trois conditions :

  1. Quelles pages sont demandées ?
  2. Quelles informations sur ces pages doivent être affichées ?
  3. Comment doivent être formatés les résultats à l'intérieur de la page ?

Les deux premiers points font souvent partie de la requête et ont été exposés dans Help:Recherche sémantique. Le troisième point est important afin de pouvoir commodément incorporer les résultats de requêtes dans beaucoup de page. Dans l'exemple ci-dessus, nous pourrions vouloir une liste avec puces des pays avec la population de chacun d'eux imprimé entre parenthèses après leur nom. On peut y arriver en choisissat le format ol :

{{#ask:
[[Category:City]]
[[located in::Germany]]
|?Population
| format=ol
}}
Résultat :
  1. Amberg
  2. Augsburg
  3. Bamberg
  4. Berlin
  5. Bochum
  6. Bonn
  7. Braunschweig
  8. Bremen
  9. Chemnitz
  10. Cologne
  11. Darmstadt
  12. Dortmund
  13. Dresden
  14. Duesseldorf
  15. Duisburg
  16. Erfurt
  17. Erlangen
  18. Essen
  19. Flensburg
  20. Frankfurt
  21. Freiburg
  22. Goettingen
  23. Greifswald
  24. Halle
  25. Hamburg
  26. Hannover
  27. Hildesheim
  28. Ingolstadt
  29. Itzehoe
  30. Jena
  31. Kaiserslautern
  32. Karlsruhe
  33. Kassel
  34. Kiel
  35. Kleinmachnow
  36. Kruft
  37. Leipzig
  38. Lübbenau
  39. Lübeck
  40. Magdeburg
  41. Mannheim
  42. Marburg
  43. Munich
  44. Neuss
  45. Nuremberg
  46. Oldenburg
  47. Paderborn
  48. Potsdam
  49. Regensburg
  50. Requêtes intégrées
  51. … further results


Cette troisième étape est indépendante des deux autres et un grand nombre de formats de sortie sont possibles aux requêtes intégrées. En plus du format, les requêtes intégrées acceptent un grand nombre de paramètres, par exemple pour trier les résultats ou pour limiter le nombre de résultats.

Paramètres standards[edit]

Beaucoup de paramètres standards sont déjà disponibles pour configurer les résultats des requêtes intégrées. Ce sont :

Paramètre Valeurs possibles Description
limit nombre non négatif nombre maximal de page sélectionnées (dans le cas d'une table : rangées)
offset nombre à partir de quel chiffre démarrer
sort nom de la propriété nom de la propriété à utiliser pour trier les résultats
order ascending/asc, descending>/desc<tt>/<tt>reverse définit comment les résultats doivent être triés. Ne s'applique que si sort est utilisé. Le choix par défaut est ascending
headers show, hide affiche ou masque les en-têtes utilisées dans certains formats de sortie tels que table. hide est le choix par défaut
mainlabel texte plein titre de la première collone, celle contenant les titres des pages)
link aucune définit quel noms d'articles seront liés dans les résultats. all est le choix par défaut
default texte plein Si, pour une raison quelconque, la requête ne retourne aucun résultat, ceci sera affiché à la place
intro texte plein texte préliminaire qui précède la sortie, s'il y a des résultats
searchlabel texte plein texte pour continuer la recherche (par défaut« … autres résultats »)
debug true [seulement sur SMW≤0.6] retourne un rapport de débogage SQL au lieu des résultats de la requête
format nom de format (voir infra) format de sortie sélectionnée ; certains formats autorisent des paramètres supplémentaires (voir #Formats de sortie)

Limites des résultats et résultats supplémentaires[edit]

Vous pouvez fixer le paramètre limit pour restreindre le nombre maximal de résultats retournés. Par exemple, la requête

{{#ask:
	[[Category:City]]
	[[located in::Germany]]
	| limit=3
}}

affiche les trois plus grandes villes d'Allemagne. Même si vous n'assignez aucune valeur à limit, SMW applique toujours une limite semblable aux résultats d'une requête. Selon les réglages du site, il est être possible d'augmenter le nombre de résultats affichés en déterminant une valeur supérieure à limit. Cependant, il y a une limite maximale qui ne peut être franchie, établie par l'administrateur du site et basée sur des considérations de performances.

Lançons la requête ci-cessus; Résultat : Amberg, Augsburg, Bamberg … further results

Comme vous pouvez le constater, lorsqu'une requête n'affiche pas tous ses résultats en raison d'une limite, elle offrira souvent un lien vers d'« autres résultats ». Le texte de ce lien peut être modifié grâce au paramètre searchlabel. Si la valeur de searchlabel est "", alors aucun lien vers d'autres résultats n'apparaît. Certains formats de sortie (voir infra) n'affichent jamais le lien « autres résultats » ou ne l'affichent que si searchlabel a été configuré.

Une application de limit et searchlabel est de n'afficher que un lien vers les résultats d'une recherche sans afficher aucun résultat dans le corps du texte. Vous y parvenez en fixant limit à "0". Par exemple, la requête

{{#ask: [[Category:City]] | limit="0" | searchlabel=Cliquez pour parcourir un liste de villes}}

affiche Résultat : Adelaide, Albuquerque, Alexandria, Amberg, Amsterdam, Angers, Arnhem, Asheville, Atlanta, Augsburg, Austin, Baltimore, Bamberg, Bangalore, Bangkok, Bar Harbor, Barcelona, Bastogne, Bauru, Beijing, Beirut, Belfort, Berkeley, Berlin, Bern, Birmingham, Blois, Bochum, Bogota, Boise, Bonn, Bordeaux, Boston, Boulder, Bratislava, Braunschweig, Bremen, Brest, Brisbane, Brno, Brookings, SD, Brooklyn, Bruges, Brussels, Bucharest, Budapest, Buenos Aires, Buga, Calgary, Cambridge Cliquez pour parcourir un liste de villes.

Aucun résultat, rien n'apparaît[edit]

Si aucun article ne satisfait les conditions d'une requête, rien n'apparaît. Ceci peut être utile, mais plus souvent encore, une requête intégrée passe à côté de notations sémantiques sur le wiki et personne ne remarque que cette requête sur une page travaille pour ne rien afficher. Pour être sûr qu'une requête affiche toujours quelque chose, vous devriez assigner un texte au paramètre default, par exemple

{{#ask: [[Category:City]] [[Located in::Antarctica]]
	| intro=Tout sur les villes en Antarctique |?Population |?Localisation
	| default:Il semble ne pas y avoir de ville en Antarctique
}}
Résultat :
{{#ask: [[Category:City]] [[Located in::Antarctica]]
	| intro=Tout sur les villes en Antarctique |?Population |?Localisation
	| default:Il semble ne pas y avoir de ville en Antarctique
}}

Tri des résultats[edit]

Par défaut, les résultats d'une recherche sémantique sont en ordre alphabétique, croissant, de leurs titres de page. Le formulaire d'entrée Special:Ask comporte un champ supplémentaire d'entrée afin de spécifier une colonne de tri et l'alignement. Dans les requêtes intégrées, cette collone de tri est déterminée par le paramètre sort et l'ordre avec le paramètre order. La valeur de order peut être « ascending » ou « descendng » (ou les formes abrégées « asc » et « desc », ou « reverse »).

Trier par une propriété pose implicitement la condition que les pages doivent avoir une valeur pour cette propriété (une condition que vous pouvez également poser par [[Prop name::+]]). Par exemple, la requête des villes triées par surface n'affiche que les villes ayant une valeur pour Property:Area :

{{#ask:
	mainlabel=Villes triées par surface
	| [[Category:City]]
	| ?Population
	| sort=Area]]
}}
Résultat :
{{#ask:
	mainlabel=Villes triées par surface
	| [[Category:City]]
	| ?Population
	| sort=Area]]
}}

Formats de sortie[edit]

Le paramètre format détermine comment les résultats d'une requête sont affichés dans l'article. S'il est omis, toutes les requêtes dans un tableau (format table), à moins qu'il n'y ait qu'une seule colonne, auquel cas les résultats sont affichés dans une liste avec une virgule comme virgule (format list). Les formats suivants sont disponibles :

Format Description Paramètres supplémentaires
list Liste avec virgules comme séparateur avec les autres champs affichés entre parenthèses sep, templates
ol Liste ordonnée avec les autres champs affichés entre parenthèses sep, template
ul Liste à puces avec les champs supplémentaires affichés entre parenthèses sep, template
tableau affichage en tableau
broadtable Affichage en tableau, de la largeur de l'article
timeline Utilise les dates dans la sortie pour afficher un axe temporel timelinestart, timelineend, timelinesize (default "300px"), timelinebands, timelinestart (par défaut "middle")
eventline Non stable. Utilise les dates des sorties pour afficher un axe temporel comportant plus de deux dates par article timelineposition (par défaut "middle")
embedded Non stable. embarque les articles sélectionnés embedonly (si choisi, n'affiche pas l'article), embedformat (peut être ol, ul, h1, h2, …, h6)
template Non stable. Affiche les résultats en passant les champs des résultats comme paramètre à un modèle donné template (obligatoire)
count Seulement le nombre de résultats au lieu des résultats eux même
debug Informations de débogage pour analyser les problèmes dans les réponses aux requêtes
rss Affiche des liens RSS vers les résultats des requêtes rsstitle, rssdescription

Utilisation de modèles[edit]

Dans une requête intégrée, lorsque format=template ou format=list, les modèles peuvent être utilisés pour formater ce qui est retourné par une requête, en utilisant la syntaxe suivante :

<ask format=modèle modèle=nom du modèle> … </ask> ou
<ask format=list modèle=nom du modèle> … </ask.

Le modèle peut utiliser beaucoup d'arguments : ils se rapportent aux résultats qui seront produits par la requête intégrée pour chaque page sélectionnée (y compris la page elle-même si cela doit normalent être le cas) dans le même ordre. Ainsi, si la page sélectionnée est elle-même normalement produite, celle-ci se réfère à {{{1}}} et les autres résultats se réfèrent en conséquence à {{{2}}}, {{{3}}}, … Voir infra.

La fonction modèle ajoute une grande flexibilité dans la sortie de la requête, notamment :

  • Modifier l'ordre dans lequel les résultats seront afficher, ôter ou dupliquer des résultats ;
  • Afficher des images selon les résultats des requêtes ;
  • Créer des liens pour les attributs ;
  • Utiliser des styles CSS pour faire varier la taille des polices, l'alignement, la couleur d'arrière-plan, ec. dans chaque colonne des tableaux.

N.B.

  • Lorsque les résultats sont limités, le format du modèle ne sera pas reporté vers le lien de continuation.
  • Les fonctions d'analyse appliquées aux paramètres (par exemple pour le calcul et les embranchements).
  • Si les pages sélectionnées ont été normalement produites, la page sélectionnée se réfère elle-même à {{{1}}} et les autres résultats se réfèrent par conséquent à {{{2}}}, {{{3}}}, … Si la page sélectionnée n'est pas elle-même normalement produite, {{{1}}} se réfère au premier résultat sur la page. Ainsi, normalement, différents modèles de format sont nécessaires dans les deux cas. …

Utiliser une requête pour produire des informations[edit]

Lorsque l'on fait une requête sur une propriété, SMW ne recherche (actuellement) pas les popriétés inverses ou transitives. Les pages doivent à coup sûr contenir la propriété de la requête qui est faite. Par exemple, s'il y a des pages sur les architectes avec la propriété architect of, vous devez encore annoter la page des constructions avec a pour architecte pour faire apparaître la propriété inverse sur la page et dans les requêtes.

Si vous savez qu'il existe une annotation précise, vous pouvez utiliser la forme de la fonction dans l'annotation pour rechercher l'inverse. Par exemple, sur la page d'un bâtiment, vous pouvez ajouter

Son architecte est [[A pour architecte::{{#ask: [[Architecte de::{{PAGENAME}}]]|link=none}} ]]

S'il existe plus d'une propriété inverse, cela ne marchera pas. Par exemple, s'il y a plusieurs pages avec la propriété located in:=California. Cependant, on peut mettre une requête intégrée dans une page de brouillon, qui générera une liste de ces propriétés ayant l'apparence de texte wiki et la coller dans la page. Par exemple, écrivez

[ [location of:=<ask sep="| ]][[location of:=">[[located in::California]]</ask>| ]],

, ce qui donne

[ [location of:=<ask sep="| ]]California</ask>| ]],

et copiez le dans la page Germany (ôtez l'espace entre les deux premiers crochets après avoir collé ce texte).

Format de l'ancienne balise <ask>[edit]

Avant la version 1.0 de SMW, vous pouviez écrire des requêtes intégrées à l'intérieur d'une balise ask.

<ask paramètres>…</ask>

dans laquelle les … décrivent la requête.

Cette forme fonctionne encore, mais n'est plus recommandée.

La partie entre les deux balises ask peuvent être toute requête, comme décrite sur la page relative à la semantic search. Par exemple, on peut écrire

<ask>[[Category:City]] [[located in::Germany]]</ask>

À la différence de la fonction {{#ask:}},

  • vous spécifiez les propriétés supplémentaires à afficher en les mentionnant dans le format des annotations avec un astérisque à la place des conditions
  • vous spécifiez les paramètres supplémentaires dans la balise ask ouvrante.

Par exemple, pour afficher la liste de la population de ces villes, triées par population en ordre décroissant et limitée aux cinq plus grandes, on peut écrire,

<ask sort=Population order=desc limit=5>
	[[Category:City]] [[located in::Germany]]
	[[Population:*]]
</ask>

Résultat : <ask sort=Population order=desc limit=5> Germany Population:*</ask>

This documentation page applies to all SMW versions from 1.0RC3 to the most current version.
Other versions: "RC3" is not declared as a valid unit of measurement for this property.       Other languages: en, en"RC3" is not declared as a valid unit of measurement for this property.

Help:Inline queries fr 1.0RC3"RC3" is not declared as a valid unit of measurement for this property.

Personal tools