<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.noethoumy.fr/index.php?action=history&amp;feed=atom&amp;title=Module%3AWikidata%2FChemin%2FPath</id>
	<title>Module:Wikidata/Chemin/Path - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.noethoumy.fr/index.php?action=history&amp;feed=atom&amp;title=Module%3AWikidata%2FChemin%2FPath"/>
	<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Wikidata/Chemin/Path&amp;action=history"/>
	<updated>2026-04-27T18:12:23Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Wikidata/Chemin/Path&amp;diff=343&amp;oldid=prev</id>
		<title>Jaggerwock : Page créée avec « local path = {} local propt = require &quot;Module:Propriétés&quot;  path.Node = {}  function path.Node:new (o)   o = o or {}   setmetatable(o, self)   self.__index = self   return o end  path.AlternativeNode = path.Node:new()  function path.AlternativeNode:create(nodes) 	local newinst = {[&quot;nodes&quot;] = nodes} 	setmetatable(newinst, self) 	self.__index = self 	return newinst end  function path.AlternativeNode:type() 	return &quot;alternativenode&quot; end  path.SequenceNode = path.No... »</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Wikidata/Chemin/Path&amp;diff=343&amp;oldid=prev"/>
		<updated>2024-09-20T14:22:12Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « local path = {} local propt = require &amp;quot;Module:Propriétés&amp;quot;  path.Node = {}  function path.Node:new (o)   o = o or {}   setmetatable(o, self)   self.__index = self   return o end  path.AlternativeNode = path.Node:new()  function path.AlternativeNode:create(nodes) 	local newinst = {[&amp;quot;nodes&amp;quot;] = nodes} 	setmetatable(newinst, self) 	self.__index = self 	return newinst end  function path.AlternativeNode:type() 	return &amp;quot;alternativenode&amp;quot; end  path.SequenceNode = path.No... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local path = {}&lt;br /&gt;
local propt = require &amp;quot;Module:Propriétés&amp;quot;&lt;br /&gt;
&lt;br /&gt;
path.Node = {}&lt;br /&gt;
&lt;br /&gt;
function path.Node:new (o)&lt;br /&gt;
  o = o or {}&lt;br /&gt;
  setmetatable(o, self)&lt;br /&gt;
  self.__index = self&lt;br /&gt;
  return o&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
