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

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

From: Peter F. Patel-Schneider <pfps@research.bell-labs.com>
Date: Thu, 22 May 2003 08:08:18 -0400 (EDT)
Message-Id: <20030522.080818.68546312.pfps@research.bell-labs.com>
To: jon@spin.ie
Cc: www-rdf-interest@w3.org

From: "Jon Hanna" <jon@spin.ie>
Subject: RE: Are properties from a context-constrained class inherited by subclasses?
Date: Thu, 22 May 2003 11:00:56 +0100

> 
> > 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):
> 
> Given
> <#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.

It *is* permitted to say 

     <owl:Class rdf:ID="Blah">
         <rdfs:subClassOf rdf:resource="#Flueve"/>
          <rdfs:subClassOf>
                <owl:Restriction>
                        <owl:onProperty rdf:resource="#emptiesInto"/>
                        <owl:allValuesFrom rdf:resource="#Lake"/>
                </owl:Restriction>
          </rdfs:subClassOf>
     </owl:Class>

here.  It is not particularly useful, as this ends up meaning that Blah's
don't empty into anything and that could more-explicitly be said via

     <owl:Class rdf:ID="Blah">
          <rdfs:subClassOf>
                <owl:Restriction>
                        <owl:onProperty rdf:resource="#emptiesInto"/>
                        <owl:cardinality rdfs:datatype="xsd:nonNegativeInteger">0</owl:cardinality>
                </owl:Restriction>
          </rdfs:subClassOf>
     </owl:Class>

> #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.

This is not correct reasoning.  In the absence of information on whether
Briney is a subclass of or disjoint with Sea, 

     <owl:Class rdf:ID="Blah">
         <rdfs:subClassOf rdf:resource="#Flueve"/>
          <rdfs:subClassOf>
                <owl:Restriction>
                        <owl:onProperty rdf:resource="#emptiesInto"/>
                        <owl:allValuesFrom rdf:resource="#Briney"/>
                </owl:Restriction>
          </rdfs:subClassOf>
     </owl:Class>

is not only permitted, but is useful.

> 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> .

Peter F. Patel-Schneider
Bell Labs Research
Received on Thursday, 22 May 2003 08:09:08 GMT

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