- From: Jeremy Carroll <jjc@hpl.hp.com>
- Date: Tue, 13 Nov 2007 16:03:08 +0000
- 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 UTC