- From: Dave Reynolds <der@hplb.hpl.hp.com>
- Date: Mon, 22 Sep 2008 18:32:00 +0100
- To: RIF WG <public-rif-wg@w3.org>
A few questions and suggestions on DTB came up while I was trying to
develop the OWL 2 RL ruleset.
(1) isDecimal/isInteger behaviour
From the definitions of the guard predicates it looks like:
pred:isDecimal("3"^^xs:integer)
pred:isInteger("3"^^xs:decimal)
would both be true. That's what I would expect and is what I've assumed
but I thought I should just check.
(2) Subtypes of xsd:decimal and xsd:string
In the DTB section on the xs:integer cast function it says:
"and accordingly for all subtypes of xs:integer"
Does that mean that the xs:integer cast function in RIF is expected to
handle all subtypes of xs:integer like xs:nonNegativeInteger?
Does the same also apply to xs:string and the xs:string subtypes?
Are the guard predicates also expected to support the corresponding
subtypes?
I'm assuming the answer is probably "no" for at least the latter but
just wanted to check. I ask because OWL 2 includes xs:nonNegativeInteger
(but not others like xs:int) and a whole zoo of subtypes of xs:string.
(3) Generic type membership/non-membership, equality/inequality
To implement the OWL 2 RL datatypes rules it would be very convenient to
have generic equality and type checking operators which apply to all
supported primitive datatypes. Not only would that significantly
simplify the datatype rules but would mean that the rules would
automatically cover additional primitive datatypes supported by any
given RIF consumer.
We have such operators in Jena and found them quite useful.
What would people think about adding these to DTB?
pred:isType(?lit, ?type)
Where the domain of ?type is the IRI for a primitive datatype symbol space.
True iff ?lit is in the value space of the DATATYPE corresponding to
given symbol space IRI. Implementations are not required but are
permitted to support DATATYPE IRIs beyond the RIF supported datatypes.
pred:isNotType(?lit, ?type)
Where the domain of ?type is the IRI for a datatype symbol space.
True iff ?lit is not in the value space of the DATATYPE corresponding to
given symbol space IRI. Implementations are not required but are
permitted to support DATATYPE IRIs beyond the RIF supported datatypes.
pred:isLiteralEqual(?arg1, ?arg2)
Intended domain of ?argi is the value space for any supported primitive
datatype.
If both ?argi are in their intended domains then the predicate is true
iff the value of the two arguments are equal.
pred:isLiteralNotEqual(?arg1, ?arg2)
Intended domain of ?argi is the value space for any supported primitive
datatype.
If both ?argi are in their intended domains then the predicate is true
iff the value of the two arguments are not equal.
Dave
--
Hewlett-Packard Limited
Registered Office: Cain Road, Bracknell, Berks RG12 1HN
Registered No: 690597 England
Received on Monday, 22 September 2008 17:33:27 UTC