Archive:Requêtes intégrées 1.0

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
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 dans laquelle les arguments &hellip; 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  . 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 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 :

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 Résultat :

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
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 :

Résultat :

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
Beaucoup de paramètres standards sont déjà disponibles pour configurer les résultats des requêtes intégrées. Ce sont :

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

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 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 :

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</tt> 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</tt> à "0". Par exemple, la requête affiche Résultat :.

Aucun résultat, rien n'apparaît
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</tt>, par exemple Résultat :

Tri des résultats
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 colonne de tri est déterminée par le paramètre sort</tt> et l'ordre avec le paramètre order</tt>. La valeur de order</tt> 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::+</tt>). Par exemple, la requête des villes triées par surface n'affiche que les villes ayant une valeur pour Property:Area :

Résultat :

Formats de sortie
Le paramètre format</tt> 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</tt>), à 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</tt>). Les formats suivants sont disponibles :

Utilisation de modèles
Dans une requête intégrée, lorsque  format=template </tt> ou  format=list </tt>, 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> … </tt> ou
 *  <ask format=list modèle=nom du modèle> … </ask </tt>.

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 à </tt> et les autres résultats se réfèrent en conséquence à </tt>, <tt></tt>, … 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 à <tt></tt> et les autres résultats se réfèrent par conséquent à <tt></tt>, <tt></tt>, … Si la page sélectionnée n'est pas elle-même normalement produite, <tt></tt> 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
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é <tt>architect of</tt>, vous devez encore annoter la page des constructions avec <tt>a pour architecte</tt> 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::

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é <tt>located in:=California</tt>. 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 | ]] ,

, ce qui donne
 * <tt>[ [location of:=<ask sep="| ]]location of:=">[[located in::California | ]]</tt>,

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
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>… dans laquelle les &hellip; 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 located in::Germany

À la différence de la fonction , 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> located in::Germany Population:*
 * 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.

Résultat :