SFTG Recherche, soutient un projet d'analyse de l'usage, de l'intérêt et de la contribution à ce site. Merci d'avoir répondu à l'enquête.
Module:Interface Wikidata : Différence entre versions
Sauter à la navigation
Sauter à la recherche
w.fr>Zebulon84 (+ p.addLinkBack( frame ) pour pouvoir ajouté un linkBack en dehors du modèle Wikidata lorsque le résultat de ce dernier est utilisé dans un autre modèle ne supportant pas le linback) |
m (1 révision importée) |
(Aucune différence)
|
Version actuelle datée du 24 février 2019 à 15:17
Cette page donne accès à un ensemble de fonction permettant de traiter les données de Wikidata.
Elle contient deux parties : les fonctions "frame", que l'on peut utiliser depuis du Wikicode, et une partie plus fournie comportant également des fonctions qui ne peuvent être utilisées que depuis Lua.
Ce module fait appel au Module:Wikidata.
Utilisation
Fonctions Lua
nom | paramètres | description | exemple |
---|---|---|---|
getClaims | table d'arguments (voir Projet:Wikidata/Atelier/Manuel ) | récupère une série de "déclarations" Wikidata répondant aux critères données en arguments | |
stringTable | table d'arguments (voir Projet:Wikidata/Atelier/Manuel ) | même fonctionnement que getClaims, mais retourne une liste de chaîne plutôt qu'une liste de déclarations brutes | |
tableToText | table de valeurs, paramètres | transforme une liste de chaîne en une chaîne unique | (plus ou moins redondant avec linguistic.conj pourrait peut-être être supprimé) |
formatStatements | table d'arguments (voir Projet:Wikidata/Atelier/Manuel ) | récupère et formate une série de "déclarations" Wikidata répondant aux critères données en argument (comme stringTable), puis les assemble en une chaîne unique selon le paramètre donné par le paramètre "conjtype" | |
formatQualifiers | table d'arguments (voir Projet:Wikidata/Atelier/Manuel ) | similaire à formatStatements, mais ne retourne que des valeurs stockées dans des qualificatifs des déclarations, pas dans son mainsnak | |
formatAndCat | table d'arguments (voir Projet:Wikidata/Atelier/Manuel ) | comme formatStatents, mais ajoute en plus un catégorie de maintenance et un rétrolien vers Wikidata | |
formatClaimList | |||
wikidataDate | |||
addLinkback | |||
addtrackingcat | |||
getmainid | statement | retourne l'identifiant de la valeur principal de la déclaration | |
formatStatement | statement, args | formate une déclaration individuelle en utilisant les paramètres données en arguments (voir Projet:Wikidata/Atelier/Manuel ) | |
getFormattedQualifiers | statement, table de qualificatifs, paramètres d'affichage | sumilair à formatStatemnt (formatage d'une déclaration individuelle), mais n'affiche que des qualificatifs | |
statementDate | statement, params | affiche la date associée à une déclaration en recherchant dans différents qualificatifs (P580, P582, P585, P1319, P1326, P1480 | |
getQualifiers | |||
getReferences | |||
getid | snak | récupère l'identifiant de la valeur d'un snak | |
formatSnak | snak, params | formate un snak individuel, selon une logique identique à formatStatement | |
getEntity | id | charge les données d'un élément Wikidata | |
formatEntity | entity, params | retourne une chaîne affichant un libellé et éventuellement un lien vers l'entité indiquée, en utilisant les paramètres de mise en forme indiqués dans la table param. le paramètre "id" peut être soit un identifiant Qdd soit une table Wikidata déjà chargée. | |
getLink | entity, linktype, lang | retourne un lien vers la page wiki demande. Linktype doit être 'wikipedia', 'commons', wikisource' ou 'wikidata' (défaut : wikipédia) et "lang" le code Wiki de la langue désirée (défaut : français) | |
getLabel | entity, lang, labelformat | Par défaut, retourne le libellé Wikidata de l'élément dans la langue indiquée dans le paramètre lang. Le paramètre labelformat permet de changer ce comportement en générant un libellé à partir de n'importe quelle fonction prenant pour argument l'entité. | |
IsInstance | classe cible, élément source, profondeur max | retourne true Si l'élément source est une "instance" de la classe cible (utilise P31 et P279) |
|
IsSubclass | classe cible, élément source, profondeur max | retourn true Si l'élément source est une "sous-classe" de la classe cible (P279) |
|
addVals | list, query, maxdepth, maxnodes, stopval | ajoute des éléments Wikidata à une liste, en se basant sur le paramètre query, et en s'arrêtant lorsque maxdepth ou maxnodes est ateint, ou lorsque l'élément stopval est trouvé | |
transitiveVals | item, query, maxdepth, maxnodes, stopval | retourne les éléments correspondant aux paramètres définis par query, et les élémennts correspondant aux paramètre définis par query effectués sur les valeurs de query... | |
transitiveVals | searchedval, sourceval, query, maxdepth, maxnodes | retourne true si searchedval se trouve dans les valeurs retournée par la fonction transitiveVals( sourceval, query, maxdepth, maxnodes ) |
|
findVal | source, targetclass, query, maxrecursion, maxinstancedepth | trouver la première valeur pour un propriété "transitive" qui appartient à une class donnée. Par exemple, pour trouver dans quelle région administrative se trouve Toulouse. |
findVal("Q7880", "Q36784", "P131") {{#invoke:Interface Wikidata|findVal|source=Q7880|target=Q36784|property=P131}} -> |
mainDate | item | retourne la date associée à un élément (en utilisant P585, P571 et certains qualificatifs | |
keyDate | item, event | retourne la date associée à une événement sur l'élément Wikidata. L'élément peut-être de la forme PXX (P1619 (« »), ou de la forme QXX, dans ce cas il sera recherché dans la propriété P793 (« »)) | |
citeItem | item | crée une référence bibliographique à partir des données de l'élément item | |
Dump | item | affiche l'intégralité des données Wikidata de l'élément |
Exemples
Pour des exemples, voir la page de test permettant de tester diverses modifications apportées.
local p = {}
local d = require 'Module:Wikidata'
-- fonctions ne pouvant être appelées que depuis un autre module
p.fromLua = {
-- manipulation d'une liste d'affirmations
getClaims = d.getClaims,
stringTable = d.stringTable,
tableToText = d.tableToText,
formatStatements = d.formatStatements,
formatQualifiers = d.showQualifier,
formatAndCat = d.formatAndCat,
wikidataDate = d.wikidataDate,
addLinkback = d.addLinkBack,
addtrackingcat = d.addTrackingCat,
-- manipulation d'une affirmation individelle
getmainid = d.getMainId,
formatStatement = d.formatStatement,
statementDate = d.getFormattedDate, -- récupère la date des qualificatifs
getFormattedQualifiers = d.getFormattedQualifiers,
getQualifiers = d.getQualifiers,
getReferences = d.getReferences,
-- manipulation de snaks
getid = d.getId,
formatSnak = d.formatSnak,
-- utilisation de qids
getEntity = d.getEntity,
formatEntity = d.formatEntity,
getLink = d.siteLink,
getLabel = d.getLabel, --getLabel est plus simple que formatEntity
-- utilisation des propriétés transitives
isInstance = d.isInstance,
isSubclass = d.isSubclass,
addVals = d.addVals,
transitiveVals = d.transitiveVals,
inTransitiveVals = d.inTransitiveVals,
findVal = d.findVal,
-- gestion des dates
mainDate = d.mainDate,
getDate = d.getTheDate,
keyDate = d.keyDate,
-- Fonctions diverses
citeItem = d.citeitem,
translate = d.translate,
Dump = d.Dump,
}
-- Fonctions frame pour usage depuis le Wikitexte (avec parfois des options pour gérer des données moins propres
local function cleanargs(args)
local newargs = {}
for i, j in pairs(args) do
if j ~= '' then
newargs[i] = j
end
end
return newargs
end
function p.formatStatements( frame ) -- pour [[Modèle:Wikidata]]
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.fromLua.formatStatements( args )
end
function p.addLinkBack( frame )
local args = cleanargs(frame.args)
if args[1] and args[1]:match"%S" then
return d.addLinkBack( '', args.entity, mw.text.trim( args[1] ) )
end
end
function p.formatEntity(frame)
local args = cleanargs(frame.args)
local entity = args.entity or args[1]
if (not entity) or (entity == '') then
entity = mw.wikibase.getEntityObject()
end
return d.formatEntity(entity, args)
end
function p.formatAndCat(frame)
local args = cleanargs(frame.args)
return d.formatAndCat(args)
end
function p.citeItem(frame)
local args = cleanargs(frame.args)
local item, page = args[1], args['page']
return p.fromLua.citeItem(item, page)
end
function p.getLabel(frame)
local args = cleanargs(frame.args)
local item = args[1]
local lang = args[2] or "fr"
return d.getLabel(item, lang)
end
function p.mainDate(frame)
return d.mainDate(frame.args['entity'])
end
function p.Dump(frame)
return d.Dump(frame.args[1])
end
function p.formatQualifiers(frame)
local args = frame.args
return d.formatQualifiers(args)
end
function p.getDescription(frame) -- fonction simpliste, mais bon, les descriptions Wikidata, c'est pas non plus super utile
return mw.wikibase.description(frame.args[1])
end
function p.getLink(frame)
local args = frame.args
local link, proj, lang = p.fromLua.getLink(args[1], args[2], args[3])
return link
end
function p.translate(frame)
return d.translate(frame.args[1])
end
function p.findVal(frame)
local args = frame.args
return d.findVal(args.source, args.target, args.property, args.recursion, args.instancedepth)
end
function p.transitiveVals(frame)
local args = frame.args
return d.transitiveVals(args.item, args, args.maxdepth, args.maxnodes, args.stopval, true)
end
return p