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] Please help: complement of a class?

Thomas Russ tar at ISI.EDU
Mon Jan 7 16:55:19 PST 2008

Short answer:  Open world reasoning will make this nearly impossible.

Long answer is inline.

On Jan 7, 2008, at 12:58 PM, Johann Petrak wrote:

> OK, I obviously fail miserably at figuring this out:
> (see attached owl file):
> I want to simply assign all the individuals of some class A that
> are not members of subclass ASub1 to another subclass of A, ASub2.

You can do that, but there has to be a way for the OWL reasoner to  
prove that those individuals CANNOT be members of ASub1, in order to  
know that they belong to ASub2.  The fundamental problem lies is  
providing enough information to allow such a proof.

> Clas ASub1 has the necessary and sufficient condition
>  A and hasRange some B
> so all members of A that have a property hasRange filled with B
> make up class ASub1.
> That works: if I add an individual to A that does have a property
> hasRange flled with B then it shows up as member of class
> ASub1. If I add an individual to A that does not have
> a property hasRange filled with B, it does not show up in ASub1

Correct.  In the first case, you have an individual that satisfies the  
conditions and can be classified by the reasoner.  In the second case,  
the individual does not (to the system's knowledge) satisfy the  
conditions, so it won't be classified.  However, with open world  
reasoning, it is always possible that there is some filler of type B  
on the second individual, but the system has not been told about it.   
That is basically what open world reasoning means.

> No I want to create a second subclass of A, ASub2 that should contain
> all members of A that are not members of B.
> I tried to do this by make ASub1 and ASub2 covering A, i.e. in
> A I have the necessary and sufficient condition
>  ASub1 or ASUb2
> And I tried to simply add the necessary and sufficient condition
>  not ASub1
> to ASub2.
> ASub1 and ASub2 are defined to be disjunct.

You can do that.

Another approach would be to define ASub2 as the Complement of ASub1.

> Unfortunately, that is obviously the wrong idea, since it does not
> work :)

That doesn't follow.  It is quite a valid approach.  You do get closer  
to the crux of the issue in your next question:

> I am puzzled though and obviously am missing something about the
> OWA being at work here?


> Since ASub1 and ASub2 cover A, anything that is known to not have
> property hasRange filled with B should be in ASub2.

The key phrase 's "know to not have".  With open world, just because  
the system doesn't know of a filler does NOT mean that the system  
knows that there isn't a filler.  The upshot of open world reasoning  
is that any reasoning that requires AllValuesFrom ("only") or maximum  
cardinality restrictions, including the special case of zero fillers,  
are hard to prove.  OWL does not support "negation by failure".  The  
main guideline for open world reasoning is:

    Absence of proof is not proof of absence.

So, what you have is an individual with no known fillers of property  
hasRange.  But there is nothing to allow us to conclude that there are  
no unknown or as-yet unknown fillers of property hasRange.

If you want to have the inference succeed, then you must be explicit  
about the lack of filler.

One way to do that would be to make this individual be an instance of  
the restriction class (max 0 hasRange).  That explicitly tells the  
reasoner that there are NO fillers of the hasRange relation, and  
therefore, the individual cannot belong to ASub1.  The additional  
restrictions will therefore allow inference about membership in ASub2.

> I have also added hasRange only B as a necessary condition to
> A.
> Can anybody help me here?

More information about the protege-owl mailing list