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 : Aalen, Amberg, Andernach, Ansbach, Aschaffenburg, Augsburg, Aurich, Backnang, Bad Oeynhausen, Bamberg, Bayreuth, Berlin, Bielefeld, Bochum, Bonn, Braunschweig, Bremen, Burghausen, Calw, Chemnitz, Coburg, Cologne, Cottbus, Darmstadt, Deggendorf, Dinslaken, Dortmund, Dresden, Duesseldorf, Duisburg, Ebersberg, Einbeck, Erfurt, Erlangen, Essen, Esslingen am Neckar, Flensburg, Frankfurt, Freiburg, Fürth, Georgsmarienhütte, Gera, Gerlingen, Gerolzhofen, Goettingen, Gotha, Greifswald, Halle, Hamburg, Hannover... 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
Aalen
Amberg
Andernach
Ansbach
Aschaffenburg
Augsburg
Aurich
Backnang
Bad Oeynhausen
Bamberg
Bayreuth
Berlin
Bielefeld
Bochum
Bonn
Braunschweig
Bremen
Burghausen
Calw
Chemnitz
Coburg
Cologne
Cottbus
Darmstadt
Deggendorf
Dinslaken
Dortmund
Dresden
Duesseldorf
Duisburg
Ebersberg
Einbeck
Erfurt
Erlangen
Essen
Esslingen am Neckar
Flensburg
Frankfurt
Freiburg
Fürth
Georgsmarienhütte
Gera
Gerlingen
Gerolzhofen
Goettingen
Gotha
Greifswald
Halle
Hamburg
Hannover
... 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. Aalen
  2. Amberg
  3. Andernach
  4. Ansbach
  5. Aschaffenburg
  6. Augsburg
  7. Aurich
  8. Backnang
  9. Bad Oeynhausen
  10. Bamberg
  11. Bayreuth
  12. Berlin
  13. Bielefeld
  14. Bochum
  15. Bonn
  16. Braunschweig
  17. Bremen
  18. Burghausen
  19. Calw
  20. Chemnitz
  21. Coburg
  22. Cologne
  23. Cottbus
  24. Darmstadt
  25. Deggendorf
  26. Dinslaken
  27. Dortmund
  28. Dresden
  29. Duesseldorf
  30. Duisburg
  31. Ebersberg
  32. Einbeck
  33. Erfurt
  34. Erlangen
  35. Essen
  36. Esslingen am Neckar
  37. Flensburg
  38. Frankfurt
  39. Freiburg
  40. Fürth
  41. Georgsmarienhütte
  42. Gera
  43. Gerlingen
  44. Gerolzhofen
  45. Goettingen
  46. Gotha
  47. Greifswald
  48. Halle
  49. Hamburg
  50. Hannover

... 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/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 : Aalen, Amberg, Andernach... 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 : 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="| ]]"">[[located in" contains a listed "[" character as part of the property label and has therefore been classified as invalid.</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" can not be assigned to a declared number type with value 1.       Other languages: en,_en"RC3" can not be assigned to a declared number type with value 1.

Help:Inline queries fr 1.0RC3"RC3" can not be assigned to a declared number type with value 1.