W3C home > Mailing lists > Public > public-sparql-dev@w3.org > April to June 2016

Re: Semantic of FILTER NOT IN / literal comparison

From: Andy Seaborne <andy@apache.org>
Date: Sat, 16 Apr 2016 10:55:43 +0100
To: public-sparql-dev@w3.org
Message-ID: <57120C1F.7050003@apache.org>
On 16/04/16 07:23, Michael Schmidt wrote:
> Dear community,
>
> we’ve got a question regarding the semantics of FILTER NOT IN (inspired
> by
> http://www.w3.org/2001/sw/DataAccess/tests/data-r2/syntax-sparql1/manifest#sparql11-not-in-02),
> which boils down to literal equality issues.

I don't see that test in that manifest.

Also,
> syntax-sparql1

Those are syntax tests, not evaluation tests.

In that manifest, all tests are "#syntax-...."

>
> Look at the following example:
>
> - Data: <http://s> <http://p> "a” .
> - Query:
>
> SELECT * WHERE {
>    ?s ?p ?o
>    FILTER (?o NOT IN (1))
> }
>
> According to the standard ("The |NOT IN| operator is equivalent to the
> SPARQL expression: (lhs != expression1) && (lhs != expression2) && …)”)
> this query is equivalent to:
>
> SELECT * WHERE {
>    ?s ?p ?o
>    FILTER (?o!=1)
> }
>
> Further, the standard says "The test is done with "!=" operator, which
> tests for not the same value, as determined by the operator mapping
> <https://www.w3.org/TR/sparql11-query/#OperatorMapping>.”, where the
> operator mapping section defines no explicit rule for comparing plain
> literals to numerics (but delegates to various casting/substitution
> rules defined in XPath standards) .
>
> My questions now are:
> - What is the expected result of “a”!=1? And why — which of the rules in
> the operator mapping table would apply here (if any?). The expected
> result of sparql11-not-in-02 indicates that this neq comparison should
> evaluate to true rather than error, but I actually do not see why.

There is no implicit casting in SPARQL.

If there is no mapping then it is a evaluation error.

(specific engines may do better - for example the value space of strings 
and the value space of integers don't overlap so the answer is "false")

> - Would the result be different in the context of RDF1.1, where wecwould
> compare “a”^^xsd:string!=1 instead?

No.

>
> Thanks in advance for any help,
> Michael
>

	Andy

PS You may be interested in the community work to maintain the RDF 1.1 
and SPARQL 1.1 tests:

https://www.w3.org/community/rdf-tests/
https://github.com/w3c/rdf-tests
Received on Saturday, 16 April 2016 09:56:14 UTC

This archive was generated by hypermail 2.3.1 : Saturday, 16 April 2016 09:56:15 UTC