relate subclasses to other subclasses

In general, I want to formally state in OWL that the subclasses from one
class have a relationship with some of the subclasses of another
class. Suppose men and women are subclasses of people. Also, makes of cars
are subclasses of cars. I want to state that men "like" Hondas and
Mercedes and women "like" Hondas and Fords. (Note, for simplicity, I'm
making this example up!)

Do I have to model this by including an anonymous subclass in the subclass
definition of men that has onProperty restrictions to Hondas and Mercedes?
And, do I have to make separate relationships (ObjectProperties) to Hondas
and Mercedes? example:

<owl:Class rdf:ID= "Men">
   <rdfs:subClassOf rdf:resource= "#People"/>
   <rdfs:subClassOf>                                  {anonymous subclass}
       <owl:Restriction>
           <owl:onProperty rdf:resource="menLikeHondas"/>
           <owl:minCardinality rdf:dataType="&xsd:nonNegativeInteger">
                1 </minCardinality>
       </owl:Restriction>
       <owl:Restriction>
           <owl:onProperty rdf:resource="menLikeMercedes"/>
           <owl:minCardinality rdf:dataType="&xsd:nonNegativeInteger">
                1 </minCardinality>
       </owl:Restriction>
   <rdfs:subClassOf>
</owl:Class>

Is there another way to express what I want? This seems rather
convoluted.

Also, if the above is the way to model this, then, I don't
like having to define so many relationships ("menLikeX") but
would rather use a
general relationship, say an inherited general "likes" relationship
between people and cars. Is that possible?

Thank you,
  Nancy Wiegand

Received on Monday, 16 May 2005 04:44:12 UTC