Re: (Round 2) Proposed Extensions to OWL

Hi Folks,

I would like propose a solution, building upon the ideas that Tom has
been advocating.

To explain my proposal I will walk you through a scenario.

Suppose that an application receives this XML document containing a
description of the Yangtze River:

<River rdf:ID="Yangtze">
   <length>
      <Length>
         <measurement>
            <LengthMeasurement>
                <measurementValue>
                   <LengthValue>
                      <numericalValue>3914</numericalValue>
                      <unitSpecification rdf:resource="#Miles"/>
                   </LengthValue>
               </measurementValue>
               <precision>...</precision>
               <source>...</source>
            </LengthMeasurement>
         </measurement>
      </Length>
   </length>
</River>

The application parses the document and discovers that the length data
has been expressed in units of miles.  The application wants the length
data in kilometers.

The application consults the Units Conversion Ontology and asks:

    "Is there a conversion from Miles to Kilometers?"

Specifically, is there a Transform with inputUnits=Miles and
outputUnits=Kilometer?

Here is the Units Conversion Ontology:
----------------------------------------------------------------------------------------------------

<owlx:Transform rdf:ID="MilesToKilometers">
      <owlx:inputUnits rdf:resource="#Miles" rdf:label="miles"/>
      <owlx:outputUnits rdf:resource="#Kilometers"
rdf:label="kilometers"/>
      <owlx:conversion rdf:parseType="Literal">
            <mrow xmlns="http://www.w3.org/1998/Math/MathML">
                <apply>
                    <eq/>
                    <ci>kilometers</ci>
                    <apply>
                        <times/>
                        <ci>miles</ci>
                        <cn>0.62</cn>
                    </apply>
                </apply>
            </mrow>
      </owlx:conversion>
</owlx:Transform>
...
<owl:Class rdf:ID="Unit">
    <owl:oneOf rdf:parseType="Collection">
               <nist:Units rdf:about="#Miles"/>
               <nist:Unitsrdf:about="#Kilometers"/>
               …
    </owl:oneOf>
</owl:Class>
----------------------------------------------------------------------------------------------------

(I show just one Transform.  Obviously there will be many others.)

Each <owlx:Transform> element has three parts:

1. <owlx:inputUnits> identifies the units to be converted *from*;
rdf:label is used to give a variable name to the numericalValue that has
this unit.

2.  <owlx:outputUnits> identifies the units to be converted *to*;
rdf:label is used to give a variable name to the numericalValue that
will have this unit.

3. <owlx:conversion> describes, using MathML, the formula for converting
(in this example) miles to kilometers.

The application retrieves the elements within
<owlx:conversion>...</owlx:conversion> and does the conversion (possibly
calling a MathML processor with the <owlx:conversion> elements and the
numericalValue, 3914.

Below are the OWL definitions for LengthValue, numericalValue, and
unitSpecification.  As you can see they make no mention of any unit
conversions (that information is in the Units Conversion Ontology).

River Ontology (snippet):
----------------------------------------------------------------------------------------------------

<owl:Class rdf:ID="MeasurementValue"/>

<owl:Class rdf:ID="LengthValue">
    <rdfs:subClassOf rdf:resource="MeasurementValue"/>
</owl:Class>

<owl:DatatypeProperty rdf:ID="numericalValue">
    <rdfs:domain rdf:resource="#MeasurementValue"/>
    <rdfs:range rdf:resource="&xsd;decimal"/>
</owl:DatatypeProperty>

<owl:ObjectProperty rdf:ID="unitSpecification">
    <rdfs:domain rdf:resource="#MeasurementValue"/>
    <rdfs:range rdf:resource="&uom;#Unit"/>
</owl:ObjectProperty>
----------------------------------------------------------------------------------------------------

To Recap:

1. To define a units-of-measure value requires a 3-stripping-layer
design.
2. A Units Conversion Ontology defines the mappings from one
unit-of-measure to another.
3. An ontology the uses units-of-measure (e.g., River Ontology) uses the
Unit class in the Units Conversion Ontology.

That's it.  What do you think?  /Roger

Received on Wednesday, 9 July 2003 15:49:04 UTC