Module:Cardinal

De Gregorius 3.0
Sauter à la navigation Sauter à la recherche

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'] = '1935-12-16',
['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 --
    linkedwiki.setCurrentFrame(mw.getCurrentFrame()) -- added by hand

   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'], xsd..'date','') ) --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"]),"Legende TODO", "infobox" )
	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