Schema Specification of RuleML 0.88

David Hirtle, Harold Boley, Benjamin Grosof, Michael Kifer,
Michael Sintek, Said Tabet, Gerd Wagner

Version History, 2001-01-25: Version 0.7
Version History, 2001-07-11: Version 0.8
Version History, 2003-12-09: Version 0.85
Version History, 2004-06-23: Version 0.86
Version History, 2004-08-12: Version 0.87

Revised Version, 2005-03-01: Version 0.88

Latest version: www.ruleml.org/spec

Quick links:

Content Models, Schemas (Archived DTDs), Normalizer, Upgrader, Examples


This is a revised XML Schema specification for RuleML, version 0.88. Building upon the validation stable RuleML 0.87, this release incorporates significant syntactical changes motivated by First-Order Logic RuleML.

Each XML Schema Definition (XSD) in the evolving hierarchy corresponds to a specific RuleML sublanguage. The implementation uses a modularization approach similar to the one in XHTML in order to offer appropriate flexibility and accomodate different implementations and approaches. Note that the Document Type Definition (DTD) specification of RuleML is no longer being maintained, but will continue to be available as an archive. Tools capable of converting between XML Schema and DTDs such as XMLSpy are always available.)

Contents

Overview

The upper layer of the RuleML hierarchy of rules is discussed in our main page's design section. In that terminology, the system of RuleML XSDs presented here only covers derivation rules, not reaction rules.

This is because we think it is important to start with a subset of simple rules, test and refine our principal strategy using these, and then work 'up' to the more general categories of rules in the hierarchy. For this we choose Datalog, a language corresponding to relational databases (ground facts without complex domains or 'constructors') augmented by views (possibly recursive rules), and work a few steps upwards to further declarative rules as allowed in (equational) Horn logic. We also introduce a URL/URI module corresponding to webizing. The 'UR'-Datalog join of both of these classes then permits inferences over RDF-like 'resources' and can be re-specialized to RDF triples.

Version 0.88 incorporates the following changes motivated by First-Order Logic RuleML:

The following syntactical changes have also taken place in 0.88:

For more information, see the Changes section. The grammar of RuleML 0.88 (i.e. the content model of each individual tag) is now available as a single document called Content Models for RuleML in addition to being encoded within the XML Schemas. Issues relevant to RuleML 0.88 were already discussed in the Issues List of FOL RuleML, in particular issues 1. and 9.

For updated information, see the Revisions section.

Changes

The following changes (from 0.87) affect the syntactic XML structure of RuleML documents in a 1-to-1 manner.

Top level 'Rulebase' is replaced with KQML-like performatives 'Assert' or 'Query', wrapping an 'And', which specify that this conjunction is asserted or queried, respectively. This allows the separation of declarative content from such procedural performatives. For example,

<Rulebase>
  ...
</Rulebase>

becomes

<Assert>
  <And>
    ...  
  </And>
</Assert>

A 'Query' child,

<Rulebase>
  ...
  <Query>
    ...
  </Query>
  ...
</Rulebase>

now becomes top-level:

<Query>
  ...
</Query>

'Fact' tags above Atoms are no longer used. Thus,

<Fact>
  <Atom>
    <Rel>keep</Rel>
    <Ind>Mary</Ind>
    <Var>object</Var>
  </Atom>
</Fact>

is now simply

<Atom>
  <Rel>keep</Rel>
  <Ind>Mary</Ind>
  <Var>object</Var>
</Atom>

