- From: Axel Polleres <axel.polleres@deri.org>
- Date: Thu, 21 Feb 2008 19:04:52 +0100
- To: "Public-Rif-Wg (E-mail)" <public-rif-wg@w3.org>
Ok, here another use case where one might get ill-formed literals.
I have some RDF data.
:a :age "old".
:b :age "33".
:c :age "young".
:d :age "88".
and want to write a rule which converts the untyped
literals to xsd:integer typed ones where possible.
Ideally, I would like to have the option to write something in
RIF like:
?X[:age->&ex:createTypedLiteral(?Y,"xsd:integer"^^xsd:anyURI)] :-
?X[:age->?Y] and &isInteger(?Y).
where ex:createTypedLiteral is a built-in function creating
a typed literal from a string and a datatype IRI and
isInteger is a type checking builtin.
Now if I drop the last condition
?X[:age->&ex:createTypedLiteral(?Y,"xsd:integer"^^xsd:anyURI)] :-
?X[:age->?Y].
I will get ill-formed literals. :-(
you might argue, that functions to "construct"
new literals are not so nice, but I think in practical
RDF transformation use cases they are important.
Well, one could argue also of course that the definition of
ex:createTypedLiteral should be in a way that returns an error
on an ill-formed result... but I don't know whether we can prevent that,
if we allow built-ins to be extensible.
Axel
--
Dr. Axel Polleres
email: axel@polleres.net url: http://www.polleres.net/
rdfs:Resource owl:differentFrom xsd:anyURI .
Received on Thursday, 21 February 2008 18:05:09 UTC