Re: Proposed extensions to OWL?

Hi Folks,

The more that I think about this problem, the more convinced I am that
adding something like a conversionFactor attribute is the right way to
go, e.g.,

    <owl:DatatypeProperty rdf:ID="length-in">
       <owl:equivalentProperty rdf:resource="#length-cm"
            owl-x:conversionFactor="length-in/value() = 
                                    length-cm/value() / 2.54"/>
       <rdfs:range rdf:resourse="&xsd;decimal"/>
    </owl:DatatypeProperty>

Let me explain.  Consider the meaning of this:

    <owl:DatatypeProperty rdf:ID="a">
       <owl:equivalentProperty rdf:resource="#b"/>
    </owl:DatatypeProperty>

It says that "a and b represent the same type of thing (they are
equivalent), with a conversionFactor of 'equality'". 

That is, implicitly, the definition is stating this:

    <owl:DatatypeProperty rdf:ID="a">
       <owl:equivalentProperty rdf:resource="#b"
                   owl-x:conversionFactor="a/value() = b/value()"/>
    </owl:DatatypeProperty>

"Given an instance of a and an instance of b, they can be considered
equivalent *provided* the value of 'a' equals the value of 'b'."

Thus,

    <owl:DatatypeProperty rdf:ID="length-in">
       <owl:equivalentProperty rdf:resource="#length-cm"
            owl-x:conversionFactor="length-in/value() = 
                                    length-cm/value() / 2.54"/>
       <rdfs:range rdf:resourse="&xsd;decimal"/>
    </owl:DatatypeProperty>

"Given an instance of length-in and an instance of length-cm, they can
be considered equivalent *provided* the value of length-in equals the
value of length-cm / 2.54"

In other words, a "conversionFactor" is implicit in this definition:

    <owl:DatatypeProperty rdf:ID="a">
       <owl:equivalentProperty rdf:resource="#b"/>
    </owl:DatatypeProperty>

I propose that we make the "conversionFactor" explicit, so that more
sophisticated mathematical relationships can be expressed.  Also, I
propose that xPath be leveraged to express the relationships. 
Comments?  /Roger

P.S. I looked at RuleML and feel that it is not appropriate for this
problem.  RuleML gives a way to state inferences.  In this problem, I am
not trying to state an inference.  I am merely trying to assert
equivalence (by a conversion factor).


"Roger L. Costello" wrote:
> 
> Hi Folks,
> 
> Yesterday I sent out a message asking about technologies to express
> mathematical relationships.  Robin Berjon responded with a very
> interesting idea.  I would like to get your thoughts on it, and see if
> collectively we can come up with something cool.
> 
> First I will show you a slightly modified version of Robin's proposal,
> then I will show Robin's original proposal.
> 
> Robin's Idea Slightly Modified
> 
> The idea is to extend OWL and base the solution on xPath.
> 
> Suppose that I would like to state that these two properties are
> equivalent via a conversion factor:
> 
>      length-in, length-cm
> 
> i.e., length in inches, and length in centimeters
> 
> The conversion factor is:
> 
>     length-in = length-cm / 2.54
>     length-cm = length-in * 2.54
> 
> With today's OWL here is how you would define these properties:
> 
>    <owl:DatatypeProperty rdf:ID="length-in">
>       <rdfs:range rdf:resourse="&xsd;decimal"/>
>    </owl:DatatypeProperty>
> 
>    <owl:DatatypeProperty rdf:ID="length-cm">
>       <rdfs:range rdf:resourse="&xsd;decimal"/>
>    </owl:DatatypeProperty>
> 
> The proposal is to extend OWL to allow you to assert that these two
> properties are equivalent by the above conversion factor.  Here's how it
> might look:
> 
>    <owl:DatatypeProperty rdf:ID="length-in">
>       <owl:equivalentProperty rdf:resource="#length-cm"
>                         owl-x:conversionFactor="current() * 2.54"/>
>       <rdfs:range rdf:resourse="&xsd;decimal"/>
>    </owl:DatatypeProperty>
> 
>    <owl:DatatypeProperty rdf:ID="length-cm">
>       <owl:equivalentProperty rdf:resource="#length-in"
>                         owl-x:conversionFactor="current() / 2.54"/>
>       <rdfs:range rdf:resourse="&xsd;decimal"/>
>    </owl:DatatypeProperty>
> 
> where:
>    owl-x is an OWL eXtension namespace,
>    current() is the xPath function referring to the current node.
> 
> Now let me show you Robin's idea:
> 
> Robin's idea is also to base the solution on xPath. Here's what Robin
> said:
> 
> "For instance:
> 
> <foo:PropertyEquivalence from='measure:inch'
>                           to='measure:cm'
>                           convert='$in_1 * 2.54'/>
> 
> <foo:PropertyEquivalence from='measure:cm'
>                           to='measure:in'
>                           convert='$in_1 div 2.54'/>
> 
> would allow you to declare that the following are equivalent:
> 
> <geo:Distance>
>    <measure:inch>2</measure:inch>
> </geo:Distance>
> 
> <geo:Distance>
>    <measure:cm>5.08</measure:cm>
> </geo:Distance>
> 
> You could allow for multiple inputs to your binding:
> 
> <foo:PropertyEquivalence
>                   from='size:width/measure:meter
> size:length/measure:meter'
>                   to='size:surface/measure:squareMeter'
>                   convert='$in_1 * $in_2'/>
> 
> and perhaps equivalentize, depending on whether it makes sense in that
> context:
> 
> <flat:Bedroom>
>    <size:width><measure:meter>4</measure:meter></size:width>
>    <size:length><measure:meter>5</measure:meter></size:length>
> </flat:Bedroom>
> 
> <flat:Bedroom>
>    <size:surface>
>      <measure:squareMeter>20</measure:squareMeter>
>    </size:surface>
> </flat:Bedroom>
> 
> so that given the first you could still query for flat:Bedrooms that
> are larger than 20sqm.
> 
> You may need to throw in stuff from EXSLT Math if you want more than
> XPath provides."
> 
> ....
> 
> Okay, those are the two ideas thus far.  What do you think?  Feel free
> to add your own ideas.  If this whole approach is bad, feel free to say
> so. The intent here is to brainstorm.  If these conversion rules are
> better stated using another technology (e.g., RuleML) please say so.
> /Roger

Received on Sunday, 15 June 2003 07:02:24 UTC