- From: Alan Ruttenberg <alanruttenberg@gmail.com>
- Date: Thu, 8 Nov 2007 06:36:28 -0500
- To: Web Ontology Language (OWL) Working Group WG <public-owl-wg@w3.org>
- Message-Id: <765EE446-E52F-4E06-AA28-E5D14129E52C@gmail.com>
[Resending my previous note with the ISSUE subject line so tracker keeps a pointer to it] A discussion with Ian about the difference between anonymous individuals and skolems 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 Thursday, 8 November 2007 11:36:39 UTC