Re: Expressing mathematical relationships in an ontology?

I think that OWL can be leveraged to express mathematical functions as well.
Consider the folowing example [that tries to assert: Y=MyFunction(X1,X2)]

<FunctionData rdf:about="#Y">
    <isFunctionValueOf>
          <Function rdf:about="MyFunction">
                <argument>
                     <FunctionData  rdf:about="#X1">
                         <value>x1</value>
                </argument>
                <argument>
                     <FunctionData  rdf:about="#X2">
                         <value>x2</value>
                </argument>
          </Function>
    </isFunctionValueOf>
</FunctionData>

The ontology is the following:

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

<owl:DatatypeProperty rdf:ID="value">
   <rdfs:domain rdf:resource="#FunctionData "/>
</owl:DatatypeProperty>

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

<owl:ObjectProperty rdf:ID="isFunctionValueOf">
   <rdfs:domain rdf:resource="#FunctionData" />
   <rdfs:range rdf:resource="#Function" />
</owl:ObjectProperty>

<owl:ObjectProperty rdf:ID="argument">
   <rdfs:domain rdf:resource="#Function" />
   <rdfs:range rdf:resource="#FunctionData " />
</owl:ObjectProperty>

<owl:Class rdf:ID="MyFunctionClass">
    <owl:IntersectionOf rdf:parseType="Collection">
          <owl:Class rdf:about="#Function"/>
            <owl:Restriction>
                  <owl:onProperty rdf:resource="#argument"/>
                  <owl:allValuesFrom rdf:resource="#X-Domain"/>
                  <owl:cardinality
rdf:datatype="&xsd;nonNegativeInteger">2</owl:cardinality>
            </owl:Restriction>
    </owl:IntersectionOf >
</owl:Class>

<MyFunctionClass rdf:ID="MyFunction"/>

<owl:Class rdf:ID="X-Domain">
    <owl:IntersectionOf rdf:parseType="Collection">
            <owl:Class rdf:about="#FunctionData "/>
            <owl:Restriction>
                  <owl:onProperty rdf:resource="#value"/>
                  <owl:allValuesFrom rdf:resource="#X-Datatype"/>
            </owl:Restriction>
    </owl:IntersectionOf >
</owl:Class>

<owl:Class rdf:ID="Y-Domain">
    <owl:IntersectionOf rdf:parseType="Collection">
            <owl:Class rdf:about="#FunctionData "/>
            <owl:Restriction>
                  <owl:onProperty rdf:resource="#value"/>
                  <owl:allValuesFrom rdf:resource="#Y-Datatype"/>
            </owl:Restriction>
    </owl:IntersectionOf >
</owl:Class>

Note that you can also specialize the argument property so that no any
confusion can arise with the order of arguments when these are of the same
type.

Francesco

Received on Tuesday, 17 June 2003 08:08:00 UTC