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:Description
Révision datée du 5 mai 2020 à 17:02 par Yves.bertin (discussion | contributions) (1 révision importée)
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.
Autres fonctions :
fonction()
– description2 (courte description defonction()
et autres informations pertinentes).
Modules externes et autres éléments dont ce module a besoin pour fonctionner :
mw.title
– description (courte description expliquant la dépendance de ce module externe).
Exemples
Pour des exemples, voir la page de test permettant de tester diverses modifications apportées.
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 = true 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 or ""
if includelabel then
desc = descriptionManuelle(label, description)
end
local autodesc = descriptionAuto(entite)
local sep = ""
if description ~= nil then
sep = " ; "
elseif includelabel 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