- From: Roger L. Costello <costello@mitre.org>
- Date: Wed, 09 Jul 2003 15:48:55 -0400
- To: www-rdf-interest@w3.org
- CC: tpassin@comcast.net, "Costello,Roger L." <costello@mitre.org>
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