W3C home > Mailing lists > Public > www-rdf-logic@w3.org > March 2003

Re: Even more Fuzzy about FunctionalProperty!

From: Jeff Z Pan <pan@cs.man.ac.uk>
Date: Wed, 5 Mar 2003 21:26:12 -0800
Message-ID: <00ab01c2e3a0$e739e9c0$6501a8c0@percival>
To: "Roger L. Costello" <costello@mitre.org>, <www-rdf-logic@w3.org>

From: "Roger L. Costello" <costello@mitre.org>
Subject: Re: Even more Fuzzy about FunctionalProperty!

Roger,

> It seems like perfectly good OWL to me.  Here's the definition of
> lengthOf:
>
> <owl:DatatypeProperty rdf:ID="lengthOf">
>     <owl:type rdf:resource="http://.../owl#FunctionalProperty"/>
>     <rdfs:range rdf:resource="http://.../rdf-schema#Literal"/>
>     <rdfs:domain rdf:resource="#Stream"/>
> </owl:DatatypeProperty>

You can define lengthOf in another way (by setting the range as xsd:float):

<owl:DataTypeProperty rdf:ID="lengthOf">
    <owl:type rdf:resource="http://.../owl#FunctionalProperty"/>
    <rdfs:range rdf:resource="xsd:float"/>
    <rdfs:domain rdf:resource="#Stream"/>
</owl:DataTypeProperty>

Since you are going to use kilo and mile later, you can define two derived
datatypes in a seperate file as follows:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
       xmlns="http://www.example.org/wine-dt.xsd">

   <xsd:simpleType name="lengthInKilo">
    <xsd:restriction base="xsd:float">
      <xsd:minInclusive value="0"/>
    </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType name="lengthInMile">
    <xsd:restriction base="xsd:float">
      <xsd:minInclusive value="0"/>
    </xsd:restriction>
   </xsd:simpleType>
</xsd:schema>
> Here's an instance document that uses the lengthOf property:

Since lengthInKilo and lengthInMile are sub-types of xsd:float, you can
rewirte this

> <River rdf:ID="Yangtze">
>      <length>6300 kilometers</length>
> </River>

as

<River rdf:ID="Yangtze">
     <lengthOf rdf:datatype="#lengthInKilo">6300</lengthOf>
</River>

and this

> <River rdf:ID="Yangtze">
>      <length>3937.5 miles</length>
> </River>

as

<River rdf:ID="Yangtze">
     <lengthOf rdf:datatype="#lengthInMile">3937.5</lengthOf>
</River>


> Since lengthOf has been declared to be a FunctionalProperty I can infer:

>      6300 kilometers = 3937.5 miles

Hang on, FunctionalProperty requires that they are the same, while you can't
be sure about that until you get the confirmation from the type system. If
there is a binary datatype predicate

MilesPerKilo(x,y)={x in lengInKilo and y in lengthInMile and y=1.6x}

defined in your datatype definition file, then you infer

      6300 lengInKilo = 3937.5 lengthInMile

and you data is consistent with your ontology, otherwise the result is
inconsistent as mentioned in Peter's earlier email.


> Why is this not OWL?  Thanks!  /Roger

So I don't think it is OWL's problem. Actually DLs like SHOQ(Dn) [1] can
reason with n-ary datatype predicates, while sadly XML Schema Part 2 [2]
doesn't support n-ary datatype predicates yet.

Jeff
--
Jeff Z. Pan  ( http://DL-Web.man.ac.uk/ )
Computer Science Dept., The University of Manchester


[1]
http://www.cs.man.ac.uk/~panz/Zhilin/download/Paper/Pan-Horrocks-datatype-20
02.pdf
[2] http://www.w3.org/TR/xmlschema-2/
Received on Wednesday, 5 March 2003 16:18:00 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:52:43 GMT