- From: Jeremy Carroll <jeremy@topquadrant.com>
- Date: Wed, 17 Feb 2010 11:05:26 -0800
- To: public-rdf-dawg-comments@w3.org
Hi Andy + others
this is a comment on
http://www.w3.org/TR/2010/WD-sparql11-property-paths-20100126/
from an implementation perspective on the following text:
[[
/elt{n,m}/ A path between n and m occurrences of /elt/.
]]
and
[[
Cycles in paths are possible and are handled.
]]
and
[[
Paths do not need to be anchored at one end or the other,
]]
What I take that to mean is that if my data is
eg:a eg:p eg:a
eg:a eg:p eg:b
then the path [ eg:p {3, 7 } ] links eg:a with both eg:a and eg:b
If that is the intent, I think an example would help.
Practically I wonder if it may be more useful to prohibit cycles, i.e.
property paths are simple paths in the graph theoretic sense (using
terminology from Wikipedia [1]), i.e. do not contain the same node
twice. In this case the only path in [ eg:p {1,} ] is one from eg:a to
eg:b. (the zero length path from eg:a to itself is still there in [ eg:p
{0, } ] .. in fact I would be inclined to require n>0, or at least if
n=0 then at least one end of the path should be anchored (do we really
want ?v eg:p {0} _ to select all the nodes in the graph - this concept
is not even well-defined in RDF, would an implementation be incorrect to
return a node that did not occur in any triple in the graph?)
The practical value of requiring simple paths is to do with cyclic
subClassOf structures. I see no value at all in allowing code to go
round these cycles.
In practice to implement the m=infinity case, you need to implement an
occurs check (in the somewhat naive approach I am taking) because of the
danger of loops in the data.
(I am implementing the first quoted line, with simple paths - but not in
a SPARQL framework, but I referred to this draft to frame the task)
Jeremy
[1]
http://en.wikipedia.org/wiki/Path_%28graph_theory%29
(This is not intended as a formal comment, and can be excluded from W3C
process requirements)
Received on Wednesday, 17 February 2010 19:06:30 UTC