This is an archive of an inactive wiki and cannot be modified.

The RIF Rulesystems Arrangement Framework (RIFRAF) is meant to define a description space for existing (or potential) rule languages (rule systems). Each criterion defines an axis with two or more values that can be used to discriminate between, or at least characterize, rule languages.

The idea is not that every criterion used in the RIFRAF should be reflected in a coverage requirement: on the contrary, the RIFRAF will be used to identify and to prioritize features and to abstract classes of rule languages/systems that need to be covered by RIF.

The Working Group is currently working to populate the RIFRAF description space with the specific rule languages/systems that need be covered by RIF.

The starting point for the RIFRAF was a set of criteria deemed especially relevant for Phase 1 of RIF. It has and will continue to evolve as it is populated: the description of additional rule languages/systems may require the addition of new criteria (descriptors/discriminators). Phasing is not a limitation, since the anaysis of the populated RIFRAF will also be used to prioritize requirements with respect to phases.

The set of criteria described below is the current state of the RIFRAF. It is included to provide the reader with a snapshot of the work in progress at the time this working draft is released and with a concrete idea of the meaning of the coverage requirement. It should not be construed as a list of requirements for RIF coverage, nor as a representation of how the Working Group views the space of rule languages and systems at this time.


Expressive Discriminators (or Dimensions) are collected here into four groups:

Values of Semantic and Pragmatic Discriminators, stated by Rulebase authors or found by Static Analysis, can of course still be marked up syntactically, e.g. via Semantic/Pragmatic (XML) Attributes on Rulebases, Rules, ..., via (RDF) metadata annotations, etc. In each group, Discriminators, and possibly subgroups of Discriminators, are listed (cf. rdf:subPropertyOf). The numberings of the Discriminators do not reflect priority orderings but are there for ease of reference such as "Syn 1.2" for the Range-restrictedness Discriminator (however, new subgroups may emerge from subsequences of neighboring Discriminators).

For most Discriminators there exists a lot of literature, under various names. For example, Discriminator SeS 1 on "Homogeneous vs. Hybrid Rules" is discussed, under this name, in Combining Rules and Ontologies. A survey. That paper provides various Subdiscriminators useful for OWL Compatibility. The Hybrid approach is further described in A Realistic Architecture for the Semantic Web.

The RIF-crucial Interoperability Discriminators are regarded here as Pragmatic Discriminators, and grouped under Prag 3.

Syn: Syntactic Discriminators

  1. Restricted vs. Unrestricted Use of Logic Variables
    1. Single-occurrence variables (no implicit variable equality) vs. Multiple-occurrence variables (implicit variable equality; if an equality predicate is available, this can be made explicit via tests in the body; e.g., using an 'equal' predicate, the multiple-occurrence p(?x,?y,?x) :- q(?y) can be transformed into the single-occurrence p(?x1,?y,?x2) :- equal(?x1,?x2), q(?y))
    2. Range-restricted Rules (No Head-Only Variables) vs. non-Range-restricted Rules
    3. (Further Restrictions from Static Analysis Research)
  2. Predicate Variables Permitted vs. Not Permitted
  3. Monotonic Lloyd-Topor Extensions Allowed vs. not Allowed
  4. Explicit vs. Implicit Rule Scope
  5. Slotted (Keyed, Role-Named) vs. Positional Arguments
    • Allowing n-ary atoms with a set of n 'attribute=value' pairs as in RDF/OWL properties, F-logic methods, and object-oriented systems

  6. Webized vs. non-Webized Names

SeS: Syntactic-entailing-Semantic Discriminators

  1. Homogeneous (Body has Single Expressiveness Class) vs. Hybrid (Body has Two Expressiveness Classes) Rules
  2. Fact-only (Database Tables) vs. Rule-only vs. Fact-and-Rule Bases
    1. Variable-ful (Non-Ground) vs. Variable-free (Ground) Facts (also under "Variable-ful vs. ... Clauses")
  3. Function-ful (FO Horn Logic) vs. Function-free (FO Datalog)
    1. Function Arity/Arities
    2. Fixed vs. Unfixed Function Nesting Depth
    3. Uninterpreted vs. Interpreted Functions
  4. Variable-ful (Non-Ground) vs. Variable-free (Ground) Clauses
    1. Variable-ful (Non-Ground) vs. Variable-free (Ground) Facts (also under "Fact-only ... Bases")
  5. Predicate Arity/Arities
  6. Number of Premises in Rules
  7. Labeled (Anchored, OIDed) vs. Unlabeled Clauses
    1. Labels Allowed vs. not Allowed as Arguments of User Predicates and/or System Predicates (such as in SCLP's priority-giving 'overrides' predicate, cf. SeS 9)
  8. Certain vs. Uncertain Clauses and Atoms
  9. Priority
    1. Static vs. Dynamic: Static priority does not change. It could be specified using a numeric constant, a list of rule (labels) with lesser (or greater) priority, or the position of rules within a ruleset document could be significant. Dynamic priority can change during rule execution.
    2. Rule ordering vs. rule selection: All applicable rules are tried in priority order, or only the highest priority rule is tried.

Sem: Semantic Discriminators

  1. Turing-complete vs. not Turing-complete
  2. Decidable vs. semi-decidable vs. undecidable
  3. Finite-Model vs. Infinite-Model Rulebases (cf. decidability)
  4. Modality allowed or not (beyond FOL)

Prag: Pragmatic Discriminators

  1. Inference control
    1. No chaining (only 'one-shot' rules) vs. forward chaining vs. backward chaining vs. bidirectional chaining
    2. Incremental (one solution at a time) vs. exhaustive (all solutions at once)
  2. Computational complexity (the complexity class of the inference procedures; generally this is the worst-case complexity, however most algorithms can be optimized for certain cases; rule systems can be classified by their complexity classes)
  3. Interoperability Annotations
    1. Controlled English
    2. Mappings
      1. Within Expressive Equivalence Classes ("clusters")
      2. Between Expressive Equivalence Classes (imperfect or "lossy")
    3. (Further Interoperability Discriminators should go here)