Re: Bug: SPARQL 1.1 Query Language / 17.4.1.7 RDFterm-equal

Hi,

Thanks for the report.

I've recorded this in the SPARQL errata document:

https://www.w3.org/2013/sparql-errata#editorial-query-5


On 28/08/18 23:51, Hans-Juergen Rennau wrote:
> The section specifies RDFterm-equal in an inconsistent way.
>
> Quote:
> ===========================================================
> term1 and term2 are the same if any of the following is true:
> ...
> term1 and term2 are equivalent literals as defined in 6.5.1 Literal 
> Equality <http://www.w3.org/TR/rdf-concepts/#section-Literal-Equality> 
> of [CONCEPTS <https://www.w3.org/TR/sparql11-query/#CONCEPTS>].
> ...
> ===========================================================
>
>
> Following the link to "6.5.1 Literal Equality" one finds:
>
> ===========================================================
>
>
>         6.5.1 Literal Equality
>
> Two literals are equal if and only if all of the following hold:
>
>   * The strings of the two lexical forms compare equal, character by
>     character.
>   * Either both or neither have language tags.
>   * The language tags, if any, compare equal.
>   * Either both or neither have datatype URIs.
>   * The two datatype URIs, if any, compare equal, character by character.
>
> ...
> ===========================================================
>
> Note that the text does not define "equivalent literals", but literal 
> equality, and this equality is described as syntactic equality.
The SPARQL doc should explain that equivalent literals is referring to 
literal equality.

It is a syntactic identity. RDFterm-equal, which is the last for of "=" 
in the operator table, adds the fact that is two literals are 
"same-term" they much be "same-value" even for unknown datatypes. i.e. 
same syntax implies same value.

>
> However, the section includes an example in which RDFterm-equal 
> returns true in the case of value equality without literal equality:
> "2004-12-31T19:00:00-05:00"^^<http://www.w3.org/2001/XMLSchema#dateTime>
> xsd:dateTime("2005-01-01T00:00:00Z")
> A footnote following the example confirms the use of value equality, 
> opposed to syntactic equality:
> "Invoking RDFterm-equal on two typed literals tests for equivalent 
> values."
>
> Conclusion: the specification of RDFterm-equal is inconsistent, 
> describing it in one place to mean literal equality and in another 
> place to mean value equality.
>
> Additional problem: the sentence from the beginning of the section:
> "produces a type error if the arguments are both literal but are not 
> the same RDF term ^* 
> <https://www.w3.org/TR/sparql11-query/#func-RDFterm-equal-foot1> ;"
>
> is quite confusing -
> (a) what is the meaning of the hyphen preceding the semicolon?
It is an underline on the footnote hyperlink from the browser:

<sup><a href="#func-RDFterm-equal-foot1" class="footnote">*</a></sup>


> (b) why should two literals which are not the same RDF term produce a 
> type error, if a boolean assessment of equality is expected
Evaluation is three-state, true, false and unknown. For unknown 
datatype, it is wrong to conclude that because they have different 
lexical forms, they are different values.  A result of false in 
value-equality means "known to be different values" and true means 
"known to be same value", leaving the 3rd case of "don't know".

> (c) the statement is contradicted by both examples where arguments 
> which are literals without equality do not produce a type error.
I think the second example is not sufficiently highlighting that it is 
same-value even though the terms are different. It says just above the 
example "the RDF terms are not the same, but have equivalent values:" 
but the fact should be clearer.

>
> Hans-Juergen Rennau

     Thank you,
     Andy

Received on Sunday, 2 September 2018 09:42:43 UTC