Hi there,

I'm running into some issues with Jena datatypes and canonicalization. The
following doc:

https://jena.apache.org/documentation/tdb/value_canonicalization.html

explains that TDB understands XML derived types, and that types derived
from each other should all match their canonicalized value. I'm not sure
this is what I'm seeing.

I have some data in a TDB2 instance:

<#example> <http://xmlns.com/foaf/0.1/age> "70"^^
http://www.w3.org/2001/XMLSchema#long .

where the following query will match:

(bgp (triple ?e <http://xmlns.com/foaf/0.1/age> "70"^^<
http://www.w3.org/2001/XMLSchema#long>))

but neither of the following do:

(bgp (triple ?e <http://xmlns.com/foaf/0.1/age> "70"^^<
http://www.w3.org/2001/XMLSchema#int>))
(bgp (triple ?e <http://xmlns.com/foaf/0.1/age> "70"^^<
http://www.w3.org/2001/XMLSchema#integer>))

I interpret the canonicalization doc to mean these three queries should be
functionally equivalent. Have I misunderstood something?

My other issue is that when I query for longs in the db, certain arithmetic
operators will coerce results to `XSDDatatype/XSDinteger`, even if both
operands are `XSDDatatype/XSDlong`:

(extend ((?age-new (+ ?age "1"^^<http://www.w3.org/2001/XMLSchema#long>)))
  (bgp (triple ?e <http://xmlns.com/foaf/0.1/age> ?age)))

Is this expected? I would have thought the Datatype would be preserved if
possible.

Thanks in advance!

Zalan

Reply via email to