Module:Interface Wikidata/Bac à sable

 Documentation[voir] [modifier] [historique] [purger]

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é »))
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/Bac à sable'

-- 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
	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 k, v in pairs(args) do
		if v ~= '' then
			--[[ possibilité de passer des booléen, convertion des valeur "true", "false" en booleen lua
			     (sinon le module lua ne prend pas en compte "excludespecial" 
			      qui est "true" par défaut et considère toute chaîne comme vraie)
			 --]]
			if v == "true" then
				newargs[k] = true
			elseif v == "false" then
				newargs[k] = false
			else
				newargs[k] = v
			end
		end
	end
	return newargs
end


function p.formatStatements( frame ) -- pour Modèle:Wikidata
	local args = {}
	if frame == mw.getCurrentFrame() then
		args = cleanargs(frame.args) -- paramètres en dur du code de Modèle:Wikidata
		for k, v in pairs(cleanargs(frame:getParent().args)) do
			-- chargement des paramètres de l'appel au modèle, 
			-- pour permettre la surcharge des paramètres par défaut dans "Modèle:Wikidata"
			args[k] = v
		end
	else
		args = frame
	end
	if args.blockers and args.blockers ~= '' then return args.value 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.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

function p.getReferences(frame)
	local args = cleanargs(frame.args)
	return d.getReferences(args)
end

return p