W3C home > Mailing lists > Public > public-rif-wg@w3.org > August 2008

Re: production rule object creation actions and frame axioms

From: Michael Kifer <kifer@cs.sunysb.edu>
Date: Tue, 12 Aug 2008 18:12:49 -0400
To: Gary Hallmark <gary.hallmark@oracle.com>
Cc: RIF WG <public-rif-wg@w3.org>
Message-ID: <20080812181249.1871d386@kiferserv>

Thanks for the helpful analysis. Some comments within.

On Tue, 12 Aug 2008 12:26:29 -0700
Gary Hallmark <gary.hallmark@oracle.com> wrote:

> One could use existential quantification in the conclusion to express 
> object creation:
> exists ?e And(?e#Employee ?e[empNo->?ssn salary->50000]) :- 
> And(?p#Person ?p[ssn->?ssn college->"MIT"])
> Because we would like to share the same solution with BLD, we skolemize 
> (using "f") the above to
> And(?e#Employee ?e[empNo->?ssn salary->50000]) :- And(?p#Person 
> ?p[ssn->?ssn college->"MIT"] ?e=f(?p ?ssn))
> We can limit PRD's use of logical functions to skolem functions.

BLD does not have skolem functions. I remember we discussed this, but in the
end you said that you do not need them, so I did not add them to avoid delaying
the last call (and possibly facing objections from others, which would have
delayed even further). Now that we are in the last call, I do not know whether
adding such a substantial thing as a skolem can be done.

Furthermore, even with Skolem functions you can create non-terminating
bottom-up derivations. For instance,

    forall ?X exists ?Y parent(?X,?Y) :- person(?X).

At today's telecon I heard that decidability for the core is a must, and Jos
even said he does not see any use for function symbols.

I could not add my 0.02c because I lost the Inet connection and could not
unmute my phone :-(

> To support removing an object, we need to be able to retract its 
> classification as well as remove its slots:
> Forall ?e ?sn ?sv (Do(Retract(?e#Employeee) Retract(?e[?sn->?sv]) ) :- 
> ?e#Employee
> Because the semantics of frames differs from the more typical Javabeans, 
> as mentioned above, we need to account for this difference.  E.g. 
> consider the following rule set:
> Joe#Employee
> Joe[salary->40000]
> ?e[salary->?salary * 1.1] :- And(?e#Employee ?e[salary->?salary] ?salary 
> < 48000)
> With frame semantics, a model is Joe[salary->40000 salary->44000 
> salary->48400].  With Javabean/PRD semantics, we must have a final 
> configuration with only Joe[salary->48400] (or maybe Joe[salary->44000] ??)

It is not that the semantics of frames is different. Here we have logical
rules, and this is their semantics. Using this first-order semantics you cannot
retract old knowledge. This is outside not only of the core, but also BLD.

Received on Tuesday, 12 August 2008 22:13:38 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:47:52 UTC