# Rule Interchange Format

This article relies excessively on references to primary sources. (February 2014) |

The **Rule Interchange Format** (**RIF**) is a

^{[1]}

RIF includes three dialects, a Core dialect which is extended into a Basic Logic Dialect (BLD) and Production Rule Dialect (PRD).^{}[2]

## History

The RIF working group was chartered in late 2005. Among its goals was drawing in members of the commercial rules marketplace. The working group started with more than 50 members and two chairs drawn from industry, Christian de Sainte Marie of

^{[3]}

RIF became a

^{[4]}

## Rules and rule systems

A *rule* is perhaps one of the simplest notions in computer science: it is an IF - THEN construct. If some condition (the IF part) that is checkable in some dataset holds, then the conclusion (the THEN part) is processed. Deriving somewhat from its roots in logic, rule systems use a notion of predicates that hold or not of some data object or objects. For example, the fact that two people are married might be represented with predicates as:

MARRIED(LISA,JOHN)

*MARRIED* is a predicate that can be said to *hold* between *LISA* and *JOHN*. Adding the notion of variables, a rule could be something like:

IFMARRIED(?x, ?y)THENLOVES(?x, ?y)

We would expect that for every pair of ?x and ?y (e.g. *LISA* and *JOHN*) for which the *MARRIED* predicate holds, some computer system that could understand this rule would conclude that the *LOVES* predicate holds for that pair as well.

Rules are a simple way of encoding knowledge, and are a drastic simplification of

## Standard RIF dialects

The standard RIF dialects are Core, BLD and PRD. These dialects depend on an extensive list of datatypes with builtin functions and predicates on those datatypes.

Relations of various RIF dialects are shown in the following Venn diagram.^{}[5]

### DTB

Datatypes and Built-Ins (DTB) specifies a list of datatypes, built-in functions and built-in predicates expected to be supported by RIF dialects. Some of the datatypes are adapted from XML Schema Datatypes,^{[6]} XPath functions^{[7]} and rdf:PlainLiteral functions.^{[8]}

### Core

The Core dialect comprises a common subset of most rule dialect. RIF-Core is a subset of both RIF-BLD and RIF-PRD.

### FLD

Framework for Logic Dialects (FLD) describes mechanisms for specifying the syntax and semantics of logic RIF dialects, including the RIF-BLD and RIF-Core, but not RIF-PRD which is not a logic-based RIF dialect.

### BLD

The Basic Logic Dialect (BLD) adds features to the Core dialect that are not directly available such as: logic functions, equality in the then-part and

RIF-BLD has a

The

^{[9]}

### PRD

The Production Rules Dialect (PRD) can be used to model production rules. Features that are notably in PRD but not BLD include negation and retraction of facts (thus, PRD is not monotonic). PRD rules are order dependent, hence conflict resolution strategies are needed when multiple rules can be fired. The PRD specification defines one such resolution strategy based on forward chaining reasoning.

RIF-PRD has an operational semantics, whereas the condition formulas also have a model-theoretic semantics.

Example (Example 1.2 in ^{[10]})

```
Prefix(ex <http://example.com/2008/prd1#>)
(* ex:rule_1 *)
Forall ?customer ?purchasesYTD (
If And( ?customer#ex:Customer
?customer[ex:purchasesYTD->?purchasesYTD]
External(pred:numeric-greater-than(?purchasesYTD 5000)) )
Then Do( Modify(?customer[ex:status->"Gold"]) ) )
```

## Non-standard RIF dialects

Several other RIF dialects exist. None of them are officially endorsed by W3C and they are not part of the RIF specification.

### CASPD

The Core Answer Set Programming Dialect (CASPD)^{[11]} is based on answer set programming, that is, declarative logic programming based on the answer set semantics (stable model semantics).

Example:

Document( Prefix(ex <http://example.com/concepts#>) Group ( Forall ?S ( ex:afraid(?S ex:Math) :- And ( ?S#ex:Student (Naf Neg ex:afraid(?S ex:Math)) ) ) Forall ?S ( Neg ex:afraid(?S ex:Math) :- And ( ?S#ex:Student ?S[ex:majors -> ex:Math] ) ) )

### URD

The Uncertainty Rule Dialect (URD)^{[12]} supports a direct representation of uncertain knowledge.

Example:

Document( Import (<http://example.org/fuzzy/membershipfunction >) Group ( Forall ?x ?y( cheapFlight(?x ?y) :- affordableFlight(?x ?y) ) / 0.4 Forall ?x ?y(affordableFlight(?x ?y)) / left_shoulder0k4k1k3k(?y) ) )

### SILK

RIF-SILK^{[13]} can be used to model default logic. It is based on declarative logic programming with the well-founded semantics. RIF-SILK also includes a number of other features present in more sophisticated declarative logic programming languages such as SILK.^{[14]}

Example

Document { Prefix(foaf http://xmlns.com/foaf/0.1/) Prefix(pub http://example.org/pub#) Prefix(silk http://TBD/silk#) Group { (* r1 *) Forall ?a1 ?a2 ?paper (?a1[foaf:knows->?a2] :- ?paper # pub:Publication[pub:author->?a1, pub:author->?a2}]) (* r2 *) Forall ?a1 ?a2 (neg ?a1[foaf:knows->?a2] :- ?a1[hasNeverMet->?a2]) silk:overrides(r2, r1) } }

## See also

- Ontology alignment
- R2ML
- Production Rule Representation - comparable to the dialect of RIF called Production Rule Dialect, although targeting modeling not run-time interchange.

## References

**^**Kifer, Michael (2008). "Rule Interchange Format: The Framework". in: Web Reasoning and Rule Systems.*Lecture Notes in Computer Science***^**RIF Overview**^**Welty, Chris (2009). "Rule Interchange Format". Invited presentation to the NY Semantic Web Meetup.**^**RIF Core Dialect**^**RIF Use Cases and Requirements**^**XML Schema Datatypes**^**XPath-Functions**^**rdf:PlainLiteral: A Datatype for RDF Plain Literals- ISBN 978-1-61499-342-1.
**^**RIF-PRD specification**^**RIF Core Answer Set Programming Dialect**^**Zhao & Boley. Uncertainty Treatment in the Rule Interchange Format: From Encoding to Extension. In The 4th International Workshop on Uncertainty Reasoning for the Semantic Web (URSW), 2008.**^**RIF SILK dialect**^**The SILK Language, Benjamin Grosof, Michael Kifer, Mike Dean. Vulcan Inc., 2009.

## External links