[DTB] Question arising from OWL 2 RL ruleset

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