Module:Interface Wikidata

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

modifier

Fonctions Lua

modifier
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}}

->Q18678265

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 (« date d'ouverture officielle »), ou de la forme QXX, dans ce cas il sera recherché dans la propriété P793 (« événement clé »))
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

modifier

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]
	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