Search Mailing List Archives
[protege-owl] Please help: complement of a class?
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
> Can anybody help me here?
More information about the protege-owl