Hello Ivan, Thank you for that deep analysis and presentation of Virtuoso internals :)
It was very useful for me and I look forward to more of such explorations with you and other developers. Regards Rajeev J Sebastian On Jan 23, 2008 10:23 PM, Ivan Mikhailov <imikhai...@openlinksw.com> wrote: > 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. > > >