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.