- From: Jos de Bruijn <debruijn@inf.unibz.it>
- Date: Fri, 23 May 2008 16:41:27 +0200
- To: Sandro Hawke <sandro@w3.org>
- CC: public-rif-wg@w3.org
- Message-ID: <4836D797.3030305@inf.unibz.it>
Sandro Hawke wrote: >> I'm afraid that adding existentials to rule heads pushes the language >> outside of Horn. In fact, we would nearly have full first-order logic > > How so? You can just get rid of it by Skolemizing it. > > This is a typical N3 Rule, saying that for every two things with a > grandparent relation, there exists a third thing connected to those > things by a parent relation: > > { ?x :grandparent ?y. } > => > # read "[ ... ]" as "something which has ..." > { ?x :parent [ :parent ?y ] }. > > I would turn that into this BLD: > > ?x[parent->sk1(?x,?y)] :- ?x[grandparent->?y] > > sk1(?x,?y)[parent->?z] :- ?x[grandparent->?y] > > The results to all positive ground queries on these two rule bases would > be the same, wouldn't they? One can reduce reasoning with existentials to reasoning with Skolem functions, but from a representation point of view the things are quite different. Specifically, when using a function symbol, you make a much stronger statement, because you name the function. For example, from your above rules and the fact: a[grandparent->b] we can derive the following: Exists ?x a[parent->?x] and ?x[parent->b] (which is what you want to derive in this case) But also: a[parent->sk1(a,b)] (which is something you do not want to derive) Best, Jos > > -- Sandro > -- debruijn@inf.unibz.it Jos de Bruijn, http://www.debruijn.net/ ---------------------------------------------- One man that has a mind and knows it can always beat ten men who haven't and don't. -- George Bernard Shaw
Received on Friday, 23 May 2008 14:42:12 UTC