<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wicri-demo.istex.fr/Wicri/Informatique/fr/index.php?action=history&amp;feed=atom&amp;title=Module%3AWikidata%2FNommage</id>
	<title>Module:Wikidata/Nommage - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wicri-demo.istex.fr/Wicri/Informatique/fr/index.php?action=history&amp;feed=atom&amp;title=Module%3AWikidata%2FNommage"/>
	<link rel="alternate" type="text/html" href="https://wicri-demo.istex.fr/Wicri/Informatique/fr/index.php?title=Module:Wikidata/Nommage&amp;action=history"/>
	<updated>2026-04-19T10:54:20Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.31.10</generator>
	<entry>
		<id>https://wicri-demo.istex.fr/Wicri/Informatique/fr/index.php?title=Module:Wikidata/Nommage&amp;diff=2595&amp;oldid=prev</id>
		<title>imported&gt;Jacques Ducloy : Page créée avec « -- Module Wikidata d’aide à la gestion du nommage des entités, en particulier le nommage des entités à une date donnée -- Work In Progress version « marche pas »... »</title>
		<link rel="alternate" type="text/html" href="https://wicri-demo.istex.fr/Wicri/Informatique/fr/index.php?title=Module:Wikidata/Nommage&amp;diff=2595&amp;oldid=prev"/>
		<updated>2019-06-06T16:09:52Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « -- Module Wikidata d’aide à la gestion du nommage des entités, en particulier le nommage des entités à une date donnée -- Work In Progress version « marche pas »... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Module Wikidata d’aide à la gestion du nommage des entités, en particulier le nommage des entités à une date donnée&lt;br /&gt;
-- Work In Progress version « marche pas »&lt;br /&gt;
&lt;br /&gt;
local wikidata = require &amp;quot;Module:Wikidata&amp;quot;&lt;br /&gt;
local modules = {}&lt;br /&gt;
modules.formatDate = require &amp;quot;Module:Date complexe&amp;quot;&lt;br /&gt;
local fun = require &amp;quot;Module:Luafun&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local PofficialName = &amp;quot;P1448&amp;quot;&lt;br /&gt;
local PDateNaissance = &amp;quot;P569&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
p.wd = wikidata&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------&lt;br /&gt;
-- copied from Module:Wikidata as these are not local functions for now&lt;br /&gt;
local function timeFromSnak(snak)&lt;br /&gt;
	if snak and snak.snaktype == &amp;quot;value&amp;quot; then&lt;br /&gt;
		return snak.datavalue.value.time&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function timeFromQualifs(claim, qualifs)&lt;br /&gt;
	local claimqualifs = claim.qualifiers&lt;br /&gt;
	if not claimqualifs then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	for i, qualif in pairs(qualifs or timequalifiers) do&lt;br /&gt;
		local vals = claimqualifs[qualif] or {}&lt;br /&gt;
		local cand = timeFromSnak(vals[1])&lt;br /&gt;
		if cand then return cand end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function atDate(claim, mydate)&lt;br /&gt;
	if mydate == &amp;quot;today&amp;quot; then&lt;br /&gt;
		mydate = os.date(&amp;quot;!%Y-%m-%dT%TZ&amp;quot;)&lt;br /&gt;
	end	&lt;br /&gt;
	mw.log(&amp;quot;testdate&amp;quot;)&lt;br /&gt;
	local newclaims = {}&lt;br /&gt;
	local mindate = timeFromQualifs(claim, {'P580'}) &lt;br /&gt;
	local maxdate = timeFromQualifs(claim, {'P582'})&lt;br /&gt;
	mw.logObject(mydate)&lt;br /&gt;
	if modules.formatDate.before(mydate, mindate) and  modules.formatDate.before(maxdate, mydate) then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
