Glossary of RuleML 0.91

David Hirtle, Tshering Dema, Doan Dai Duong, Le Thi Thu Thuy

Version history:

2005-11-09 - Version 0.9

2006-08-24 -

Version 0.91

Latest version: www.ruleml.org/glossary

Quick link: Specification

Contents

Introduction

This glossary describes every tag of RuleML as of version 0.91.

Glossary

<And>
A conjunctive expression, where <And>Atom</And> is equivalent to Atom.

Attributes: @closure

(See: connective module)

<arg>
A role used for the positional arguments of a logical atom (<Atom>), i.e. any of the following: <Ind>, <Data>, <Var>, <Skolem> or <Reify> (also <Expr> and <Plex> in non-Datalog sublanguages).

Attributes: @index (required)

(See: term module)

<Assert>
A KQML-like performative acting as a wrapper specifying that its content (optionally surrounded by a <formula> role) is asserted, making an 'implicit <Rulebase>' assumption. This allows the separation of declarative content from such procedural performatives.

Attributes: @mapDirection, @mapClosure, @mapMaterial

(See: performative module and FOL RuleML)

<Atom>
A logical atom, i.e. an expression formed from a predicate (or relation) applied to a collection of its (logical) arguments. The relation (<Rel>) is followed by a sequence of zero or more arguments (<arg>). Optional user-defined slots (<slot>) are also permitted before and/or after the arguments. Rest variables (<repo> and <resl>) are also permitted. For example, "John is the father of Mary":
<Atom>
  <Rel>father</Rel>
  <Ind>John</Ind>
  <slot><Ind>daughter</Ind><Ind>Mary</Ind></slot>
</Atom>

Attributes: @closure

(See: atom module and holog module)

<body>
The body of an implication rule (<Implies>) containing the premise(s), also known as the "antecedent" or "if" part of the rule. Also used as the "antecedent" part of an entailment (<Entails>).

(See: connective module)

@card
An attribute optionally specifying a <slot>'s cardinality.

(See: slot module)

@closure
An attribute indicating how the contained free variables are quantified. Allowed values are "universal" and "existential".

(See: connective module)

<Con>
A neutralized constant (for <Rel> and <Ind>) of a Hilog term (<Hterm>). It is optionally surrounded by an operator (<op>).

Attributes: @type, @uri

(See: holog module and the SWSL submission to the W3C)

<Data>
A fixed argument like RDF literals. It may be optionally associated with an XML Schema built-in datatype using the xsi:type attribute. For example:
<Data xsi:type="xs:dateTime">2002-10-10T17:00:00Z</Data>
is valid (according to the dateTime datatype), but the following is not:
<Data xsi:type="xs:dateTime">tomorrow</Data>
Note, however, that <Data>tomorrow</Data> is valid because no built-in datatype is given and that XML is also permissible, e.g.
 <Data>   
   <ex:object>
     <ex:id>115897</ex:id>
     <ex:owner>John Doe</ex:owner>
   </ex:object>
 </Data>

(See: term module)

<declare>
A role used for variables (<Var>) declared within a quantifier (<Forall> or <Exists>).

(See: quantifier module)

<degree>
An optional uncertainty value (between 0.0 and 1.0) that may be assigned to facts and rules.

(See: atom module) and Fuzzy RuleML

@direction
An attribute indicating the intended direction of an implication rule's (<Implies>) inferencing. It has a neutral default value of "bidirectional". Other allowed values are "forward" and "forward".

(See: connective module)

<Entails>
Used to <Assert>/<Query> that/whether the sequence of formulas in the first <Rulebase> entails the sequence of formulas in the second, e.g. the first acting as a knowledge base and the second acting as its integrity constraints. For example: ssn.ruleml

(See: connective module)

<Equal>
An equational formula consisting of two expressions, each of which contains an argument and may be optionally surrounded by a lhs (<lhs>) or a rhs (<rhs>) role. For example, "factorial(0)=1" may be equivalently represented in the following two ways:
<Equal>
  <Expr in="yes">
    <Fun>fac</Fun>
    <Data xsi:type="xs:int">0</Data>
  </Expr>
  <Data xsi:type="xs:int">1</Data>
</Equal>
<Equal>
  <lhs>
    <Expr in="yes">
      <Fun>fac</Fun>
      <Data xsi:type="xs:int">0</Data>
    </Expr>
  </lhs>
  <rhs>
    <Data xsi:type="xs:int">1</Data>
  </rhs>    
