W3C home > Mailing lists > Public > public-rif-wg@w3.org > November 2009

RE: [PRD] Refraction Semantics may be WRONG!

From: Paul Vincent <pvincent@tibco.com>
Date: Tue, 17 Nov 2009 16:39:32 -0800
Message-ID: <A92210407BA7004199621BE5F0AC5D8B01C0282F@NA-PA-VBE04.na.tibco.com>
To: "Gary Hallmark" <gary.hallmark@oracle.com>
Cc: "RIF WG" <public-rif-wg@w3.org>, "neal Wyse" <neal.wyse@oracle.com>
Hi Gary: I'm probably misunderstanding, but....
testing for the existence of a property of an object/class does not make
much sense in a static OO type system. 
- either x has a property count - the rule compiles
- or x has no property count - any reference to x.count will be a
compilation error.
e.g. x exists implies x.count exists

So adding "not(not(x.count>0))" has (/and tested to show) no effect on
the result...

/* Note: I can maybe "cheat" here by exploiting an assumption that
"exists" implies "already updated" in an OO system:
"If no-chaining-required then only update the count (or indeed any other
action) if it hasn't been updated already".

I can achieve this by adding either a condition on the history of
x.count (ie condition: x.count.historySize = 0 and x.count > 0)
Or by adding a condition to the action in the rule: (ie action: if
x.count.historySize = 0 then x.count -= 1)

I would not want a RIF interpreter to make assumptions over the implied
behaviour though - I'd expect the requirement to chain or not to be
explicit in the rule specification (/grammar). :)
*/

Paul Vincent 
+1 650 206 2493 / mobile +44 781 493 7229 


> -----Original Message-----
> From: Gary Hallmark [mailto:gary.hallmark@oracle.com]
> Sent: 17 November 2009 20:30
> To: Paul Vincent
> Cc: RIF WG; neal Wyse
> Subject: Re: [PRD] Refraction Semantics may be WRONG!
> 
> Thanks, Paul. But this looks more like the modify_loop test. Can you
> specify a condition
> 
> exists(x.count > 0);
> 
> or perhaps,
> 
> not(not(x.count>0));
> 
> Do these rules also loop?
> 
> Paul Vincent wrote:
> >
> > TIBCO BusinessEvents rule engine also loops in this case - the
action
> > is updating a property in the rule condition so the rule is placed
> > back on the agenda. In some other rule engines, the condition state
> > change (versus referenced rule variable state change) is what
> > determines whether a rule is placed back on the agenda.
> >
> > [Assuming I interpreted/mapped the PRD rule specification
correctly...
> > I'm not sure whether ?C is just an intermediate term required by
> RIF's
> > expression language, or whether this is part of the test (have a
rule
> > variable or term that is not a rule variable). Either way, I can't
> see
> > how adding another rule or simple variable will halt the rule
looping
> > without some external influencer. ]
> >
> > Cheers
> >
> > Paul Vincent
> >
> > TIBCO
> >
> > > -----Original Message-----
> >
> > > From: public-rif-wg-request@w3.org [mailto:public-rif-wg-
> request@w3.org]
> >
> > > On Behalf Of Gary Hallmark
> >
> > > Sent: 17 November 2009 00:36
> >
> > > To: RIF WG
> >
> > > Cc: neal Wyse
> >
> > > Subject: [PRD] Refraction Semantics may be WRONG!
> >
> > >
> >
> > > I've discovered that refraction in OBR and Jess do not conform to
> the
> >
> > > PRD spec. In particular, the
> >
> > > http://www.w3.org/2005/rules/wiki/Modify_noloop test case will
> always
> >
> > > loop. The issue is that the PRD spec includes only the Forall
> variables
> >
> > > in the rule instance, but my system(s) also includes the Exists
> >
> > > variables in the rule instance.
> >
> > >
> >
> > > What do the other PR systems do? Can you please try the
> Modify_noloop
> >
> > > test?
> >
> > >
> >
Received on Wednesday, 18 November 2009 00:40:19 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Wednesday, 18 November 2009 00:40:24 GMT