- From: Michael Kifer <kifer@cs.sunysb.edu>
- Date: Sun, 11 May 2008 12:04:34 -0400
- To: Dave Reynolds <der@hplb.hpl.hp.com>
- Cc: Jos de Bruijn <debruijn@inf.unibz.it>, Gary Hallmark <gary.hallmark@oracle.com>, RIF WG <public-rif-wg@w3.org>
> > Michael Kifer wrote: > >> Jos de Bruijn wrote: > >>> > >>>> Thanks for clear answers to a not-so-clear question. Let me expand > >>>> just a bit. In my PR system (OBR), the action that corresponds most > >>>> closely to a rule "head" or conclusion is the so-called "assert new" > >>>> action. This action creates a new java object (a frame instance of a > >>>> given class) , initializes its javabean properties (slots) with given > >>>> values, and asserts it to Jess. > >>>> > >>>> I want to translate some subset of my rules to BLD, namely rules > >>>> without negation, aggregation, or actions other than assert new. > >>>> > >>>> Here is a simple rule (fusing OBR and BLD syntax): > >>>> > >>>> IF and(?p#P ?p[x->?x]) THEN assert new Q[x->?x] > >>>> > >>>> Do I translate to this: > >>>> > >>>> forall ?x ?p (Q(?x) :- and(?p#P ?p[x->?x])) > >>>> > >>>> That seems a little wrong. OBR doesn't support relations, only > >>>> frames, but it lets one use frames instead of relations. But BLD > >>>> doesn't really let one dispense with relations and use only frames. > >>>> Is this also an issue for RDF + RIF? > >>> This is not an issue for RIF-RDF. If people want to use relations in > >>> their rules about RDF data they can do so. However, they need to keep > >>> in mind that there is no connection between frames and relations, other > >>> than the connections made in the rules. > >> True but several uses of RDF rules involve asserting RDF relations > >> involving bNodes which is essentially what Gary needs. > >> > >> A correct modelling of bNodes as existential vars goes beyond Horn of > >> course but existing rule language which support bNode introduction are > >> typically treating bNodes as skolem constants. We did talk at one point > >> about having some distinguished function symbol for building such skolem > >> approximations to bNodes. Wouldn't that would give Gary a standardized > >> "f" he could use? > > > > Gary needed a Skolem function, not Skolem constant. > > A Skolem function is just a function with a unique name, which is what I > > basically suggested. > > Of course. > > > A compiler might provide such a thing as a convenience > > (so that the user will not have to check for uniqueness by himself). > > Indeed. So rif:new (to use Gary's suggested name) would not itself be a > function symbol but a directive which would translate to a unique > function symbol for each rule (or a functional symbol with an additional > argument unique to the rule). Not a directive. This is precisely what a Skolem function is. --michael > Dave > -- > Hewlett-Packard Limited > Registered Office: Cain Road, Bracknell, Berks RG12 1HN > Registered No: 690597 England > >
Received on Sunday, 11 May 2008 16:16:01 UTC