</Equal>

Attributes: @oriented

(See: equality module)

<Equivalent>
An equivalence expression, which is "syntactic sugar" for a pair of conjoined converse implication rules (<Implies>). It consists of a pair of (optionally skipped) <torso> roles. For example, "A person owning an object is equivalent to an object belonging to a person":
<Equivalent>
  <torso>
    <Atom>
      <Rel>own</Rel>
      <Var>person</Var>
      <Var>object</Var>
    </Atom>
  </torso>
  <torso>
    <Atom>
      <Rel>belongs</Rel>
      <Var>object</Var>
      <Var>person</Var>
    </Atom>
  </torso>
</Equivalent>

Attributes: @closure

(See: connective module)

<Exists>
Explicit existential quantifier. It consists of one or more variables (<Var>), each optionally surrounded by a <declare> role, followed by a logical formula (optionally surrounded by a <formula> role).

(See: quantifier module)

<Expr>
A logical function of the form "f(...)" where f is a function name. The function name (<Fun>) is followed by a sequence of zero or more arguments (<arg>). Optional user-defined slots (<slot>) are also permitted before and/or after the arguments, just like an atom (<Atom>). Rest variables (<repo> and <resl>) are also permitted. If the attribute @in has value "no", the <Expr> corresponds to a complex term (<Cterm>) in 0.9 and earlier:
<Expr in="no">
  <Fun>book</Fun>
  <Var>title</Var>
  <Var>author</Var>
  <Var>table of contents</Var>
  <Var>chapters</Var>
</Expr>
On the other hand, if the attribute @in has value "yes", the <Expr> corresponds to a nano (<Nano>) in 0.9 and earlier.

Attributes: @in, @type

(See: expr module and Functional Ruleml)

<Forall>
Explicit universal quantifier. It consists of one or more variables (<Var>), each optionally surrounded by a <declare> role, followed by a logical formula (optionally surrounded by a <formula> role).

(See: quantifier module)

<formula>
The formula role of a conjunctive (<And>) or disjunctive (<Or>) expression, quantifier (<Forall> or <Exists>), or performative (<Assert>, <Query> or <Retract>).

(See: connective module, performative module and quantifier module)

<Fun>
A user-defined function name of an <Expr>. It is optionally surrounded by an operator (<op>).

Attributes: @uri, @in (and @val in equality sublanguages)

(See: expr module)

<Get>
A slot access primitive.

(See: frame module, and the SWSL submission to the W3C)

<head>
The head of an implication rule (<Implies>) containing the conclusion, also known as the "consequent" or "then" part of the rule. Also used as the "consequent" part of an entailment (<Entails>).

(See: connective module)

<Hterm>
A Hilog term, generalizing <Atom> and <Expr>.

(See: holog module, and the SWSL submission to the W3C)

<Implies>
An implication rule. It consists of a conclusion role (<head>) followed by a premise role (<body>), or, equivalently (since roles constitute unordered elements), a premise role followed by a conclusion role. For example, "The discount for a customer buying a product is 5.0 percent if the customer is premium and the product is regular":
<Implies>
  <head>
    <Atom>
      <Rel>discount</Rel>
      <Var>customer</Var>
      <Var>product</Var>
      <Ind>5.0 percent</Ind>
    </Atom>
  </head>
  <body>
    <And>
      <Atom>
        <Rel>premium</Rel>
        <Var>customer</Var>
      </Atom>
      <Atom>
        <Rel>regular</Rel>
        <Var>product</Var>
      </Atom>
    </And>
  </body>
</Implies>
Alternatively, the roles may be skipped, in which case the premise comes first followed by the conclusion as suggested by the element name 'Implies' (since the body of a rule implies the head, not vice versa). Using the same example, the order changes:
<Implies>
  <And>
    <Atom>
      <Rel>premium</Rel>
      <Var>customer</Var>
    </Atom>
    <Atom>
      <Rel>regular</Rel>
      <Var>product</Var>
    </Atom>
  </And>
  <Atom>
    <Rel>discount</Rel>
    <Var>customer</Var>
    <Var>product</Var>
    <Ind>5.0 percent</Ind>
  </Atom>
</Implies>

Attributes: @closure, @direction, @material

(See: connective module)

