ISSUE-126 (Revisit Datatypes): A proposal for resolution

Hello,

Here is a proposal, inspired by Alan's earlier observations, for resolving this issue.

1. We introduce the owl:real datatype with the value space of all real numbers. We don't add any constants of the form owl:real.

2. We introduce the owl:rational datatype with the value space of all rational numbers. We add a constant for each rational number
along the lines of http://www.w3.org/2007/OWL/wiki/OWL_Rational. Thus, we would be able to write things such as "1/3"^^owl:rational
or even "1/1"^^owl:rational.

3. We leave xsd:integer and all the derived types as they are. Thus, "1"^xsd:integer is still valid as usual.

4. We make xsd:double the subset of real numbers between the minimal double and the maximal double number. We do the same for
xsd:float. All constants are the same as in XML Schema; thus, "1"^^float and "1.0"^^float are all the same constants. We disallow
the NaN (not-a-number) constant (allowing NaN would make owl:double not a subset of owl:real). 

We are thus staying "almost" true to XML Schema, in thatwe have exactly the same set of constants as in XML Schema. The main change
is that, in order to facilitate simpler implementations, we make the extension of xsd:double and xsd:float continuous rather than
discrete.

5. We make xsd:decimal the subset of owl:real and we leave all constants as they are. Thus, "1.0"^^xsd:decimal is still a valid
constant in OWL.

6. We disallow the "pattern" facet on all numeric datatypes.



As I explained in my last e-mail, two constants can be different even though they denote the same value. This elegantly solves the
problems that Alan mentioned in his last e-mail. For example, if the ontology initially contains "1.0"^^xsd:float, this would be
read into a constant whose lexical representation is "1.0" and whose URI is xsd:float. Thus, if you write the ontology back from the
structural spec, the constant would be written out as "1.0"^^xsd:float, and thus the form of the ontology would be preserved.

The only thing that changes really is that we'd say that the extensions of xsd:double and xsd:float are continuous and not discrete,
and we'd tweak them (e.g., by removing NaN) to make them subsets of owl:real.

Please let me know how you feel about this.

Regards,

	Boris

Received on Tuesday, 1 July 2008 12:17:14 UTC