There are now attributes 'innerclose' (for 'And') and 'closure' (for 'Atom and 'Implies'). So, for example,

<And innerclose="universal">
  <Atom>...</Atom>
    :
  <Atom>...</Atom>
</And>

is equivalent to

<And>
  <Atom closure="universal">...</Atom>
    :  
  <Atom closure="universal">...</Atom>
</And>

Explicit quantifier 'Forall' is now optionally provided for FOL purposes (as requested) along with 'declare' and 'formula' roles. For example, assuming X is the only variable occuring free in the Atom,

<Forall>
  <declare><Var>X</Var></declare>
  <formula>
    <Atom>...</Atom>
  </formula>
</Forall>

'Forall' can be role-skipped into,

<Forall>
  <Var>X</Var>
  <Atom>...</Atom>
</Forall>

which can be further shortened to:

<Atom closure="universal">...</Atom>

The type tag 'Slot' has been changed into a role tag 'slot' (note the lowercase initial letter as per case-distinguished Type/role convention of 0.87). The outer 'role' tag is discarded, being no longer necessary to achieve an alternating type/role "striped syntax" (important for compatibility with RDF). Also, inner 'name' and 'filler' roles are now replaced by positionality of the multiple-valued 'slot' role tag. For example,

<role>
  <Slot>
    <name><Ind>color</Ind></name>
    <filler><Ind>blue</Ind></filler>
  </Slot>
</role>

is now

<slot>
  <Ind>color</Ind>
  <Ind>blue</Ind>
</slot>

'Imp' has been expanded to 'Implies'. This change suggests that the body be supplied before the head, body => head, so these roles are now skippable. So, for A() => B(),

<Implies>
  <body>
    <Atom><Rel>A</Rel></Atom>
  </body>
  <head>
    <Atom><Rel>B</Rel></Atom>
  </head>
</Implies>

is equivalent to

<Implies>
  <Atom><Rel>A</Rel></Atom>
  <Atom><Rel>B</Rel></Atom>
</Implies>

Similarly, 'Eq' has been expanded to 'Equal'. For example,

<Eq>
  <Var>D</Var>
  <Ind>10</Ind>
</Eq>

is now written as

<Equal>
  <Var>D</Var>
  <Ind>10</Ind>
</Equal>

Other miscellaneous changes include 'role' being discarded (along with 'name' and 'filler') because 'slot' is now itself a role, and 'clause' and 'wff' being replaced by 'formula' (which is also usable within 'Forall').

Affecting the semantics, 'rbaselab' and 'rlab' are unified into 'oid', which is also used for general object identification. For example,

<Atom>
  <oid><Ind>gpKR fact 1</Ind></oid>
  <opr><Rel>offer</Rel></opr>
  <Ind>Ecobile</Ind>
  <Ind>special</Ind>
  <Ind>20000</Ind>
</Atom>

Conversely, the 'href' attribute is split into 'wref' (web reference) and its complementary 'wlab' (web label) attribute (only valid on Inds within an oid). For example,

<Atom>
  <oid><Ind wlab="http://catalist.ca/37">gpKR fact 1</Ind></oid>
  <opr><Rel>offer</Rel></opr>
  <Ind wref="http://ecobile.com">Ecobile</Ind>
  <Ind>special</Ind>
  <Ind>20000</Ind>
</Atom>

Revisions

The following revisions have been made:

To precisely reflect the closure conventions of LP, top-level And (directly below Assert), corresponding to "Rulebase" from previous versions, may no longer have an innerclose attribute with a value of "existential" (only "universal").

New connective "Equivalent" is now permitted below top-level And, as well as within Forall, as syntactic sugar for two converse Implies expressing equivalence. However, to avoid conjunctions etc. in the head, only atomic equivalence is permitted. The accompanying "torso" role tag (neutralizing head and body) is also introduced. Equivalent is disallowed in the urcbindatagroundfact sublanguage (along with, as before, Implies).

Under Query, And & Or may now have a closure attribute with a value of "existential" (but not "universal"), reflecting LP's querying closure conventions.

New explicit quantifier "Exists", usable only directly below Query, is introduced. In addition to the quantified variables, it may contain an And, Or, Atom or a nested Exists. Exists is disallowed in bindatagroundlog and, by inheritance, urcbindatagroundlog (along with Forall, as before).

Modularization

The modularization used for Versions 0.7 and 0.8 was inverted since RuleML 0.85 to be more intuitive. The motivating factors behind this switch were simplicity (a single root with two distinct branches), consistency (inheritance in a single direction, for obvious super/subclass relationships) and efficiency (non-redundant implementation).

However, a limitation within XML Schema prevented this approach from being easily implemented (resulting in the unstable XSDs in 0.85), so the modularization was re-analyzed and a new model resulted. This updated model reflects both the -- now fully-validating -- (XSD) implementation and expressiveness layering of RuleML, simultaneously capturing both the abstract and concrete.

Content Model-Based Approach

DTDs have limited support for modularity, but it can be achieved in a roundabout way using macro-like parameter entities. In particular, the contents of an external file can be included using an externally-linked parameter entity. For example, the following includes the contents of datalog.dtd:

<!ENTITY % datalog_include SYSTEM "datalog.dtd">
%datalog_include;

Simple inclusion is not enough, though: overriding is also necessary. Previously, this was managed using INCLUDE/IGNORE sections: the section that declared the element which had to be changed was simply IGNOREd, then the element was re-declared.

In version 0.85, this clumsy method of overriding was replaced with a much more elegent solution wherein every element's content model was explicitly defined by a parameter entity. The rulebase label '_rbaselab' (now 'oid'), for example, became declared as follows:

<!ENTITY % _rbaselab.content "(ind)"> 
<!ELEMENT _rbaselab %_rbaselab.content;>

Since parameter entities can overwrite one another (even across files), this content model could be easily replaced with another specified in a different DTD altogether, much like re-assigning a global variable in traditional programming languages. For example, the content model of the rulebase label '_rbaselab' is just "(ind)" in urcbindatagroundfact.dtd (as above), but was extended to permit a complex term (thus, becoming "(ind | cterm)") in hornlog.dtd:

<!ENTITY % _rbaselab.content "(ind | cterm)">

(Note that this overriding entity must be defined before the inclusion of other files.)

A visual demonstration of this process can be found on slide 25 of the Object-Oriented RuleML: Re-Modularized and XML Schematized via Content Models presentation.

The content model-based approach to modularization also works for XML Schema, using groups (and attributeGroups) instead of parameter entities. For example (now using 0.88 syntax, where '_rbaselab' is now 'oid'),

<!ENTITY % oid.content "(ind)"> 
<!ELEMENT oid % oid.content;>

becomes

<xs:attributeGroup name="oid.attlist"/>
<xs:group name="oid.content">
  <xs:choice>
    <xs:element name="Ind" type="Ind-oid.type"/>
  </xs:choice>
</xs:group>
<xs:complexType name="oid.type">
  <xs:group ref="oid.content"/>
  <xs:attributeGroup ref="oid.attlist"/>
</xs:complexType>
<xs:element name="oid" type="oid.type"/>

There is no need for workarounds in XSD: <redefine> makes the specified changes and includes everything else. For example,

<!ENTITY % oid.content "(ind | cterm)">

<!ENTITY % include SYSTEM "datalog.dtd">
%include;

becomes

<xs:redefine schemaLocation="datalog.xsd">
  <xs:group name="oid.content">
    <xs:choice>
      <xs:group ref="oid.content"/>
      <xs:element ref="Cterm"/>
    </xs:choice>
  </xs:group>
</xs:redefine>

XSDs

A stable XML Schema representation of RuleML version 0.88 has been created using an approach that is consistent with that used in the (version 0.85) DTDs.

Examples

Numerous sample RuleML documents have been prepared and maintained as examples and for testing purposes. They are stored in the Examples directory. (Examples from previous versions of RuleML are also maintained, e.g. 0.87 examples). Note that additional examples taken from the First-Order Logic RuleML document have been added in 0.88: appendix1a.ruleml, appendix1b.ruleml and appendix2b.ruleml.

XSLT-Based Upgrader

Continuing the practice begun in 0.86, an XSLT stylesheet named 087-to-088.xslt has been created to automatically update RuleML 0.87 documents to 0.88. Note that all examples have already been updated. For instance, taking the own example from 0.87 as input, the stylesheet outputs the following: own-088.ruleml. (See a comparison of these two files generated using HTML Diff.) Additional translation output samples are found in the Upgrader directory.

An XSLT processor which may be used to perform these transformations on a whole directory at once is Saxon, using the following command:

   $ java net.sf.saxon.Transform -o 0.88/exa/ 0.87/exa/ 087-to-0.88.xslt

The stylesheet has also been tested using XML Spy (version 2005 sp1).

XSLT-Based Normalizer

An XSLT stylesheet has been developed (088_normalizer.xslt) for normalizing the syntax used in a given RuleML 0.88 instance, reconstructing all skipped role tags to be in a fully-expanded, normal form. For example, the compact version of the 'own' example,

<Assert>
  <And innerclose="universal">
    <Implies>
      <And>
        <Atom>
          <Rel>buy</Rel>
          <Var>person</Var>
          <Var>merchant</Var>
          <Var>object</Var>
        </Atom>
        <Atom>
          <Rel>keep</Rel>
          <Var>person</Var>
          <Var>object</Var>
        </Atom>
      </And>
      <Atom>
        <Rel>own</Rel>
        <Var>person</Var>
        <Var>object</Var>
      </Atom>
    </Implies>
    ...
    <Atom>
      <Rel>keep</Rel>
      <Ind>Mary</Ind>
      <Ind>XMLBible</Ind>
    </Atom>
  </And>
</Assert>

is normalized to the expanded version:

<Assert>
  <content>
    <And innerclose="universal">
      <formula>
        <Implies>
          <body>
            <And>
              <formula>
                <Atom>
                  <opr><Rel>buy</Rel></opr>
                  <arg index="1"><Var>person</Var></arg>
                  <arg index="2"><Var>merchant</Var>	</arg>
                  <arg index="3"><Var>object</Var></arg>
                </Atom>
              </formula>
              <formula>
                <Atom>
                  <opr><Rel>keep</Rel></opr>
                  <arg index="1"><Var>person</Var></arg>
                  <arg index="2"><Var>object</Var></arg>
                </Atom>
              </formula>
            </And>
          </body>
          <head>
            <Atom>
              <opr><Rel>own</Rel></opr>
              <arg index="1"><Var>person</Var></arg>
              <arg index="2"><Var>object</Var></arg>
            </Atom>
          </head>
        </Implies>
      </formula>
      ...
      <formula>
        <Atom>
          <opr><Rel>keep</Rel></opr>
          <arg index="1"><Ind>Mary</Ind></arg>
          <arg index="2"><Ind>XMLBible</Ind></arg>
        </Atom>
      </formula>
    </And>
  </content>
</Assert>

(See a comparison of these two files generated using HTML Diff.)

Additional examples are located in the Normalizer directory.

Validation

To ensure validation stability, the 0.88 XSDs have been tested (using corresponding instance documents/examples) with numerous validators/tools. A summary of these validation results follows:

W3C XML Schema Validator (XSV) v 2.8-1
All examples and schemas validate perfectly except for the binary sublanguages due to a known bug introduced since 2.7-1. See Appendix 3 for instructions on validating an example against its XML Schema and the corresponding output.

Altova XMLSpy v 2005 sp2
All examples and schemas validate perfectly.

Saxon v SA 8.3
All examples and schemas validate perfectly. Sample output:

 java com.saxonica.Validate -t http://www.ruleml.org/0.88/exa/own.ruleml
 Saxon-SA 8.3 from Saxonica
 Java version 1.5.0_01
 Processing http://www.ruleml.org/0.88/exa/own.ruleml
 Loading schema document http://www.ruleml.org/0.88/xsd/datalog.xsd
 Loading schema document http://www.ruleml.org/0.88/xsd/modules/performative_module.xsd
 Finished loading schema document http://www.ruleml.org/0.88/xsd/modules/performative_module.xsd
 Loading schema document http://www.ruleml.org/0.88/xsd/modules/desc_module.xsd
 Finished loading schema document http://www.ruleml.org/0.88/xsd/modules/desc_module.xsd
 Loading schema document http://www.ruleml.org/0.88/xsd/modules/quantifier_module.xsd
 Finished loading schema document http://www.ruleml.org/0.88/xsd/modules/quantifier_module.xsd
 Loading schema document http://www.ruleml.org/0.88/xsd/modules/connective_module.xsd
 Finished loading schema document http://www.ruleml.org/0.88/xsd/modules/connective_module.xsd
 Loading schema document http://www.ruleml.org/0.88/xsd/modules/atom_module.xsd
 Finished loading schema document http://www.ruleml.org/0.88/xsd/modules/atom_module.xsd
 Loading schema document http://www.ruleml.org/0.88/xsd/modules/slot_module.xsd
 Finished loading schema document http://www.ruleml.org/0.88/xsd/modules/slot_module.xsd
 Loading schema document http://www.ruleml.org/0.88/xsd/modules/term_module.xsd
 Finished loading schema document http://www.ruleml.org/0.88/xsd/modules/term_module.xsd
 Finished loading schema document http://www.ruleml.org/0.88/xsd/datalog.xsd
 Execution time: 953 milliseconds

Future Work

Appendix

Appended below is the XML Schema (version 0.88) for a Datalog subset of RuleML (Appendix 1). Also appended below is a simple example rulebase that conforms to that XSD (Appendix 2), and instructions for how to validate the example against the schema (Appendix 3).

The entire family of 0.88 XSDs, specified in a modular fashion, are available here: http://www.ruleml.org/0.88/xsd. The XSD files in the main directory represent actual sublanguages of RuleML, whereas those in the modules subdirectory are elementary components included in the main XSDs. For more information, see the Modularization section.

More sample files -- each referring to the most specific XSD which validates it -- can be found at http://www.ruleml.org/0.88/exa.

Appendix 1: XSD for a Datalog subset of RuleML

Source: datalog.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.ruleml.org/0.88/xsd" 
xmlns="http://www.ruleml.org/0.88/xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>

	<xs:annotation>
		<xs:documentation xml:lang="en">
			XML Schema for a Datalog RuleML sublanguage
			File: datalog.xsd
			Version: 0.88
			Last Modification: 2005-01-19
		</xs:documentation>
	</xs:annotation>

	<!--
		Note that datalog is entirely composed of modules and that all other
		schema drivers rely on it, making it the root of the sublanguage family tree.
	-->
	
	<!--
		Datalog includes the following modules:
		* performative
		* desc
		* quantifier
		* connective
		* atom
		* slot
		* term

		For details on each module, including what element and/or attribute declarations
		they contain, please refer to them individually.
	-->
	<xs:include schemaLocation="modules/performative_module.xsd"/>
	<xs:include schemaLocation="modules/desc_module.xsd"/>
	<xs:include schemaLocation="modules/quantifier_module.xsd"/>
	<xs:include schemaLocation="modules/connective_module.xsd"/>	
	<xs:include schemaLocation="modules/atom_module.xsd"/>
	<xs:include schemaLocation="modules/slot_module.xsd"/>
	<xs:include schemaLocation="modules/term_module.xsd"/>
	
</xs:schema>

Appendix 2: Example rulebase in RuleML

Source: own.ruleml

<?xml version="1.0" encoding="UTF-8"?>

<Assert
xmlns="http://www.ruleml.org/0.88/xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.ruleml.org/0.88/xsd http://www.ruleml.org/0.88/xsd/datalog.xsd">

<!-- start XML comment ...

This example rulebase contains four rules.
The first and second rules are implications; the third and fourth ones are facts.

In English:

The first rule implies that a person owns an object
if that person buys the object from a merchant and the person keeps the object.

As an OrdLab Tree:

Implies~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          *                         *
     head *                    body *
          *                         *
        Atom~~~~~~~~~~~~~~~~~~     And~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                 *     |     |           |                                   |
             opr *     |     |           |                                   |
                 *     |     |           |                                   |        
                Rel   Var   Var        Atom~~~~~~~~~~~~~~~~~~~~~~~~~~~     Atom~~~~~~~~~~~~~~~~~~
                 .     .     .                  *     |      |       |              *     |     |
                 .     .     .              opr *     |      |       |          opr *     |     |
                 .     .     .                  *     |      |       |              *     |     |
                own  person object             Rel   Var    Var     Var            Rel   Var   Var
                                                .     .      .       .              .     .     . 
                                                .     .      .       .              .     .     .
                                                .     .      .       .              .     .     .
                                               buy  person merchant object        keep  person object

... end XML comment -->

<And innerclose="universal">

<Implies>
  <head>
    <Atom>
      <opr><Rel>own</Rel></opr>
      <Var>person</Var>
      <Var>object</Var>
    </Atom>
  </head>
  <body>
    <!-- explicit 'And' -->
    <And>
      <Atom>
        <opr><Rel>buy</Rel></opr>
        <Var>person</Var>
        <Var>merchant</Var>
        <Var>object</Var>
      </Atom>
      <Atom>
        <opr><Rel>keep</Rel></opr>
        <Var>person</Var>
        <Var>object</Var>
      </Atom>
    </And>
  </body>
</Implies>

<!-- The second rule implies that a person buys an object from a merchant
if the merchant sells the object to the person. -->

<Implies>
  <head>
    <Atom>
      <opr><Rel>buy</Rel></opr>
      <Var>person</Var>
      <Var>merchant</Var>
      <Var>object</Var>
    </Atom>
  </head>
  <body>
    <Atom>
      <opr><Rel>sell</Rel></opr>
      <Var>merchant</Var>
      <Var>person</Var>
      <Var>object</Var>
    </Atom>
  </body>
</Implies>
 
 
<!-- The third rule is a fact that asserts that
John sells XMLBible to Mary. -->
 
    <Atom>
      <opr><Rel>sell</Rel></opr>
      <Ind>John</Ind>
      <Ind>Mary</Ind>
      <Ind>XMLBible</Ind>
    </Atom>

 
<!-- The fourth rule is a fact that asserts that
Mary keeps XMLBible.
 
Observe that this fact is binary - i.e., there are two arguments
for the relation. RDF viewed as a logical knowledge representation
is, likewise, binary, although its arguments have type restrictions,
e.g., the first must be a resource (basically, a URI). Some of the
DTD's on the RuleML website handle URL's/URI's (UR's); see especially
urc-datalog.dtd for inferencing with RDF-like facts -->
 
    <Atom>
      <opr><Rel>keep</Rel></opr>
      <Ind>Mary</Ind>
      <Ind>XMLBible</Ind>
    </Atom>

