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] Inheritance?

Thomas Russ tar at ISI.EDU
Wed Jan 13 15:23:50 PST 2010

On Jan 13, 2010, at 2:13 PM, Poovendran Moodley wrote:

> Hi all,
> I'm fairly new to modelling ontologies and there are a few things  
> that I've been wondering about. I've tried searching for more  
> information but I'm not even sure about the keywords to use in such  
> a search.
> I have a situation where a group of individuals share a common  
> characteristic - in this case, they must all be related to 3 other  
> individuals (by an object property). I was wondering if it's  
> possible to create a class/class restriction such that if x is an  
> element of said class, then it must be the case that x has a  
> predefined object property linking it to another individual, such  
> that if x does not have the right properties, it will be assigned  
> those properties.

Well, from a terminology point of view, it won't really be "assigned"  
those properties, but rather will have the values "inferred" by an  
appropriate inference engine (reasoner).

> I understand that I can create an equivalence class so that any  
> individual with certain properties belong to said class, but I want  
> the opposite to be possible: if an individual is part of the class  
> then it should inherit the object properties (linking to the  
> appropriate individuals) specified for that class.

An equivalence class really is equivalent.  It means that inferences  
work in both directions.  You will generally need to run a reasoner  
in order to see this.

As a simple example, if you define a class

    50-year-old  ==  Person and (hasValue age 50)

You can then make the following assertions:

    Fred  type  50-year-old
    Bill  type Person
    Bill  age 50

Bill will be recognized as belonging to the class "50-year-old".   
Fred will have an inferred property value for "age" of 50.

Where the difference becomes apparent and will diverge from what you  
might get from an object-oriented perspective is if you use some of  
the other restrictions.  Most interesting would be, for example the  
"allValuesFrom" or the "minCardinality" restrictions.

If you were to define

    A  == B and (allValuesFrom P 50-year-old)

and then assert

    i-1  type  A
    i-1  P  i-2

then the inference engine will conclude that i-2 must be of type 50- 
year-old, and that information will be available for further  
reasoning.  In particular, the reasoner will figure out that the age  
of i-2 must be 50.

Instead, if you were to define

    X = Y and (minCardinality P 3)

and then assert

   i-3 type X

then the reasoner will conclude that i-3 has at least 3 values for  
property P, but it won't be able to tell you which ones they are.   
This is where open world reasoning comes into play.  Even though  
there are 3 fillers, they don't have to be specifically identified.   
OWL is quite able to reason with just this partial information.

More information about the protege-owl mailing list