Re: indication of intended meaning for EXISTS from SPARQL specifications

Peter,

The SPARQL 1.1 charter [0] contains the required feature description:

"""
Negation. In the current SPARQL Recommendation “Negation As Failure” is 
possible by combining OPTIONAL, FILTER and !BOUND. It is yet difficult 
to write and can be a burden for learning and using SPARQL. Hence, 
dedicated language constructs for expressing negation will be introduced.
"""

which does not require equivalence with SPARQL 1.0 OPTIONAL/!bound.

It is the motivation for the work item which lead to two language 
features - MINUS and FILTER-NOTEXISTS.

[0] https://www.w3.org/2011/05/sparql-charter

The quotes below have additional context:

On 09/02/18 14:11, Peter F. Patel-Schneider wrote:
> I was reading a paper on adding preferences to SPARQL [1] and came across an
> intriguing comment:
> 
> "Similarly, NOT EXISTS could be replaced by a well-known combination of
> OPTIONAL and FILTER(!bound) (cf. [[SPARQL 1.0 Query Language specification],
> Section 11.4.1])"

That phase is from the position paper version of the work. The extend 
report version says "As for the SPARQL1.0 version of the same query," so 
they are talking about the query under discussion and in relation to the 
translation of PREFERRING.

> I checked the specification for both the SPARQL 1.0 Query Language [10] and
> the SPARQL 1.1 Query Language [11].  From both of these documents,
> 
> "One may test that a graph pattern is not expressed by specifying an OPTIONAL
> graph pattern that introduces a variable and testing whether the variable is
> not bound."
> 
> This matches up directly with the stated intent of EXISTS from [11]
> 
> "The NOT EXISTS filter expression tests whether a graph pattern does not match
> the dataset"

The rest of the sentence says:

"""
given the values of variables in the group graph pattern in which the 
filter occurs.
"""

which is where the replacement-substitution comes from (yes, it has some 
issues as identified by the CG).

> The first quote forms a very good source for the intent of NOT EXISTS, i.e.,
> 
>    SELECT DISTINCT * WHERE {
>      alpha
>      FILTER NOT EXISTS { beta }
>    }
> 
> should behave as close as possible to
> 
>    SELECT DISTINCT * WHERE {
>      alpha
>      OPTIONAL { beta BIND ( 1 AS ?exists ) }
>      FILTER ( ! BOUND( ?exists ) )
>    }
> 
> (I deliberately added DISTINCT to eliminate one potential source of divergence.)
> 
> 
> Aspects of EXISTS that interfere with the above equivalence should be
> considered mistakes to be corrected.

MINUS (without domain condition) would be a better focus for a 
OPTIONAL/!bound comparison.

     Andy

> peter
> 
> 
> [1] SPARQL with Qualitative and Quantitative Preferences.  Marina Gueroussova,
> Axel Polleres, and Sheila A. McIlraith.  Proceedings of the 2nd International
> Work- shop on Ordering and Reasoning (OrdRing 2013), at ISWC 2013, Sydney,
> Australia, 22 October 2013. CEUR Workshop Proceedings, vol. 1059 (2013).
> 
> [10] SPARQL 1.0 Query Language
> https://www.w3.org/TR/rdf-sparql-query/
> 
> [11] SPARQL 1.1 Query Language specification
> https://www.w3.org/TR/sparql11-query/
> 
> 

Received on Sunday, 11 February 2018 19:01:08 UTC