W3C home > Mailing lists > Public > www-rdf-interest@w3.org > May 2003

RE: Are properties from a context-constrained class inherited by subclasses?

From: Jon Hanna <jon@spin.ie>
Date: Thu, 22 May 2003 11:00:56 +0100
To: <www-rdf-interest@w3.org>

> Hi Folks,
> Suppose that I have this class heirarchy:
>         River
>            |
>       Flueve
>           |
>        Blah
> Suppose that the property, emptiesInto, has a domain of River:
>      <owl:ObjectProperty rdf:ID="emptiesInto">
>            <rdfs:domain rdf:resource="#River"/>
>            <rdfs:range rdf:resource="#BodyOfWater"/>
>      </owl:ObjectProperty>
> Suppose the Flueve constrains emptiesInto to have a range of #Sea:
>      <owl:Class rdf:ID="Flueve">
>          <rdfs:subClassOf rdf:resource="#River"/>
>           <rdfs:subClassOf>
>                 <owl:Restriction>
>                         <owl:onProperty rdf:resource="#emptiesInto"/>
>                         <owl:allValuesFrom rdf:resource="#Sea"/>
>                 </owl:Restriction>
>           </rdfs:subClassOf>
>      </owl:Class>
> Question: what is the range of emptiesInto when used in the Blah
> Class?   /Roger

In the absence of a further restriction then it would be #Sea. It would be
possible to further restrict the range for Blah, but that must be compatible
with the fact that all Blahs are Flueves and hence it must be either a
subClassOf #Sea, or at least not disjoint with #Sea (in which case the union
of the two restrictions will apply):

<#Lake> <owl:disjointWith> <#Sea> .
<#InlandSea> <rdfs:subClassOf> <#Sea> .
<#Briney> <rdfs:subClassOf> <#BodyOfWater> .

Then you would be clearly allowed to restrict the range of #emptiesInto to
#InlandSea, and clearly not allowed to restrict it to #Lake.

#Briney is less clear. It may be that #Briney is a subClassOf #Sea, but we
just don't have the triple stating this, in which case it's clearly allowed.
Likewise it may be that #Briney is disjointWith #Sea, in which case it's
clearly not allowed.

It may also be that #Briney overlaps with #Sea, in which case it is allowed,
but the restriction to #Sea still applies. Hence if you restrict
#emptiesInto predicates to have a range of #Briney when the object is a
#Blah then anything a #Blah empties into must be both a #Briney and also a
#Sea. Or alternatively if you are told that a #Blah emptiesInto
#JonsRunOutOfExampleNames then you know that

<#JonsRunOutOfExampleNames> <rdf:type> <#Briney> .
<#JonsRunOutOfExampleNames> <rdf:type> <#Sea> .
Received on Thursday, 22 May 2003 06:01:23 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 22:44:42 UTC