- From: Christian de Sainte Marie <csma@ilog.fr>
- Date: Tue, 05 Aug 2008 17:17:06 +0200
- To: RIF WG <public-rif-wg@w3.org>
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 15:15:58 UTC