Re: [SWC] bNode modelling: was Re: RDF and OWL compatibility

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