@in
An attribute used to indicate whether a function (<Fun>) or an expr (<Expr>) will be interpreted. In equality sublanguages, it has three values "no" (the default), "yes" and "no", while in non-equality sublanguages it can only have the value "no".

(See: expr module and Functional RuleML)

<Ind>
An individual constant, as in predicate logic, which can also be considered to be a fixed argument like RDF resources.

Attributes: @type, @uri

(See: term module)

@index
A required role for specifying the position of a positional argument (<arg>) within a logical atom (<Atom>).

(See: term module)

<InstanceOf>
A class membership molecule.

(See: frame module, and the SWSL submission to the W3C)

<lhs>
The left-hand side of an equation (<Equal>).

(See: equality module)

@mapClosure
An attribute indicating how the free variables falling within its scope (i.e. child elements) are quantified. See attribute mapping for more details. Allowed values are "universal" and "existential".

(See: connective module)

@mapDirection
An attribute indicating the intended direction of implication rule (<Implies>) inferencing of elements falling within its scope (i.e. child elements). See attribute mapping for more details. This attribute has a neutral default value of "bidirectional". Other allowed values are "forward" and "backward".

(See: connective module)

@mapMaterial
An attribute indicating the kind of all implication rules (<Implies>) falling within its scope (i.e. child elements). See attribute mapping for more details. Allowed values are "yes" (the default) and "no".

(See: connective module and Functional RuleML)

@material
An attribute indicating the kind of an implication rule (<Implies>). Allowed values are "yes" (the default) and "no".

(See: connective module)

@maxCard
An attribute optionally specifying a <slot>'s maximum cardinality.

(See: slot module)

@minCard
An attribute optionally specifying a <slot>'s minimum cardinality.

(See: slot module)

<Naf>
A "by default" negation of a logical atom (<Atom>) (i.e. "weak" negation or negation as failure). The negated atom may be optionally surrounded by a <weak> role.

(See: naf module)

<Neg>
A classical negation of a logical atom (<Atom>) (i.e. classical or "strong" negation). The negated atom may be optionally surrounded by a <strong> role.

(See: neg module)

<oid>
An optional label for a clause, creating accessibility within the knowledge representation. This can help for representing prioritization between rules, for example. All type tags (i.e. those that begin with an uppercase letter) of RuleML can begin with such a label except those that permit only character data (e.g. <Ind>, <Rel>, etc.). Note that oids are not required to be unique within a rulebase.

(See: desc module)

<op>
An operator expression including either a relation (<Rel>) of an atom (<Atom>), a function name (<Fun>) of a (<Expr>), or a neutralized constant (<Con>) of a Hilog term (<Hterm>).

(See: atom module, expr module and holog module)

<Or>
A disjunctive expression, where <Or>Atom</Or> is equivalent to Atom.

Attributes: @closure

(See: connective module)

@oriented
An attribute indicating whether an equation (<Equal>) is oriented (directed) or unoriented (symmetric). For example, the (oriented) defining equation home(father-of(John)) = Mexico City appears as follows:
<Equal oriented="yes">
  <lhs>
    <Expr>
      <Fun in="yes">home</Fun>
      <Expr>
        <Fun in="no">father-of</Fun>
        <Ind>John</Ind>
      </Expr>
    </Expr>
  </lhs>
  <rhs>
    <Ind>Mexico City</Ind>
  </rhs>
</Equal>

(See: equality module and Functional RuleML)

<Plex>
A collection of (ordered) arguments (optionally enclosed by <arg>) and/or (unordered) user-defined slots (<slot>), identical to an uninterpreted expression (<Expr in="no">) except not having a user-specified function name (equivalent to having a system-specified constructor 'Plex'). Rest variables (<repo> and <resl>) are also permitted. For example:
<Plex>
  <Var>title</Var>
  <Var>author</Var>
  <Var>table of contents</Var>
  <Var>chapters</Var>
</Plex>

(See: expr module)

<Query>
A KQML-like performative acting as a wrapper specifying that its content (optionally surrounded by a <formula> role) is queried, making an 'implicit <Rulebase>' assumption. This allows the separation of declarative content from such procedural performatives.

Attributes: @closure

(See: performative module and FOL RuleML)

<Reify>
Supports reification (a kind of instantiation or quasi-quotation) as needed by SWSL. It allows any RuleML tag available within the current sublanguage as content, treating it as a term for performing reasoning on, e.g.
<Reify><Ind>John Doe</Ind></Reify>

