RIF-Core
A RIF-Core strawman
The syntax of the condition language for RIF-Core is the syntax of the condition language for RIF-PRD, minus the Naf and the Aggregation constructs.
The syntax of RULEs and RuleSets for RIF-Core is the syntax of RULEs and RuleSets for RIF-BLD.
The Semantics of RIF-Core is the semantics of RIF-BLD, with the restriction to the syntax of the condition language applied, except for the semantics of the Equal construct that has to be appropriately restricted to match that of RIF-PRD.
*** Alternatively, the Equal construct in RIF-PRD is renamed, RIF-Core has that same new construct with the appropriate semantics, and the fallback from BLD's Equal to that new construct is specified. ***
Compatibility between RIF-PRD and RIF-Core
RIF-PRD is an extension of the RIF-Core defined in the previous section:
Any RIF-PRD RuleSet that contains no Naf nor Aggregation elements and where the then-part of no ConditionalStatement contains anything but one single Assert ACTION can be converted to RIF-Core by:
replacing the CONDITION content of the ConditionalStatement contained in each rule element by an And that contains the said CONDITION as well as the CONDITION content of any pattern that might be associated to a Forall contained into the same rule element;
and removing the Assert and target wrappers around the asserted ATOMICs in the then part if the ConditionalStatement contained in each of the rule elements in the RuleSet
- Based on [ Vianu's paper on rule-based languages], it should be easy that the result set of RIF-Core rules has the same semantics as the original set of RIF-PRD rules;
Any RIF-Core RuleSet can be converted into a semantically equivalent RIF-PRD RuleSet by wrapping the ATOMIC content of the then-part of each rule in an Assert and a target element.