- From: Jeen Broekstra <jeen.broekstra@gmail.com>
- Date: Tue, 11 Nov 2014 12:46:24 +1300
- To: public-rdf-dawg-comments@w3.org
On 11/11/14 05:26, Peter F. Patel-Schneider wrote: > I have been looking over the SPARQL 1.1 documents and have been trying > to figure out a simple question about literal matching. > > The question is whether basic graph pattern matching is sensitive to the > surface form of literals in an RDF graph. > > For example, does the basic graph pattern > ex:a ex:b "01"^^xsd:integer . > match the RDF graph > ex:a ex:b "1"^^xsd:integer . > > It appears to me that it does not, but I would like confirmation of this. You are correct, it does not. BGP matching is defined as matching when two RDF terms are the same (see http://www.w3.org/TR/sparql11-query/#BasicGraphPattern ): "Here, μ1(v) = μ2(v) means that μ1(v) and μ2(v) are the same RDF term." This notion of "the same RDF term" is not explicitly linked to a definition from this particular spot, but the applicable notions of term equality are defined in the RDF Concepts & Abstract Syntax (C&AS) document, and in several other places in the SPARQL spec it is made explicit that those definitions apply (in particular, in the definitions of RDFterm-equal and sameTerm). In your particular example, Literal term equality applies, which is defined in section 3.3 of C&AS: "Literal term equality: Two literals are term-equal (the same RDF literal) if and only if the two lexical forms, the two datatype IRIs, and the two language tags (if any) compare equal, character by character. Thus, two literals can have the same value without being the same RDF term. For example: "1"^^xs:integer "01"^^xs:integer denote the same value, but are not the same literal RDF terms and are not term-equal because their lexical form differs." Cheers, Jeen
Received on Monday, 10 November 2014 23:46:56 UTC