Help:Modèles sémantiques
Les modèles sémantiques sont une méthode pour incorporer certaines balises supplémentaires de Semantic MediaWiki dans les modèles de MediaWiki. Ceci présente plusieurs avantages :
- Les utilisateurs écrivent des annotations sans avoir à apprendre de nouvelle syntaxe ;
- les annotations sont utilisées uniformément, c'est-à-dire que les utilisateurs n'ont pas besoin de chercher les bonnes propriétés ou catégories lorsqu'ils rédigent une page ;
- Puisque les modèles remplissent d'autres fonctions, comme des infobox flashy dans les articles, leur utilisation est agréable aux utilisateurs.
Pour ces raisons, nous recommandons que vous utilisiez des modèles sémantiques lors de l'utilisation d'annotations sémantiques sur un wiki.
Modèle sémantique simple – un exemple[edit]
Les modèles, avec ou sans annotations, peuvent avoir une forme très simple. Par exemple en donnant les valeurs de l'aire d'une surface d'un objet astronomique, vous pouvez l'afficher comme
- 6.088 × 1018 m²
que vous pouvez achever en écrivant
6.088 × 10<sup>18</sup> m²
Ceci est fastidieux à écrire. Vous pouvez donc développez un modèle:Aire de surface de telle sorte que les rédacteurs puissent simplement écrire
{{surface area|6.088|18}}
et le modèle exprimera les marques désirées.
Ainsi, les modèles de MediaWiki présentent une valeur de normalisation et de simplification immense (une fois que les utilisateurs ont compris la syntaxe du modèle en général et en particulier) de l'affichage sur tout wiki.
Avec l'introduction de Semantic MediaWiki, vous voudrez probablement que les valeurs des aires deviennent des annotations sémantiques de telle sorte qu'elles figurent dans le bordereau de faits et faire l'objet d'une recherche.
Pour ce faire, vous pouvez créer une propriété nommée Property:Surface area qui utilise ou réutilise le type de données configurable Type:Area. Évidemment, vous aimeriez avoir à la fois l'annotation et l'affichage. Vous pourriez écrire ce qui suit :
[[Surface area::6.088e18 m²|6.088 × 10<sup>18</sup> m²]]
Cette annotation sémantique utilise le format scientifique pour les nombres que Semantic MediaWiki peut traiter, et le texte après le trait vertical est l'affichage complexe que vous souhaitez.
Cependant, ceci est moins agréable pour l'utilisateur et cause d'erreur. En utilisant des modèles sémantiques, vous pouvez écrire ou adapter le modèle Surface_area afin de cacher les balises compliquées et procéder à l'annotation sémantique. Ainsi, comme auparavant, les rédacteurs peuvent écrire
{{surface area|6.088|18}}
ce qui est plus lisible. Pour y parvenir, Template:Surface area est codé comme suit :
[[Surface area::{{{1}}}e{{{2}}} m²|{{{1}}} × 10<sup>{{{2}}}</sup> m²]]
Consultez la page Sol et son code source pour voir l'utilisation d'un modèle sémantique.
Norza que la propriété « surface area:: » dans le modèle ne fait aucune annotation de l'article du modèle lui-même ; elle ne prend effet que lors de son utilisation. Ceci résulte de ce que le réglage par défaut lors de l'installation de Semantic MediaWiki est de ne pas traiter les pages de l'espace de nom Template: pour les annotations sémantiques. Si ce réglage a été modifié (par l'administrateur du site), allors vous devrez entourer le code du modèle des balises <includeonly> afin d'éviter que les articles des modèles ne soient eux-mêmes annotés. Comme avec les modèles normaux de MediaWiki, vous pouvez ajouter du texte à l'intérieur des balises <noinclude> afin de fournir à l'utilisateur de la documentation sur la page du modèle.
Modèles sémantiques avancés[edit]
Beaucoup de site basés sur MediaWiki utilisent des modèles plus compliqués pour présenter de l'information standard. Par exemple, les articles de Wikipedia sur les villes et villages utilisent des modèles standards dans lesquels les contributeurs spécifient des indications communes ou des informations telles que (tiré de l'article Wikipedia:San Diego, California) :
{{Infobox Settlement |image_skyline =Sandiego_skyline_at_night.JPG |imagesize = |image_caption = San Diego Skyline| March 31, 2007 |official_name = City of San Diego |settlement_type = [[City]] |nickname = America's Finest City |motto = Semper Vigilans ([[Latin]] : Ever Vigilant) |image_flag = Flag of San Diego, California.svg …
Normalement, ce modèle (en l'occurrence, wikipedia:Template:Infobox Settlement) affiche ces informations dans une table formatée. Évidemment, de telles informations régulièrement modélisées sont idéales pour être incluses dans les propriétés de Semantic MediaWiki de telles sorte que les articles utilisant ce modèle acquièrent des annotations sémantiques sans aucune modification de leurs pages.
La page California présente un modèle simple d'affichage infobox adapté aux annotations sémantiques.
Utiliser correctement les modèles sémantiques[edit]
Parce que les canevas ci-dessus vous permettent de créer toute sorte de modèle sémantique de complexité variable, certaines idées doivent rester présentes à l'esprit.
Une annotation automatique implique des formats stricts[edit]
Vous pouvez annoter les champs des modèles automatiquement, mais dans ce cas, la valeur fournie doit être compatible avec le format attendu. Par exemple, il est utile d'annoter la population d'une cité avec la propriété de type nombre. Cependant, dans le modèle d'infobox comme celle de la page wikipedia:France, l'entrée fournie pour la population n'est pas un nombre simple ni plusieurs nombres ! À la place, il y a plusieurs nombres et des textes expliquant leurs signification. De tels cas spécifiques doivent être gardés à l'esprit lors de l'écriture de modèles sémantiques.
Ceci constitue une raison majeure pour laquelle les modèles sémantiques ne sont pas une solution convenable pour remplacer les annotations dans Semantic MediaWiki. Il y a des cas où les modèles existants peuvent être évalués d'une manière presque sémantique, mais souvent, l'utilisateur devra encore ajouter des balises sémantiques pour rendre les données traitables par la machine. Par exemple, dans le cas de la France, on peut décider de laisser en texte « population » et de laisser aux utilisateurs le soin de spécifier dans le texte [[population::…]] en l'endroit idoine.
Entrées facultatives et conditionnelles[edit]
En général, dans les modèles, il est très utile de prévoir des paramètres facultatifs. Dans beaucoup d'articles, les utilisateurs ne voudront pas remplir tous les champs d'une infobox donnée et l'affichage de rangées vides dans ce cas précis sera inutile. Pire même, les modèles sémantiques généreront des messages d'alerte à cause du fait que des valeurs nulles auront été annotées dans ces cas. Afin de l'éviter, il est utile d'introduire des conditions dans le code des modèles, qui n'incluent une rangée (et ses annotations) que si une valeur non nulle y a été ajoutée.
Ceci peut être fait à l'aide de l'extension meta:ParserFunctions de MediaWiki. L'utilisation de cette extension est tout-à-fait indépendante de Semantic MediaWiki et vous devriez vous référer à la documentation propre de cette extension ou à d'autres informations. Wikipedia contient beaucoup d'exemples de fonctions d'analyse dans les modèles, comme, par exemple, dans le wikipedia:Template:Taxobox. L'utilisation des fonctions d'analyse produit généralement du code peu accessible, mais la simplification est substantielle pour l'utilisateur.
Les annotations dans un modèle[edit]
La possibilité d'utiliser des annotations dans les modèles doit être activée par l'administrateur du site.
Lorsqu'une balise d'annotation est ajoutée à un modèle, le bordereau de faits de toute page incluant déjà ce modèle est mis à jour, mais les requêtes ne prennent pas encore en compte la nouvelle annotation. Pour ce faire, la page qui inclue le modèle doit être éditée et sauvegardée (la purge ne fonctionne pas). Après cela, la page contenant la requête doit également être éditée et sauvegardée.
Les requêtes dans un modèle[edit]
Il est possible d'insérer une requête dans un modèle et elle peut contenir {{PAGENAME}} (ex. : ow:Template:Ask). Cependant, une requête avec un paramètre provenant d'un modèle ne marche qu'avec les substitution et ne peut être utilisée dans des calculs. Exemple : ow:Property:Weekday_number – Cette limite n'est plus vraie depuis SMW 1.0, puisqu'il est possible d'utiliser la syntaxe de la fonction {{#ask:}}.