- From: Gary Hallmark <gary.hallmark@oracle.com>
- Date: Tue, 05 Aug 2008 11:11:55 -0700
- To: Christian de Sainte Marie <csma@ilog.fr>
- CC: RIF WG <public-rif-wg@w3.org>
sorry, I have no idea what you mean when you put exists inside the actions, and reference the quantified variable ?s outside, in the following action. Christian de Sainte Marie wrote: > > Mark Proctor wrote: >>> With JRules, you bind only objects, so, the example does not really >>> work. >> http://www.ilog.com/products/jrules/documentation/jrules67/rslangref/rs_lng_irlref79.html >> >> >> ?c:Customer(?p:phoneNo); >> >> Isn't phoneNo a primitive. > > Yes, it is, but I understand that this kind of binding is dealt with > somewhat differently that the binding of an object (e.g. ?c in your > example), in JRules: it is dealt with as if it was bound inside an > Exists and thus, not taken into account by refaction. > > It is irrelevant to the discussion whether ILOG allows binding to > primitive datatypes or not, but it might be relevant wrt the > definition of refraction that different variables have different roles > (and must be dealt with differently by refraction). E.g., in Gary's > initial example: > > Forall ?e, ?s^^int, > if ?e[salary->?s] and ?s<10K then ?e[salary->(?s*1.1)] > > if we have John[salary->1000] in the WM, the rule will fire repeatedly > until John's salary is more than 10K, under the semantics of no-repeat > as it was described in a previous editor's draft of PRD (and that we > decided to remove for FPWD), because it (that semantics) considered > the bindings of ?e and ?s as having the same role, not recognizing the > fact that the rule could be equivalently rewritten: > > Forall ?e > If (exists ?s^^int (?e[salary->?s] and ?s<10K)) > then DO{(exists ?s^^int (?e[salary->?s]), Assert?e[salary->(?s*1.1)]} > (it does not work in PRD because we do not have yet a way to express > that, but I hope that you understand what I mean). > > Cheers, > > Christian > >
Received on Tuesday, 5 August 2008 18:13:37 UTC