- From: Roger L. Costello <costello@mitre.org>
- Date: Sat, 14 Jun 2003 07:20:36 -0400
- To: www-rdf-interest@w3.org
- CC: robin.berjon@expway.fr, "Costello,Roger L." <costello@mitre.org>
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 Saturday, 14 June 2003 07:21:44 UTC