Module:Wikidata/Chemin/Path
Ce module ne possède aucune documentation explicative en sous-page, pas même une description succincte.
Vous pouvez créer cette sous-page afin de documenter ce module adéquatement.
Voir les statistiques d'utilisation du module sur l'outil wstat.
La documentation de ce module est générée par le modèle ((Documentation module)).
Les éditeurs peuvent travailler dans le bac à sable (créer).
local path = {}
local propt = require "Module:Propriétés"
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 = {["nodes"] = nodes}
setmetatable(newinst, self)
self.__index = self
return newinst
end
function path.AlternativeNode:type()
return "alternativenode"
end
path.SequenceNode = path.Node:new()
function path.SequenceNode:create(nodes)
local newinst = {["nodes"] = nodes}
setmetatable(newinst, self)
self.__index = self
return newinst
end
function path.SequenceNode:type()
return "sequencenode"
end
path.StarNode = path.Node:new()
function path.StarNode:create(node)
assert(node, "(Some) Node : no node provided on creation")
local newinst = {["node"] = node}
setmetatable(newinst, self)
self.__index = self
return newinst
end
path.PlusNode = path.Node:new()
function path.PlusNode:create(node)
assert(node, "(Some) Node : no node provided on creation")
local newinst = {["node"] = node}
setmetatable(newinst, self)
self.__index = self
return newinst
end
path.MaybeNode = path.Node:new()
function path.MaybeNode:create(node)
assert(node, "(Some) Node : no node provided on creation")
local newinst = {["node"] = node}
setmetatable(newinst, self)
self.__index = self
return newinst
end
path.BetweenNode = path.Node:new()
function path.BetweenNode:create(node, min, max)
assert(node, "(Some) Node : no node provided on creation")
local newinst = {
["node"] = node,
["min"] = min,
["max"] = max,
}
setmetatable(newinst, self)
self.__index = self
return newinst
end
path.InverseNode = path.Node:new()
function path.InverseNode:create(node)
assert(node, "(Some) Node : no node provided on creation")
local newinst = {["node"] = node}
setmetatable(newinst, self)
self.__index = self
return newinst
end
path.QualifiedStatementNode = path.Node:new()
function path.QualifiedStatementNode:create(main_prop_node, qual_node)
assert(main_prop_node, "(Some) Node : no node provided on creation")
assert(qual_node, "(Some) Node : no node provided on creation")
local newinst = {
["property"] = main_prop_node,
["qualifier"] = qual_node
}
setmetatable(newinst, self)
self.__index = self
return newinst
end
path.PseudoPropertyNode = path.Node:new()
path.PropertyNode = path.PseudoPropertyNode:new()
function path.PropertyNode:create(property)
assert(property, "(Prop Node : a property must be provided on creation")
local newinst = {
["property"] = propt.normalize(property)
}
setmetatable(newinst, self)
self.__index = self
return newinst
end
function path.PropertyNode:matches(property_str)
return propt.normalize(property_str) == self.property
end
-- see https://www.w3.org/2009/sparql/docs/property-paths/Overview.xml
path.NegatedPropertySetNode = path.PseudoPropertyNode:new()
function path.NegatedPropertySetNode:create(negated_nodes)
assert(negated_nodes, "NegPSet Node : no nodeset provided on creation")
local newinst = {
["negated_nodes"] = negated_nodes
}
setmetatable(newinst, self)
self.__index = self
self.props = {}
for _, val in pairs(negated_nodes) do
self.props[val.node.property] = true
end
return newinst
end
function path.NegatedPropertySetNode:inset(pid)
return self.props[pid] ~= nil
end
function path.NegatedPropertySetNode:matches(property_str)
return not self:inset(propt.normalize(property_str))
end
path.PropertySetNode = path.PseudoPropertyNode:new()
function path.PropertySetNode:create(nodes)
assert(nodes, "PseudoProp Node : no nodes provided on creation")
local newinst = {
["nodes"] = nodes
}
setmetatable(newinst, self)
self.__index = self
self.props = {}
for _, val in pairs(nodes) do
self.props[val.node.property] = true
end
return newinst
end
function path.PropertySetNode:inset(pid)
return self.props[pid] ~= nil
end
function path.PropertySetNode:matches(property_str)
return self:inset(propt.normalize(property_str))
end
path.QualifierSnakNode = path.Node:new()
function path.QualifierSnakNode:create(pseudopnode)
local newinst = {["pseudopnode"] = pseudopnode}
setmetatable(newinst, self)
self.__index = self
return newinst
end
function path.QualifierSnakNode:type()
return "qualifiersnaknode"
end
function path.QualifierSnakNode:matches(property_str)
return self.pseudopnode:matches(property_str)
end
return path
Text is available under the CC BY-SA 4.0 license; additional terms may apply.
Images, videos and audio are available under their respective licenses.