Search Mailing List Archives
[protege-owl] Please help: complement of a class?
tar at ISI.EDU
Tue Jan 8 09:21:24 PST 2008
On Jan 7, 2008, at 11:24 PM, Johann Petrak wrote:
> On 2008-01-08 01:55, Thomas Russ wrote:
>> Short answer: Open world reasoning will make this nearly impossible.
> hmm, I still have some hope because of the word "nearly" :)
>> Long answer is inline.
> Thank you for your detailed explanation!
>> 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.
> Yes - it seems I am still puzzled about what information is necessary
> to make that proof possible.
> I thought that when I state as a necessary condition for A
> hasRange only B
> that means that in order to be a valid member of A, something must
> have a hasRange to B if it has a hasRange to B (or doesnt have
> a hasRange at all).
Yes. That is correct. And this inference is one that OWL and its
reasoners make successfully.
>> 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
>> 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
> OK, but that would mean that I have to make an explicit assertion
> every member in A that does not have a hasRange filled with B
> and that essentially defeats the purpose, because I wanted to
> *derive* that fact. What I really want to do is make a general
> about all members in A that says that they must have a haveRange B
> or no haveRange B and *then* conclude from the absence of haveRange B
> that the contrary must be the case.
But that is precisely a "negation by failure" form of reasoning that
uses a Closed World Assumption. But since OWL is required to use open
world reasoning, you can't have that.
> I thought that this was called a "closure axiom" and I wondered
> what I got wrong about providing it. Or what kind of closure
> axiom one could provide for A instead.
> Is it possible to solve this by providing a closure axiom on
> hasRange B such that I can determine memebers of ASub2 without
> explicitly asserting the absence of hasRange B for each member
> of A?
Not in OWL with open world reasoning. You have to have explicit
> In other words, can I make a necessary condition for A so that unless
> a member has hasRange B asserted, it must have max 0 hasRange.
No. That requires closed world reasoning.
You would have to be explicit in providing the "max 0 hasRange"
> And if not -- is there a pattern to make this kind of problem
> easier to deal with? I assume it is not a rare requirement to
> derive the membership for an individual based on the absence of
> some property. Obviously, when I create an instance and fill
> the form for hasRange, I cannot somehow fill it in a way that
> says "known to be empty", but that is what I would like to
Well, in the interface, you could add the "max 0 hasRange", or more
generally a "max N hasRange" if there are N fillers given. In essence
that is used to tell the system that all of the known fillers are all
of the fillers. Of course, this also requires that all of the fillers
be declared to be "allDifferent", since OWL doesn't and is not allowed
to assume that individuals with different names are different from
each other. That also needs to be explicitly asserted.
The simplest way to add the "max 0 hasRange" restriction is to either
create a named class with N&S condition "max 0 hasRange" and then use
it for assertions, or else to create an anonymous class (using the
Protege API) with that definition. Then assert that the individuals
have that as one of their types. By building your own
> How do people usually deal with this?
If they can't do the sort of manual closure given above, then they try
to avoid the need to do closed-world reasoning in OWL.
Some people also use other knowledge representation and reasoning
systems which support closed-world reasoning.
More information about the protege-owl