- From: Lee Feigenbaum <lee@thefigtrees.net>
- Date: Thu, 10 Feb 2011 11:33:57 -0500
- To: Andy Seaborne <andy.seaborne@epimorphics.com>
- CC: SPARQL Working Group <public-rdf-dawg@w3.org>
On 2/10/2011 11:08 AM, Andy Seaborne wrote: > Summary: > > 1/ Proposal to have an explicit :p* operator > instead of :p* = :p{0} UNION :p+ > > 2/ path-* would return only one node for a possible path > That does not path-* duplicate free if there are > multiple ways to the same end. Read as: That does not make path-* duplicate free if there are multiple ways to the same endpoint. (thanks to Andy on IRC for the clarification.) Lee > c.f. literals and aggregation example > c.f. BGPs and projection. > > Details still to be worked on. > > > Currently, > > :p* = :p{0} UNION :p+ > > This is a source of duplicates because :p{0} may include a node and then > :p+ will also include it if the path loops back to the start. > > Defining > :p+ = :p/:p* > > would also lead to duplicates because of the hidden projection in the > "/" so two operators are needed. > > Example 1: > > :a :p :b . > :b :p :c . > :c :p :a . > > which is: > > :c > / \ > / \ > :a --> :b > > Paths: > P1) :a :p* ?X > P2) :a :p+ ?Y > > we want: > P1) => ?X = :a :b :c > P2) => ?Y = :a :b :c > > Example 2: > > :a :p :b . > :b :p :c . > :c :p :b . > > :c > / \ > \ / > :a --> :b > > we want > P1) => ?X = :a :b :c > P2) => ?Y = :b :c > > > It should be possible to have the same algorithm, with different > starting conditions, for :p+ and :p*. > > Andy > >
Received on Thursday, 10 February 2011 16:34:45 UTC