[sc34wg3] CTM: Specifying datatypes

Lars Heuer heuer at semagia.com
Mon Mar 30 12:54:02 EDT 2009

Hi Lars,

>> Yes, I think we should allow something like
>>     def mapping($t, $q)
>>         $t
>>         mapping: $q^^sql:query.
>>     end

> What happens if I then use the template as follows?

>    mapping(foo, "select ..."^^xsd:string).
>    mapping(foo, "select ..."^^bar:sql-query).
>    mapping(foo, 1).


Well, after I've written the enthusiastic "Yes, we should", I wondered
if this is a good idea. The problem is, that the TMDM provides only
limited support for literal values != xsd:anyURI and xsd:string. If
someone uses

    mapping(foo, "1.0000"^^xsd:decimal)


    mapping(foo, 1.0000)

the result should be (according to TMDM which forbids normalization of

   mapping: "1.0000"^^sql:query.

but a more sophisticated Topic Maps engine may produce:

   mapping: "1.0"^^sql:query.

since the value of "1.0000" can be translated to "1.0" (canonical form
of the xsd:decimal value).

So, we need a policy how to translate a value from one datatype to
another. The canonical representation would be an option but since it
is not mentioned in the TMDM, I wonder if this policy is doable.

Requiring that the string which was provided by the user is kept,
would be wrong imo.

I tend to join Graham's fan club and leave CTM as it is (regarding
this issue) just to avoid the ugliness of translating literals from
one datatype to another.

Best regards,

More information about the sc34wg3 mailing list