- From: Jeff Z Pan <pan@cs.man.ac.uk>
- Date: Wed, 5 Mar 2003 21:26:12 -0800
- 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 UTC