Re: [OEP] a Quantity pattern? [was: Re: [UNITS] FAQ : Constraints on data values range]

From: Jeff Pan <pan@cs.man.ac.uk>
Date: Tue, 4 May 2004 09:52:12 +0100
Message-ID: <006301c431b5$60447fc0$afc15882@Newton>
To: <public-swbp-wg@w3.org>, "Guus Schreiber" <schreiber@cs.vu.nl>
Cc: "Bernard Vatant" <bernard.vatant@mondeca.com>, "Alan Rector" <rector@cs.man.ac.uk>, "Natasha Noy" <noy@SMI.Stanford.EDU>, "Ian Horrocks" <horrocks@cs.man.ac.uk>, "Ulrike Sattler" <sattler@cs.man.ac.uk>

Hi Guus,

Guus Schreiber wrote:
[..]
> ObjectProperty(diameterValue
>   domain(Wheel)
>   range(LengthQuantity))
>
> Class(Quantity)
> DatatypeProperty(value
>   domain(Quantity)
>   range(xsd:decimal))
> DatatypeProperty(unit
>   domain(Quantity)
>   range(Unit))
> Class(LenthQuantity
>   subClassOf(Quantity)
>   Restriction(unit, allValuesFrom(LengthQuantity))

>Assume LenghthUnit is defined as a subclass of Unit with instances such
>as m, cm, dm, mile, ichn, etc.
>Guus

This is a reasonable pattern for units, in that it keeps the unit-value
pairs separated from each other, although it is not clear to me if it works
fine with functional property axioms and datatype constraints.

Firstly, I wonder how to handle functional property axioms in this pattern.

For example, besides

Individual(myWheel
type(Wheel)
diameterValue(type(LengthQuantity) value(15) unit(cm))),

we also have the following individual axiom

Individual(myWheel
type(Wheel)
diameterValue(type(LengthQuantity) value(1.5) unit(m)))

in the ontology.

Now, I guess it is reasonable to assume that the property diameterValue is
functional. Therefore, the two blank nodes (as instances of LengthQuantity)
are identical and it (the combined node) has two unit properties and two
value properties. Things become complicated as we mix two pairs of
unit-value together, and it seems now difficult to tell which unit is used
with which value.

Secondly, I am trying to understand how we can handle explicit constraints,
as Natasha mentioned earlier, in this pattern.

We assume that we can represent a unit mapping constraint by a datatype
predicate cmPerM, with arity a(cmPerM)=2, and predicate extension
E(cmPerM)={<a,b> \in V(real)^2 | a=100*b}, where V(real) is the value space
for the datatype real.

How is it possible use the predicate cmPerM to detect the inconsistency in
the above example, i.e., 15cm is not 1.5m?

Greetings,
Jeff

--
Jeff Z. Pan  ( http://DL-Web.man.ac.uk/ )
Computer Science Dept., The University of Manchester

[..]

--
Free University Amsterdam, Computer Science
De Boelelaan 1081a, 1081 HV Amsterdam, The Netherlands
Tel: +31 20 444 7739/7718
E-mail: schreiber@cs.vu.nl