Re: question about frames

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).

Dave
-- 
Hewlett-Packard Limited
Registered Office: Cain Road, Bracknell, Berks RG12 1HN
Registered No: 690597 England

Received on Sunday, 11 May 2008 11:14:34 UTC