W3C home > Mailing lists > Public > public-owl-wg@w3.org > November 2007

Discussion of anonymous individuals versus skolems

From: Alan Ruttenberg <alanruttenberg@gmail.com>
Date: Wed, 7 Nov 2007 13:47:46 -0500
To: OWL Working Group WG <public-owl-wg@w3.org>
Message-Id: <0469AA97-2112-4D2E-88F8-741C0BC4B0DE@gmail.com>


Begin forwarded message:

> From: Ian Horrocks <horrocks@cs.man.ac.uk>
> Date: August 29, 2006 10:43:52 AM EDT
> To: Alan Ruttenberg <alanruttenberg@gmail.com>
> Subject: Re: anonymous individual
>
> On 26 Aug 2006, at 06:36, Alan Ruttenberg wrote:
>
>> I'm still missing something but I'm not sure it's sensible - you  
>> be the judge.
>>
>> If I understand your example you are saying that if (a) and (b)  
>> mean the same thing, then you can replace one with the other.  
>> Therefore (a) , not(b) should be able to be rewritten as  (b) ,   
>> not(a) by swapping (a) and (b) in the axioms. Then you show that  
>> these are not equivalent, since one is satisfiable and the other  
>> not, and so (a) and (b) can't mean the same thing.
>
> Exactly.
>
>>
>> I'm trying to compare this to what I considered the more obvious  
>> way to showing that they are different.
>
> Fair enough.
>
>>
>> If the blank node and the skolemized version are to have different  
>> meanings, then it seems that the challenge would be:
>>
>> I tell you  that I plan to add either of these two axioms
>>
>> (a) individual(John value(hasFriend individual(value(hasFriend  
>> Jane)))) or
>> (b) individual(John value(hasFriend individual(<somename> value 
>> (hasFriend Jane))))
>>
>> I don't tell you the name I will use for  <somename> since it  
>> can't be known to you anyways - it's a fresh name.
>>
>> You give me a set of axioms (c) such that if I add (a) the  
>> ontology is either satisfiable or not but if I add (b) then the  
>> ontology is the opposite (unsatisfiable if adding (a) made it  
>> satisfiable, satisfiable if adding (a) made it unsatisfiable)
>>
>> I do see your point about (b) having fewer models than (a). Given  
>> that, it seems clear that the challenge will be that (a) added to  
>> (c) is satisfiable, but (b) added to (c) is not, rather than the  
>> two choices I listed above.
>>
>> What's not obvious to me is whether the in the illustration you  
>> give using two ontologies necessarily mean that one can construct  
>> a single set of axioms (c) that rules out all the models that (b)  
>> allows (without knowing what <somename> is) while leaving in place  
>> some of the ones that (a) allows.
>>
>> If you can't do this, then even though they are clearly not  
>> substitutable in the example you give, in any single OWL ontology,  
>> there is no way to tell the difference.
>
> I completely agree with what you say - the different semantics/ 
> models is/are only relevant if the query language is powerful  
> enough to allow the difference to be detected; and, as you rightly  
> point out, if the query language is restricted to testing the  
> satisfiability of an ontology, then we can't tell the difference  
> between (a) and (b) (at least not without "cheating" by using the  
> Skolem constant in the query).
>
> If, however, the query language allows me to test ontology  
> entailment, then I *can* tell the difference between (a) and (b):  
> given two ontologies A and B containing only axioms (a) and (b)  
> respectively, then B entails A, but A doesn't entail B. This is  
> because deciding if A entails B (resp. B entails A) reduces to  
> deciding the satisfiability of A \cup \neg B (resp. B \cup \neg A),  
> and when we introduce ontology (and hence axiom) negation, we can  
> distinguish the Skolem version from the existentially quantified  
> version.
>
> Bottom line is, I suppose, that using the Skolemisation trick in  
> order to avoid the use of nominals is fine provided that the kinds  
> of query that will be asked will not expose the slightly stronger  
> semantics.
>
> Ian
>
>
>
>>
>> -Alan
>>
>> On Aug 17, 2006, at 1:01 AM, Ian Horrocks wrote:
>>
>>> On 13 Aug 2006, at 08:05, Alan Ruttenberg wrote:
>>>
>>>> This is helpful. What I am puzzling about is how I can negate  
>>>> the original axiom.
>>>
>>> If you mean the axiom:
>>>
>>> individual(John value(hasMother individual(value(hasMother Jane))))
>>>
>>> then I don't believe that there is any *direct* way to negate it.  
>>> This is pretty normal in a DL where there is typically no way to  
>>> negate even basic Abox axioms involving roles, e.g., hasMother 
>>> (John,Liz).
>>>
>>>>  I can see how to do it if it is written in the second form:  
>>>> "individual(John type(....".
>>>
>>> Given that this is semantically *identical* to the first form, I  
>>> don't see the problem of negating the axiom this way.
>>>
>>>>
>>>> What I can't see is how to negate the first form - with the  
>>>> anonymous individual - and by doing so construct an OWL example  
>>>> that exhibits the difference between that and the skolemized case.
>>>
>>> First off, I should apologise for having used hasMother in the  
>>> example - intuitively this should be a functional property, and  
>>> in this case the Skolemised version *is* equivalent to the  
>>> existential version, because the mother of John *is* a unique  
>>> individual. So, let's switch to using hasFriend. We want to show  
>>> that:
>>>
>>> individual(John value(hasFriend individual(value(hasFriend Jane))))
>>>
>>> is *not* equivalent to
>>>
>>> individual(John value(hasFriend individual(X value(hasFriend  
>>> Jane))))
>>>
>>> where X is a newly introduced "Skolem" individual. Note that we  
>>> could split the second axiom into the pair of axioms
>>>
>>> individual(John value(hasFriend X))
>>> individual(X value(hasFriend Jane))
>>>
>>> but a single axiom is a little easier to work with. It also makes  
>>> it obvious that this form is strictly "stronger" than first form  
>>> (it has fewer models, and every model of the second form is a  
>>> model of the first, but not vice versa). As you say, we need to  
>>> use the nominal form in order to do the negation, but I don't see  
>>> why that is a problem. The negations turn out to be:
>>>
>>> individual(John type(complementOf(restriction(hasFriend  
>>> someValuesFrom(restriction(hasFriend someValuesFrom(oneOf 
>>> (Jane))))))))
>>>
>>> and
>>>
>>> individual(John type(complementOf(restriction(hasFriend  
>>> someValuesFrom(intersectionOf(oneOf(X) restriction(hasFriend  
>>> someValuesFrom(oneOf(Jane)))))))))
>>>
>>> respectively. The ontology consisting of the two axioms
>>>
>>> individual(John value(hasFriend individual(value(hasFriend Jane))))
>>> individual(John type(complementOf(restriction(hasFriend  
>>> someValuesFrom(intersectionOf(oneOf(X) restriction(hasFriend  
>>> someValuesFrom(oneOf(Jane)))))))))
>>>
>>> is satisfiable (because there are models where the intervening  
>>> friend is not X), but the ontology consisting of the two axioms
>>>
>>> individual(John value(hasFriend individual(X value(hasFriend  
>>> Jane))))
>>> individual(John type(complementOf(restriction(hasFriend  
>>> someValuesFrom(restriction(hasFriend someValuesFrom(oneOf 
>>> (Jane))))))))
>>>
>>> is not satisfiable (because the second axiom rules out Jane being  
>>> a friend of a friend of John, regardless of the intervening  
>>> individual.
>>>
>>> I hope this covers it?
>>>
>>> Ian
>>>
>>>
>>>
>>>>
>>>> hint?
>>>>
>>>> -Alan
>>>>
>>>> On Aug 6, 2006, at 6:11 AM, Ian Horrocks wrote:
>>>>
>>>>>> BTW, I've been meaning to ask you: Do I remember you once  
>>>>>> saying that "anonymous individuals were syntactic sugar for a  
>>>>>> nominal"? If so, could you explain the equivalence?
>>>>>
>>>>> I don't remember the context. I think that what we were  
>>>>> probably talking about was that the ability in OWL to describe  
>>>>> a "chain" of properties linking one individual with another,  
>>>>> e.g. (modulo syntax errors - this syntax drives me nuts):
>>>>>
>>>>> individual(John value(hasMother individual(value(hasMother  
>>>>> Jane))))
>>>>>
>>>>> This effectively introduces an anonymous individual as the  
>>>>> mother of John and daughter of Jane. We can use nominals to do  
>>>>> this by asserting that John is an instance of the class of  
>>>>> individuals whose mother is Jane, i.e.:
>>>>>
>>>>> individual(John type(restriction(hasMother someValuesFrom 
>>>>> (restriction(hasMother someValuesFrom(oneOf(Jane)))))))
>>>>>
>>>>> or, in DL syntax:
>>>>>
>>>>> John: \exists hasMother.(\exists hasMother {Jane})
>>>>>
>>>>> The construction oneOf(Jane) defines a class whose only  
>>>>> instance is Jane, i.e., the nominal {Jane}. The first  
>>>>> existential effectively introduces an anonymous individual that  
>>>>> is an instance of the class of individuals whose mother is  
>>>>> Jane. We need nominals to do this, because they give us a way  
>>>>> of asserting a relationship from such existentially quantified  
>>>>> individuals back to named Abox individuals.
>>>>>
>>>>> Note that a similar effect could be obtained by introducing a  
>>>>> new name, e.g.,:
>>>>>
>>>>> individual(John value(hasMother individual(newAnonInd value 
>>>>> (hasMother Jane))))
>>>>>
>>>>> or, in DL syntax:
>>>>>
>>>>> (John, newAnonInd): hasMother
>>>>> (newAnonInd, Jane): hasMother
>>>>>
>>>>> There is a subtle difference, however, caused by "Skolemising"  
>>>>> what was previously an existentially quantified individual. If  
>>>>> we negate the original axiom, we get an assertion that Jane is  
>>>>> not the grandmother of John, whereas if we negate the  
>>>>> Skolemised version, we get an assertion that *either*  
>>>>> newAnonInd isn't the mother of John *or* Jane isn't the mother  
>>>>> of newAnonInd, i.e., Jane could still be the grandmother of  
>>>>> John via some other intermediary. Depending on the application  
>>>>> context, we may not notice this difference.
>>>>>
>>>>> Ian
>>>>
>>>
>>
>
Received on Wednesday, 7 November 2007 18:47:57 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 8 January 2008 14:13:27 GMT