Module:Description
Apparence
[voir] [modifier] [historique] [purger]
Utilisation
Fonctions exportables :
description(frame)
– calcule une description textuelle d'une entité Wikidata (paramètre 1=identifiant de l'entité) à partir des déclaration génériques (nature, sous-classe, …) et de la description Wikidata.description_par_prio(frame)
– calcule une description textuelle d'une entité Wikidata. Si une description Wikidata est présente, l’afficher, sinon calculer la description auto.
Exemples
Pour des exemples, voir la page de test permettant de tester diverses modifications apportées.
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 (créer).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
local wd = require("Module:Wikidata")
local util = require("Module:Utilitaire")
local p= {}
local proprietes = {instance_de= "P31", sous_classe_de = "P279" }
local function descriptionManuelle(label, description)
local res = nil
if label ~= nil and description ~= nil then
res = label .. ": " .. description
elseif label ~= nil then
res = label
elseif description ~= nil then
res = description
else
res = "" -- label manquant
end
return res
end
function mainValueEntityId(statement)
-- TODO check the snak type : property, novalue, somevalue ...
return "Q" .. tostring(statement.mainsnak.datavalue.value["numeric-id"])
end
local function extract_lbls(entite, prop_id)
local stmts = entite:getBestStatements(prop_id)
if util.tablelength(stmts) > 0 then
local ids = util.map (mainValueEntityId, stmts)
local lbls = util.map (mw.wikibase.label, ids)
return lbls
end
return {}
end
-- test avec = p.decrireEntite("Q8183")
local function descriptionAuto(entite)
local autodesc = nil
local props = util.Set:new(entite:getProperties())
local instance = proprietes["instance_de"]
local sousclasse = proprietes["sous_classe_de"]
if props:is_in(instance) or
props:is_in(sousclasse) then
-- instance de
if props:is_in(instance) then
local lbls = extract_lbls(entite, instance)
autodesc = ""
if util.tablelength(lbls) > 0 then
autodesc = util.formatTableWithLastSep(lbls, ", ", "et ")
end
end
-- sous classe de
if props:is_in(sousclasse) then
local lbls = extract_lbls(entite, sousclasse)
if util.tablelength(lbls) > 0 then
if autodesc ~= nil then
autodesc = autodesc .. " ; "
else
autodesc = ""
end
autodesc = autodesc .. "type de " .. util.formatTableWithLastSep(lbls, ", type de ", " et type de ")
end
end
end
return autodesc
end
function p.decrireEntite(id, includelabel)
if not id or id == '' then
return
end
if (includelabel ~= nil) then includelabel = false end
if tonumber(id) then
id = 'Q' .. id
end
local entite = mw.wikibase.getEntity(id)
if entite then
local description = mw.wikibase.description(id)
local label = entite:getLabel()
local desc = description
if includelabel then
desc = descriptionManuelle(label, description)
end
local autodesc = descriptionAuto(entite)
local sep = ""
if description ~= nil then
sep = " ; "
end
if autodesc ~= nil then
desc = desc .. sep .. autodesc
else
end
return desc
else
return '<span class="error">identifiant wikidata inconnu</span>'
end
end
p.PropClass = PropClass
function p.description(frame)
if frame.args["nolabel"] then
return p.decrireEntite(frame.args[1], false)
end
return p.decrireEntite(frame.args[1])
end
return p