# MediaWiki sémantique/FAQ

Cette page a pour but d'obtenir rapidement des réponses. Soit une question a déjà été traitée dans le manuel, et dans ce cas nous donnons une réponse brève et renvoyons au chapitre qui en traite en détail ; soit la question n'est pas abordée dans le manuel et nous lui donnons ici-même une réponse détaillée.

## Formulaire
### Comment ajouter plusieurs valeurs dans un champ ?

En utilisant dans un modèle, à la place d'un paramètre, le code suivant :
{{#arraymap:valeur|séparateur|var|formule|nouveau séparateur}}
Dans ce cas « valeur » sera le paramètre ; les valeurs entrées dans le champ du formulaire correspondant seront séparés par « séparateur » ; « var » est une simple variable que nous remplacerons par « x » ; à chaque valeur entrée dans le champ sera appliqué « formule », et le résultat sera affiché avec « nouveau séparateur. »
Par exemple, pour un champ « Auteur », on aura dans le modèle :
{{#arraymap:{{{auteur}}}|,|x|[[Écrit par::x]]|,}}
Dans le formulaire correspondant, on aura simplement :
{{field|auteur}}
qui affichera un champ simple dans lequel vous entrerez par exemple : « Émile Zola, Guy de Maupassant, etc. », et ainsi à chaque auteur pris séparément sera appliquée l'annotation [[Écrit par::]].

### Comment choisir entre plusieurs catégories ?

Il est possible d'afficher un arbre de catégories parmi lesquelles on choisira celles dans lesquelles on souhaite placer une page. Cette possibilité suppose l'installation de Extension:CategoryTree.
Il faut ajouter un code dans le formulaire et dans le modèle correspondant.
Dans un formulaire on écrira par exemple :
{{{field|Categories|input type=categories|top category=catégorie mère|hideroot=on}}}
Ceci permet d'afficher une boîte contenant un arbre de catégories avec des cases à cocher pour les choisir.
« Categories » est ici le paramètre « Categories » du modèle correspondant. « input type=categories » indique que les données entrées seront des noms de catégories. « top category= » sera la catégorie à partir de laquelle afficher l'arbre des catégories. « hideroot=on » permet de ne pas afficher la catégorie mère, mais seulement ses sous-catégories.
Et dans le modèle correspondant, on se servira de la fonction #arraymap :
{{#arraymap:{{{Categories|}}}|,|x|[[Category:x]]}}
Ainsi, à chaque valeur de « Categorie » cochée dans le formulaire sera appliqué [[Category:x]].

### Comment afficher correctement les dates ?

En définissant un champ comme devant contenir une date, vous obtiendrez un champ composé de trois parties :
    jour à renseigner, choix du mois dans une liste, année à renseigner.
grâce à
{{field|date|input type=date}}
Le problème est que la date s'affichera selon un format anglo-saxon (du type a/j/m) et l'on ne peut pas configurer directement cet affichage. Il faut utiliser une fonction supplémentaire (#time) pour afficher un format français (par exemple). Cela suppose l'installation de Extension:ParserFunctions.
Dans votre modèle il vous faudra écrire :
{{#time: d F Y|{{{date|}}} }}

### Comment découper un formulaire en onglets ?
## Wiki sémantique
### Comment ajouter une annotation sémantique ?

La syntaxe de base est [[Nom de l'attribut::Nom]].
Par exemple, dans la page « Balthazar », on pourra ajouter [[Écrit par::Lawrence Durrell]].
En plaçant ce genre d'annotations dans les pages de votre wiki, vous pourrez ensuite faire des recherches avec ces annotations. Par exemple :
* liste de toutes les œuvres écrites par Lawrence Durrell ;
* liste de toutes les œuvres écrites en 1965 ;
* liste de toutes les œuvres écrites au XXe siècle en polonais et non traduites en français ;
* etc.
Dans d'autres domaines, on peut imaginer :
* liste des descendants femmes de telle personne ;
* liste des espèces en danger d'extinction dans tel ou tel taxon.
Tous les recoupements sont possibles, et on voit quel intérêt peut avoir un tel outil pour des bases de données fournies et complexes.

### Comment créer des listes automatiques ?

Dès lors que vous avez ajouté des annotations sémantiques dans les pages de votre wiki, vous pouvez faire des recherches précises dans vos données et afficher les résultats sous des formes diverses, en sélectionnant les informations à afficher.
Par exemple, vous avez créé des notices bibliographiques pour de nombreux livres, et vous souhaitez automatiser l'affiche des livres dans les pages sur les auteurs. Au lieu de recopier les données déjà entrées et de devoir les mettre régulièrement à jour par vous-même, vous pouvez dans chaque page ajouter quelque chose comme ;
Dans cet exemple, la fonction #ask va consulter la liste des pages avec l'annotation sémantique « Titre », et en extraire les pages qui contiennent en même temps l'annotation « Écrit par::Nom de l'auteur ». Le résultat sera présenté sous forme de tableau, avec une colonne « Année » (?Année) et la mention de la traduction si elle existe (?Traduction), et classé par ordre chronologique (« sort=Année » et « order=ascending »).
À présent, si vous placez ce code dans un modèle (par exemple Modèle:ListeŒuvres) et que vous remplacez [[Écrit par::Nom de l'auteur]] par [[Écrit par::{{PAGENAME}}]], il vous suffira ensuite d'ajouter dans chaque page d'auteur le code suivant :
{{ListeŒuvres}}
pour obtenir une liste d'œuvres qui se mettra à jour au fur et à mesure que vous créerez des notices bibliographiques.
On peut pousser la simplification encore plus loin, en créant un formulaire qui ajoutera automatiquement {{ListeŒuvres}} dans chaque page d'auteur nouvellement créée.

### Comment formater des listes sémantiques ?

Par défaut, les résultats obtenus avec la fonction #ask se présente sous la forme de tableaux, mais il existe plusieurs autres formats prédéfinis et il est possible d'utiliser un modèle pour faire soi-même la mise en forme des données.