- From: Andy Seaborne <andy@apache.org>
- Date: Mon, 29 Oct 2018 10:18:34 +0000
- To: public-sparql-dev@w3.org
Hi Marcel, It is the FILTER overall that treats treats errors as false - not the operator, not that it matters much here. open-eq-08 is making some other assumptions: It is using the fact that literals, URIs and blanknodes are disjoint as values in an expression. :xyz can't not be value-equal to "xyz". The manifest entry for this test has some additional data (there ought to be more): :open-eq-08 a mf:QueryEvaluationTest ; ... mf:requires mf:StringSimpleLiteralCmp ; mf:requires mf:LangTagAwareness ; mf:requires mf:KnownTypesDefault2Neq ; mf:notable mf:IllFormedLiteral ; ... With langtag awareness (otherwise a processor will throw error on encountering one as a FILTER value): | :x2 | "xyz"@en | :x8 | :xyz | this is SPARQL 1.0 so the test uses RDF 1.0 - lang tag literals do not have a datatype and the notion of "value" isn't really that precise.The test assumes that simple strings (no datatype , no lang tag) and literals with lang tag are disjoint so: | :x3 | "xyz"@EN | :x1 | "xyz" | In https://www.w3.org/2001/sw/DataAccess/tests/README says that mf:KnownTypesDefault2Neq allows for the processor to know that there are disjoint values spaces: e.g. an xsd:integer but the terms using ^^xsd:integer are illegal lexical forms so don't have an integer value. Hope that helps, at least in part, Andy On 27/10/2018 17:08, Marcel Otto wrote: > Hi. > > Some of the open-world tests fail on my SPARQL implementation in Elixir [1]. These tests seem to suggest that the != operator should treat type errors as false, although there's no hint on this behaviour in the spec. For example, the open-eq-08 test states that the result for this query: > > PREFIX : <http://example/> > PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> > SELECT * > { > ?x1 :p ?v1 . > ?x2 :p ?v2 . > FILTER ( ?v1 != ?v2 ) > } > > over this data: > > @prefix : <http://example/> . > @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . > :x1 :p "xyz" . > :x2 :p "xyz"@en . > :x3 :p "xyz"@EN . > :x4 :p "xyz"^^xsd:string . > :x5 :p "xyz"^^xsd:integer . > :x6 :p "xyz"^^:unknown . > :x7 :p _:xyz . > :x8 :p :xyz . > > should include almost all permutations. I'm not seeing how this behavior can be explained with the spec, which defines != as the fn:not negation of the respective equality comparison according to the types. The equality comparisons are defined to result in almost all cases with different types in a type error. With fn:not defined to produce an error if its argument is an error, all the inequality comparisons in this example should result in a rejection of the solution, which my implementation exactly does. > > Kind regards > Marcel Otto > > > [1]: https://github.com/marcelotto/sparql-ex > >
Received on Monday, 29 October 2018 10:18:59 UTC