Re: relate subclasses to other subclasses

Nancy,

The main expressivity of OWL is in saying that instances of classes 
of one type have (or can have) certain relationships with certain 
other class types.  The following OWL abstract syntax says what you 
want about the likes of men and women without creating different 
subtypes of the likes property.  

It also doesn't constrain the domain or range of likes.  Leaving 
this unrestricted makes the property more reusable. Even if you
intend only to model autos and people, you still may want to make
assertions about people liking other people without having to 
create a new property to do so.

Ontology(
 
 Class(a:Automobile partial)
 Class(a:Ford partial 
   a:Automobile)
 Class(a:Honda partial 
   a:Automobile)
 Class(a:Man partial 
   a:Person
   restriction(a:likes someValuesFrom (a:Mercedes))
   restriction(a:likes someValuesFrom (a:Honda)))
 Class(a:Mercedes partial 
   a:Automobile)
 Class(a:Person complete 
   unionOf(a:Man a:Woman))
 Class(a:Woman partial 
   a:Person
   restriction(a:likes someValuesFrom (a:Ford))
   restriction(a:likes someValuesFrom (a:Honda)))

 ObjectProperty(a:likes)

)


Nancy Wiegand wrote:
>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?


-Evan

Evan K. Wallace
Manufacturing Systems Integration Division
NIST
ewallace@nist.gov

Received on Monday, 16 May 2005 20:32:32 UTC