Module:Cardinal
Révision datée du 28 octobre 2021 à 14:38 par Marco.leoni (discussion | contributions)
La documentation pour ce module peut être créée à Module:Cardinal/doc
--[[
-- Debug console
frame = mw.getCurrentFrame() -- Get a frame object
newFrame = frame:newChild{ -- Get one with args
title = 'cardinal test' ,
args = {
iri = 'http://gregorius.dsi.universite-paris-saclay.fr/wiki/Alfred_Baudrillart_test3' ,
["Wikidata ID"] = 'Q666551' ,
["Bnf ID"] = 'FRBNF121308657' ,
["Titre"] = 'Alfred Baudrillart' ,
["Image"] = '' ,
['Nom de naissance'] = '' ,
['Lieu de naissance'] = 'Paris' ,
['Date de naissance'] = '1859-01-06' ,
['Naissance précision (années)'] = '' ,
['Lieu de décès'] = 'Paris' ,
['Date de décès'] = '1942-05-19' ,
['Titre cardinalice'] = '' ,
['Nomination au cardinalat'] = '16-12-1935',
['Fin du cardinalat'] = '',
['Charges recouvertes'] = ''
}
}
mw.log(p.infobox( newFrame ) )
]]
local p = {}
function p.infobox(f)
local capiunto = require 'capiunto' -- 'capiunto' to show infobox --
local linkedwiki = require 'linkedwiki' -- to save data into database --
local rdf = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'
local rdfs = 'http://www.w3.org/2000/01/rdf-schema#'
local ri = 'http://gregorius.dsi.universite-paris-saclay.fr/wiki/'
local rp = 'http://gregorius.dsi.universite-paris-saclay.fr/wiki/Property:'
local geo = 'http://www.w3.org/2003/01/geo/wgs84_pos#'
local vcard = 'http://www.w3.org/2006/vcard/ns#'
local xsd = 'http://www.w3.org/2001/XMLSchema#'
local wdt = 'http://www.wikidata.org/prop/direct/'
local wd = 'http://www.wikidata.org/entity/'
local bnf = 'http://www.data.bnf.fr/'
local p = 'http://www.wikidata.org/prop/'
local pq = 'http://www.wikidata.org/prop/qualifier/'
local ps = 'http://www.wikidata.org/prop/statement/'
local dateFormat = "d M Y"
-- local subject = f.args.iri or linkedwiki.getCurrentIRI(); -- iri de la page execute par ce module
local linkedwiki = require 'linkedwiki' -- iri de la page execute par ce module
local subject = f.args.iri or linkedwiki.getCurrentIRI(); -- read the iri of the current page
local object = linkedwiki.new(subject) -- recuperes l'objet (au sens instance de la classe)
object:setDebug(true) --uncomment for debugging
object:removeSubject() -- delete all triples of this subject (associees au nom de)
if not linkedwiki.isEmpty(f.args['Cardinal']) then --just added to cure error
mw.log(object:addPropertyWithIri(rdf..'type',ri..'Cardinal')) -- concatenation d'iri(s) en LUA --
end
-- specific to Pape => change to Cardinal
if not linkedwiki.isEmpty(f.args['Titre']) then --just added to cure error
mw.log(object:addPropertyString(rdfs..'label',f.args["Titre"] ))
end
if not linkedwiki.isEmpty(f.args['Image']) then --just added to cure error
mw.log(object:addPropertyWithIri(rp..'picture',f.args["Image"]))
end
if not linkedwiki.isEmpty(f.args['Nom de naissance']) then
mw.log(object:addProperty(rp..'nomDeNaissance',f.args['Nom de naissance']))
end
if not linkedwiki.isEmpty(f.args['Date de naissance']) then
mw.log(object:addProperty(rp..'naissance',f.args['Date de naissance'] ,xsd..'date',''))
end
if not linkedwiki.isEmpty(f.args['Naissance précision (années)']) then
mw.log(object:addProperty(rp..'naissancePrecision',f.args['Naissance précision (années)'],xsd..'integer',''))
end
if not linkedwiki.isEmpty(f.args['Lieu de naissance']) then
mw.log(object:addPropertyString(rp..'lieuDeNaissance',f.args['Lieu de naissance']))
end
if not linkedwiki.isEmpty(f.args['Date de décès']) then
mw.log(object:addProperty(rp..'deces',f.args['Date de décès'],xsd..'date',''))
end
if not linkedwiki.isEmpty(f.args['Lieu de décès']) then
mw.log(object:addPropertyString(rp..'lieuDeDeces',f.args['Lieu de décès']))
end
if not linkedwiki.isEmpty(f.args['Nomination au cardinalat']) then
mw.log(object:addProperty(rp..'nominationAuCardinalat',f.args['Nomination au cardinalat'], dateFormat) ) --att! datatype
end
if not linkedwiki.isEmpty(f.args['Titre cardinalice']) then
mw.log(object:addProperty(rp..'titreCardinalice',f.args['Titre cardinalice']))
end
if not linkedwiki.isEmpty(f.args['Fin du cardinalat']) then
mw.log(object:addProperty(rp..'finDuCardinalat',f.args['Fin du cardinalat'],xsd..'date',''))
end
if not linkedwiki.isEmpty(f.args['Charges recouvertes']) then
mw.log(object:addProperty(rp..'chargesrecouvertes',f.args['Charges recouvertes']))
end
--if not linkedwiki.isEmpty(f.args['Charges recouvertes']) then --just added to cure error
-- mw.log(object:addProperty(rp..'chargesrecouvertes',f.args['Charges recouvertes']))
--end
-- up to here all in opendata
-- from now on, other databases
--compare data with wikidata
local iriWikidata = ""
local objWikidata = nil
local objWikidataLieuNaissance = nil
local objWikidataLieuDeces = nil
local objCardinalFonction = nil
local linkWikidata = ""
local topWikidata = ""
-- add the charge
local objWikidataCharges = nil
local objWikidataBishopCharge = nil
if not linkedwiki.isEmpty(f.args['Wikidata ID']) then
local idConfigWikidata ='http://www.wikidata.org'
local taglang ='fr'
iriWikidata = wd .. f.args['Wikidata ID']
objWikidata = linkedwiki.new(iriWikidata,idConfigWikidata,taglang) -- create object with same config of wikidata
-- and use the same ID of wikidata to get the informations relative to that object
mw.log(object:addPropertyWithIri(rp..'WikidataID',iriWikidata)) -- save wikidata ID in our database
objWikidataLieuNaissance = linkedwiki.new(objWikidata:getValue(wdt..'P19'),idConfigWikidata,taglang) --get lieu naissance
--- coherent with https://www.wikidata.org/wiki/Property:P19
objWikidataLieuDeces = linkedwiki.new(objWikidata:getValue(wdt..'P20'),idConfigWikidata,taglang)--get lieu deces
listIri = linkedwiki.explode(";", objWikidata:getValue(p..'P39')) -- https://www.wikidata.org/wiki/Property:P39 (position)
objCardinalFonction = nil
for i, iri in ipairs(listIri) do
objCardinalFonction = linkedwiki.new(iri,idConfigWikidata,taglang)
if objCardinalFonction:getValue(ps..'P39') == wd .."Q45722" then
break
end
end
linkWikidata ='['..iriWikidata..' '..f.args['Wikidata ID']..']'
topWikidata = objWikidata:checkString(rdfs..'label',f.args.Title)
end
local iriBNF =""
local objBnf = nil
local linkBNF =""
if not linkedwiki.isEmpty(f.args['Bnf ID']) then
iriBNF = bnf .. f.args['Bnf ID']
objBnf = linkedwiki.new(iriBNF,'http://data.bnf.fr',"fr")
mw.log(object:addPropertyWithIri(rp..'BnfID',iriBNF))
linkBNF = '['..iriBNF..' '..f.args['Bnf ID']..']'
end
-- we build our own infobox
local infobox = capiunto.create( {
bodyStyle = 'width : 50px',
bodyClass = 'gregoriusCardinal',
title = 'Cardinal' ,
top = topWikidata ,
topStyle = 'background:#FFD200;height:50px;font-size: 25px;vertical-align:middle',
-- bottom =
} )
--objWikidata:setDebug(true)
-- if the arg exists in wikidata, then check if it is empty or not and act accordignly
if not linkedwiki.isEmpty(f.args['Wikidata ID']) then
infobox:addImage( objWikidata:checkImage(wdt..'P18',f.args["Image"],200),"", "Image" )
infobox:addRow('Nom de naissance',objWikidata:getValue(wdt.."P1559",f.args['Nom de naissance']))
infobox:addRow('Lieu de naissance',objWikidataLieuNaissance:checkString(rdfs.."label",f.args['Lieu de naissance']))
--infobox:addRow('Date de naissance',objWikidata:checkDate(wdt.."P569",f.args['Date de naissance']),dateFormat)
infobox:addRow('Lieu de décès', objWikidataLieuDeces:checkString(rdfs.."label",f.args['Lieu de décès']))
--infobox:addRow('Date de décès', objWikidata:checkDate(wdt.."P570",f.args['Date de décès'],dateFormat))
--add charges recouvertes
infobox:addRow('Charges recouvertes', objWikidata:checkTitle(wdt..'P39', f.args['Charges recouvertes'], 'fr') )
--add charges recouvertes
else
infobox:addImage( f.args["Image"])
infobox:addRow('Nom de naissance',f.args['Nom de naissance'])
infobox:addRow('Lieu de naissance',f.args['Lieu de naissance'])
infobox:addRow('Naissance',f.args['Date de naissance'],dateFormat)
infobox:addRow('Lieu de décès',f.args['Lieu de décès'])
infobox:addRow('Date de décès', f.args['Date de décès'],dateFormat)
--add charges recouvertes
infobox:addRow('Charges recouvertes', f.args['Charges recouvertes'])
--add charges recouvertes
end
if not linkedwiki.isEmpty(f.args['Wikidata ID']) then
infobox:addRow('Nomination au cardinalat', f.args['Nomination au cardinalat'])
infobox:addRow('Titre cardinalice', f.args['Titre cardinalice'])
infobox:addRow('Fin du cardinalat', objCardinalFonction:checkDate(pq.."P582",f.args['Fin du cardinalat'],dateFormat))
infobox:addRow('Source Wikidata', linkWikidata)
infobox:addRow('Source Bnf', linkBNF)
else
infobox:addRow('Nomination au cardinalat', f.args['Nomination au cardinalat'])
infobox:addRow('Titre cardinalice', f.args['Titre cardinalice'])
infobox:addRow('Fin du cardinalat', f.args['Fin du cardinalat'])
infobox:addRow('Source Wikidata', linkWikidata)
infobox:addRow('Source Bnf', linkBNF)
end
--infobox:addRow('Charges recouvertes', f.args['Charges recouvertes'])
return infobox
end
return p