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.
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,
XPath functions and rdf:PlainLiteral functions.
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
named arguments. RIF BLD corresponds to positive datalogs, that is, logic programs without functions or negations. RIF-BLD has a
model-theoretic semantics. The
frame syntax of RIF BLD is based on
F-logic, but RIF BLD doesn't have the
non-monotonic reasoning features of F-logic.
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 ) Prefix(ex ) (* 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==