- 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