Help:Sélection des pages
La partie la plus importante des fonctions de recherche sémantique dans Semantic MediaWiki est un format simple pour la description de quelles pages doivent être affichées comme résultat de recherche. Les requêtes sélectionnent les pages wiki basées sur l'information qui a été spécifiée pour celles-ci en utilisant les Catégories, les Propriétés et peut-être d'autres fonctions MediaWiki comme l'espace de nom de la page. Les paragraphes suivants présentent les fonctions principales de requête dans SMW.
Catégories et valeurs de propriété
Dans l'exemple d'introduction, nous avons donné la condition simple [[Located in::Germany]] pour décrire quelles pages nous intéressaient. Le texte de balisage est exactement ce vous écririez autrement pour affirmer que des pages ont cette propriété et cette valeur. Mettre ceci dans une requête sémantique ordonne à SMW de vous afficher les pages concernées. Il s'agit d'un schéma général : La syntaxe pour demander les pages qui répondent à certaines conditions est exactement la syntaxe pour déclarer explicitement que cette condition tient.
Les requêtes qui suivent montrent ce que cela veut dire.
- [[Category:Actor]] donne toutes les pages de la catégorie directement ou indirectement (au moyen des sous-catégories, des sous-sous-catégories, etc.).
- [[born in::Boston]] donne toutes les pages annotées concernant quelqu'un qui est né à Boston.
- [[height::180cm]] donne toutes les pages annotées concernant quelqu'un qui mesure 180 cm.
En utilisant d'autres catégories ou propriétés que celles citées plus haut, nous pouvons déjà demander des pages qui possèdent certaines annotations. Combinons maintenant ces exigences :
[[Category:Actor]] [[born in::Boston]] [[height::180cm]]
demande tous ceux qui sont acteurs et nés à Boston et mesurant 180 cm. En d'autres termes : quand plusieurs conditions sont écrites dans une requête, le résultat est réduit aux pages qui satisfont à toutes les exigences. Ainsi, nous avons un ET logique. Au fait : les requêtes peuvent aussi comprendre des sauts de ligne afin de les rendre plus lisibles. On pourrait tout aussi bien écrire :
[[Category:Actor]] [[born in::Boston]] [[height::180cm]]
pour obtenir le même résultat que ci-dessus. Notez que les requêtes ne donnent que les articles qui répondent de manière positive à toutes les propriétés requises : s'il n'y a pas de propriété de taille renseignée pour un acteur, cet acteur ne sera pas sélectionné.
Quand on spécifie les valeurs de propriété, SMW ignorera en temps normal tous les espaces blancs de début et de fin ce qui veut dire que les deux conditions [[height::180cm]] et [[height:: 180cm ]] veulent dire exactement la même chose. Les types de données comme les nombres peuvent avoir des fonctions supplémentaires comme par exemple ignorer les virgules qui peuvent être utilisées pour séparer les milliers. SMW traitera aussi les noms de page synonymes comme étant les mêmes, de la même manière que MediaWiki considère Semantic wiki, Semantic_wiki et semantic wiki comme étant une seule et même page.
Si vous utilisez fréquemment des modèles comportant les mêmes conditions, vous pouvez créer un Concept comme de la sténo. Les concepts forment une espèce de catégorie virtuelle et peuvent ainsi être utilisés de la même manière que les conditions de catégorie.
Requêtes distance
Un cas particulier de la syntaxe peut être utilisé pour trouver toutes les pages avec une valeur du type Coordonnée géographique à une certaine distance d'un lieu donné, si l'on dispose de l'extension Semantic Maps installée - Voir la page de la requête distance dans la documentation Semantic Maps pour plus d'information.
Valeurs de propriété : jokers et comparateurs
Dans les exemples donnés plus haut, nous avons donné des conditions de propriété concrètes, utilisant comme valeurs de propriété « Boston » et « 180cm ». Dans bien des cas, on ne cherchera pas une seule valeur, mais une étendue de valeurs, comme par exemple tous les acteurs qui font plus de 180 cm. Dans certains cas, on peut même seulement rechercher toutes les pages qui n'ont aucune des valeurs pour une propriété donnée. Par exemple, les personnes décédées pourraient être ceux qui ont une valeur dans la propriété « date de décès ». De telles conditions générales sont possibles avec l'aide de comparateurs et de jokers.
Jokers
Les jokers sont écrits sous forme de « + » et autorise n'importe quelle valeur pour une condition donnée. Par exemple, [[born in::+]] renvoie toutes les pages qui ont une valeur entrée dans la propriété « born in » (né à en anglais).
Comparateurs
Les comparateurs sont des symboles spéciaux comme < ou >. Ils sont placés après :: dans les conditions de propriété.
- >> et << : « supérieur à » et « inférieur à » ;
- > et < : « supérieur ou égal à » et « inférieur ou égal à » par défaut, mais « supérieur à » et « inférieur à » dans le cas où $smwStrictComparators = true; ;
- ≥ et ≤ : « supérieur ou égal à » et « inférieur ou égal à » ;
- ! : « différent de » (« non égal à » ;
- ~ : « comme » comparaison pour champs ;
- !~: « non comme » comparaison pour champs.
Les comparateurs ne fonctionnent que pour les valeurs de propriété et non pour les conditions sur les catégories. Une installation wiki peut limiter la disponibilité des comparateurs, ceci étant fait par l'administrateur qui modifiera la valeur de $smwgQComparators comme expliqué dans Help:Configuration.
Selon la valeur de $smwStrictComparators, l'interprétation de > et < peut changer : les différents comportements sont documentés sur la page concernant les comparateurs stricts.
Quand on applique des comparateurs aux pages, alors le titre de la page (sans le préfixe espace de nom) est utilisé. Cependant, ceci peut être modifié en paramétrant une autre clé de tri MediaWiki pour cette page, par exemple {{DEFAULTSORTKEY: clé perso}}. Veuillez noter que ceci s'applique à tous les comparateurs, y compris ! et ~. Il n'est pas possible d'avoir des clés de tri multiples pour une page. En particulier, les pages de redirection ne sont pas prises en compte quand on applique des comparateurs.
Différent de
Vous pouvez sélectionner les pages qui ont une valeur de propriété qui est différente (non égale) de la valeur donnée. Par exemple,
[[Area code::!415]]
sélectionnera les pages qui ont un indicatif téléphonique (area code en anglais) qui n'est pas le « 415 ». Veuillez noter que cette description de requête ne recherche pas les pages qui n'ont pas comme indicatif téléphonique 415. En fait, elle recherche toutes les pages qui ont (aussi) un code différent de 415. En particulier, les pages qui n'ont pas du tout d'indicatif téléphonique ne peuvent pas faire partie des résultats de la requête mentionnée précédemment.
Comme avec le comparateur d'égalité (par défaut), l'utilisation des unités personnalisées peut exiger à procéder des conversions numériques qui peuvent donner des résultats inattendus. Par exemple [[height::!6.00 ft]] peu malgré tout sélectionner quelqu'un dont sa taille affiche un « 6.00 feet » tout simplement parce que la véritable valeur numérique n'est pas réellement 6. Dans de telles situation, ils pourrait être plus utile de demander les pages qui ont une valeur de propriété en dehors d'une certaine fourchette, exprimée en utilisant une disjonction (voir plus bas) de conditions avec < et >.
Supérieur ou égal à, inférieur ou égal à
Avec les valeurs numériques, vous avez la possibilité de sélectionner les pages avec les valeurs de propriété situées dans une fourchette de valeurs. Par exemple,
[[Category:Actor]] [[height::>6 ft]] [[height::<7 ft]]
demande tous les acteurs qui ont une taille comprise entre 6 et 7 pieds (ft). Remarquez que cette caractéristique tire parti de la conversion automatique des unités de mesure : même si la hauteur de l'acteur a été renseignée avec [[height::195cm]], celui-ci ferait partie des bonnes réponses (par le fait que le type de données pour la hauteur (height) comprend les deux unités, voir Help:Unités personnalisées). Veuillez noter que les comparateurs signifient supérieur/inférieur ou égal à – le symbole d'égalité = n'est pas nécessaire.
De telles fourchettes sur les valeurs de propriété ne sont pertinentes que si les valeurs peuvent être ordonnées de façon naturelle. Par exemple, c'est parlant de demander [[Date de début::>6 mai 2006]] mais cela ne veut pas dire grand-chose de demander [[URL site::>http://www.quelquepart.org]].
Si un type de donnée n'a pas d'ordre linéaire, Semantic MediaWiki appliquera simplement l'ordre alphabétique aux valeurs normalisée telles qu'elles sont utilisées dans l'export RDF. Vous pouvez ainsi utiliser supérieur à ou inférieur à pour sélectionner des chaînes de caractères d'une propriété champ. Par exemple, vous pourriez demander [[Nom::>Do]] [[Nom::<G]] pour sélectionner les noms compris entre « Do » et « G ». Dans les pages wiki, le comparateur tient compte du nom de la page donnée (sans le préfixe de l'espace de nom).
Dans ce cas et dans tous les autres concernant l'utilisation de comparateurs, il peut arriver que l'on cherche les valeurs qui débutent par le symbole <. Dans ce cas, SMW peut être empêché d'interpréter le symbole comme un comparateur si un espace est inséré après ::. Par exemple, [[property:: <br>]] recherche véritablement les pages qui ont la valeur « <br> » pour la propriété donnée.
Supérieur à, inférieur à
Si vous souhaitez exclure la valeur de référence du résultat, par exemple pour trouver un acteur plus grand que Hugh Laurie (1,89 m), vous pouvez faire la requête en utilisant une combinaison entre les comparateurs > et ! :
[[Category:Actor]] [[height::>1.89m]] [[height::!1.89m]]
Comme, non comme
Les comparateurs ~ et !~ ne fonctionnent qu'avec des propriétés de type Champ. Dans une condition comme, on utilise les jokers '*' pour trouver n'importe quelle séquence de caractères et '?' pour trouver un seul caractère. Par exemple, on pourrait demander "[[Address::~*Park Place*]]" pour sélectionner les adresses contenant le champ « Park Place » ou bien "[[Honorific::~M?.]]" pour sélectionner à la fois « Mr. » et « Ms. ».
Comparateurs stricts
Le comportement par défaut de SMW, où les comparateurs < et > veulent dire respectivement « inférieur ou égal à » et « supérieur ou égal à » peut être quelquefois sujet de confusion pour les personnes qui sont familières avec la signification mathématique de < et >. Vous pouvez cependant décider de faire interpréter les signes < et > de façon « stricte » par SMW comme expliqué ici.
Union de résultats de requête : disjonctions
Les disjonctions sont des conditions OU qui admettent plusieurs conditions alternatives sur les résultats de requête. SMW a deux façon d'écrire les disjonctions dans les requêtes :
- L'opérateur OR est utilisé pour prendre l'union de deux requêtes.
- L'opérateur || est utilisé pour des disjonctions dans les valeurs, les pages et les noms de catégorie.
Dans tous les cas, la disjonction nécessite à ce qu'au moins une (mais peut-être plus d'une) des alternatives possibles soit satisfaite (OU logique). Par exemple, la requête
[[born in::Boston]] OR [[born in::New York]]
décrit toutes les pages des personnes nées à Boston ou à New York. Ceci peut être aussi écrit avec || comme ceci : [[born in::Boston||New York]]. Dans ce dernier cas, « Boston||New York » décrit une valeur qui peut être soit l'une, soit l'autre valeur. Écrire des requêtes avec || est habituellement plus concis, mais les disjonctions ne peuvent pas être toutes écrites de cette façon. Ce qui suit est un exemple qui ne peut pas être exprimé avec || :
[[born in::Boston]] OR [[Category:Actor]]
La syntaxe || peut être utilisée non seulement dans les valeurs de propriété, mais aussi avec les catégories, comme dans la requête [[Category:Musical actor||Theatre actor]].
Description de pages simples
Jusqu'ici, toutes les conditions dépendaient des annotations données dans une page. Mais il y a aussi des conditions pour sélectionner directement certaines pages, ou des pages provenant d'un espace de nom donné.
Donner directement des titres de page (éventuellement en y incluant un préfixe d'espace de nom) ou une liste de titres de pages séparées par || sélectionne les pages avec les noms donnés. Comme exemple, Cette requête
[[Brazil||France||User:John Doe]]
qui a trois résultats (tout du moins si les pages existent). Veuillez noter que le résultat n'affiche pas les préfixes d'espace de nom : voyez la boite flottante ou la barre d'état du navigateur, ou bien suivez les liens pour déterminer l'espace de nom.
Property "Namespace" has a restricted application area and cannot be used as annotation property by a user.Property "Docinfo editor" (as page type) with input value "User:>Nicolas NALLET" contains invalid characters or is incomplete and therefore can cause unexpected results during a query or annotation process.