-------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function stmtMeetsOneTrueIn(condition, values)&lt;br /&gt;
	return function(stmt)&lt;br /&gt;
		return values:any(&lt;br /&gt;
			function(date) return condition(stmt, date) end&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function mainSnak(stmt)&lt;br /&gt;
	return stmt.mainsnak&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.nameAtDate = function (place_qid, date_claims)&lt;br /&gt;
	local names = mw.wikibase.getAllStatements(place_qid, &amp;quot;P1448&amp;quot;)&lt;br /&gt;
	mw.log(#date_claims)&lt;br /&gt;
	local date_vals = fun.iter(date_claims):map(mainSnak):map(timeFromSnak)&lt;br /&gt;
	date_vals:each(mw.log)&lt;br /&gt;
	&lt;br /&gt;
	local atOneOfTheDates = stmtMeetsOneTrueIn(atDate, date_vals)&lt;br /&gt;
	&lt;br /&gt;
	names = wikidata.filterClaims(&lt;br /&gt;
		names, &lt;br /&gt;
		{&lt;br /&gt;
			['condition'] = atOneOfTheDates, &lt;br /&gt;
			['isinlang'] = 'fr', &lt;br /&gt;
			['rank'] = 'valid'&lt;br /&gt;
		}&lt;br /&gt;
	)&lt;br /&gt;
	&lt;br /&gt;
	return names&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- =p.nameAtPropValue(&amp;quot;Q192393&amp;quot;, &amp;quot;P569&amp;quot; ,&amp;quot;Q2977199&amp;quot;)&lt;br /&gt;
p.nameAtPropValue = function(toNameEntity, atDateProperty, forItem)&lt;br /&gt;
	local dates&lt;br /&gt;
	if type(forItem) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		dates = forItem:getBestStatements(atDateProperty)&lt;br /&gt;
	else&lt;br /&gt;
	    dates = mw.wikibase.getBestStatements(forItem, atDateProperty)&lt;br /&gt;
	end&lt;br /&gt;
	local names = p.nameAtDate(toNameEntity, dates)&lt;br /&gt;
	return names&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[test &lt;br /&gt;
=p.wd.formatAndCat(&lt;br /&gt;
					{&lt;br /&gt;
						entity = &amp;quot;Q2977199&amp;quot;, &lt;br /&gt;
						property= 'P19', &lt;br /&gt;
						rank = 'best', &lt;br /&gt;
						conjtype= ' ou ', &lt;br /&gt;
						unknownlabel = &amp;quot;lieu inconnu&amp;quot;,&lt;br /&gt;
						statementformat = p.nameAtDatePropStatementFormatter(&amp;quot;P569&amp;quot;, &amp;quot;Q2977199&amp;quot;)&lt;br /&gt;
					})&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local const_format = function(label)&lt;br /&gt;
	return function()&lt;br /&gt;
		return label&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function modify_parameters(orig, delta)&lt;br /&gt;
	local modified = orig&lt;br /&gt;
	for k, v in pairs(delta) do&lt;br /&gt;
		modified[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return modified&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[ function generator (closures) for the « statementformat » parameter of &lt;br /&gt;
     Module:Wikidata to format statements according to the date given by another property&lt;br /&gt;
     &lt;br /&gt;
     (conj is optional)&lt;br /&gt;
     &lt;br /&gt;
     When called, the return function will use the values for the property &lt;br /&gt;
     « dateOfProperty » of the reference item to search for the names of an item at those time(s)&lt;br /&gt;
--]]&lt;br /&gt;
p.nameAtDatePropStatementFormatter = function(dateOfProperty, item, conj)&lt;br /&gt;
	conj = conj or &amp;quot; ou &amp;quot;&lt;br /&gt;
	return function(stmt, params)&lt;br /&gt;
		local snak = stmt.mainsnak&lt;br /&gt;
		if snak.snaktype ~= 'value' then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
		local labels = p.nameAtPropValue(wikidata.getId(snak), &amp;quot;P569&amp;quot;, item)&lt;br /&gt;
		if labels then&lt;br /&gt;
			local label = wikidata.formatStatements{&lt;br /&gt;
				claims=labels, conj = conj&lt;br /&gt;
			}&lt;br /&gt;
			return wikidata.formatEntity(wikidata.getId(snak), modify_parameters(params, {labelformat=const_format(label)}))&lt;br /&gt;
		else&lt;br /&gt;
			return wikidata.formatEntity(wikidata.getId(snak), params)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- interface for a test template&lt;br /&gt;
p.nameForItem = function(frame)&lt;br /&gt;
	local item = frame.args[&amp;quot;item&amp;quot;]&lt;br /&gt;
	local atDateProperty = frame.args[&amp;quot;atDateProperty&amp;quot;]&lt;br /&gt;
	local toNameEntity = frame.args[&amp;quot;toNameEntity&amp;quot;]&lt;br /&gt;
	local res = p.nameAtPropValue(toNameEntity, atDateProperty, item)&lt;br /&gt;
	if res then&lt;br /&gt;
		return wikidata.formatStatements{&lt;br /&gt;
			claims=res, conj=&amp;quot; ou &amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	else&lt;br /&gt;
		return mw.wikibase.label(toNameEntity)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Jacques Ducloy</name></author>
		
	</entry>
</feed>