OWL - restrict subclassing?

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'?

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

The catch here is that the property being restricted is the RDFS 'subClassOf' 
property...

What do you think?

Heiko

PS I am not looking for the 'oneOf' constructor, which restricts the 
individuals belonging to a class rather than its subclasses

Received on Monday, 8 December 2003 07:45:39 UTC