- From: Michael Kifer <kifer@cs.sunysb.edu>
- Date: Wed, 11 Jan 2006 18:17:34 -0500
- To: Dave Reynolds <der@hplb.hpl.hp.com>
- Cc: public-rif-wg@w3.org
Dave, Please see my remarks are at the bottom of the msg. Dave Reynolds <der@hplb.hpl.hp.com>: > > I was asking for a test case to illustrate why naive skolemization > wasn't enough to model RDF bNodes in rule conclusions. > > Enrico pointed to > <http://www.w3.org/2005/rules/wg/wiki/Managing_incomplete_information> > section 9.4 as such a test case. The salient rule there being: > > kb:works-with(Z,X) :- rdf:type(X,db:employee). > > where Z is meant to be existentially quantified. > > I asked why naive Skolemensation wasn't enough in that case, > transforming the rule to introduce a skolem function for each head bNode: > > kb:works-with(Z,X) :- rdf:type(X,db:employee), gensym(X, Z). > > which was too sloppy and it was pointed out that I should have used the > notation _# to convey what I meant: > > kb:works-with(_#(X),X) :- rdf:type(X,db:employee). > ] > > Michael Kifer wrote: > > > Yes, Enrico, > > Skolemization is not the same as an existential in your use case above, and > > using it **naively** will be wrong. > > > > However, one can **model** the situation differently and obtain essentially > > the same result as far as the user goals are concerned. For instance, > > referring to > > > > http://www.w3.org/2005/rules/wg/wiki/Managing_incomplete_information > > > > one could represent the fact that any traveller has a home address as follows: > > > > traveller(enrico). > > traveller(michael). > > has_known_address(enrico,bolzano). > > > > has_address(?Person,?Addr) :- has_known_address(?Person,?Addr). > > has_address(?Person,_#(?Person)) :- > > traveller(?Person), > > not exists ?A has_known_address(?Person,?A). > > > > Here _# denotes a new Skolem function (in the notation of FLORA-2, WSML, > > and SWSL languages). The above rules are supported (perhaps using different > > notations) by a number of existing systems, like FLORA-2 and XSB, and by > > proposed languages like WSML-Rules and SWSL-Rules. > > > > So, here we will infer > > > > has_address(enrico, bolzano) > > has_address(michael, $@!2543(michael)) > > So apart from the skolem function itself, the other thing you are doing > is only introducing the skolem function when there isn't a known > address. I can see why you would do that. However, in terms of obtaining > the "same result as far as the user goals are concerned" then if the > user is processing RDF is this necessary? > > If one used the naive modelling: > > traveller(enrico). > traveller(michael). > has_address(enrico,bolzano). > > has_address(?Person, bNode(_#(?Person))) :- traveller(?Person). > > Then the set of RDF triples we would infer would be: > > :enrico :has_address :bolzano . > :enrico :has_address _:1 . > :michael :has_address _:2 . > > but by RDF semantics that graph and the lean graph: > > :enrico :has_address :bolzano . > :michael :has_address _:3 . > > simply-entail each other. So in terms of a user processing RDF is such > modelling adequate? Presumably not, but it passes the tests in the wiki > page. What would be an example test which shows why it is not adequate, > from the point of view of a person processing RDF? > > Dave As far as I know, RDF's semantics for b-nodes is NOT that of Skolemization but that of existential variables (RDF semantics is described in a rather obscure way -- not by encoding in plain FOL, so it is a bit hard to see). The existing implementations of RDF+rules use Skolemization in rule heads (probably because this is what everybody understands how to do since Robinson) and therefore they don't implement RDF semantics precisely. Under a semantics defined through Skolemization, the above two sets of formulas are not equivalent. This is why I had to make sure in my formulation that Skolemized addresses are introduced only when there are no corresponding known address. --michael
Received on Wednesday, 11 January 2006 23:17:40 UTC