ISSUE-75: Should Core allow disjunction in rule bodies

Disjunction in Core

Should Core allow disjunction in rule bodies

Raised by:
Dave Reynolds
Opened on:
We are currently proposing that Core be a proper subset of the intersection of BLD and PRD; omitting features which are not commonly supported or which complicate the implementation or description unnecessarily.

At recent telecon discussions (e.g. 19Aug08) disjunction was listed as one of the features to omit on the grounds that it complicates implementation and that (at least in a BLD setting) a rule with disjunctions can be replaced with multiple rules via Lloyd-Topor.

However, in a production rule setting it is common to have rules which test whether a variable is bound to one of a number of alternative (typically ground) values and that disjunction is a natural way to represent this. In the absence of disjunction or some alternate-match notation or builtin then a rule of this sort can require very large numbers of transformed rules to implement without disjunction (Gary suggested conceivable instances where 10,000 rules would be required instead of one).

Options include:

(1) Do not include disjunction in Core. RIF Producers which support disjunction in the rule bodies would need to translate rules with disjunction to multiple rules. Possible cost that some rulesets could not be effectively exchanged via Core due to blow in the translated ruleset size.

(2) Do not include disjunction in Core but include some alternative restricted mechanism such as a "oneOf" builtin (c.f. SQL's "x IN(a,b,c)" syntax) to mitigate the troublesome cases. Possible cost is that such a limited mechanism may not be adequate to handle enough of the troublesome cases and complicates implementation of Producers.

(3) Include disjunction in Core. RIF Consumers whose languages do not support disjunction would have to perform an L-T transformation first, possibly resulting in blow up and adding to the complexity of implementing Consumers.

(4) Include disjunction in Core but apply some syntactic limitation to simplify its effective implementation via translation to special case tricks like oneOf.

Related Actions Items:
No related actions
Related emails:
  1. ISSUE-75 (Disjunction in Core): Should Core allow disjunction in rule bodies [Core] (from on 2008-08-27)

Related notes:

At the Oct 21 2008 telecon the WG resolved to close this issue and decided that Core should keep safe disjunction in rule bodies. Implementations can be direct or use a well-known preprocessing step. See

Christopher Welty, 4 Nov 2008, 18:48:50

Display change log ATOM feed

Chair, Staff Contact
Tracker: documentation, (configuration for this group), originally developed by Dean Jackson, is developed and maintained by the Systems Team <>.
$Id: 75.html,v 1.1 2013-02-08 09:09:37 vivien Exp $