- From: Gary Hallmark <gary.hallmark@oracle.com>
- Date: Mon, 09 Feb 2009 21:05:56 -0800
- To: RIF WG <public-rif-wg@w3.org>
I have 2 rulesets below that should be equivalent but are not, according to our semantics: Ruleset1: _o[_p->1] if _o[_p->1] or _o[_p->2] then Do( (?x _o[_p->?x]) Retract(_o[_p->?x]) Assert(_o[_p->?x+1])) Ruleset2: _o[_p->1] if _o[_p->?y] and (?y = 1 or ?y = 2) then Do( (?x _o[_p->?x]) Retract(_o[_p->?x]) Assert(_o[_p->?x+1])) The rule in Ruleset1 will fire only once because its rule instance has no variables. On the other hand, the rule in Ruleset2 will fire twice. It also strikes me that Do( (?x _o[_p->?x]) is hard to define if _p is multi-valued.
Received on Tuesday, 10 February 2009 05:06:54 UTC