From SPARQL Working Group
Jump to: navigation, search


The design of property paths is a balance and needs to integrate in with the overall evaluation of a SPARQl query. The equivalences you describe are not part of the property path specification.

Consider even a simple pattern like:

{ ?x :p/:q ?y }

The working group has decide to make that equivalent to

 SELECT ?x ?y { ?x :p ?V . ?V :q ?y }

that is, projecting ?V away but not requiring distinct results.

So to take one of your examples:

SELECT * WHERE { :a (:p*)/(:p*) ?x }
SELECT ?x WHERE { :a (:p*) ?V .
                  ?V (:p*) ?x }

and the multiple cardinality of the overall query because each :p* stops following cycles but the second one is acting on all possible starting points.

The operations for path*, path{0} and path+ provide algebra operations and these can be combined using "/" and other path operators. There is no overall per-path expression condition on cardinality, instead the combination of operations leads to the cardinality.

We would be grateful if you would acknowledge that your comment has been answered by sending a reply to this mailing list.

Andy, on behalf of the SPARQL-WG