W3C home > Mailing lists > Public > public-owl-wg@w3.org > November 2007

ISSUE-5: n-ary datatypes - real vs XSD

From: Jeremy Carroll <jjc@hpl.hp.com>
Date: Tue, 13 Nov 2007 16:03:08 +0000
Message-ID: <4739CABC.7070804@hpl.hp.com>
To: public-owl-wg@w3.org


I will also add another area of concern which is a mismatch between the
  real numbers and the XSD datatypes

===


In XML Schema Datatypes WD of

5th November 1999

included a real datatype:
http://www.w3.org/TR/1999/WD-xmlschema-2-19991105/#real


difficulties with this resulted in it being dropped shortly before this 
millenium, as the design stabilised.

http://www.w3.org/TR/1999/WD-xmlschema-2-19991217/

While I have not dug around in the archvies to understand what happened 
in the month between these documents, the newer version reflects the 
realities on the ground, that computer systems work with fixed width 
IEEE representations, and (to a lesser extent) unbounded length integers 
and decimals - and *none* of these is a precise representation of the 
real numbers.

Meanwhile, reasoning about numbers and declarative arithmetic (as 
opposed to procedural computation), comes up in linear programming, 
integer programming, quadratic programming, non-linear programming, the 
existentional theory of the reals etc etc.

Again these areas are typical practical, and approximation is an 
accepted part of the art; and a good understanding of how errors 
propogate, error bounds etc etc are part of the theory of these areas.

It is plausible that there is a useful merge to be made between such 
reasoning techniques and the qualitative reasoning found in a DL reasoner.

It appears that some aspects of the racer design have started along 
those lines.

It is not plausible to me that the numeric values in the abstract 
interpretations being modelled will be anything other than real numbers, 
  and issues to do with approximation being handled within the 
theoretical framework of the reasoner, rather than handled in the 
datatyping.

===

Here is a very simple example from Prolog that may be compelling:

kilometersAndMiles(K,M) :-
    nonvar(K),
    !,
    M is K / 1.6.
kilometersAndMiles(K,M) :-
    nonvar(M),
    !,
    K is M * 1.6.

Using swipl version 5.6.36, from cygwin on a 32 bit wintel machine, I 
get the following:

?- kilometersAndMiles(X,5.3002),kilometersAndMiles(X,5.3002).

X = 8.48032

Yes
?- kilometersAndMiles(X,5.3004),kilometersAndMiles(X,5.3004).

No


The prolog construct is explicitly procedural. The code tries to pretend 
that it can be made declarative, and a "surprising" result follows.
My view of the n-ary datatype design in the member submission is that it 
is of this form - surprises waiting to happen.
Received on Tuesday, 13 November 2007 16:03:39 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 8 January 2008 14:13:27 GMT