[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)
or
mapping(foo, 1.0000)
the result should be (according to TMDM which forbids normalization of
literals):
foo
mapping: "1.0000"^^sql:query.
but a more sophisticated Topic Maps engine may produce:
foo
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,
Lars
--
Semagia
<http://www.semagia.com>
More information about the sc34wg3
mailing list