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

Re: OWL - restrict subclassing?

From: <jon@hackcraft.net>
Date: Mon, 8 Dec 2003 13:06:17 +0000
Message-ID: <1070888777.3fd4774987d19@82.195.128.192>
To: "www-rdf-interest@w3.org" <www-rdf-interest@w3.org>

> In OWL, is there a way of specifying that a class may only have an enumerated
> 
> set of subclasses, e.g. 'Fruit' may only be subclassed by 'Apple' and 
> 'Banana'?

Just what do you have against oranges? Okay, Okay, you're only using it as an 
example, I know...

> What I've come up with is this:
> 
> 
> <owl:Class rdf:ID="NonAppleBanana">
>   <owl:complementOf>
>     <owl:Class>
>       <owl:unionOf rdf:parseType="Collection">
>         <owl:Class rdf:about="#Apple" />
>         <owl:Class rdf:about="#Banana" />
>       </owl:unionOf>
>     </owl:Class>
>   </owl:complementOf>
> </owl:Class>
> 
> <owl:Restriction rdf:about="#NonAppleBanana">
>   <owl:onProperty rdf:resource="&rdfs;subClassOf" />
>   <owl:allValuesFrom>
>     <owl:Class>
>       <owl:complementOf rdf:resource="#Fruit" />
>     </owl:Class>
>   </owl:allValuesFrom>
> </owl:Restriction>
> 
> 
> Which says that anything which is not an apple or a banana may subclass only
> 
> such things which are not fruit...

I think that's okay, but why not have:

<owl:Class rdf:ID="Fruit">
    <owl:unionOf rdf:parseType="Collection">
        <owl:Class rdf:resource="#Apple" />
        <owl:Class rdf:resource="#Banana" />
    </owl:unionOf>
</owl:Class>

Then something can only be a Fruit if it is an Apple or if it is a Banana, 
which would include something that was of a type which was a subclass of Apple 
or Banana, that is if you had:

<owl:Class rdf:ID="Golden_Delicious">
    <rdfs:subClassOf rdf:resource="#Apple" />
</owl:Class>

<owl:Class rdf:ID="Dog">
    <owl:DisjointWith rdf:resource="#Apple" />
    <owl:DisjointWith rdf:resource="#Banana" />
</owl:Class>

Then parsing

<Golden_Delicious rdf:ID="#appleToday" />
<Dog rdf:ID="#Rex" />

to have:

<xxx:appleToday> <rdf:type> <xxx:Golden_Delicious> .
<xxx:Rex> <rdf:type> <xxx:Dog> .

then the first triple, combined with the OWL statements, entails:

<xxx:appleToday> <rdf:type> <xxx:Apple> .

which in turn entails:

<xxx:appleToday> <rdf:type> <xxx:Fruit> .

We also know that the following are *not* true:

<xxx:Rex> <rdf:type> <xxx:Apple> .
<xxx:Rex> <rdf:type> <xxx:Banana> .
<xxx:Rex> <rdf:type> <xxx:Fruit> .

--
Jon Hanna                   | Toys and books
<http://www.hackcraft.net/> | for hospitals:
                            | <http://santa.boards.ie/>
Received on Monday, 8 December 2003 08:06:24 GMT

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