Rajeev,

> What actually should have worked was "1"^^xsd:int ... since that was
> the value in my sample data.

I see. I'll check one more time.

> Also, in Virtuoso, will there be equivalence between typed values ?
> For e.g., in python, 1 == 1.0 works even thought first is integer and
> second is a float

Yes it works in FILTER(1 = 1.0) . It is not necessarily accurate in
triple patterns, i.e. { <x> <y> 1 } and { <x> <y> 1.0 } will have
different meaning for some RDF Views but same for some other; In
addition, SPARQL optimizer can rewrite SELECT ?s ?p ?o ... WHERE
{ ?s ?p ?o . FILTER(?o = 1.0) }
as more efficient
SELECT ?s  ?p  (1.0) as ?o ... WHERE { ?s ?p 1.0 }
thus the difference between FILTER(?o = 1.0) and FILTER(?o = 1) may
disappear.

In order to stress the importance of precise datatype, write that
unambiguously (e.g. as FILTER ((?o = 1.0) && DATATYPE(?o) = xsd:double))
when there's a need in such a precision.

Arithmetic and type conversion for derived types (like xsd:int) is not
complete. Virtuoso translates SPARQL into SQL and the list of datatypes
of the resulting SQL engine is much shorter than list of xsd:...
datatypes. We don't have even separate datatype for xsd:boolean, but
types we do have are handled quite efficiently.

Best Regards,
Ivan Mikhailov.
OpenLink Software.



Reply via email to