Module:Wikidata/Test
Module permettant d'utiliser de récupérer et de mettre en forme des données issues de Wikidata.
Dans la mesure du possible, ce module devrait être neutre sur le plan linguistique. Pour les textes spécifiquement français, voir Module:Wikidata/I18n.
Fonctions exportables
Fonctions opérant au niveau d'un snak
Nom | Arguments | Description |
---|---|---|
formatSnak | snak, params |
Récupère la valeur d'un snak et la met en forme |
getDataValue | snak, params |
Récupère la valeur d'un snak avec une valeur de type "value" et la met en forme |
isSpecial | snak |
retourne true si un snak est une valeur spéciale (novalue ou somevalue)
|
getId | snak |
retourne l'identifiant Qdd de l'élément utilisé comme valeur d'un snak |
Fonctions opérant au niveau d'une affirmation
Nom | Arguments | Description |
---|---|---|
formatStatement | params |
Transforme une déclaration individuelle en chaîne wikitexte, selon les mêmes paramètres que stringTable |
getDate | statement, qualifs |
récupère les informations de date stockées dans une déclaration Wikidata (qualificatifs ou valeur principale) et les stocke sous forme de table |
getFormattedDate | statement, params |
récupère la date associée à un déclaration Wikidata comme getDate, mais la retourne sous forme d'une chaîne formattée selon les paramètres params
|
hasQualifier | claim, acceptedqualifs, acceptedvals, excludequalifiervalues |
retourne true si l'affirmation comporte des qualificatifs utilisant les propriétés acceptedqualifs avec les valeurs acceptedvals, et sans les valeurs excludequalifiervalues. Si acceptedqualifs n'est pas renseignée, toutes les propriétés sont acceptées. Si acceptedvals n'est pas renseigné, toutes les valeurs sont acceptées.
|
getMainId | claim |
retourne l'identifiant Qdd de l'élément utilisé comme valeur du "mainsnak" d'une déclaration |
getFormattedQualifiers | statement, qualifs, params |
à partir d'une affirmation, retourne une chaîne contenant les qualificatifs demandés. La table params permet de personnaliser l'affichage, voir #Paramètres. |
getReferences | statement |
récupère et affiche la partie références d'une déclaration Wikidata. |
addTrackingCat | property, cat |
catégorise dans [[Catégorie:Page utilisant $property]] |
Fonctions opérant au niveau d'une entité
Nom | Arguments | Description |
---|---|---|
sortClaims | claims, sorttype |
Met en ordre une série de valeurs pour ordre chronologique ou de quantité, voir l'argument "sorttype" pour plus de détail. |
filterClaims | claims, params |
Prend une table d'affirmations, et exclut celles qui ne correspondent pas aux critères donnés dans la table params . Pour la liste de ces arguments, voir l'aide ci dessous
|
getClaims | params |
Retourne une table d'affirmations (ou nil) en fonction des instructions données dans la table params , qui dont contenir une clé |entity = et |property = , et peut contenir de nombreux autres paramètres optionnels, voir #Paramètres.
|
getIds | params |
Sélectionne des affirmations de la même manière que getClaims met au lieu de retourner les affirmations complètes, elle ne retourne que l'identifiant de son mainsnak (ne fonctionne que pour les données de type élément).
|
stringTable |
|
Retourne les mêmes affirmations que getClaims, sauf éventuellement celles supprimées par le paramètre removedupes. Chacune est rendue sous forme d'une chaîne en Wikitexte directement utilisable. Les paramètres de mise en forme sont également contenus dans la table params. |
formatStatements | params |
Retourne les mêmes valeurs que stringTable, mais concaténées sous forme de chaîne unique. La méthode de concaténation est définie par le paramètre conjtype qui utilise Module:Linguistique. Si les paramètres linkback et addcat sont activés, un rétrolien et une catégorie de maintenance peuvent également être ajoutés.
|
formatAndCat | params |
Même fonction que formatStatements , mais ajoute un rétrolien vers Wikidata et une catégorie de maintenance
|
getTheDate | params |
affiche une date qui se trouve soit en valeur principale soit en qualificatif de la propriété prop de l'élément item |
mainDate | entity |
Récupère et met en forme la "date principale" que l'on peut associer à l'élément, en fonction de ses propriétés P580 (« date de début »), P582 (« date de fin ») et P585 (« date ») |
keyDate | event, item, params |
Récupère et format une date provenant de l'élément item . event doit être soit un identifiant de propriété, dans ce cas là, la fonction récupérera les valeurs dans cette propriété, soit un identifiant d'élément. Dans ce cas là, elle cherchera cet élément dans les valeurs de P793 (« événement clé ») et retournera la date indiquée en qualificatif.event peut également être une liste d'identifiants sous forme de table, dans ce cas là, la valeur retournée sera celle du premier identifiant pour lequel quelque chose est trouvé. Par exemple wd.keyDate('Q1417098', 'P1690'} cherchera la valeur dans P793 (« événement clé ») Q1417098 (« inauguration ») et si elle ne trouve rien, elle cherchera dans P1690 (« ICD-10-PCS »).
|
getLabel | entity, lang1, lang2 |
Retourne le libellé Wikidata de l'entité en langue donnée par le code lang1 (français par défaut) ; si il est absent, le libellé en langue donnée par le code lang2 (par défaut, l'anglais ou la première langue de Module:Wikidata/Hiérarchie des langues ayant un libellé) et une catégorie de maintenance indiquant la langue utilisée. |
siteLink | entity, lang, project |
retourne un lien vers la page projet demandé ('wikipedia', 'wikivoyage', 'commons') etc. lié à l'entité Wikidata indiquée, dans la langue demandée. Par défaut, la langue est le français et le projet Wikpédia. |
formatEntity | entity, params |
Prend l'identifiant (ou la table de données) donnée en paramètre entité et la transforme, et la retourne sur la forme d'un texte contenant un libellé et éventuellement un lien interne. |
getDescription | entity, lang |
affiche la description Wikidata pour une entité donnée, dans un langue donnée (français par défaut) |
getNumericId | snak |
retourne l'identifiant numérique de l'élément utilisé comme valeur d'un snak |
getEntity | str |
retourne la table de données correpondant à un identifiant (inverse de getEntityId) |
getEntityId | str |
retourne l'identifiant d'une entité Wikidata passée sous la forme d'une table de données (inverse de getEntity) |
Fonctions récupérant des données dans plusieurs entités
Nom | Arguments | Description |
---|---|---|
isSubclass | class, item, maxdepth |
|
isinstance | class, item, maxdepth |
|
inTransitiveVals | searchedval, sourceval, query, maxdepth, maxnodes |
- Module:Wikidata/Chemin : Implémentation analogue aux PropertyPaths de SPARQL en Lua, plus de détails et exemples dans la page du module.
Nom | Arguments | Description |
---|---|---|
iterate | entité, chemin : iterateur |
retourne un itérateur sur toutes les valeurs possibles d’un chemin qui part de l’entité spécifiée. Exemple d’utilisation. |
matches | entité, chemin, valeur : |
retourne une valeur booléenne pour savoir si le chemin spécifié permet d’aller de l’entité « entité » à l’entité « valeur ». « isInstance » au-dessus est équilavente à path.matches(item, "P31/P279*", class) par exemple. Maxdepth pour l’instant pas implémenté, mais sans doute possible, il y a déjà une limite en dur dans les chemins).
|
Divers
Nom | Arguments | Descriptions |
---|---|---|
Dump | entity |
affiche le contenu d'une entité Wikidata |
sourceStr |
|
|
frameFun | (frame) | appelle une des fonctions précédentes depuis le frame. Le nom de la fonction est donné en argument 1 |
addRefAnchor |
|
|
addLinkback |
|
ajoute un rétrolien (généralement utilisé par formatStatements{linkback = true} , mais peut être utile comme fonction indépendante lorsque les données font l'objet de nombreuses manipulations avant leur rendu final
|
isHere | searchset, val |
retourne true si la chaîne val se trouve dans la table searchset
|
addNewValues | old, new |
ajoute les nouvelles valeurs à une table, seulement si elles ne s'y trouvent pas déjà |
Paramètres
Liste des clés pouvant être utilisées dans la table "params" mentionnée ci-dessous.
Choix des déclarations
Paramètres utilisés par la fonction filterclaims
et donc indirectement par les fonctions y faisant appel, tels que getClaims
et formatStatements
.
Nom | Mode d'utilisation | Description |
---|---|---|
claims | Lua | Liste de déclarations à utiliser. Lorsque ce paramètre est activé, les paramètres property et entity ne sont pas utilisés pour la récupération des données.
|
entity | Lua et wikicode | L'identifiant de l'entité Wikidata à utiliser. Par défaut, celle liée à la page. En Lua, on peut passer une entité déjà chargée plutôt que son identifiant. |
property | Lua et wikicode | Le nom de la propriété à utiliser, sous la forme property = PXX . En Lua, on peut utiliser plusieurs propriétés sous forme de tables
|
excludespecial | Lua et wikicode | Retire les déclarations dont la valeur principale (mainsnak) n'est pas de type "valeur", c'est-à-dire les déclarations "valeur inconnue" ou "aucune valeur".
En wikicode : activée par la |
targetvalue | Lua et wikicode | Ne retient que la ou les déclarations dont la valeur du snak principal correspond à la (ou une des) valeurs indiquées |
excludevalues | Lua et wikicode | Exclut les déclarations dont la valeur du snak principal correspond à la (ou une des) valeurs indiquées |
targetclass | Lua et wikicode | Ne retient que la ou les déclarations dont la valeur du snak principal est une instance de la (ou d'une des) classes indiquées, éventuellement via des sous-classes |
excludeclasses | Lua et wikicode | Exclut les déclarations dont la valeur du snak principal est une instance de la (ou d'une des) classes indiquées, éventuellement via des sous-classes |
targetsuperclass | Lua et wikicode | Ne retient que la ou les déclarations dont la valeur du snak principal est une sous-classe (éventuellement indirecte) de la (ou d'une des) classes indiquées |
excludesuperclasses | Lua et wikicode | Exclut les déclarations dont la valeur du snak principal est une sous-classe (éventuellement indirecte) de la (ou d'une des) classes indiquées |
qualifier | Lua et wikicode | Seules les déclarations contenant ce qualificatif son retournées. Pour activer l'affichage du qualificatif, voir showqualifiers
|
qualifiervalue | Lua et wikicode | Le qualificatif utilisé par l'argument qualifier doit avoir cette valeur (ou une de ces valeurs, s'il s'agit d'une table ou d'une liste de propriétés séparées par des virgules
|
excludequalifier | Lua et wikicode | Les déclarations contenant ce qualificatif sont exclues |
excludequalifiervalue | Lua et wikicode | Si ce paramètre est renseigné, excludequalifier n'est activé que lorsque la valeur du qualificatif se trouve dans celles qu'il indique.
|
withsource | Lua et wikicode | Ne retourne que les valeurs contenant une source, utilisant la source indiquée dans la propriété P248 (« affirmé dans »), ou une autre propriété définie par le paramètre sourceproperty . Pour accepter n'importe quelle source du moment qu'elle utilise la propriété demandée, mettre la valeur any . Pour désactiver ce paramètre, mettre la valeur - .
|
sourceproperty | Lua et wikicode | Propriété à utiliser pour le paramètre withsource
|
rank | Lua et wikicocde | Rangs acceptés :
Valeur par défaut : |
numval | Lua et wikicode | Nombre maximal de valeurs à retourner (les n premières valeurs de la liste établie par les autres paramètres) |
withlink | Lua et wikicode | Ne retourne que les valeurs contenant un lien vers le site spécifié. Si la valeur du paramètre est simplement true , le site utilisé sera Wikipédia en français.
|
withdate | Lua et wikicode | Ne retourne que les valeurs possédant un qualificatif de date : P585 (« date »), P580 (« date de début »), P582 (« date de fin ») |
atdate | Lua et wikicode | Exclut les valeurs dont les qualificatifs P580 (« date de début ») ou P582 (« date de fin ») indiquent qu'elle n'était pas valable à la période indiquée. atdate peut-être une date au format wikibase ou au format ISO. Les valeurs sans date ne sont pas exclues (elle peuvent l'être en ayant recours à la fonction withdate ). Pour demander la valeur à la date d'aujourd'hui utiliser : |atdate = today .
|
minprecision | Lua et Wikicode | Degré de précision minimum accepté pour les données de type date. Doit être une valeur numérique correspondant au modèle de Wikidata (par exemple année = 9) |
condition | Lua | Pour définir une fonction libre. Si la fonction retourne true , la déclaration sera gardée
|
sorttype | Lua et wikicode | Manière de classer les déclarations. Valeurs possibles :
|
Activation / désactivation de Wikidata
Nom | Mode d'utilisation | Description |
---|---|---|
value | Lua et wikicode | Lorsque le paramètre value est non vide, le module ne cherche pas les données de Wikidata, mais utilise celles fournies localement par ce paramètre. Les fonction formatAndCat en revanche lui applique linkback et addcat )
|
expl | Lua et wikicode | Lorsque le paramètre expl est présent, la fonction formatStatements ne fait rien si le paramètre value n'a pas la valeur résultat de {{WD}} (utile pour des données mises à jour mais dont l'utilité dans chaque article est difficile à décider automatiquement). |
Mise en forme des données
Nom | Niveau d'application | Mode d'utilisation | Description |
---|---|---|---|
conjtype | liste des déclarations | Lua et wikicode | La manière de coordonner les déclarations, en utilisant la fonction conj de Module:Linguistique. Valeurs possibles :
Toute autre valeur donnée au paramètre sera insérée entre chaque valeur ( |
qualifconjtype | snak | Lua et wikicode | Manière de coordonner les qualificatifs. Même fonctionnement que conjtype .
|
default | liste des déclarations | Lua et wikicode | Résultat par défaut à afficher si l'import depuis Wikidata donne un résultat vide. |
linkback | liste des déclarations | Lua et wikicode | Ajoute un rétrolien vers Wikidata sous forme d'un crayon « ![]() |
addcat | liste des déclarations | Lua et wikicode | Met la page dans une catégorie de suivi (voir Catégorie:Page utilisant des données de Wikidata). Le nom de la catégorie correspond à la valeur du paramètre. Si cette valeur est simplement true , la catégorie est fonction du paramètre property.
Attention, ce paramètre peut être source de bugs. Par exemple, si la propriété est utilisée dans une url ou un lien. |
removedupes | choix des déclarations (à la fin, dans une fonction différente) |
Lua et wikicode | Lorsque, après toutes les mises en forme, deux déclarations sont rendues de la même manière, une seule est conservée. |
lang | mise en forme des données | Lua et Wikicode | Langue dans lequel le texte doit être retourné. |
snak (entité) | Lua et wikicode | Code Wikimédia de la langue utilisée pour afficher les libellés (par défaut : français) | |
wikidatalang | snak (entité) | Lua et Wikicode | Code Wikimédia de la langue utilisée pour afficher les libellés en l'absence du français (ou de lang) et de l'anglais. Par défaut, la première langue dont il existe un libellé dans la liste Module:Wikidata/Hiérarchie des langues. |
ucfirst | liste des déclarations | Lua et Wikicode | Par défaut, la fonction formatStatements ajoute une majuscule en début de texte. |ucfirst=- permet de désactiver cela.
|
statementformat | déclaration | Lua | doit être une fonction fonction(statement) return XX retournant une chaîne. Elle sera appliquée à sur chaque déclaration (permet de simplifier certaines infobox Lua)
|
showdate | déclaration | Lua et wikicode | Pour afficher la date entre parenthèses en petit pour chaque déclaration en utilisant les mêmes qualificatifs que (withdate). Lorsqu'aucune date n'est trouvée, la valeur est affichée sans aucune date. |
displayformat | snak | Lua et wikicode | Pour changer le format par défaut entre chaque valeur.
|
qualifdisplayformat | snak | Lua et wikicode | Format d'affichage des qualificatifs. Même fonctionnement que le paramètre displayformat . Lorsque ce paramètre est laissé vide, les qualificatifs utilisent le paramètre displayformat comme la valeur principale.
|
showsource | déclaration | Lua et wikicode | Identifiant d'une source que l'on souhaiterait voir affichée en référence si elle est présente.
|
linktopic | snak (temporel) | Lua et wikicode | Type de lien à ajouter aux dates (voir Module:Date). Pour ne mettre aucun lien : linktopic = -
|
qualiflinktopic | snak (entité) | Lua et wikicode | Même fonctionnement que le paramètre linktopic , applicable aux qualificatifs. Lorsque ce paramètre est laissé vide, les qualificatifs utilisent le paramètre linktopic comme la valeur principale.
|
precision | snak (temporel) | Lua et wikicode | Précision avec laquelle les dates doivent être affichées. Valeurs possibles :
Valeur par défaut : |
qualifprecision | snak | Lua et wikicode | Précision avec laquelle les qualificatifs temporels doivent être affichées. Même fonctionnement que precision .
|
textformat | snak (temporel) | Lua et wikicode | Format d'affichage des intervalles de temps, tels que définis par Module:Date complexe
|
speciallabels | snak (entité) | Lua | Tables de valeurs spéciales à utiliser à la place du libellé Wikidata pour la valeur de certains éléments, par exemple Module:Dictionnaire Wikidata/Métiers.female |
labelformat | snak (entité) | Lua et wikicode | (En Lua) fonction de mise en forme des libellés prenant comme argument un qid ; (en Lua ou en wikicode) l'une des chaînes de caractères suivantes :
En Lua, la valeur du paramètre peut aussi être une fonction applicable à un snak. |
labelformat2 | snak (entité) | Lua | Fonction de mise en forme des libellés prenant comme argument un libellé. |
qualiflabelformat | snak (entité) | Lua et wikicode | Mise en forme des libellés des qualificatifs. Même fonctionnement que le paramètre labelformat . Lorsque ce paramètre est laissé vide, les qualificatifs utilisent le paramètre labelformat comme la valeur principale.
|
qualiflabelformat2 | snak (entité) | Lua et wikicode | Même fonctionnement que le paramètre qualiflabelformat appliqué à labelformat2 . Ce dédoublement est provisoire (26/09/22)
|
showlang | déclaration | Lua et wikicode | Lorsque la valeur principale est de type "texte monolingue", son code langue est affiché (utilisé par Module:Site officiel) |
showqualifiers | déclaration | Lua et wikicode | Qualificatif à retourner entre parenthèses derrière la valeur de la propriété principale demandée. En wikicode sous le format |showqualifiers = P460 , en Lua sous le format showqualifiers = "P460" ou showqualifiers = {"P460", "P461"}
|
showonlyqualifier | déclaration | Lua et wikicode | Qualificatif de même, mais à retourner seul sans la valeur de la propriété principale demandée |
link | snak (entité) | Lua et wikicode | Site vers lequel doivent lier les données de type élément. Par défaut : Wikidata en français. Si égal à "-", aucun lien ne sera créé. |
qualiflink | snak (entité) | Lua et wikicode | Site vers lequel doivent lier des qualificatifs. Même fonctionnement que le paramètre link . Lorsque ce paramètre est laissé vide, les qualificatifs utilisent le paramètre link comme la valeur principale.
|
defaultlink | snak (entité) | Lua et wikicode | Lorsque le site demandé par le paramètre link ne retourne pas de lien, affiche un lien entre parenthèses vers le site demandé. Par défaut : Wikipédia en anglais ou, si absent, Wikidata. La valeur "-" désactive le paramètre. |
qualifdefaultlink | snak | Lua et wikicode | Même fonctionnement que defaultlink , applicable aux qualificatifs. Lorsque ce paramètre est laissé vide, les qualificatifs utilisent le paramètre defaultlink comme la valeur principale.
|
defaultlinkquery | snak (entité) | Lua | defaultlinkquery = {property = 'P279'} le lien créé correspondra à celui fourni par l'élément utilisé dans la propriété P279 (« sous-classe de »). |
qualifdefaultlinkquery | snak | Lua et wikicode | Même fonctionnement que defaultlinkquery , applicable aux qualificatifs. Lorsque ce paramètre est laissé vide, les qualificatifs utilisent le paramètre defaultlinkquery comme la valeur principale.
|
targetunit | snak (quantité) | Lua et Wikicode | Unité dans laquelle doivent être converties les données de type quantité. Les valeurs possibles sont visibles dans Module:Conversion/Données, par exemple km ou km2. |
qualiftargetunit | snak | Lua et Wikicode | Unité dans laquelle doivent être converties les qualificatifs de type quantité. |
showunit | snak (quantité) | Lua et Wikicode |
Manière d'afficher l'unité demandée. Valeurs possibles :
défaut : 'short' |
rounding | snak (quantité) nombre de chiffres | Lua et Wikicode | Nombre de chiffres significatifs à afficher dans les données de type quantité, après conversion éventuelle (défaut : dépend de la précision indiquée sur Wikidata) |
urlpattern | snak (string) | Lua et wikicode | La valeur du paramètre est un chaîne représentant une URL, l'expression "$1" sera remplacée par la valeur Wikidata Avec la propriété P214 (« identifiant VIAF ») et la valeur de paramètre http://viaf.org/viaf/$1, la valeur de l'identifiant VIAF stockée sur Wikidata sera utilisée pour créer un lien externe.. |
text | snak (string) | Lua et wikicode | Texte à afficher lorsque la valeur crée un lien externe, c'est-à-dire pour les données de type chaîne avec displayformat = "weblink" ou avec le paramètre urlpattern renseigné. Par défaut : la valeur initiale de la déclaration. Utilisé sur Module:Site officiel Module:Bases archi.
|
novaluelabel | snak (novalue) | Lua et wikicode | Libellé à retourner lorsque la valeur est de type "novalue" (aucune valeur). Par défaut : "-". En Lua, la valeur peut-être une fonction. |
unknownlabel | snak (somevalue) | Lua et wikicode | Libellé à retourner lorsque la valeur est de type "somevalue" (valeur inconnue). Par défaut : "inconnu". En Lua, la valeur peut-être une fonction. |
returnnumberofvalues | liste des déclarations | Lua | retourne en deuxième valeur le nombre de valeurs récupérées par getClaims (si la fonction est appelée depuis du Wikicode, le nombre sera concaténé au reste de la chaîne retournée |
Exemples
Définition des liens
Code | Rendu | Remarques |
---|---|---|
{{#invoke:Wikidata|frameFun|formatStatements|entity = Q79 | property = P36}} | Le Caire | Capitale de l'Égypte, format standard |
{{#invoke:Wikidata|frameFun|formatStatements|entity = Q79 | property = P36|link=-}} | Le Caire | Capitale de l'Égypte, sans lien |
{{#invoke:Wikidata|frameFun|formatStatements|entity = Q79 | property = P36|link=wikidata}} | Le Caire | Capitale de l'Égypte, avec lien vers Wikidata |
{{#invoke:Wikidata|frameFun|formatStatements|entity = Q937 | property = P569}} | Date de naissance d'Albert Einstein, en utilisant le format standard de Wikipédia en français | |
{{#invoke:Wikidata|frameFun|formatStatements|entity = Q937 | property = P569|linktopic = football }} | Date de naissance d'Einstein, avec liens spécialisés dans le football | |
{{#invoke:Wikidata|frameFun|formatStatements|entity = Q937 | property = P569|linktopic = -}} | Date de naissance d'Einstein, sans lien |
Rang
Il existe trois types de rang sur Wikidata : "normal", "preferred" et "deprecated". Le rang deprecated est réservé aux données que l'on sait fausse mais que l'on garde pour mémoire, par exemple pour documenter une croyance ancienne qui a été infirmée par des études plus récentes.
Par défaut, seul le rang "preferred" est récupéré, mais le paramètre "rank" permet de changer cela.
Code | Rendu | Remarques |
---|---|---|
{{#invoke:Wikidata|frameFun|formatStatements|entity =Q12418 | property = P186}} | Peinture à l'huile (en) et panneau de peuplier (d) | Matériau de la Joconde, affichage par défaut (donc seulement celles avec le rang "preferred" s'il y en a) |
{{#invoke:Wikidata|frameFun|formatStatements|entity =Q12418 | property = P186|rank=valid}} | Peinture à l'huile (en), panneau de peuplier (d) et bois | rank = "valid" accepte les valeur de rang "normal" et "preferred" (par exemple, le matériau d'un chassis qui a été ajouté ultérieurement à la Joconde) |
{{#invoke:Wikidata|frameFun|formatStatements|entity =Q12418 | property = P186|rank=normal}} | Bois | rank = "normal" ne récupère que les données avec un rang "normal", et ignore celles avec un rang "preferred" |
Qualificatifs
Les qualificatifs sont des données supplémentaires intégrées à une affirmation Wikidata qu'elle permet de préciser.
Code | Rendu | Remarques |
---|---|---|
{{#invoke:Wikidata|frameFun|formatStatements|entity =Q12418 | property = P186|showqualifiers = P518}} | Panneau de peuplier (d) | ne retient que les valeurs ayant un qualificatif P518 (« s'applique à ») |
{{#invoke:Wikidata|frameFun|formatStatements|entity =Q12418 | property = P186|qualifier = P518|qualifiervalue=Q1737943}} | Bois | qualifiervalue définit la valeur que possède le qualificatif. Ici, Q1737943 (« châssis ») précise que l'on demande la matériau du chassis. Notez qu'aucune valeur de rang "preferred" n'étant trouvé, un valeur de rang "normal" est retournée. |
{{#invoke:Wikidata|frameFun|formatStatements|entity =Q12418 | property = P186|showqualifiers = P518|rank=valid}} | Peinture à l'huile (en), panneau de peuplier (d) (support de peinture) et bois (châssis) | showqualifiers affiche la valeur des qualificatifs demandé entre parenthèse, après la valeur principale |
{{#invoke:Wikidata|frameFun|formatStatements|entity =Q12418 | property = P186|showdate = true|rank=valid}} | Peinture à l'huile (en), panneau de peuplier (d) et bois (depuis ) | si des qualificatifs indiquant la date sont fournis, ils sont affichées |
Affichage des sources
{{#invoke:Wikidata|frameFun|formatStatements|entity =Q12418 | property = P276|sourceproperty = P854}} | Salle 711 (d) | |
{{#invoke:Wikidata|frameFun|formatStatements|entity =Q11879536 | property = P460|withsource=Q1645493}} | Lisa Gherardini | |
{{#invoke:Wikidata|frameFun|formatStatements|entity =Q11879536 | property = P460|withsource=Q1645493|showsource=true}} | Lisa Gherardini[2],[3] | Montre seulement les valeurs données par la source |
{{#invoke:Wikidata|frameFun|formatStatements|entity =Q153 | property = P231|showsource=true}} | 64-17-5[4],[5],[6] | |
{{#invoke:Wikidata|frameFun|formatStatements|entity =Q153 | property = P231|showsource=only}} | [4],[5],[6] |
- ↑ Introduit pour trier les Modèle:P' dans des {{|Infobox Patrimoine mondial}} par exemple, cf. cette discussion.
- ↑ Giorgio Vasari, Le vite de piu eccellenti architetti, pittori, et scultori italiani, da Cimabue insino a' tempi nostri (œuvre littéraire), et .
- ↑ « https://web.archive.org/web/20110508121954/http://www.ub.uni-heidelberg.de/Englisch/news/monalisa.html » (consulté le )
- ChEBI (ontologie), EBI, consulté le .
- Global Substance Registration System (base de données en ligne), consulté le .
- CAS Common Chemistry (base de données en ligne), consulté le .
Autres options
Code | Rendu | Remarques |
---|---|---|
{{#invoke:Wikidata|frameFun|formatStatements|entity = Q937 | property = P106|conjtype = new line|showdate= true}} | John Lennon (- Ringo Starr ( - Paul McCartney (- George Harrison (- |
conjtype permet de définir le séparateur entre les valeurs (voir Module:Linguistique). Ici "new line" indique qu'il faut revenir à la ligne après chaque valeur. |
{{#invoke:Wikidata|frameFun|formatStatements|entity =Q205309 | property = P793|showdate=true|sorttype=chronological|conjtype =new line}} | Construction () Premier match (d) () Rénovation (- Rénovation (- Démolition () Fermeture (en) () |
sorttype = chronological tente de classer les valeurs par ordre chronologique (en se basant sur les qualificatifs). Ici : les événements principaux (d:P:P793) dans l'histoire de l'ancien Stade d'Arsenal. |
{{#invoke:Wikidata|frameFun|formatStatements|entity =Q205309 | property = P793|showdate=true|sorttype=inverted|conjtype = new line}} | Fermeture (en) () Démolition () Rénovation (- Rénovation (- Premier match (d) () Construction () |
sorttype = inverted pour inverser l'ordre chronologique |
{{#invoke:Wikidata|frameFun|formatStatements|entity =Q4470 | property = P50|showdate=true|sorttype=P1545|conjtype = new line}} | Robert Jordan Brandon Sanderson |
sorttype = P1545 pour trier dans l'ordre de la série |
{{#invoke:Wikidata|frameFun|formatStatements|entity = Q230 | property = P1448 | sorttype = language}} | Géorgie (la), Georgia, Gruzie, Georgien, საქართველო, Грузия, Sakartvelas et Gruzija | sorttype = language pour prioriser certaines langues dans les noms officiels |
{{#invoke:Wikidata|frameFun|formatStatements|entity = Q2015257 | property = P1435|targetvalue = Q9259 |showonlyqualifier = P1448| sorttype = language}} | Sanctuaire de l'oryx arabe, Arabian Oryx Sanctuary et Santuario del Oryx árabe | sorttype = language pour prioriser certaines langues dans les noms officiels, cette fois en utilisant "showonlyqualifier" parce que les noms sont stockés en qualificatif de déclarations |
{{#invoke:Wikidata|frameFun|formatStatements|entity =Q12418 | property = P186|displayformat=raw}} | Q296955 et Q106857865 | affiche les identifiants des valeurs (essentiellement utile pour la programmation) |
{{#invoke:Wikidata|frameFun|formatStatements|entity =Q12418 | property = P186|numval=1}} | Peinture à l'huile (en) | retourne les numval première valeurs répondant au reste de la requête (utile notamment pour récupérer une image) |
{{#invoke:Wikidata|frameFun|formatStatements|entity=Q535922 | property=P172 |expl= |value={{WD}} }} | avec expl=, pour que la valeur soir retournée il faut value={{WD}} |
La documentation de ce module est générée par le modèle {{Documentation module}}.
Elle est incluse depuis sa sous-page de documentation. Veuillez placer les catégories sur cette page-là.
Les éditeurs peuvent travailler dans le bac à sable (modifier).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
--script that retrieves basic data stored in Wikidata, for the datamodel, see https://www.mediawiki.org/wiki/Extension:Wikibase_Client/Lua
local p = {}
local linguistic = require('Module:Linguistique')
local dates = require('Module:Wikidata/Dates')
local langmodule = require('Module:Langue')
local convertlangcode = require('Module:Dictionnaire Wikidata/Codes langue')
local formatText = require('Module:Format')
lang = 'fr' -- peut-être écrasé par args.lang
local i18n = {
["errors"] = {
["property-param-not-provided"] = "property parameter missing",
["qualifier-param-not-provided"] = "qualifier parameter missing",
["entity-not-found"] = "entity not found",
["unknown-claim-type"] = "unknown claim type",
["unknown-snak-typeg"] = "unknown snak type",
["unknown-datavalue-type"] = "unknown datavalue type.",
["unknown-entity-type"] = "unknown entity type",
["invalid-id"] = "invalid ID"
},
["no-label"] = "pas de libellé",
['no description'] = "pas description",
["novalue"] = "not applicable",
["somevalue"] = "inconnu",
["trackingcat"] = 'Page utilisant des données de Wikidata'
}
local function formatError( key )
return error(i18n.errors[key])
end
local function addtrackingcat(prop, cat)
if not prop and not cat then
return error("no property provided")
end
if not cat then
cat = i18n.trackingcat .. '/' .. string.upper(prop)
end
return '[[Category:' .. cat .. ']]'
end
function formatTheUnknown() -- voir si on peut accorder/adapter l'usage de "inconnu"
return i18n.somevalue
end
local function samevalue(snak, target)
if snak.snaktype == 'value' and p.getRawvalue(snak) == target then
return true
end
end
function showlang(statement) -- retourne le code langue entre paranthèse avant la valeur (par exemple pour les biblios et liens externes)
local mainsnak = statement.mainsnak
if mainsnak.snaktype ~= 'value' then
return
end
local langlist = {}
if mainsnak.datavalue.type == 'monolingualtext' then
langlist = {mainsnak.datavalue.value.language}
elseif (not statement.qualifiers) or (not statement.qualifiers.P407) then
return
else
for i, j in pairs( statement.qualifiers.P407 ) do
if j.snaktype == 'value' then
local val = convertlangcode[j.datavalue.value['numeric-id']]
table.insert(langlist, val)
end
end
end
if (#langlist > 1) or (#langlist == 1 and langlist[1] ~= 'fr') then -- si c'est en français, pas besoin de le dire
return langmodule.indicationMultilingue(langlist)
end
end
local function getEntity( val )
if type(val) == 'table' then
return val
end
return mw.wikibase.getEntityObject(val)
end
local function formattable(statements, params) -- transform a table of claims into a table of formatted values
for i, j in pairs(statements) do
j = p.formatStatement(j, params)
end
return statements
end
local function tableToText(values, params) -- takes a list of already formatted values and make them a text
if not values then
return nil
end
return linguistic.quickconj( values, params.conjtype)--linguistic.conj( values, params.lang, params.conjtype )
end
function p.getDate(statement)
--[[
return a "timedata" object as used by the date modules with the date of an item from the p580, p582 and p585 qualifiers
object format:
* timestamp 28 char string value for the timepoint, or if non the beginning or if none, the end (for easy sorting)
* timepoint: snak
* begin: snak
]]--
local q = statement.qualifiers
if not q or not (q.P585 or q.P580 or q.P582) then
return nil
end
if q.P585 and q.P585[1].snaktype == 'value' then -- P585: punctual date
return dates.dateobject(q.P585[1].datavalue.value)
end
local begin, ending
if q.P582 and q.P582[1].snaktype == 'value' then
ending = dates.dateobject(q.P582[1].datavalue.value)
end
if q.P580 and q.P580[1].snaktype == 'value' then
begin = dates.dateobject(q.P580[1].datavalue.value)
end
return dates.daterange(begin, ending)
end
function p.getFormattedDate(statement, params)
local datetable = p.getDate(statement)
if not datetable then
return nil
end
return dates.objecttotext(datetable, params)
end
local function withtargetvalue(claims, targetvalue)
targetvalue = string.upper(targetvalue)
local oldclaims = claims
local claims = {}
for i, statement in pairs(oldclaims) do
if samevalue(statement.mainsnak, targetvalue) then
table.insert(claims, statement)
end
end
return claims
end
local function validclaims(claims)
local oldclaims = claims
local claims = {}
for i, statement in pairs(oldclaims) do
if statement.rank == 'preferred' or statement.rank == 'normal' then
table.insert(claims, statement)
end
end
return claims
end
local function withrank(claims, rank)
if rank == 'best' then
local preferred = withrank(claims, 'preferred')
if #preferred > 0 then
return preferred
else
return withrank(claims, 'normal')
end
end
if rank == 'valid' then
return validclaims(claims)
end
local oldclaims = claims
local claims = {}
for i, statement in pairs(oldclaims) do
if statement.rank == rank then
table.insert(claims, statement)
end
end
return claims
end
local function withqualifier(claims, qualifier, qualifiervalue)
qualifier = string.upper(qualifier)
if type(qualifiervalue) == string then
qualifiervalue = {qualifiervalue}
end
local oldclaims = claims
local claims = {}
for i, statement in pairs(oldclaims) do
if statement.qualifiers and statement.qualifiers then
if qualifiervalue ~= '' then
for j, qualif in pairs(statement.qualifiers[qualifier]) do
local foundval = p.getRawvalue(qualif)
for k, targetval in pairs(qualifiervalue) do
if foundval == targetval then
table.insert(claims, statement)
end
end
end
else
table.insert(claims, statement)
end
end
end
return claims
end
local function withsource(claims, source, sourceproperty)
local oldclaims = claims
local claims = {}
sourceproperty = string.upper(sourceproperty or 'P248')
local sourcevalue = string.upper(source or '')
for i, statement in pairs(oldclaims) do
local success
if statement.references then
for j, reference in pairs(statement.references) do
if success then break end -- sp that it does not return twice the same reference when the property is used twice
for prop, content in pairs(reference.snaks) do
if prop == sourceproperty then
if sourcevalue == '' then
table.insert(claims, statement)
success = true
else
for l, m in pairs(content) do
if p.getRawvalue(m) == source then
table.insert(claims, statement)
success = true
end
end
end
end
end
end
end
end
return claims
end
local function withdate(claims)
local oldclaims = claims
local claims = {}
for i, statement in pairs(oldclaims) do
if statement.qualifiers and (statement.qualifiers['P585'] or statement.qualifiers['P580'] or statement.qualifiers['P582']) then
table.insert(claims, statement)
end
end
return claims
end
local function isinlanguage(claims, lang) -- ne fonctionne que pour les monolingualtext / étendre aux autres types en utilisant les qualifiers ?
local newclaims = {}
for i, j in pairs(claims) do
if j.mainsnak.snaktype == 'value' and j.mainsnak.datavalue.type == 'monolingualtext' then
if j.mainsnak.datavalue.value.language == lang then
table.insert(newclaims,j)
end
end
end
return newclaims
end
local function excludespecial(claims)
local oldclaims = claims
local claims = {}
for i, statement in pairs(oldclaims) do
if statement.mainsnak.snaktype == 'value' then
table.insert(claims, statement)
end
end
return claims
end
local function comparedate(a, b) -- returns true if a is earlier than B or if a has a date but not b
if a and b then
return a.timestamp < b.timestamp
elseif a then
return true
end
end
local function chronosort(claims, inverted)
table.sort(claims, function(a,b)
local timeA = p.getDate(a)
local timeB = p.getDate(b)
if inverted then
return comparedate(timeB, timeA)
else
return comparedate(timeA, timeB)
end
end
)
return claims
end
function p.sortclaims(claims, sorttype)
if sorttype == 'chronological' then
return chronosort(claims)
elseif sorttype == 'inverted' then
return chronosort(claims, true)
elseif type(sorttype) == 'function' then
table.sort(claims, sorttype)
return claims
end
return claims
end
local function numval(claims, numval)
local numval = tonumber(numval) or 0 -- raise a error if numval is not a positive integer ?
local newclaims = {}
for i, j in pairs(claims) do
if #newclaims == numval then
return newclaims
end
table.insert(newclaims,j)
end
return newclaims
end
function p.getRawvalue(snak)
return p.getDatavalue(snak, {format = 'raw'})
end
function p.getDatavalue(snak, params)
if not params then
params = {}
end
local formatting = params.formatting
if snak.snaktype ~= 'value' then
return nil
end
local datatype = snak.datavalue.type
local value = snak.datavalue.value
local displayformat = params.format or params.displayformat -- params.format is deprecated
if datatype == 'wikibase-entityid' then
if displayformat == 'raw' then
return "Q" .. tostring(value['numeric-id'])
elseif type(displayformat) == 'function' then
return displayformat(snak, params)
else
return p.formatEntity('Q' .. value['numeric-id'], params)
end
elseif datatype == 'string' then
if params.displayformat == 'weblink' then
return require('Module:Weblink').makelink(value, params.showntext)
elseif params.urlpattern then
value = '[' .. mw.ustring.gsub(params.urlpattern, '$1', value) .. ' ' .. value .. ']'
end
return value
elseif datatype == 'time' then -- format example: +00000001809-02-12T00:00:00Z
local precision = params.precision -- degré de précision à afficher ('day', 'month', 'year'), inférieur ou égal à value.precision
if formatting == 'raw' then
return value.time
else
return dates.objecttotext(dates.dateobject(value, {precision = precision}))
end
elseif datatype == 'globecoordinate' then
-- retourne une table avec clés latitude, longitude, précision et globe à formater par un autre module (à changer ?)
value.globe = require('Module:Wikidata/Globes')[value.globe] -- transforme l'ID du globe en nom anglais utilisable par geohack
if formatting == 'latitude' then
return value.latitude
elseif formatting == 'longitude' then
return value.longitude
else
return value -- note : les coordonnées Wikidata peuvent être utilisée depuis Module:Coordinates. Faut-il aussi autoriser à appeler Module:Coordiantes ici ?
end
elseif datatype == 'quantity' then -- todo : gérer les paramètre précision
if displayformat == 'raw' then
return value.amount
else
local str = string.sub(value.amount,2) --
return formatText.do_formatnum({str})
end
elseif datatype == 'monolingualtext' then
return langmodule.langue({value.language, value.text})
else
return formatError('unknown-datavalue-type' )
end
end
local function getMultipleClaims(args)
local newargs = args
local claims = {}
for i, j in pairs(args.property) do
newargs.property = j
local newclaims = p.getClaims(args)
for k, l in pairs(newclaims) do
table.insert(claims, l)
end
end
return claims
end
function p.getClaims( args ) -- returns a table of the claims matching some conditions given in args
if not args.property then
return formatError( 'property-param-not-provided' )
end
if type(args.property) == 'table' then
return getMultipleClaims(args)
end
--Get entity
if args.item then args.entity = args.item end -- synonyms
local entity = args.entity
if type(entity) ~= 'table' then
entity = getEntity( args.entity )
end
if (not entity) or (not entity.claims) then
return nil
end
local property = string.upper(args.property)
local claims = entity.claims[property]
if not claims then return nil end
-- mettre ~= '' pour le cas ou le paramètre est écrit mais laissé blanc ({{#invoke:formatStatements|property=pXX|targetvalue = xx}})
if args.targetvalue and args.targetvalue ~= '' then
claims = withtargetvalue(claims, args.targetvalue)
end
if args.qualifier and args.qualifier ~= '' then
claims = withqualifier(claims, args.qualifier, args.qualifiervalue)
end
if (args.source and args.source ~= '') or (args.sourceproperty and args.sourceproperty ~= '') then
claims = withsource(claims, args.source, args.sourceproperty)
end
if (args.withdate and args.withdate ~= '') then
claims = withdate(claims)
end
if (args.isinlanguage and args.isinlanguage ~= '') then
claims = isinlanguage(claims, args.inlanguage)
end
if args.excludespecial and args.excludespecial ~= '' then
claims = excludespecial(claims)
end
if args.rank ~= 'all' then
if not args.rank or args.rank == '' then
args.rank = 'best'
end
claims = withrank(claims, args.rank)
end
if args.sorttype then
claims = p.sortclaims(claims, args.sorttype)
end
if args.numval and args.numval ~= '' then --keep at the end, after other filters have been implmented
claims = numval(claims, args.numval)
end
if #claims > 0 then
return claims
end
end
function p.formatClaimList(claims, args)
if not claims then
return nil
end
for i, j in pairs(claims) do
claims[i] = p.formatStatement(j, args)
end
return claims
end
function p.stringTable(args) -- like getClaims, but get a list of string rather than a list of snaks, for easier manipulation
local claims = p.getClaims(args)
return p.formatClaimList(claims, args)
end
local function getQualifiers(statement, qualifs, params)
if not statement.qualifiers then
return nil
end
local vals = {}
for i, j in pairs(qualifs) do
if statement.qualifiers[j] then
for k, l in pairs(statement.qualifiers[j]) do
table.insert(vals, l)
end
end
end
if #vals == 0 then
return nil
end
return vals
end
function p.getFormattedQualifiers(statement, qualifs, params)
if not params then params = {} end
local qualiftable = getQualifiers(statement, qualifs)
if not qualiftable then
return nil
end
for i, j in pairs(qualiftable) do
qualiftable[i] = p.formatSnak(j, params)
end
return linguistic.conj(qualiftable)
end
function p.formatStatement( statement, args )
if not args then args = {} end
if not statement.type or statement.type ~= 'statement' then
return formatError( 'unknown-claim-type' )
end
local str = p.formatSnak( statement.mainsnak, args )
if args.showlang == true then
str = (showlang(statement) or '') .. str
end
if args.showqualifiers then
local qualifs = args.showqualifiers
if type(qualifs) == 'string' then
qualifs = mw.text.split(qualifs, ',')
end
local foundvalues = p.getFormattedQualifiers(statement, qualifs, args)
if foundvalues then
str = str .. linguistic.inparentheses(foundvalues, lang)
end
end
if args.showdate then -- when "showdate and chronosort are both set, date retrieval is performed twice
local timedata = p.getDate(statement)
if timedata then
local formatteddate = dates.objecttotext(timedata, args)
formattteddate = linguistic.inparentheses(formatteddate, lang)
str = str .. '<small>' .. formattteddate ..'</small>'
end
end
if args.showsource and statement.references then --[[needs abritrary access
local sourcestring = ''
for i, ref in pairs(statement.references) do
if ref.snaks.P248 then
for j, source in pairs(ref.snaks.P248) do
if source.snaktype == 'value' then
local page
if ref.snaks.P304 and ref.snaks.P304[1].snaktype == 'value' then
page = ref.snaks.P304[1].datavalue.value
end
local s = require('Module:Cite/sandbox').citeitem('Q' .. source.datavalue.value['numeric-id'], lang, page)
s = mw.getCurrentFrame():extensionTag( 'ref', s )
sourcestring = sourcestring .. s
end
end
elseif ref.snaks.P854 and ref.snaks.P854[1].snaktype == 'value' then
s = mw.getCurrentFrame():extensionTag( 'ref', formatLink(ref.snaks.P854[1].datavalue.value))
sourcestring = sourcestring .. s
end
end
str = str .. sourcestring ]]--
end
return str
end
function p.formatSnak( snak, params )
if not args then args = {} end -- pour faciliter l'appel depuis d'autres modules
if snak.snaktype == 'somevalue' then
return formatTheUnknown()
elseif snak.snaktype == 'novalue' then
return i18n['novalue'] --todo
elseif snak.snaktype == 'value' then
return p.getDatavalue( snak, params)
else
return formatError( 'unknown-snak-type' )
end
end
function p._getLabel(entity, default, inlanguage)
local label
if not entity then
return nil
end
if inlanguage then -- cherche dans l'élément complet s'il est déjà chargé, ou s'il faut une libellé non-français, inacessible par mw.wikibase.label
entity = getEntity(entity)
end
if type(entity) == 'table' then
if entity and entity.labels and entity.labels[lang] then
label = entity.labels[lang].value
end
else
label = mw.wikibase.label(entity)
end
if label then
return label
end
if default == 'nolabel' then
return i18n['no-label']
end
return entity.id
end
function p._getDescription(entity, lang)
if type(entity) ~= 'table' then
entity = getEntity(entity)
end
if not entity.descriptions then
return i18n['no description']
end
local descriptions = entity.descriptions
if not descriptions then
return nil
end
if descriptions[lang] then
return descriptions[lang].value
end
local fblist = require('Module:Fallback').fblist(lang) -- list of fallback languages in no label in the desired language
for i, j in pairs (mw.language.getFallbacksFor(lang)) do
if descriptions.lang then
return descriptions[lang].value
end
end
if default == 'nolabel' then
return i18n['no-label']
end
return entity.id
end
local function formattedLabel(label, entity, args)
if not args then
args = {}
end
if args.link== '-' then
return label
end
local link = mw.wikibase.sitelink( entity )
if not link then
link = 'd:' .. entity
end
return '[[' .. link .. '|' .. label .. ']]'
end
function p.getmainid(claim)
if claim and claim.mainsnak.snaktype == 'value' then
return 'Q' .. claim.mainsnak.datavalue.value['numeric-id']
end
end
function p.formatEntity( entity, args )
local label = p._getLabel(entity, lang)
if not label then
label = entity
end
return formattedLabel(label, entity, args)
end
function p.getLabel(frame) -- simple for simple templates like {{Q|}}}
local args = frame.args
local entity = args.entity
local lang = lang
if args.lang and args.lang ~= '' then
lang = args.lang
end
if string.sub(entity, 1, 10) == 'Property:P' then
entity = string.sub(entity, 10)
elseif (string.sub(entity, 1, 1) ~= 'P' and string.sub(entity, 1, 1) ~= 'Q') or (not tonumber(string.sub(entity, 2))) then
return i18n.errors['invalid-id']
end
if not args.link or args.link == '' then -- by default: no link
args.link = '-'
end
if args.link == '-' then
return p._getLabel(entity, lang) or i18n.errors['invalid-id']
else
lang = lang
return p.formatEntity(entity, args)
end
end
function p._formatStatements( args )--Format statement and concat them cleanly
if args.value == '-' then
return nil
end
--If a value is already set, use it
if args.value and args.value ~= '' then
return args.value
end
local valuetable = p.stringTable(args)
return tableToText(valuetable, args)
end
function p._formatAndCat(args)
local val = p._formatStatements( args )
if val then
return val .. addtrackingcat(args.property)
end
end
function p.getTheDate(args)
local claims = p.getClaims(args)
if not claims then
return nil
end
local formattedvalues = {}
for i, j in pairs(claims) do
table.insert(formattedvalues, p.getFormattedDate(j))
end
local val = linguistic.conj(formattedvalues)
if val and args.addcat == true then
return val .. addtrackingcat(args.property)
else
return val
end
end
---FONCTIONS depuis le FRAME
function p.getaDate(frame)
return p.getTheDate(frame.args)
end
function p.getQualifier( frame )
local claims = p.getClaims(frame.args)
local str = ''
local qualifs = frame.args.qualifiers or frame.args.qualifier
if not qualifs then
return formatError( 'property-param-not-provided' )
end
qualifs = mw.text.split(qualifs, ',')
for i, j in pairs(claims) do
local new = p.getFormattedQualifiers(j, qualifs) or ''
str = str .. new
end
return str
end
function p.getDescription(frame) -- simple for simple templates like {{Q|}}}
local entity = frame.args.entity
if frame.args.lang then
lang = frame.args.lang
end
if (string.sub(entity, 1, 1) ~= 'P' and string.sub(entity, 1, 1) ~= 'Q') or (not tonumber(string.sub(entity, 2))) then
return i18n.errors['invalid-id']
end
return p._getDescription(entity, lang) or i18n.errors['invalid-id']
end
function p.numOfClaims(frame)
local claims = p.getClaims(frame.args)
if claims then
return #claims
else
return 0
end
end
function p.formatStatements( frame )
local args = {}
if frame == mw.getCurrentFrame() then
args = frame:getParent().args -- paramètres du modèle appelant (est-ce vraiment une bonne idée ?)
for k, v in pairs(frame.args) do
args[k] = v
end
else
args = frame
end
return p._formatStatements( args )
end
function p.formatAndCat(frame)
local args = {}
if frame == mw.getCurrentFrame() then
args = frame:getParent().args -- paramètres du modèle appelant (est-ce vraiment une bonne idée ?)
for k, v in pairs(frame.args) do
args[k] = v
end
else
args = frame
end
return p._formatAndCat( args )
end
return p