Search Mailing List Archives

Limit search to: Subject & Body Subject Author
Sort by: Reverse Sort
Limit to: All This Week Last Week This Month Last Month
Select Date Range     through    

[protege-owl] Defined class problem

Thomas Russ tar at ISI.EDU
Mon Apr 16 10:35:01 PDT 2007

On Apr 16, 2007, at 9:52 AM, Denis wrote:

> Samson Tu <swt <at>> writes:
>> You need to make BookShop a defined class for individuals of  
>> BookStore
>> to be classified as BookShop individuals.
> Thank you for replying.
> Please forgive me if this is a very basic question, but could you  
> please tell
> me what is the procedure of doing that ?

There is a fundamental concept of "primitiveness" that historically  
to trip up new users of description logics.  It was certainly a  
problem at
least 15 years ago when I started working with them.

Description logics (like OWL) allow you to express fully defined classes
by using necessary and sufficient conditions.  If you do that, then you
have given a COMPLETE definition of what it means to belong to a  

If you provide no conditions, or only necessary conditions, then what  
are telling the system is not the complete definition, but only a  
definition.  There is some other required element for membership in  
the class
that you have chosen not to tell the system about.  That "other  
required element"
establishes what is called "primitiveness".  In other words, since  
there is
some additional requirement that the system does not know about,  
there is
no way for the system to infer membership in the class, without being
told that an instance belongs to that class.  This can be done directly
by asserting that the instance belongs to that class, or in limited  
indirect ways
such as asserting that the instance belongs to a subclass.

> Moreover, is my procedure a correct one? or there are better ways  
> to go about
> this ?

So, in  your example, there was no definition of what it means to be  
a bookshop,
only a bookstore.  That means that only the bookstore could be inferred.

Now, what you could do is establish the following:

Primitive Classes:
   Object  -- primitive
   Book    -- primitive subclass of Object
   Store   -- primitive, although it could be defined.

   sells   --  Store => Object

Defined Classes:
   BookStore <=>  Store and sells some Book
   BookShop  <=>  Store and sells some Book

Note that now you have identical definitions for BookStore and  
BookShop, so an OWL reasoner will conclude that these concepts are  
equivalent.  [You could also add the only sells book condition to  
both as well.  It wouldn't change the general method.]

More information about the protege-owl mailing list