- From: Andy Seaborne <andy.seaborne@talis.com>
- Date: Mon, 14 Jun 2010 12:27:57 +0100
- To: SPARQL Working Group <public-rdf-dawg@w3.org>
In SPARQL 1.0, { A {B} UNION {C} } where A, B, C are basic graph patterns e.g: { :x :p ?v {?v :q1 ?v1} UNION {?v :q2 ?v2 } } parses as: group of A {B} UNION {C} group of BGP(:x :p ?v) BGP(?v :q1 ?v1) UNION BGP(?v :q2 ?v2) which becomes the algebra: join( A union(B,C) ) We discussed enabling a simpler form of UNION which might look like: { X UNION {Y} } omitting the {} on the LHS. To be fully compatible with SPARQL 1.0 { {A} B UNION {C} } is still : join( A union(B,C) ) [Caution: There is a bug in the current SPARQL 1.1 grammar here] In SPARQL 1.0, OPTIONAL behaves differently: it extends whatever is in the group at that point in the paring process: { A {B} OPTIONAL {C} } so the LHS of the OPTIONAL is "A {B}" or: group of A {B} OPTIONAL {C} which is the algebra: leftjoin( join(A,B) C ) { :x :p ?v {?v :q1 ?v1} OPTIONAL {?v :q2 ?v2 } } => leftJoin( join(BGP(:x :p ?v), BGP(?v :q1 ?v1)) C ) The question is what is MINUS? Is it like UNION or like OPTIONAL? { A {B} MINUS {C} } Either: minus( join(A,B) C ) or join( A minus(B,C) ) { :x :p ?v {?v :q1 ?v1} MINUS {?v :q2 ?v2 } } => minus( join(BGP(:x :p ?v), BGP(?v :q1 ?v1)) C ) or join( BGP(:x :p ?v) minus(BGP(?v :q1 ?v1), BGP({?v :q2 ?v2) ) and whether a form of MINUS which is { {A} B MINUS {C} } should allowed and whether it has the expected meaning (and what do we expect it to mean). Andy
Received on Monday, 14 June 2010 11:28:34 UTC