<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://rishon.rcorp.fr/index.php?action=history&amp;feed=atom&amp;title=Module%3ASuivi_des_biographies</id>
	<title>Module:Suivi des biographies - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://rishon.rcorp.fr/index.php?action=history&amp;feed=atom&amp;title=Module%3ASuivi_des_biographies"/>
	<link rel="alternate" type="text/html" href="https://rishon.rcorp.fr/index.php?title=Module:Suivi_des_biographies&amp;action=history"/>
	<updated>2026-09-06T06:48:27Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://rishon.rcorp.fr/index.php?title=Module:Suivi_des_biographies&amp;diff=91&amp;oldid=prev</id>
		<title>RubnK : 1 version importée</title>
		<link rel="alternate" type="text/html" href="https://rishon.rcorp.fr/index.php?title=Module:Suivi_des_biographies&amp;diff=91&amp;oldid=prev"/>
		<updated>2025-06-26T12:19:55Z</updated>

		<summary type="html">&lt;p&gt;1 version importée&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 26 juin 2025 à 14:19&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;fr&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Aucune différence)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>RubnK</name></author>
	</entry>
	<entry>
		<id>https://rishon.rcorp.fr/index.php?title=Module:Suivi_des_biographies&amp;diff=90&amp;oldid=prev</id>
		<title>wp&gt;Od1n : corrige variable globale</title>
		<link rel="alternate" type="text/html" href="https://rishon.rcorp.fr/index.php?title=Module:Suivi_des_biographies&amp;diff=90&amp;oldid=prev"/>
		<updated>2022-04-20T04:39:18Z</updated>

		<summary type="html">&lt;p&gt;corrige variable globale&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[&lt;br /&gt;
Module servant au modèle:Suivi des biographies.&lt;br /&gt;
&lt;br /&gt;
Ce module catégorise les biographies.&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- module wikidata&lt;br /&gt;
local wd = require &amp;#039;Module:Wikidata&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- les données associées&lt;br /&gt;
local data = require &amp;quot;Module:Suivi des biographies/données&amp;quot;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
  fonction parcourant les &amp;quot;parents&amp;quot; de l&amp;#039;élément indiqué et retournant&lt;br /&gt;
  le premier élément présent dans la table &amp;#039;association&amp;#039; durant ce processus&lt;br /&gt;
  (ou référencé par un &amp;#039;identique à&amp;#039;).&lt;br /&gt;
  Fait au maximum &amp;#039;prof&amp;#039; itérations.&lt;br /&gt;
  Retourne &amp;#039;nil&amp;#039; ou une table vide si rien n&amp;#039;est trouvé&lt;br /&gt;
]]--&lt;br /&gt;
function p.cherche_parents(el, prof, checked)&lt;br /&gt;
	if (prof &amp;lt;= 0) then&lt;br /&gt;
		return nil  -- fin de récursion&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- évite de vérifier deux fois le même élément&lt;br /&gt;
	if type(checked) ~= &amp;#039;table&amp;#039; then&lt;br /&gt;
		checked = {}&lt;br /&gt;
	end&lt;br /&gt;
	if checked[el] then&lt;br /&gt;
		return nil&lt;br /&gt;
	else&lt;br /&gt;
		checked[el] = true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- si l&amp;#039;élément courant est dans la table on le retourne (récursion)&lt;br /&gt;
	if (data.association[el] ~= nil) then&lt;br /&gt;
		return el&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- si l&amp;#039;élément n&amp;#039;est pas une entity valide on quitte&lt;br /&gt;
	if not el:match( &amp;#039;^Q%d+$&amp;#039; ) then&lt;br /&gt;
		if el:match( &amp;#039;^environ Q%d+$&amp;#039; ) then&lt;br /&gt;
			el = el:gsub( &amp;#039;^environ &amp;#039;,&amp;#039;&amp;#039; )&lt;br /&gt;
		else&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- on récupère les P460 (réputé identique à) au cas où&lt;br /&gt;
	local args = { [&amp;quot;property&amp;quot;] = &amp;quot;P460&amp;quot;, [&amp;quot;entity&amp;quot;] = el, link = &amp;quot;-&amp;quot;, displayformat = &amp;quot;raw&amp;quot; }&lt;br /&gt;
	local id = wd.stringTable(args)&lt;br /&gt;
	if (id ~= nil) then&lt;br /&gt;
		-- correspond ?&lt;br /&gt;
		for k, v in pairs(id) do&lt;br /&gt;
			if (data.association[v] ~= nil) then&lt;br /&gt;
				return v  -- trouvé, on quitte&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- si on arrive ici c&amp;#039;est qu&amp;#039;il n&amp;#039;a pas d&amp;#039;équivalence. On parcours&lt;br /&gt;
	-- les &amp;quot;sous-classe de&amp;quot; (P279) récursivement&lt;br /&gt;
	args = { [&amp;quot;property&amp;quot;] = &amp;quot;P279&amp;quot;, [&amp;quot;entity&amp;quot;] = el, link = &amp;quot;-&amp;quot;, displayformat = &amp;quot;raw&amp;quot; }&lt;br /&gt;
	id = wd.stringTable(args)&lt;br /&gt;
	if (id ~= nil) then&lt;br /&gt;
		-- pour chaque &amp;quot;sur-classe&amp;quot; on se ré-appelle&lt;br /&gt;
		local ret&lt;br /&gt;
		for k, v in pairs(id) do&lt;br /&gt;
			ret = p.cherche_parents(v, prof-1)&lt;br /&gt;
			if (ret ~= nil) then&lt;br /&gt;
				return ret&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- ici on n&amp;#039;a rien trouvé → nil&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
  fonction retournant une liste des éléments de la table &amp;#039;p.association&amp;#039;&lt;br /&gt;
  trouvés à partir de la propriété &amp;#039;property&amp;#039; pour l&amp;#039;entité &amp;#039;entity&amp;#039; (ou l&amp;#039;article&lt;br /&gt;
  courant si &amp;#039;entity&amp;#039; vaut &amp;#039;nil&amp;#039;)&lt;br /&gt;
]]--&lt;br /&gt;
function p.propriete_parente(property, entity)&lt;br /&gt;
	local args = { [&amp;quot;property&amp;quot;] = property, link = &amp;quot;-&amp;quot;, displayformat = &amp;quot;raw&amp;quot; }&lt;br /&gt;
	local out = {} -- table des résultats&lt;br /&gt;
	if (entity ~= nil) then&lt;br /&gt;
		args[&amp;quot;entity&amp;quot;] = entity&lt;br /&gt;
	end&lt;br /&gt;
	local res = wd.stringTable(args)&lt;br /&gt;
&lt;br /&gt;
	-- si aucun résultat on retourne nil&lt;br /&gt;
	if (type(res) ~= &amp;quot;table&amp;quot;) then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- on parcours tous les résultats à la recherche de ceux qui sont dans la&lt;br /&gt;
	-- liste &amp;#039;association&amp;#039; ou ayant un élément fils de l&amp;#039;un d&amp;#039;entre eux&lt;br /&gt;
	local checked = {}&lt;br /&gt;
	for k, v in pairs(res) do&lt;br /&gt;
		-- si l&amp;#039;élément est présent on l&amp;#039;insert directement&lt;br /&gt;
		checked[k] = true&lt;br /&gt;
		if (data.association[v] ~= nil) then&lt;br /&gt;
			-- bidouille pour les professions &amp;quot;Environ &amp;quot;&lt;br /&gt;
			if v:match( &amp;#039;^environ Q%d+$&amp;#039; ) then&lt;br /&gt;
				v = v:gsub( &amp;#039;^environ &amp;#039;,&amp;#039;&amp;#039; )&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(out, v)&lt;br /&gt;
		else&lt;br /&gt;
			-- on cherche &amp;quot;récursivement&amp;quot; chez les parents&lt;br /&gt;
			-- la valeur numérique est la profondeur max de recherche&lt;br /&gt;
			local d = p.cherche_parents(v, 10, checked)&lt;br /&gt;
			if (d ~= nil) then&lt;br /&gt;
				table.insert(out, d)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
  fonction retournant true si la valeur &amp;#039;value&amp;#039; est présente dans la liste des&lt;br /&gt;
  propriétés &amp;#039;property&amp;#039; pour l&amp;#039;entité &amp;#039;entity&amp;#039; (ou l&amp;#039;article courant si &amp;#039;entity&amp;#039;&lt;br /&gt;
  vaut &amp;#039;nil&amp;#039;)&lt;br /&gt;
  retourne false sinon&lt;br /&gt;
]]--&lt;br /&gt;
function p.presence_propriete(property, value, entity)&lt;br /&gt;
	local args = { [&amp;quot;property&amp;quot;] = property, link = &amp;quot;-&amp;quot;, displayformat = &amp;quot;raw&amp;quot; }&lt;br /&gt;
	if (entity ~= nil) then&lt;br /&gt;
		args[&amp;quot;entity&amp;quot;] = entity&lt;br /&gt;
	end&lt;br /&gt;
	local res = wd.stringTable(args)&lt;br /&gt;
&lt;br /&gt;
	-- pas de résultat, cette propriété WD est absente je présume&lt;br /&gt;
	if (res == nil) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	-- on parcours les résultats pour voir si celle qu&amp;#039;on veut est là&lt;br /&gt;
	for k, v in pairs(res) do&lt;br /&gt;
		if (v == value) then&lt;br /&gt;
			return true  -- trouvé&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false -- pas trouvé&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.existence_propriete(property, entity)&lt;br /&gt;
	local args = { [&amp;quot;property&amp;quot;] = property, link = &amp;quot;-&amp;quot;, displayformat = &amp;quot;raw&amp;quot; }&lt;br /&gt;
	if (entity ~= nil) then&lt;br /&gt;
		args[&amp;quot;entity&amp;quot;] = entity&lt;br /&gt;
	end&lt;br /&gt;
	local res = wd.stringTable(args)&lt;br /&gt;
&lt;br /&gt;
	-- pas de résultat, cette propriété WD est absente je présume&lt;br /&gt;
	if (res == nil) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return true -- trouvé&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- dédoublonne le contenu&lt;br /&gt;
function p.dedoublonne(tbl)&lt;br /&gt;
	if (type(tbl) ~= &amp;quot;table&amp;quot;) then&lt;br /&gt;
		return tbl&lt;br /&gt;
	end&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local tmp = {}&lt;br /&gt;
	for k, v in ipairs(tbl) do&lt;br /&gt;
		if (tmp[v] == nil) then&lt;br /&gt;
			table.insert(out, v)&lt;br /&gt;
			tmp[v] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- conversion affichage d&amp;#039;une liste de &amp;#039;association&amp;#039;&lt;br /&gt;
function p.affiche_elements(tbl)&lt;br /&gt;
	local ret = &amp;quot;&amp;quot;&lt;br /&gt;
	for k, v in ipairs(tbl) do&lt;br /&gt;
		ret = ret .. data.association[v][&amp;quot;texte&amp;quot;] .. &amp;quot; (&amp;quot; .. v .. &amp;quot;) &amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
  retourne true si un élément wikidata existe pour l&amp;#039;article courant et false sinon&lt;br /&gt;
]]--&lt;br /&gt;
function p.a_wikidata()&lt;br /&gt;
	return mw.wikibase.getEntityIdForCurrentPage() ~= nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
  Fonction externe (appelable) qui catégorise l&amp;#039;article courant en fonction de WD&lt;br /&gt;
  Ne reçoit actuellement aucun paramètre&lt;br /&gt;
]]--&lt;br /&gt;
function p.categorise(frame)&lt;br /&gt;
	-- si on n&amp;#039;est pas dans l&amp;#039;espace encyclopédique on ne fait rien&lt;br /&gt;
	local titre = mw.title.getCurrentTitle()&lt;br /&gt;
	if ((titre == nil) or (titre.namespace ~= 0)) then&lt;br /&gt;
		return &amp;quot;&amp;quot;  -- on retourne un texte vide, donc l&amp;#039;action est inexistante&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- on regarde si la page a une entrée wikidata&lt;br /&gt;
	local awd = p.a_wikidata()&lt;br /&gt;
	if (not awd) then&lt;br /&gt;
		-- on catégorise et on quitte&lt;br /&gt;
		return &amp;quot;[[Catégorie:Wikipédia:Article sans Wikidata appelant le modèle Suivi des biographies]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- on regarde si c&amp;#039;est un humain&lt;br /&gt;
	local hwd = p.presence_propriete(&amp;quot;P31&amp;quot;, &amp;quot;Q5&amp;quot;, nil)&lt;br /&gt;
	if (not hwd) then&lt;br /&gt;
		-- on catégorise et on quitte&lt;br /&gt;
		return &amp;quot;[[Catégorie:Wikipédia:Article non biographique appelant le modèle Suivi des biographies]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- là il faut aller plus loin et récupérer les métiers pour catégoriser&lt;br /&gt;
	local mwd = p.propriete_parente(&amp;quot;P106&amp;quot;, nil)&lt;br /&gt;
	-- si aucune réponse on le place dans &amp;quot;autres&amp;quot;&lt;br /&gt;
	if (mwd == nil) then&lt;br /&gt;
		-- on catégorise et on quitte&lt;br /&gt;
		return &amp;quot;[[Catégorie:Portail:Biographie/Articles liés/Général]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	-- on a (au moins) une réponse : on regarde ce que contient le 1er élément (le &amp;quot;principal&amp;quot;)&lt;br /&gt;
	--[[ note : on pourrait faire du multi-catégorie (ne pas utiliser de else/elseif alors&lt;br /&gt;
	              mais &amp;quot;cumuler&amp;quot; diverses catégories et retourner le tout à la fin)&lt;br /&gt;
	            on pourrait aussi faire des tests plus complexes du style si militaire et pas&lt;br /&gt;
	              homme politique alors faire ci sinon si cela faire ça…&lt;br /&gt;
	]]--&lt;br /&gt;
	if (mwd[1] == &amp;quot;Q483501&amp;quot;) then&lt;br /&gt;
		return &amp;quot;[[Catégorie:Portail:Biographie/Articles liés/Culture et arts]]&amp;quot;&lt;br /&gt;
	elseif (mwd[1] == &amp;quot;Q47064&amp;quot;) then&lt;br /&gt;
		return &amp;quot;[[Catégorie:Portail:Biographie/Articles liés/Militaire]]&amp;quot;&lt;br /&gt;
	elseif (mwd[1] == &amp;quot;Q82955&amp;quot;) then&lt;br /&gt;
		return &amp;quot;[[Catégorie:Portail:Biographie/Articles liés/Politique]]&amp;quot;&lt;br /&gt;
	elseif (mwd[1] == &amp;quot;Q2066131&amp;quot;) then&lt;br /&gt;
		return &amp;quot;[[Catégorie:Portail:Biographie/Articles liés/Sport]]&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		-- catégorie par défaut&lt;br /&gt;
		return mwd[1]&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;&amp;quot; -- on ne devrait pas arriver ici&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
  Fonction externe (appelable) qui catégorise l&amp;#039;article courant en fonction de WD&lt;br /&gt;
  Ne reçoit actuellement aucun paramètre&lt;br /&gt;
  version &amp;quot;2&amp;quot;, avec cumul de catégories&lt;br /&gt;
]]--&lt;br /&gt;
function p.categoriseBiographie(frame)&lt;br /&gt;
	-- si on n&amp;#039;est pas dans l&amp;#039;espace encyclopédique on ne fait rien&lt;br /&gt;
	local titre = mw.title.getCurrentTitle()&lt;br /&gt;
	if ((titre == nil) or (titre.namespace ~= 0)) then&lt;br /&gt;
		return &amp;quot;&amp;quot;  -- on retourne un texte vide, donc l&amp;#039;action est inexistante&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- on regarde si la page a une entrée wikidata&lt;br /&gt;
	local awd = p.a_wikidata()&lt;br /&gt;
	if (not awd) then&lt;br /&gt;
		return data.cat_badwd&lt;br /&gt;
	end&lt;br /&gt;
	-- on regarde si la page a une nature de l&amp;#039;élément définie&lt;br /&gt;
	local nature = wd.formatStatements{property = &amp;#039;P31&amp;#039;, displayformat = &amp;#039;raw&amp;#039;}&lt;br /&gt;
	if (not nature) then&lt;br /&gt;
		-- on retourne un texte vide, donc l&amp;#039;action est inexistante&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- pour cumuler les éléments à retourner&lt;br /&gt;
	local out = data.cat_biographie&lt;br /&gt;
&lt;br /&gt;
	-- on regarde si c&amp;#039;est un humain&lt;br /&gt;
	-- traitement spécifique pour les personnages humains de la Bible&lt;br /&gt;
	local awd2 = p.presence_propriete(&amp;quot;P31&amp;quot;, &amp;quot;Q20643955&amp;quot;, nil)&lt;br /&gt;
	-- traitement spécifique pour les humains possiblement fictifs&lt;br /&gt;
	local awd3 = p.presence_propriete(&amp;quot;P31&amp;quot;, &amp;quot;Q21070568&amp;quot;, nil)&lt;br /&gt;
	if (awd2 or awd3) then&lt;br /&gt;
		-- catégorisation dans Croyance et religion&lt;br /&gt;
		return out .. data.cat_religion&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local hwd = p.presence_propriete(&amp;quot;P31&amp;quot;, &amp;quot;Q5&amp;quot;, nil)&lt;br /&gt;
	if (not hwd) then&lt;br /&gt;
		-- pas une biographie&lt;br /&gt;
		return nul&lt;br /&gt;
	end&lt;br /&gt;
	-- On est sur une biographie, on affine la catégorisation&lt;br /&gt;
&lt;br /&gt;
	local genre = p.existence_propriete(&amp;quot;P21&amp;quot;, nil)&lt;br /&gt;
	if (not genre) then&lt;br /&gt;
		-- catégorisation des biographies sans genre&lt;br /&gt;
		out = out .. data.cat_nongenre&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- là il faut aller plus loin et récupérer les métiers pour catégoriser&lt;br /&gt;
	local mwd = p.propriete_parente(&amp;quot;P106&amp;quot;, nil)&lt;br /&gt;
	-- en l&amp;#039;absence de profession on regarde la fonction&lt;br /&gt;
	if (mwd == nil) then&lt;br /&gt;
		mwd = p.propriete_parente(&amp;quot;P39&amp;quot;, nil)&lt;br /&gt;
	end&lt;br /&gt;
	-- en l&amp;#039;absence de profession et de fonction on regarde le titre de noblesse&lt;br /&gt;
	if (mwd == nil) then&lt;br /&gt;
		mwd = p.propriete_parente(&amp;quot;P97&amp;quot;, nil)&lt;br /&gt;
	end&lt;br /&gt;
	-- si aucune réponse on le place dans &amp;quot;autres&amp;quot;&lt;br /&gt;
	if (mwd == nil) then&lt;br /&gt;
		-- on catégorise&lt;br /&gt;
		-- traitement spécifique pour les sahabah&lt;br /&gt;
		local hwd3 = p.presence_propriete(&amp;quot;P361&amp;quot;, &amp;quot;Q188711&amp;quot;, nil)&lt;br /&gt;
		-- traitement spécifique pour les saints&lt;br /&gt;
		local hwd7 = p.existence_propriete(&amp;quot;P411&amp;quot;, nil)&lt;br /&gt;
		if (hwd3 or hwd7) then&lt;br /&gt;
			-- catégorisation dans Religion&lt;br /&gt;
			out = out .. data.cat_religion&lt;br /&gt;
		else&lt;br /&gt;
			return out .. data.cat_defaut&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		-- on a (au moins) une réponse : on parcours chaque entrée et on cumule les catégories associées&lt;br /&gt;
		local nb = 0&lt;br /&gt;
		for k, v in ipairs(mwd) do&lt;br /&gt;
			-- bidouille pour les professions &amp;quot;Environ &amp;quot;&lt;br /&gt;
			if not v:match( &amp;#039;^Q%d+$&amp;#039; ) then&lt;br /&gt;
				if v:match( &amp;#039;^environ Q%d+$&amp;#039; ) then&lt;br /&gt;
					v = v:gsub( &amp;#039;^environ &amp;#039;,&amp;#039;&amp;#039; )&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			out = out .. data.association[v][&amp;quot;catégorie&amp;quot;]&lt;br /&gt;
			nb = nb + 1&lt;br /&gt;
		end&lt;br /&gt;
		-- si 0 catégorie insérée on met celle par défaut&lt;br /&gt;
		if (nb == 0) then&lt;br /&gt;
			-- traitement spécifique pour les personnages humains de la Bible&lt;br /&gt;
			local hwd4 = p.presence_propriete(&amp;quot;P31&amp;quot;, &amp;quot;Q20643955&amp;quot;, nil)&lt;br /&gt;
			-- traitement spécifique pour les sahabah&lt;br /&gt;
			local hwd5 = p.presence_propriete(&amp;quot;P361&amp;quot;, &amp;quot;Q188711&amp;quot;, nil)&lt;br /&gt;
			-- traitement spécifique pour les saint&lt;br /&gt;
			local hwd6 = p.presence_propriete(&amp;quot;P411&amp;quot;, &amp;quot;Q43115&amp;quot;, nil)&lt;br /&gt;
			if (hwd4 or hwd5 or hdw6) then&lt;br /&gt;
				-- catégorisation dans Religion&lt;br /&gt;
				return out .. data.cat_religion&lt;br /&gt;
			else&lt;br /&gt;
				out = out .. data.cat_defaut&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- on retourne le résultat final&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>wp&gt;Od1n</name></author>
	</entry>
</feed>