- From: Paul Vincent <pvincent@tibco.com>
- Date: Mon, 18 Dec 2006 11:21:21 -0800
- To: "Sandro Hawke" <sandro@w3.org>
- Cc: <public-rif-wg@w3.org>
Sandro - PR rules are not explicitly referenced at runtime (ie they may be named for rule management, but not for execution). So they cannot "recurse" and I cannot build logical recursive definitions using PR. Recursive behaviour of the rule engine is often a "bug" in the rule definition (eg see http://docs.codehaus.org/display/DROOLS/FAQ#FAQ-InfiniteRecursion ). My question (rhetorical at this stage is): why would I want to do recursion? Some problems are best defined in terms of "rules" that reference themselves (c.f "clever programming techniques" as implied in http://blogs.msdn.com/ericlippert/archive/2004/07/21/189974.aspx ). Recursion may be common in logic systems, but in PR systems (mostly implementing business rules), it is so rare I am not aware of any commercially successful PR system that provides it. [On a side note I see that there is a mention of "recursive rules" in SBVR - eg in http://www.omg.org/news/whitepapers/Markus_Business_rules.pdf - but I'm not sure how this maps / is expected to map to an executable context, ie 1 rule or many ...] Note by the way that none (as far as I can see) of the example rules in the use cases in http://www.w3.org/2005/rules/wg/wiki/UCR include recursion. Note also our previous discussions on recursion - http://lists.w3.org/Archives/Public/public-rif-wg/2006Mar/0106.html PS: Not sure if the above answers your question, though. Paul Vincent TIBCO - ETG/Business Rules -----Original Message----- From: public-rif-wg-request@w3.org [mailto:public-rif-wg-request@w3.org] On Behalf Of Sandro Hawke Sent: 18 December 2006 18:28 To: public-rif-wg@w3.org Subject: "recursive rules" vs "recursive terms" Can the problem Gary labeled "recursion" be narrowed to only be talking about recursive generation of terms? Recursive references between predicates are not a problem in production rules -- it's just when they start building larger terms or new terms (ala gensym or math builtins) that the engine gets in a loop, right? (I'm sure there's a better way to characterize this kind of rule, but I can't remember a term for it. I'm just realizing that the label "recursive" cuts off much more of the space than is necessary.) -- Sandro
Received on Monday, 18 December 2006 19:21:41 UTC