(See: term module)

<Rel>
A relation, i.e. a logical predicate, of an atom (<Atom>). It is optionally surrounded by an operator (<op>).

Attributes: @uri

(See: atom module)

<repo>
A positional rest variable used in <Atom>s, <Expr>s and <Plex>s. Note that <Plex>s are generated, so <repo>s are only available above the Datalog sublanguage.

(See: rest module)

<resl>
A slotted rest variable used in <Atom>s, <Expr>s and <Plex>s. Note that <Plex>s are generated, so <resl>s are only available above the Datalog sublanguage.

(See: rest module)

<Retract>
A performative similar to KQML's 'untell' that acts as a wrapper specifying that its content (optionally surrounded by a <formula> role) is to be deleted, making an 'implicit <Rulebase>' assumption. This allows the separation of declarative content from such procedural performatives. For example, if John no longer likes Mary (after an argument, perhaps) then this fact could be retracted:
 <Retract>
   <Atom>
     <Rel>likes</Rel>
     <Ind>John</Ind>
     <Ind>Mary</Ind>
   </Atom>
 </Retract>

Attributes: @mapDirection, @mapClosure, @mapMaterial

(See: performative module and FOL RuleML)

<rhs>
The right-hand side of an equation (<Equal>).

(See: equality module)

<Rulebase>
A collection of rules that can be ordered or unordered, without or with duplicates. For example: ssn.ruleml

Attributes: @mapClosure, @mapDirection and @mapMaterial

(See: connective module)

<RuleML>
The n-ary top-level of a RuleML document. It permits (ordered) transactions of performatives (<Assert>, <Query> or <Retract>), making an 'implicitly sequential' assumption.

(See: performative module)

<Set>
A set-valued result as in t[m -> {v1,...,vk}].

(See: frame module, and the SWSL submission to the W3C)

<Signature>
A signature molecule of the form t[m => v]

(See: frame module, and the SWSL submission to the W3C)

<Skolem>
A Skolem individual constant, like RDF's blank nodes.

Attributes: @type

(See: term module, and the Integrating Positional and Slotted Knowledge on the Semantic Web slides)

<slot>
A user-defined slot consisting of a name (first position) and a filler (second position). For example:
<slot>
  <Ind>color</Ind>
  <Ind>blue</Ind>
</slot>

Attributes: @weight, @card (and @minCard/@maxCard in SWSL sublanguages)

(See: slot module)

<SlotProd>
A polyadic path expressions element.

(See: frame module, and the SWSL submission to the W3C)

<strong>
A role used for classical negation (<Neg>).

(See: neg module)

<SubclassOf>
A subclass molecule.

(See: frame module, and the SWSL submission to the W3C)

<torso>
A symmetric role used in an equivalence expression (<Equivalent>) combining the asymmetric <head> and <body>.

(See: connective module)

@type
A role for optionally specify a term's (user-defined) type.

(See: term module)

@uri
An optional attribute of <Ind>, <Rel>, and <Fun> for referring to a URI like for XHTML anchors. On <Ind>s (or <Con>s, in frame sublanguages) within an <oid>, this attribute can also act as a web label.

(See: uri module)

@val
This attribute is used to indicate whether a function (<Fun>) is deterministic or non-deterministic. It has two values: "1" (deterministic: exactly one) and "0.." (set-valued: zero or more). For example, the function children(John, Mary) can be interpreted in a set-valued manner using a definition children(John, Mary) = {Jory, Mahn}, so that the application children(John, Mary) returns {Jory, Mahn}:
<Expr>
  <Fun in="yes" val="0..">children</Fun>
  <Ind>John</Ind>
  <Ind>Mary</Ind>
</Expr>

(See: equality module and Functional RuleML)

<Var>
A logical variable, as in logic programming.

Attributes: @type

(See: term module)

<weak>
A role used for negation as failure (<Naf>).

(See: naf module)

@weight
An attribute optionally specifying a <slot>'s relative weight.

(See: slot module)


Site Contact: Harold Boley. Page Version: 2006-08-24


"Practice what you preach": XML source of this homepage at index.xml (index.xml.txt);
transformed to HTML via the adaptation of Michael Sintek's SliML XSLT stylesheet at homepage.xsl (View | Page Source)