- From: Michael Kifer <kifer@cs.sunysb.edu>
- Date: Fri, 09 May 2008 10:48:44 -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>
> > 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. A compiler might provide such a thing as a convenience (so that the user will not have to check for uniqueness by himself). For a while I thought that it would be nice to add this as a language construct, but then I became doubtful whether this is needed in an exchange language, where code is generated by external compilers from external languages. --michael > Dave > -- > Hewlett-Packard Limited > Registered Office: Cain Road, Bracknell, Berks RG12 1HN > Registered No: 690597 England > >
Received on Friday, 9 May 2008 14:50:08 UTC