Design principles aim at guiding the development of the rule interchange format (RIF). Note that design principles are not requirements for RIF. Though most of the design principles listed below have been explicitly stated as requirements in RIF use cases submitted by the group members, we think that their role consists just in leading the development of the RIF to an easy to use and useful interchange format.
The following design principles have been recognized:
- An human legible syntax
- A syntax for exchange (e.g. XML or RDF)
- An abstract syntax
- Abstractions for reusability and maintainability
- Support for modules and other structuring/abstraction mechanisms (e.g. capability to bundle actions that are complex or used frequently into procedures -- in case of reactive or ECA rules)
- Language coherency
- Coherency refers to a couple of sub-principles to be followed so as to obtain a uniform and easy to use RIF. Rules are made of components such as the body and head of deductive rules and the event part, condition part and action part of ECA rules; to gain coherency, these rule components should follow same paradigms. Moreover, some components (such as the body of deductive rules and the condition part of ECA rules) have same design goals and thus they shouldn't be specified by using different RIF component languages.
There are also a couple of open issues to be considered for introduction into the design principles' list:
- Negation. Should RIF offer support for negation? Which kind of negation is to be considered?
Use Case Support
Use cases supporting RIF's design principles:
abstractions for reusability and maintainability: Scoped negation, Encapsulation
negation: Message Transformation, RIF RuleML FOAF, Internet search: combining query language, rule languages and scoped negation, Labeling Brain Anatomical Structures in Digital Images, Scoped negation, Encapsulation, Situation Assessment and Adaptation, Refund Policies in E-Commerce, Credit Card Transaction Authorization, Supply Chain Ordering Lead Time, Price Discounting