path.AlternativeNode = path.Node:new()&lt;br /&gt;
&lt;br /&gt;
function path.AlternativeNode:create(nodes)&lt;br /&gt;
	local newinst = {[&amp;quot;nodes&amp;quot;] = nodes}&lt;br /&gt;
	setmetatable(newinst, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	return newinst&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function path.AlternativeNode:type()&lt;br /&gt;
	return &amp;quot;alternativenode&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
path.SequenceNode = path.Node:new()&lt;br /&gt;
&lt;br /&gt;
function path.SequenceNode:create(nodes)&lt;br /&gt;
	local newinst = {[&amp;quot;nodes&amp;quot;] = nodes}&lt;br /&gt;
	setmetatable(newinst, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	return newinst&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function path.SequenceNode:type()&lt;br /&gt;
	return &amp;quot;sequencenode&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
path.StarNode = path.Node:new()&lt;br /&gt;
function path.StarNode:create(node)&lt;br /&gt;
	assert(node, &amp;quot;(Some) Node : no node provided on creation&amp;quot;)&lt;br /&gt;
	local newinst = {[&amp;quot;node&amp;quot;] = node}&lt;br /&gt;
	setmetatable(newinst, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	return newinst&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
path.PlusNode = path.Node:new()&lt;br /&gt;
function path.PlusNode:create(node)&lt;br /&gt;
	assert(node, &amp;quot;(Some) Node : no node provided on creation&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local newinst = {[&amp;quot;node&amp;quot;] = node}&lt;br /&gt;
	setmetatable(newinst, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	return newinst&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
path.MaybeNode = path.Node:new()&lt;br /&gt;
function path.MaybeNode:create(node)&lt;br /&gt;
	assert(node, &amp;quot;(Some) Node : no node provided on creation&amp;quot;)&lt;br /&gt;
	local newinst = {[&amp;quot;node&amp;quot;] = node}&lt;br /&gt;
	setmetatable(newinst, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	return newinst&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
path.BetweenNode = path.Node:new()&lt;br /&gt;
function path.BetweenNode:create(node, min, max)&lt;br /&gt;
	assert(node, &amp;quot;(Some) Node : no node provided on creation&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local newinst = {&lt;br /&gt;
		[&amp;quot;node&amp;quot;] = node, &lt;br /&gt;
		[&amp;quot;min&amp;quot;] = min,&lt;br /&gt;
		[&amp;quot;max&amp;quot;] = max,&lt;br /&gt;
	}&lt;br /&gt;
	setmetatable(newinst, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	return newinst&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
path.InverseNode = path.Node:new()&lt;br /&gt;
function path.InverseNode:create(node)&lt;br /&gt;
	assert(node, &amp;quot;(Some) Node : no node provided on creation&amp;quot;)&lt;br /&gt;
	local newinst = {[&amp;quot;node&amp;quot;] = node}&lt;br /&gt;
	setmetatable(newinst, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	return newinst&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
path.QualifiedStatementNode = path.Node:new()&lt;br /&gt;
function path.QualifiedStatementNode:create(main_prop_node, qual_node)&lt;br /&gt;
	assert(main_prop_node, &amp;quot;(Some) Node : no node provided on creation&amp;quot;)&lt;br /&gt;
	assert(qual_node, &amp;quot;(Some) Node : no node provided on creation&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local newinst = {&lt;br /&gt;
		[&amp;quot;property&amp;quot;] = main_prop_node,&lt;br /&gt;
		[&amp;quot;qualifier&amp;quot;] = qual_node&lt;br /&gt;
	}&lt;br /&gt;
	setmetatable(newinst, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	return newinst&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
path.PseudoPropertyNode = path.Node:new()&lt;br /&gt;
&lt;br /&gt;
path.PropertyNode = path.PseudoPropertyNode:new()&lt;br /&gt;
&lt;br /&gt;
function path.PropertyNode:create(property)&lt;br /&gt;
	assert(property, &amp;quot;(Prop Node : a property must be provided on creation&amp;quot;)&lt;br /&gt;
	local newinst = {&lt;br /&gt;
		[&amp;quot;property&amp;quot;] = propt.normalize(property)&lt;br /&gt;
	}&lt;br /&gt;
	setmetatable(newinst, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	return newinst&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function path.PropertyNode:matches(property_str)&lt;br /&gt;
	return propt.normalize(property_str) == self.property&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- see https://www.w3.org/2009/sparql/docs/property-paths/Overview.xml&lt;br /&gt;
&lt;br /&gt;
path.NegatedPropertySetNode = path.PseudoPropertyNode:new()&lt;br /&gt;
function path.NegatedPropertySetNode:create(negated_nodes)&lt;br /&gt;
	assert(negated_nodes, &amp;quot;NegPSet Node : no nodeset provided on creation&amp;quot;)&lt;br /&gt;
	local newinst = {&lt;br /&gt;
		[&amp;quot;negated_nodes&amp;quot;] = negated_nodes&lt;br /&gt;
	}&lt;br /&gt;
	setmetatable(newinst, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	self.props = {}&lt;br /&gt;
	&lt;br /&gt;
	for _, val in pairs(negated_nodes) do&lt;br /&gt;
		self.props[val.node.property] = true&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return newinst&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function path.NegatedPropertySetNode:inset(pid)&lt;br /&gt;
	return self.props[pid] ~= nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function path.NegatedPropertySetNode:matches(property_str)&lt;br /&gt;
	return not self:inset(propt.normalize(property_str))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
path.PropertySetNode = path.PseudoPropertyNode:new()&lt;br /&gt;
function path.PropertySetNode:create(nodes)&lt;br /&gt;
	&lt;br /&gt;
	assert(nodes, &amp;quot;PseudoProp Node : no nodes provided on creation&amp;quot;)&lt;br /&gt;
	local newinst = {&lt;br /&gt;
		[&amp;quot;nodes&amp;quot;] = nodes&lt;br /&gt;
	}&lt;br /&gt;
	setmetatable(newinst, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	self.props = {}&lt;br /&gt;
	&lt;br /&gt;
	for _, val in pairs(nodes) do&lt;br /&gt;
		self.props[val.node.property] = true&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return newinst&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function path.PropertySetNode:inset(pid)&lt;br /&gt;
	return self.props[pid] ~= nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function path.PropertySetNode:matches(property_str)&lt;br /&gt;
	return self:inset(propt.normalize(property_str))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
path.QualifierSnakNode = path.Node:new()&lt;br /&gt;
&lt;br /&gt;
function path.QualifierSnakNode:create(pseudopnode)&lt;br /&gt;
	local newinst = {[&amp;quot;pseudopnode&amp;quot;] = pseudopnode}&lt;br /&gt;
	setmetatable(newinst, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	return newinst&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function path.QualifierSnakNode:type()&lt;br /&gt;
	return &amp;quot;qualifiersnaknode&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function path.QualifierSnakNode:matches(property_str)&lt;br /&gt;
	return self.pseudopnode:matches(property_str)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return path&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
</feed>