- From: Andy Seaborne <andy.seaborne@talis.com>
- Date: Thu, 20 May 2010 20:04:41 +0100
- To: Olivier Corby <Olivier.Corby@sophia.inria.fr>
- CC: SPARQL Working Group <public-rdf-dawg@w3.org>
Olivier, Thanks for the remarks: On 20/05/2010 08:27, Olivier Corby wrote: > Some remarks on negation. > > > > 8 Negation > > "one based filtering results" > -> > one based on filtering results Done > > > 8.1 Filtering Using Graph Patterns > > "Filering of query solutions" > -> > Filtering Done > > > Note that there are two syntax for negation : > > filter(not exists PAT) > > filter(! exists PAT) See next message. > > 8.1.2 Testing For the Presence of a Pattern > > EXISTS { ?person foaf:name ?name } > -> > FILTER EXISTS { ?person foaf:name ?name } Done > > > 8.2 Removing bindings > > "then to calculates" > -> > then calculates Done > 8.3 Relationship and difference between NOT EXISTS and MINUS > > evaulation > -> > evaluation > Done > > "Note: NOT EXISTS as a graph pattern is translated into an > algebra filter and positioned exactly where it occurs in the graph pattern, > unlike a FILTER expression which is applied over the whole group it occurs > in, as done during algebra translation. See below." > > Isn't this note obsolete as NOT EXISTS is proposed to be a filter ? > Removed > > 8.3 Relationship and difference between NOT EXISTS and MINUS > > Introduction to Negation : > "The SPARQL query language incoporates two styles of negation, [one ...] > and one based on removing solutions related to another pattern." > > PREFIX : <http://example/> > SELECT * > { > ?s ?p ?o > MINUS { :a :b :c } > } > > evaluates to result set with one query solution: > > <http://example/a> <http://example/b> <http://example/c> > > > So I write a MINUS to remove solution :a :b :c and I get solution :a :b :c > > I wonder how I will explain this to users ... Yes - that's how MINUS works. I share your concern. Maybe the example should be more direct { ?s :b :c } MINUS { :a :b :c } > > 8.4.1 Algebra: EXISTS > > "We define a expression" > -> > define an Done > 8.4.2 Algebra: MINUS > > "The additional restriction on dom(μ) and dom(μ') is added so that if > any solution mapping > has no variables in common with solution mappings of Ω1 then > Minus(Ω1, Ω2) is empty, regardless of the rest of Ω2" > > I don't understand this sentence. It might be unnecessary. The point is that MINUS is defined specially and different from the it's natural definition of "not compatible" anti-join (which is the "diff" operation used in defining OPTIONAL/left join). Otherwise: { anything MINUS {} } is the empty result which the WG members found unhelpful. I'd rather not give an example in the doc because it isn't what the spec is defining. Forcompleness: currently: { {} MINUS {} } is one row of no bindings, not the empty result set. Andy
Received on Thursday, 20 May 2010 19:05:13 UTC