Glossary of RuleML 0.9

David Hirtle

Version history:

2005-11-09 -

Version 0.9

Latest version: www.ruleml.org/glossary

Quick link: Specification

Contents

Introduction

This glossary describes every tag of RuleML as of version 0.9. It will also be updated with more general terms in the future.

Glossary

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

Attributes: @mapDirection, @mapClosure

(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>.

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 <And>' assumption. This allows the separation of declarative content from such procedural performatives. <Assert> corresponds to a <Rulebase> in RuleML 0.87 (and earlier).

Attributes: @mapDirection, @mapClosure

(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.

(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>, <Ctor> 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)

<Cterm>
A complex term, i.e. a logical term of the form "c(...)" where c is a constructor. The constructor (<Ctor>) 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. For example:
<Cterm>
  <Ctor>book</Ctor>
  <Var>title</Var>
  <Var>author</Var>
  <Var>table of contents</Var>
  <Var>chapters</Var>
</Cterm>

Attributes: @type

(See: cterm module)

<Ctor>
A constructor, i.e. a logical function, of a complex term (<Cterm>). It is optionally surrounded by an operator (<op>).

Attributes: @uri

(See: cterm module)

<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.

(See: term module)

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

(See: quantifier module)

<degree>
An optional truth value (between 0 and 1) 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)

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

(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)

<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 <Protect>).

(See: connective module and quantifier module)

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

Attributes: @uri

(See: equality 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.

(See: connective module)

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

(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, @kind

(See: connective module)

<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)

<Integrity>
An integrity constraint. For example, "An object cannot be both gold and rusty":
<Integrity>
  <Neg>
    <And>
      <Atom>
        <Rel>gold</Rel>
        <Var>object</Var>
      </Atom>
      <Atom>
        <Rel>rusty</Rel>
        <Var>object</Var>
      </Atom>       
    </And>
  </Neg>
</Integrity>

Attributes: @closure, @direction

(See: connective module)

@kind
An attribute indicating the kind of an implication rule (<Implies>). Allowed values are "fo", which stands for First-Order (classical) implication (the default), and "lp", which stands for Logic Programming implication.

(See: connective module)

@mapClosure
An attribute indicating how the free variables falling within its scope (i.e. all 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. all 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)

@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)

<Nano>
A logical function usable within equational formulas (<Equal>) of the form "f(...)" where f is a function name. The function name (<Fun>) is followed by a sequence of zero or more flat (i.e. non-<Nano>) arguments (<arg>), much like complex terms.

(See: equality 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>, <Ctor>, etc.).

(See: desc module)

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

(See: atom module, cterm module, equality module, and holog module)

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

Attributes: @closure

(See: connective module)

<Plex>
A collection of (ordered) arguments (optionally enclosed by <arg>) and/or (unordered) user-defined slots (<slot>), identical to a complex term (<Cterm>) except not having a user-specified constructor (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: cterm module)

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

Attributes: @mapDirection, @mapClosure

(See: performative module and FOL RuleML)

<Query>
A KQML-like performative acting as a wrapper specifying that its content (optionally surrounded by a <formula> role) is queried, making an 'implicit <And>' 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.

(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, <Cterm>s and <Plex>s.

(See: rest module)

<resl>
A slotted rest variable used in <Atom>s, <Cterm>s and <Plex>s.

(See: rest module)

<RuleML>
The n-ary top-level of a RuleML document. It permits (ordered) transactions of performatives (<Assert>, <Query> or <Protect>), 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)

<side>
One of two expressions that together make an equational formula (<Equal>). This role may contain anything a regular argument (<arg>) can or a <Nano>.

(See: equational module)

<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, @minCard or @maxCard (depending on context)

(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 attribute for referring to a URI.

(See: uri module)

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

Attributes: @type

(See: term module)

<warden>
A role used for an integrity constraint (<Integrity>).

(See: performative 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-05-02


"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)