- From: Steve Harris <steve.harris@garlik.com>
- Date: Thu, 20 May 2010 09:23:07 +0100
- To: Olivier Corby <Olivier.Corby@sophia.inria.fr>
- Cc: SPARQL Working Group <public-rdf-dawg@w3.org>
On 2010-05-20, at 08:27, Olivier Corby wrote:
> Some remarks on negation.
>
>
>
> 8 Negation
>
> "one based filtering results"
> ->
> one based on filtering results
>
>
> 8.1 Filtering Using Graph Patterns
>
> "Filering of query solutions"
> ->
> Filtering
>
>
> Note that there are two syntax for negation :
>
> filter(not exists PAT)
>
> filter(! exists PAT)
However, NOT doesn't appear to by a synonym of !, so it's not legal to write FILTER(NOT ?x=1), which seems a little odd.
I think we should either add a NOT operator, or remove NOT from EXISTS, and just use !.
> 8.1.2 Testing For the Presence of a Pattern
>
> EXISTS { ?person foaf:name ?name }
> ->
> FILTER EXISTS { ?person foaf:name ?name }
>
>
> 8.2 Removing bindings
>
> "then to calculates"
> ->
> then calculates
>
>
> 8.3 Relationship and difference between NOT EXISTS and MINUS
>
> evaulation
> ->
> evaluation
>
>
> "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 ?
>
>
> 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
Well, { :a :b :c } is a pattern, not a solution, so I don't understand the source of confusion.
{ ?s ?p ?o . FILTER(?s=:a && ?p=:b && ?o=:c) } has zero or more solutions, which are what you expected I think, but it's still a pattern. There is probably a more elegant way to write that with BINDINGS, but I'm not that familiar with it.
- Steve
--
Steve Harris, Garlik Limited
1-3 Halford Road, Richmond, TW10 6AW, UK
+44 20 8439 8203 http://www.garlik.com/
Registered in England and Wales 535 7233 VAT # 849 0517 11
Registered office: Thames House, Portsmouth Road, Esher, Surrey, KT10 9AD
Received on Thursday, 20 May 2010 08:50:16 UTC