- From: Andy Seaborne <andy@apache.org>
- Date: Tue, 23 Jul 2013 11:39:05 +0100
- To: public-rdf-dawg-comments <public-rdf-dawg-comments@w3.org>
http://www.w3.org/TR/sparql11-query/#OperatorMapping The last block in the table should be removed: --------------- SPARQL Tests A = B RDF term RDF term RDFterm-equal(A, B) A != B RDF term RDF term fn:not(RDFterm-equal(A, B)) --------------- It is not right to map unknown datatype comparison by value to sameTerm. The example Evrin gives below is ('1' != 2) which should either be an error (no operator mapping) or false. An engine can know that the value spaces of xsd:string and xsd:integer are disjoint so evaluate the expression to false. As currently defined, here != fn:not(sameTerm('1',2)) which evaluates to true and is wrong. Andy -------- Original Message -------- Subject: Question about inequality semantics Date: Mon, 22 Jul 2013 14:55:03 -0400 From: Evren Sirin <evren@clarkparsia.com> Reply-To: users@jena.apache.org To: users@jena.apache.org I'm getting the following result with Jena 2.10.1 against an empty ttl file (0 bytes): $ bin/sparql --data empty.ttl "ASK { FILTER ('1' != 2) }" Ask => Yes This result seems correct intuitively but if I'm reading the SPARQL spec right the answer should be false. According to Section 17.4 operator mapping [1], when we have a simple literal and a numeric literal the != will be mapped to fn:not(RDFterm-equal(A, B)). The definition of RDFterm-equal [2] says it "produces a type error if the arguments are both literal but are not the same RDF term" which is the case here. Section 17.4 also says "Note that per the XPath definitions, fn:not and op:numeric-equal produce an error if their argument is an error." Then fn:not(RDFterm-equal('1', 2)) would produce a type error. If there is a type error, the filter would return false and the above query should return false too. I was looking at the DAWG test suite to check if my understanding is correct but the only relevant test I found (:eq-2-2 in expr-equals manifest [3]) had a typo and was pointing to the wrong query file (eq-2-1 instead of eq-2-2). Is this a bug in ARQ? Or am I misinterpreting the spec? Thanks, Evren [1] http://www.w3.org/TR/2012/PR-sparql11-query-20121108/#OperatorMapping [2] http://www.w3.org/TR/2012/PR-sparql11-query-20121108/#func-RDFterm-equal [3] http://www.w3.org/2001/sw/DataAccess/tests/data-r2/expr-equals/manifest.ttl
Received on Tuesday, 23 July 2013 10:39:35 UTC