- From: Steve Harris <steve.harris@richmondinformatics.com>
- Date: Mon, 10 Apr 2006 14:18:59 +0100
- To: RDF Data Access Working Group <public-rdf-dawg@w3.org>
On 10 Apr 2006, at 12:22, Seaborne, Andy wrote: > > > Steve Harris wrote: >> I've been implementing the casts in SPARQL (again), and I think >> there a need for more tests in this area, for example: >> data: >> :a :p "12.3"^^xsd:integer . >> :b :p "12.3" . >> query: >> SELECT ?x >> WHERE { ?x ?y ?z . FILTER(?z) = 12.3) } >> from my reading of the spec that will return ?x = :a and :b, >> which might surprise anyone who's not familiar with the way RDF >> doesn't handle numbers. > > ARQ issues a warning on "12.3"^^xsd:integer because, while a legal > RDF term, it can't be cast. So it is an RDF term but not an > integer value and hence the comparison falls back to comparing RDF > terms and is false (different datatypes). So it gets > "12.3"^^xsd:integer is not equal to 12.3 decimal. Right, that's the difference, my engine doesn't complain about the data. It treats it as "12"^^xsd:integer for the purposes of sparql filter expressions. If there's a spec. that says not to do that I'll follow it. >> Also, >> FILTER(xsd:decimal(xsd:integer(?z)) = 12.3) >> for which I can't work out what the correct answer is, as it >> seems unlikely that "12.3" is a valid lexical value for an >> xsd:integer, but it's a bit odd if that gives a different result >> to the other test. > > I get a cast exception from xsd:integer("12.3"^^xsd:integer) as > "12.3" is not a valid lexical form and (this time) a plain RDF term > is not acceptable as the result of the cast. I get the same for that one. >> Also, and I'm sure I've asked this before, but 11.5 seems to >> indicate that its legal to cast an IRI to an xsd:string without >> mentioning STR (), which is not how I remembered that part of the >> design. > > The cast "xs:anyURI => xs:string" is allowed by xpath-functions > > http://www.w3.org/TR/xpath-functions/#casting-from-primitive-to- > primitive > > But (11.1) > """ > IRI (corresponds to the Concepts and Abstract Syntax term "RDF URI > reference") > """ > so isn't "http://example/"^^xs:anyURI is different from <http:// > example/>? Sure, but 11.5 says: bool = xsd:boolean dbl = xsd:double flt = xsd:float dec = xsd:decimal int = xsd:integer dT = xsd:dateTime str = xsd:string IRI = IRI ltrl = simple literal Then in the IRI/String column it has a Y, so either IRI in 11.5 should be xsd:anyURI, or that should be an N. I think. - Steve
Received on Monday, 10 April 2006 13:19:38 UTC