</And>
  
</Assert>

Appendix 3: Instructions on validating the example against the XSD

Validating a RuleML 0.88 Sample Document: own.ruleml
====================================================

1. Direct your browser to 
http://www.w3.org/2001/03/webdata/xsv
(Validator for XML Schema REC (20010502) version, as amended).

2. Enter the following URL of our example RuleML file (or any other) into the textfield
preceded by "Address(es)": http://www.ruleml.org/0.88/exa/own.ruleml

3. If desired, check the "Show Warnings" box.

4. Click the "Get Results" button.

Note: The validation may take a while, and may require a full
refresh when re-validating to avoid caching.

Also note: Depending on your browser, you may want to select a different
output using the radio buttons just above the "Get Results" button.

***
 
You should get the following output (using the default output):

Schema validating with XSV 2.8-1 of 2004/07/01 13:14:57

  • Target: http://www.ruleml.org/0.88/exa/own.ruleml
       (Real name: http://www.ruleml.org/0.88/exa/own.ruleml
        Length: 3817 bytes
        Last Modified: Tue, 25 Jan 2005 20:10:23 GMT
        Server: Apache/1.3.27 (Unix) (Red-Hat/Linux) mod_fastcgi/2.4.2 mod_ssl/2.8.12 OpenSSL/0.9.6b DAV/1.0.3 PHP/4.1.2 mod_perl/1.26)
  • docElt: {http://www.ruleml.org/0.88/xsd}Assert
  • Validation was strict, starting with type {http://www.ruleml.org/0.88/xsd}:Assert.type
  • schemaLocs: http://www.ruleml.org/0.88/xsd -> http://www.ruleml.org/0.88/xsd/datalog.xsd
  • The schema(s) used for schema-validation had no errors
  • No schema-validity problems were found in the target

Schema resources involved

Attempt to load a schema document from http://www.ruleml.org/0.88/xsd/datalog.xsd (source: schemaLoc) for http://www.ruleml.org/0.88/xsd, succeeded

Attempt to load a schema document from http://www.ruleml.org/0.88/xsd/modules/performative_module.xsd (source: include) for http://www.ruleml.org/0.88/xsd, succeeded

Attempt to load a schema document from http://www.ruleml.org/0.88/xsd/modules/desc_module.xsd (source: include) for http://www.ruleml.org/0.88/xsd, succeeded

Attempt to load a schema document from http://www.ruleml.org/0.88/xsd/modules/quantifier_module.xsd (source: include) for http://www.ruleml.org/0.88/xsd, succeeded

Attempt to load a schema document from http://www.ruleml.org/0.88/xsd/modules/connective_module.xsd (source: include) for http://www.ruleml.org/0.88/xsd, succeeded

Attempt to load a schema document from http://www.ruleml.org/0.88/xsd/modules/atom_module.xsd (source: include) for http://www.ruleml.org/0.88/xsd, succeeded

Attempt to load a schema document from http://www.ruleml.org/0.88/xsd/modules/slot_module.xsd (source: include) for http://www.ruleml.org/0.88/xsd, succeeded

Attempt to load a schema document from http://www.ruleml.org/0.88/xsd/modules/term_module.xsd (source: include) for http://www.ruleml.org/0.88/xsd, succeeded



Site Contact: Harold Boley. Page Version: 2005-03-01


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