- From: Chris Welty <cawelty@frontiernet.net>
- Date: Tue, 10 Jan 2006 21:24:40 -0500
- To: public-rif-wg@w3.org
Let's pick up this thread with the new taglines. -Chris Michael Kifer wrote: >Francis McCabe <fgm@fla.fujitsu.com> wrote: > > >>Please forgive my lack of arcane logic .. >> but it seems to me that the use of gensym here: >> >> >> >>>kb:works-with(Z,X) :- rdf:type(X,db:employee), gensym(Z). >>> >>> > >You are right. The above has no logical meaning. Especially since David was >appealing to such implementational concepts as "returns some freshly minted >bNode on each call". (We shouldn't be reinventing Prolog -- there is already >an ISO standard for it.) > > > > >>is not sound. >>Presumably, what is really meant is: >> >>kb:works-with(Sy,X) :- rdf:type(X,db:employee) where Sy is some >>gensym(). >> >> > >No, this is not going to model Enrico's use case correctly. This was the >whole point of Enrico's message to which David was replying. > >See my response >http://lists.w3.org/Archives/Public/public-rif-wg/2006Jan/0037.html >for a correct representation. ("Correct" should be understood loosely -- in >terms of getting satisfactory results for the given use case, not that >Enrico's first-order representation has the same semantics as my >representation that relies on default negation.) > > > > >>I.e., the skolemization should be done once and for all, not on each >>use of the rule. >> >>However, at the moment, I can't see why you would want to skolemize >>at all .. what is wrong with the rule with the universal quantifier >>in it? >> >> > >Because he wanted to mimic an existential variable, which Enrico has in his >use case. > > --michael > > > > >>Frank McCabe >> >> >> >>On Jan 9, 2006, at 9:50 AM, Dave Reynolds wrote: >> >> >> >>>Enrico Franconi wrote: >>> >>> >>> >>>>On 5 Jan 2006, at 15:51, Dave Reynolds wrote: >>>> >>>> >>>>>On the question of bNodes in the head, I hear the argument that >>>>>it is not sufficient to just treat these as new Skolem constants >>>>>but my intuitive understanding of the issue is too weak. It >>>>>would be really helpful if someone could construct a test case >>>>>which demonstrates the difference in results that arise between >>>>>correct treatment of bNodes in the head versus treatment as >>>>>Skolem constants. In the concrete cases I've seen where bNodes >>>>>are used in the head of rules they seem to be intended as a form >>>>>of anonymous gensym - so the Skolem constant semantics may be >>>>>the more practically useful interpretation. >>>>> >>>>> >>>>A a naive gensym would fail the use case <http://www.w3.org/2005/ >>>>rules/wg/wiki/Managing_incomplete_information>, where two >>>>examples (in section "9.4. (Rules involving generation of >>>>unknown)") show how you can make things wrong with a naive use of >>>>skolem constants to implement the existential variables in the head. >>>> >>>> >>>Sorry to be slow on the uptake but I didn't follow why the examples >>>break with naive gensym. >>> >>>The example in 9.4 on that page shows the rules: >>> >>>[[[ >>> rdf:type(X,db:employee) :- kb:works-with(X,Y). >>> kb:works-with(Z,X) :- rdf:type(X,db:employee). >>>]]] >>> >>>A naive implementation of bNodes-by-gensym would rewrite the unsafe >>>second rule to something like: >>> >>> kb:works-with(Z,X) :- rdf:type(X,db:employee), gensym(Z). >>> >>>where "gensym/1" returns some freshly minted bNode on each call; >>> >>>or, better, >>> >>> kb:works-with(Z,X) :- rdf:type(X,db:employee), gensym(X, Z). >>> >>>where "gensym/2" binds Z to some bNode which is a (skolem-)function >>>of X. >>> >>>As far as I can see either of these would return the same answer as >>>the classical semantics for both of your test cases 9.4.1 and 9.4.2. >>> >>>Dave >>> >>> >>> >>> >> >> >> > > > > > > >
Received on Wednesday, 11 January 2006 02:24:47 UTC