XML Common Logic (XCL) 1.0a concrete syntax for Common Logic in XML
|
|||||||||||||
Copyright ©2003-2005 Murray Altheim. All Rights Reserved. |
XCL 1.0 is an XML markup language designed as a concrete (serialization) syntax for Common Logic [CL]. This specification describes the XCL 1.0 markup language, designed to enable interchange and interoperation of CL expressions across the World Wide Web.
Ed.Note: This document is now rendered obsolete by the publication of ISO/IEC IS 24707:2007 Common Logic. See also the document repository related to the Common Logic standard, as well as the local distribution of XML files.
This is a draft document intended for review and comment by interested parties. It is a “work in progress,” currently has no formal status, and its publication should not be construed as being a work of, nor endorsed by, any corporate, academic, standards, or other organization.
Specifically, this document is not to be considered a work item as part of the ISO 24707 Common Logic activity; it is solely the author's attempt to publicly describe the XCL 1.0 syntax within an application context harmonized with Annex C of ISO 24707, in mind to generate dialogue and feedback as XCL moves forward from prototype into implementation. Likewise, references to "ISO 24707" in this document are not meant to imply any formal association with ISO/IEC, nor any statement regarding the status of ISO 24707 as an International Standard.
This document is a placeholder and may eventually be replaced by a more formal version, as the XCL PURL (which is also the base URI of the XCL 1.0 XML Namespace) currently points to the location of this document.
This document may be updated, replaced, rendered obsolete by other documents, or removed from circulation at any time. It is inappropriate to use this document as reference material, or cite it as anything other than a “work in progress.” While copyrighted, distribution of this document is unlimited.
XCL is an XML markup language designed as a concrete (serialization) syntax for Common Logic [CL]. XCL 1.0 is a straightforward expression of Common Logic in XML and defines no further application-level semantics.
For purposes of interchange, this document also establishes a set of PSIs for its concepts. PSIs are described further in Published Subjects, and were introduced in Section 2.3 of [XTM]. You'll find a similar use of URIs as identifiers for each of the terms in the Dublin Core Metadata Initiative's Metadata Terms [DCMI].
The XCL syntax is further described in XCL 1.0 Syntax.
Ed.Note: Editorial notes appearing within the text (such as this one) are considered temporary and will be removed from the final text. Notes marked simply as "Note:" are considered part of the final text.
Ed.Note: If the font size of the markup examples is too small, this can be changed in the stylesheet. Having a smaller size eliminated the need to adjust the margin, and will likely help printing, but it may be hard on some people's eyes.
The following terms are used in this specification. These terms extend the definitions in [RFC2119] in ways based upon similar definitions in ISO/IEC 9945-1:1990 [POSIX.1]. When these terms appear in the text in bold face, they are to be interpreted as follows:
Internal structures within XML documents are called content models; these describe the various possible ways that elements can be nested within a valid XCL document. XCL has a few basic sentence-level content models declared within the XCL DTD as "classes", as shown below. Though common in SGML and XML DTDs, this use of "class" is not a formal term of art.
An XCL sentence (i.e., %Sentence.class; within the XCL DTD) is composed of one element from either the Quantified, Boolean or Atomic sentence classes, as shown below:
Quantified.class ::= quantified | forall | exists
Boolean.class ::= boolean | and | or | implies | iff | not
Atomic.class ::= atomic | relation | equal
Sentence.class ::= Quantified.class | Boolean.class | Atomic.class
[Section incomplete]
Attribute Name: xmlns | |
---|---|
Label: | XML Namespace Declaration |
Description: | All XCL elements have a declared, optional 'xmlns' attribute whose fixed, default value matches the XML Namespace for XCL 1.0. XML processors may imply this attribute when not explicitly present in the document instance. |
Attribute Name: id | |
Label: | ID Attribute |
Description: | All XCL elements have a declared, optional 'id' attribute whose value must match XML Name (production 5 of [XML]). When present, the ID value serves as the means of uniquely identifying a specific element within an XCL document. Note that this operates at the XML syntax level and has no semantic significance within CL. Each 'id' value must be unique within an XCL document. |
Table 1.2.1 Common Attributes
The 'xmlns' and 'id' attributes are declared on all XCL element types (though they are not included in the documentation for each element type).
Attribute Name: dialect | |
---|---|
URI: | http://purl.org/xcl/1.0/#dialect |
Declares: |
http://purl.org/xcl/1.0/#dialect-xcl http://purl.org/xcl/1.0/#dialect-clif http://purl.org/xcl/1.0/#dialect-cgif |
Label: | CL Dialect |
Description: | an identifier for the CL dialect of the element's content; see clauses 3.8, 7.1 of [ISO24707] |
Table 1.2.2. Dialect Attribute
The 'dialect' attribute is used to indicate the dialect of its element's content. 'dialect' is a linking attribute whose value (a URI reference) contains a reference to one of the fixed set of CL dialect identifiers:
http://purl.org/xcl/1.0/#dialect-xcl http://purl.org/xcl/1.0/#dialect-clif http://purl.org/xcl/1.0/#dialect-cgif
For other concrete syntax representations, a suitable URI indicating the dialect should be used. In all XCL elements for which the 'dialect' attribute is declared, its absence indicates the default: the XCL dialect defined by the XCL 1.0 DTD.
Note that the presence of a 'dialect' attribute overrides any 'dialect' attributes on parent elements; however, such parent-child dialect clashes are deprecated.
This attribute is declared on the <text>, <module>, <import>, and <phrase> elements.
<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/" dialect="http://purl.org/xcl/1.0/#dialect-clif"> (forall ex:romanceNovel ((x man)) (exists ((y woman)) (and (loves x y) (not (loves y x))) )) </text>
Name: comment | |
---|---|
URI: | http://purl.org/xcl/1.0/#comment |
Label: | Comments |
Description: | Inserts a comment. <comment> elements can be included within any XCL element and are considered as comments on their immediate parent element; see clause 6.1.1.3 of [ISO24707] |
Table 1.3. Comment Element
When well-formed XML processing is acceptable (see the section on XCL conformance), <comment> elements can comprise any text, can be mixed content, and can have any user-defined attributes; they are ignored by logical processors, but conforming XCL applications are required to preserve them and their position relative to other elements. Comments inside other comments are considered to be comments on the comment. In most cases, XCL content models include comments as the last children of the parent element.
Note that XCL markup inside a comment is not considered to be part of the XCL containing element, and must also be suitably escaped.
For situations where rich comment markup is desired but valid XCL is required, comments may contain a link to an external documentation source using the 'href' attribute:
<comment href="http://www.acme.com/docs/sec7.html"/>
If both element content and the 'href' attribute are present, the latter is considered optional, i.e., traversing the link is not considered essential to ascertain the contents of the comment.
With appropriate XML Namespace declarations, the %Comment.class; parameter entity can be redeclared to contain alternative XML content, e.g., XHTML or DocBook.
Ed.Note: It's been noted that the draft recently submitted to ISO did not include a 'xml:lang' attribute on the <comment> element. This was an oversight on my part, and Harry Delugach (the ISO draft editor) has indicated that he will include this suggestion as a US comment.
XCL 1.0 syntax is relatively simple, consisting of a document element, module and phrase wrapper elements, two utility elements (import and guard, the latter used with module), then of the sentence elements: three for quantifiers, six for boolean expressions, three for atomic sentences, and finally, a comment element for internal and/or external documentation.
Legend:
text
| module
| phrase
| import
| exclude
| forall
| exists
| quantified
| guard
| var
| and
| or
| not
| implies
| iff
| boolean
| atomic
| relation
| equal
| role
| term
| function
| comment
Element Type Name: text | |
---|---|
URI: | http://purl.org/xcl/1.0/#text |
Label: | XCL document element |
Description: | Used to surround any piece of XCL content, as the delimiters of an XCL (i.e., XML) document. Text inside this element must be valid XCL. It need not be a module (ontology) See the XCL Conformance section for details on well-formedness constraints. See clause 6.1.1.1 of [ISO24707] |
Table 2.1. XCL Document Element
An XCL document may use an <text> element as the document (or "root") element. This specification does not require XCL documents to use the <text> as a document element, but XML documents must have a single document element, hence it may be used when needed, as a semantic-free wrapper.
The optional xml:base attribute is also declared for optionally defining the base URI of the XCL document.
Using the available "prefixed" DTD (as described in the Use of XCL with Other XML Markup), XCL may be used with or without XML namespace prefixes, enabling intermixing with other XML markup languages.
<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/"> <module href="http://www.acme.com/vocab/#agent-vocab"> ... </module> </text>
For examples of namespace-prefixed XCL documents, see Appendix E.
The XML namespace identifier [XMLNS] for XML Common Logic (XCL) 1.0 is the following PURL (Permanent URL):
http://purl.org/xcl/1.0/
For more information on PURLs, see purl.org.
XCL 1.0 documents must be well-formed in conformance with [XML 1.0], and must conform to the constraints of [XMLNS]. XCL documents must declare the XCL namespace on the document element (as shown in the example in Section 3.1).
XCL documents should include a DOCTYPE declaration and validate according to an XCL 1.0 DTD, though this is not explicitly required by this specification. An example is shown below:
<?xml version="1.0"?> <!DOCTYPE text PUBLIC "-//purl.org/xcl//DTD XML Common Logic (XCL) 1.0//EN" "http://purl.org/xcl/1.0/xcl1.dtd"> <text xmlns="http://purl.org/xcl/1.0/"> </text>
Ed.Note: Should validation according to an approved schema be a requirement? Why? Why not?
Element Type Name: module | |
---|---|
URI: | http://purl.org/xcl/1.0/#module |
Label: | XCL Module |
Description: | Indicates that the enclosed content is considered to be an XCL module (aka ontology); see clause 6.1.1.4 of [ISO24707] |
Table 2.2. XCL Module
An XCL module is a fragment of XCL markup which has special attributes and satisfies certain extra constraints. An XCL document may comprise a single module, so this element, if present, will be the single child element of the <text> document element; in this case the module wrapper is not required.
The <module> element's 'href' attribute serves as one means of identifying the module, the other being use of the 'id' attribute used with the base URI of the document to form an identifier. This specification does not recommend one method over the other, as this is considered application-dependent. The latter has the advantage of tying the module URI to the base URI of the document (which may be considered a feature or a bug) but then relies upon the presence of the 'xml:base' attribute on the <text> element. In its absence the base URI is considered arbitrary.
<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/"> <module href="http://www.acme.com/vocab/#agent-vocab"> ... </module> </text>
Element Type Name: phrase | |
---|---|
URI: | http://purl.org/xcl/1.0/#phrase |
Label: | Phrase |
Description: | Used to indicate a top-level sentence in XCL. The single child element should be a sentence element; see 6.1.1.2 |
Table 2.3. Phrase Element
<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/"> <phrase> ... </phrase> </text>
Element Type Name: import | |
---|---|
URI: | http://purl.org/xcl/1.0/#import |
Label: | Import |
Description: | A linking element used to import one XCL module into another. The value of the attribute should be a reference to an identifier for an XCL module; see clause 6.1.1.5 of [ISO24707] |
Table 2.4. Import Element
<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/"> <import href="http://www.acme.com/vocab/agent-vocab.xcl"/> </text>
Element Type Name: exclude | |
---|---|
URI: | http://purl.org/xcl/1.0/#exclude |
Label: | Module Exclusions |
Description: |
contains a sequence of zero or more |
Table 2.5. Module Exclusions
This element is used to indicate that these terms do not denote "things" in the current ontology, i.e. that they are nondenoting operators not included in the local domain of quantification. This allows an ontology to have strict control over the size of its intended domain of discourse.Names not listed in such a header are treated as denoting terms in the ontology.
Nondenoting terms can be used only in the relation or function position of atoms and terms in this module. They cannot be used as arguments or be bound by quantifiers in this module. Note however that a term may be nondenoting in one ontology but denoting in another ontology: the assignment of nondenoting status is local to this module.
<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/"> <exclude> <term name="cow"/> <term name="pig"/> <term name="moose"/> </exclude> </text>
Attribute Name: syntaxType | |
---|---|
URI: | http://purl.org/xcl/1.0/#syntaxType |
Label: | Syntax Type |
Description: | indicates the logical form of a generic sentence; see clauses C.3.1.3, C.3.2.6 of [ISO24707] |
Table 3.0.1. Syntax Type Attribute
Quantified and boolean sentences can be stated "generically" with an optional 'syntaxType' attribute, whose value is a URI reference indicating the appropriate logical form. The 'syntaxType' link is provided for extensibility, to allow the inclusion of alternative logical syntax forms or patterns, e.g., numerical quantifiers or alternative boolean operators such as a binary conjunction or a Scheffer stroke. Currently there are no such extensions defined.
The 'syntaxType' link is not used with the normal XCL quantifier and boolean sentence elements, which can be viewed as abbreviations for generic sentence elements with XCL-defined syntax types, e.g.,
<forall> ... </forall>
abbreviates
<quantified syntaxType="http://purl.org/xcl/1.0/#forall"> ... </quantified>
Note that the 'dialect' attribute is not declared on sentence elements.
Attribute Name: logicalFormOf | |
---|---|
URI: | http://purl.org/xcl/1.0/#logicalFormOf |
Label: | Logical-Form-Of |
Description: | an optional attribute on all XCL sentence elements, whose value is a URI reference indicating a syntactic category in some external language specification. |
Table 3.0.2. Logical Form Of
This is intended to indicate that the sentence is the result of a content-preserving translation into XCL of the syntactic form indicated. The 'logicalFormOf' attribute of this element should indicate the appropriate categories of subexpressions of the external expression.
Only one "external" translation can be specified for a given piece of XCL. To indicate that a single XCL sentence is the logical form of two distinct external syntaxes, it is necessary to write it twice, with suitable 'logicalFormOf' values for each external specification. (The repetition may be indicated by the use of XML standards external to XCL.) Currently there are no such external mappings defined.
A Horn rule might appear in XCL as a univerally quantified implication between a conjunction and an atom; the value of the 'logicalFormOf' attribute is considered as applied to its parent <forall> element, which might be "http://acme.com/rulespec/#hornrule" and that of the internal conjunction and atomic conclusion might then be "http://acme.com/rulespec/#body" and "http://acme.com/rulespec/#head" (substituting suitable URIs).
<text xmlns="http://purl.org/xcl/1.0/"> <forall logicalFormOf="http://acme.com/rulespec/#hornrule"> ... </forall> <text>
Element Type Name: forall | |
---|---|
URI: | http://purl.org/xcl/1.0/#forall |
Label: | Universal Quantifier |
Description: | This encloses a quantified sentence and indicates the universal quantifier; see clause 6.1.1.7 of [ISO24707] |
Table 3.1.1. Forall Element
<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/"> TBD </text>
Element Type Name: exists | |
---|---|
URI: | http://purl.org/xcl/1.0/#exists |
Label: | Existential Quantifier |
Description: | This encloses a quantified sentence and indicates the existential quantifier; see clause 6.1.1.7 of [ISO24707] |
Table 3.1.2. Existential Quantifier
<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/"> TBD </text>
Element Type Name: quantified | |
---|---|
URI: | http://purl.org/xcl/1.0/#quantified |
Label: | Quantified Sentence - Generic Form |
Description: | see clauses 6.1.1.7, C.3.0.1 of [ISO24707] |
Table 3.1.3. Generic Quantified Sentence
<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/"> TBD </text>
Element Type Name: guard | |
---|---|
URI: | http://purl.org/xcl/1.0/#guard |
Label: | Quantifier Guard |
Description: | This optional element contains a single <term> element, which is used as the guard of the quantifier, if present; see clauses A.2.3.8, C.3.1 of [ISO24707] |
Table 3.1.4. Quantifier Guard Element
The <guard> element is used only inside quantifier elements, and must be the first child element if present.
<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/"> <forall> <guard> <term name="cow"/> </guard> TBD </forall> </text>
Element Type Name: var | |
---|---|
URI: | http://purl.org/xcl/1.0/#var |
Label: | Variable |
Description: | Encloses a name bound by a quantifier. This must be a denoting name. |
Table 3.1.5. Variable Element
<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/"> TBD ... <var name="person"/> ... </text>
<and> </and> <or> </or> <not> </not> <implies> </implies> <iff> </iff>
These all enclose boolean sentences and indicate the truth-function. The alternative generic form is
<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/"> <boolean syntaxType="http://purl.org/xcl/1.0/#and"> ... </boolean> </text>
Only <implies> is order-sensitive: by convention, the first child element is the antecendent, the second is the conclusion. (XCL does not require <role> elements for boolean sentences, e.g., antecedent/conclusion.)
Element Type Name: and | |
---|---|
URI: | http://purl.org/xcl/1.0/#and |
Label: | Conjunction |
Description: | see clause 6.1.1.8 of [ISO24707] |
Table 3.2.1. And Element
<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/"> TBD </text>
Element Type Name: or | |
---|---|
URI: | http://purl.org/xcl/1.0/#or |
Label: | Disjunction |
Description: | see clause 6.1.1.8 of [ISO24707] |
Table 3.2.2. Or Element
<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/"> TBD </text>
Element Type Name: not | |
---|---|
URI: | http://purl.org/xcl/1.0/#not |
Label: | Negation |
Description: | see clause 6.1.1.8 of [ISO24707] |
Table 3.2.3. Negation Element
<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/"> TBD </text>
Element Type Name: implies | |
---|---|
URI: | http://purl.org/xcl/1.0/#implies |
Label: | Implication |
Description: | see clause 6.1.1.8 of [ISO24707] |
Table 3.2.4. Implies Element
<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/"> TBD </text>
Element Type Name: iff | |
---|---|
URI: | http://purl.org/xcl/1.0/#iff |
Label: | Biconditional |
Description: | see clause 6.1.1.8 of [ISO24707] |
Table 3.2.5. Iff Element
<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/"> TBD </text>
Element Type Name: boolean | |
---|---|
URI: | http://purl.org/xcl/1.0/#boolean |
Label: | Boolean Sentence - Generic Form |
Description: | see clauses 6.1.1.8, C.3.2 of [ISO24707] |
Table 3.2.6. Boolean Sentence - Generic Form
<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/"> TBD </text>
Atomic sentence indicating that a relation holds true of some arguments. The first child element always indicates the relation; this may be a nondenoting name. XCL allows two distinct forms for specifying arguments of a relation, as an ordered list or as a collection of role-value pairs. The latter form is indicated by a 'syntaxType' attribute on the <atomic> element containing the 'href' attribute value of:
http://purl.org/xcl/1.0/#roleset<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/"> <atomic> TBD </atomic> </text>
Element Type Name: atomic | |
---|---|
URI: | http://purl.org/xcl/1.0/#atomic |
Label: | Atomic Sentence |
Description: | see clause 6.1.1.9 of [ISO24707] |
Table 3.3.1. Atomic Element
<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/"> TBD </text>
Element Type Name: relation | |
---|---|
URI: | http://purl.org/xcl/1.0/#relation |
Label: | Relation |
Description: | Encloses a <term> element. The name may be nondenoting. See clause TBD of [ISO24707] |
Table 3.3.2. Relation Element
<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/"> <relation> TBD </relation> </text>
Element Type Name: equal | |
---|---|
URI: | http://purl.org/xcl/1.0/#equal |
Label: | Equality |
Description: | see clause A.2.3.4 of [ISO24707] |
Table 3.3.3. Equal Element
<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/"> <equal> <term name="Robert Dobbs"/> <term name="Bob Dobbs"/> </equal> </text>
Element Type Name: role | |
---|---|
URI: | http://purl.org/xcl/1.0/#role |
Label: | Role |
Description: | see clause A.2.3.5 of [ISO24707] |
Table 3.3.4. Role Element
An atom using the role syntax:
<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/"> <atomic href="http://purl.org/xcl/1.0/#roleset"> <relation>married</relation> <role name="wife"> <term name="Jill"/> </role> <role name="husband"> <term name="Jack"/> </role> </atomic> </text>
Element Type Name: term | |
---|---|
URI: | http://purl.org/xcl/1.0/#term |
Label: | Term |
Description: | see clause 6.1.1.10 of [ISO24707] |
Table 3.4.1. Term Element
The <term> element may take one of two forms (ignoring any <comment> elements, which are not grammatically significant):
When no <function> or <term> elements are present, the 'name' attribute is required (though this is not constrained by the DTD).
<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/"> TBD <term> <function> <term name="pig"/> <term name="cow"/> </function> <term name="barnyard"/> </term> </text>
<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/"> TBD <term name="cow"/> </text>
Element Type Name: function | |
---|---|
URI: | http://purl.org/xcl/1.0/#function |
Label: | Function |
Description: | Encloses a <term> element. The name may be nondenoting; see clause 6.1.1.11 of [ISO24707] |
Table 3.4.2. Function Element
<?xml version="1.0"?> <text xmlns="http://purl.org/xcl/1.0/"> <function> TBD </function> </text>
Common Logic can be rendered into XCL directly, in a form which displays the Common Logic syntax directly in the XML markup. This is analogous to "content markup" in MathML [9]... [Section incomplete]
[Section incomplete]
Nothing exists in a vacuum, and this specification did not arise out of thin air. The author wishes to acknowledge the existing CL and SCL documents posted publicly (as found in the References section below), as well as public and private discussions over the past few years with various individuals, including Jon Awbrey, Harry Delugaph, Patrick Hayes, Chris Menzel, John Sowa, and Tanel Tammet.
The basic XML syntax of the earlier version of this specification was derived from XML concrete syntax early internal draft [SCL-TT] by Tanel Tammet. The syntax of the XCL 1.0 version submitted to ISO is derived from ideas found in the earlier syntax and some very helpful notes from Pat Hayes.
Following is the Published Subject Indicator (PSI) metadata for the XCL 1.0 Specification:
Property | Value |
---|---|
Description | A set of published subjects for XML Common Logic (XCL). |
Publisher | http://www.altheim.com/murray/ |
Creator | http://www.altheim.com/murray/ |
Language | http://www.topicmaps.org/xtm/1.0/language.xtm#en |
Version | $Id: index.html,v 1.11 2005/12/16 10:47:36 altheim Exp $ |
Status | Draft |
Date Published | 2005/12/15 |
Table A.1. PSI Metadata
This is the complete list of Published Subjects established by the XCL 1.0 specification. Not noted previously is that the PURL (permanent URL) for this specification is both the XML Namespace URI for and may be used as the PSI to refer to the XCL 1.0 Specification.
Subject | PSI |
---|---|
XCL 1.0 Specification | http://purl.org/xcl/1.0/ |
dialect-xcl | http://purl.org/xcl/1.0/#dialect-xcl |
dialect-clif | http://purl.org/xcl/1.0/#dialect-clif |
dialect-cgif | http://purl.org/xcl/1.0/#dialect-cgif |
comment | http://purl.org/xcl/1.0/#comment |
text | http://purl.org/xcl/1.0/#text |
module | http://purl.org/xcl/1.0/#module |
phrase | http://purl.org/xcl/1.0/#phrase |
import | http://purl.org/xcl/1.0/#import |
exclude | http://purl.org/xcl/1.0/#exclude |
syntaxType | http://purl.org/xcl/1.0/#syntaxType |
logicalFormOf | http://purl.org/xcl/1.0/#logicalFormOf |
forall | http://purl.org/xcl/1.0/#forall |
exists | http://purl.org/xcl/1.0/#exists |
quantified | http://purl.org/xcl/1.0/#quantified |
guard | http://purl.org/xcl/1.0/#guard |
var | http://purl.org/xcl/1.0/#var |
and | http://purl.org/xcl/1.0/#and |
or | http://purl.org/xcl/1.0/#or |
not | http://purl.org/xcl/1.0/#not |
implies | http://purl.org/xcl/1.0/#implies |
iff | http://purl.org/xcl/1.0/#iff |
boolean | http://purl.org/xcl/1.0/#boolean |
atomic | http://purl.org/xcl/1.0/#atomic |
relation | http://purl.org/xcl/1.0/#relation |
equal | http://purl.org/xcl/1.0/#equal |
role | http://purl.org/xcl/1.0/#role |
term | http://purl.org/xcl/1.0/#term |
function | http://purl.org/xcl/1.0/#function |
Table A.2. Index of XCL 1.0 PSIs
Note that each subject in the first column above is a link to its documentation herein.
The XCL 1.0 DTD is shown below, and is also available as a separate file, xcl1.dtd. The XCL 1.0 DTD is available in three versions. In addition to the default version, it is also available in a commented, unprefixed version xcl1c.dtd and an uncommented, "xcl:"-prefixed version xcl1p.dtd.
A package of files, including the XCL 1.0 DTDs, XML catalog file, SGML declarations for XML (one compatible with James Clark's nsgmls), and some short sample XCL test files, [will be] available as a zip file xcl1-dtd.zip (11K). A complete distribution of the XCL 1.0 Specification and all DTD files is also available upon request.
<!-- ....................................................................... --> <!-- XML Common Logic 1.0 DTD ............................................. --> <!-- file: xcl1.dtd --> <!-- XML Common Logic 1.0 DTD This is XCL, a formulation of Common Logic as an XML application. Copyright 2005 ISO/IEC All Rights Reserved. Permission to use, copy, modify and distribute the XCL DTD and its accompanying documentation for any purpose and without fee is hereby granted in perpetuity, provided that the above copyright notice and this paragraph appear in all copies. The copyright holders make no representation about the suitability of the DTD for any purpose. It is provided "as is" without expressed or implied warranty. Authors: Murray M. Altheim <m.altheim@open.ac.uk> Pat Hayes <phayes@ihmc.us> Status: Draft Revision: $Id: index.html,v 1.11 2005/12/16 10:47:36 altheim Exp $ This DTD has the following formal public identifiers: "ISO/IEC 24707:2006//DTD XML Common Logic (XCL) 1.0//EN" "-//purl.org/xcl//DTD XML Common Logic (XCL) 1.0//EN" The DTD may be invoked by one of the following declarations: <!DOCTYPE text PUBLIC "ISO/IEC 24707:2006//DTD XCL Markup Language//EN"> "xcl1.dtd"> <!DOCTYPE text PUBLIC "-//purl.org/xcl//DTD XML Common Logic (XCL) 1.0//EN" "xcl1.dtd"> where the system identifier ("xcl1.dtd") may be customized as necessary to specify the location of the DTD. If there is any perceived difference between the prose of the ISO standard and the XCL DTD, the former should be considered authoritive. --> <!-- a Uniform Resource Identifier, see clause 3.24 and [7] --> <!ENTITY % URI.datatype "CDATA" > <!-- XML namespace support ....................................... --> <!-- The XML Namespace URI for XCL 1.0 is "http://purl.org/xcl/1.0/" --> <!ENTITY XCL1.xmlns "http://purl.org/xcl/1.0/" > <!-- C.1. General Syntax ................................................... --> <!-- C.1.1 Content Models .............................. --> <!ENTITY % Quantified.class "( quantified | forall | exists )" > <!ENTITY % Boolean.class "( boolean | and | or | implies | iff | not )" > <!ENTITY % Atomic.class "( atomic | relation | equal )" > <!ENTITY % Sentence.class "( %Quantified.class; | %Boolean.class; | %Atomic.class; )" > <!ENTITY % Comment.class "comment" > <!-- C.1.2 Attributes .................................. --> <!ENTITY % XCL.xmlns.attrib "xmlns %URI.datatype; #FIXED '&XCL1.xmlns;'" > <!ENTITY % id.attrib "id ID #IMPLIED" > <!ENTITY % Common.attrib "%XCL.xmlns.attrib; %id.attrib;" > <!-- C.1.2.2 CL Dialect Attribute ............ --> <!-- Name: dialect URI: http://purl.org/xcl/1.0/#dialect Declares: http://purl.org/xcl/1.0/#dialect-xcl http://purl.org/xcl/1.0/#dialect-clif http://purl.org/xcl/1.0/#dialect-cgif Label: CL Dialect Description: see clauses 3.8, 7.1 --> <!ENTITY XCL.dialect "http://purl.org/xcl/1.0/#dialect-xcl" > <!ENTITY CLIF.dialect "http://purl.org/xcl/1.0/#dialect-clif" > <!ENTITY CGIF.dialect "http://purl.org/xcl/1.0/#dialect-cgif" > <!ENTITY % dialect.attrib "dialect %URI.datatype; '&XCL.dialect;'" > <!-- C.1.3 Comments .................................... --> <!-- Name: comment URI: http://purl.org/xcl/1.0/#comment Label: Comments Description: see clause 6.1.1.3 --> <!ENTITY % Comment.content "( #PCDATA | %Comment.class; )*" > <!ELEMENT comment %Comment.content; > <!ATTLIST comment %Common.attrib; href %URI.datatype; #IMPLIED > <!-- C.2. Top Level Elements ............................................... --> <!-- C.2.1 XCL Document Element ........................ --> <!-- Name: text URI: http://purl.org/xcl/1.0/#text Label: XCL document element Description: see clause 6.1.1.1 --> <!ENTITY % Text.content "( module | phrase | %Comment.class; )*" > <!ELEMENT text %Text.content; > <!ATTLIST text %Common.attrib; xml:base %URI.datatype; #IMPLIED %dialect.attrib; > <!-- C.2.2 XCL Modules ................................. --> <!-- Name: module URI: http://purl.org/xcl/1.0/#module Label: XCL Module Description: see clause 6.1.1.4 --> <!ENTITY % Module.content "( import | exclude | phrase | %Comment.class; )*" > <!ELEMENT module %Module.content; > <!ATTLIST module %Common.attrib; href %URI.datatype; #REQUIRED %dialect.attrib; > <!-- C.2.3 Phrase Element .............................. --> <!-- Name: phrase URI: http://purl.org/xcl/1.0/#phrase Label: Phrase Description: see clause 6.1.1.2 --> <!ENTITY % Phrase.content "( %Sentence.class;, %Comment.class;* )" > <!ELEMENT phrase %Phrase.content; > <!ATTLIST phrase %Common.attrib; %dialect.attrib; > <!-- C.2.4 Import Element .............................. --> <!-- Name: import URI: http://purl.org/xcl/1.0/#import Label: Import Description: see clause 6.1.1.5 --> <!ENTITY % Import.content "( %Comment.class;* )" > <!ELEMENT import %Import.content; > <!ATTLIST import %Common.attrib; href %URI.datatype; #REQUIRED %dialect.attrib; > <!-- C.2.5 Exclude Element ............................. --> <!-- Name: exclude URI: http://purl.org/xcl/1.0/#exclude Label: Module Exclusions Description: see clause 6.1.1.4 --> <!ENTITY % Exclude.content "( term )*" > <!ELEMENT exclude %Exclude.content; > <!ATTLIST exclude %Common.attrib; > <!-- C.3. Sentence Elements ................................................ --> <!-- C.3.0.1 syntaxType Attribute ...................... --> <!-- Name: syntaxType URI: http://purl.org/xcl/1.0/#syntaxType Label: Syntax Type Description: see clauses C.3.1.3, C.3.2.6 --> <!ENTITY % syntaxType.attrib "syntaxType %URI.datatype; #IMPLIED" > <!-- C.3.0.2 logicalFormOf Attribute ................... --> <!-- Name: logicalFormOf URI: http://purl.org/xcl/1.0/#logicalFormOf Label: Logical-Form-Of Description: see TBD --> <!ENTITY % logicalFormOf.attrib "logicalFormOf %URI.datatype; #IMPLIED" > <!-- C.3.1 Quantified Sentence Elements .......................... --> <!ENTITY % Quantified.content "( guard?, var+, %Sentence.class;, %Comment.class;* )" > <!-- C.3.1.1 Forall Element ............................ --> <!-- Name: forall URI: http://purl.org/xcl/1.0/#forall Label: Universal Quantifier Description: see clause 6.1.1.7 --> <!ELEMENT forall %Quantified.content; > <!ATTLIST forall %Common.attrib; %logicalFormOf.attrib; syntaxType %URI.datatype; #FIXED 'http://purl.org/xcl/1.0/#forall' > <!-- C.3.1.2 Exists Element ............................ --> <!-- Name: exists URI: http://purl.org/xcl/1.0/#exists Label: Existential Quantifier Description: see clause 6.1.1.7 --> <!ELEMENT exists %Quantified.content; > <!ATTLIST exists %Common.attrib; %logicalFormOf.attrib; syntaxType %URI.datatype; #FIXED 'http://purl.org/xcl/1.0/#exists' > <!-- C.3.1.3 Quantified Sentence - Generic Form ........ --> <!-- Name: quantified URI: http://purl.org/xcl/1.0/#quantified Label: Quantified Sentence - Generic Form Description: see clauses 6.1.1.7, C.3.0.1 --> <!ELEMENT quantified %Quantified.content; > <!ATTLIST quantified %Common.attrib; sort NMTOKEN #IMPLIED href %URI.datatype; #REQUIRED %logicalFormOf.attrib; %syntaxType.attrib; > <!-- C.3.1.4 Guard Element ............................. --> <!-- Name: guard URI: http://purl.org/xcl/1.0/#guard Label: Quantifier Guard Description: see clauses A.2.3.8, C.3.1 --> <!ENTITY % Guard.content "( term, %Comment.class;* )" > <!ELEMENT guard %Guard.content; > <!ATTLIST guard %Common.attrib; > <!-- C.3.1.5 Variable Element .......................... --> <!-- Name: var URI: http://purl.org/xcl/1.0/#var Label: Variable Description: see TBD --> <!ENTITY % Var.content "( %Comment.class;* )" > <!ELEMENT var %Var.content; > <!ATTLIST var %Common.attrib; name NMTOKEN #REQUIRED sort NMTOKEN #IMPLIED > <!-- C.3.2 Boolean Sentence Elements ............................. --> <!ENTITY % Boolean.content "( %Sentence.class; | %Comment.class; )*" > <!-- C.3.2.1 And Element ............................... --> <!-- Name: and URI: http://purl.org/xcl/1.0/#and Label: Conjunction Description: see clause 6.1.1.8 --> <!ELEMENT and %Boolean.content; > <!ATTLIST and %Common.attrib; %logicalFormOf.attrib; syntaxType %URI.datatype; #FIXED 'http://purl.org/xcl/1.0/#and' > <!-- C.3.2.2 Or Element ................................ --> <!-- Name: or URI: http://purl.org/xcl/1.0/#or Label: Disjunction Description: see clause 6.1.1.8 --> <!ELEMENT or %Boolean.content; > <!ATTLIST or %Common.attrib; %logicalFormOf.attrib; syntaxType %URI.datatype; #FIXED 'http://purl.org/xcl/1.0/#or' > <!-- C.3.2.3 Not Element ............................... --> <!-- Name: not URI: http://purl.org/xcl/1.0/#not Label: Negation Description: see clause 6.1.1.8 --> <!ENTITY % Not.content "( %Sentence.class;, %Comment.class;* )" > <!ELEMENT not %Not.content; > <!ATTLIST not %Common.attrib; %logicalFormOf.attrib; syntaxType %URI.datatype; #FIXED 'http://purl.org/xcl/1.0/#not' > <!-- C.3.2.4 Implies Element ........................... --> <!-- Name: implies URI: http://purl.org/xcl/1.0/#implies Label: Implication Description: see clause 6.1.1.8 --> <!ENTITY % ImpliesIff.content "( ( %Sentence.class;, %Sentence.class; ), %Comment.class;* )" > <!ELEMENT implies %ImpliesIff.content; > <!ATTLIST implies %Common.attrib; %logicalFormOf.attrib; syntaxType %URI.datatype; #FIXED 'http://purl.org/xcl/1.0/#implies' > <!-- C.3.2.5 Iff Element ............................... --> <!-- Name: iff URI: http://purl.org/xcl/1.0/#iff Label: Biconditional Description: see clause 6.1.1.8 --> <!ELEMENT iff %ImpliesIff.content; > <!ATTLIST iff %Common.attrib; %logicalFormOf.attrib; syntaxType %URI.datatype; #FIXED 'http://purl.org/xcl/1.0/#iff' > <!-- C.3.2.6 Boolean Sentence - Generic Form ........... --> <!-- Name: boolean URI: http://purl.org/xcl/1.0/#boolean Label: Boolean Sentence - Generic Form Description: see clauses 6.1.1.8, C.3.2 --> <!ELEMENT boolean %Boolean.content; > <!ATTLIST boolean %Common.attrib; sort NMTOKEN #IMPLIED href %URI.datatype; #REQUIRED %syntaxType.attrib; > <!-- C.3.3 Atomic Sentence Elements .............................. --> <!-- C.3.3.1 Atomic Element ............................ --> <!-- Name: atomic URI: http://purl.org/xcl/1.0/#atomic Label: Atomic Sentence Description: see 6.1.1.9 --> <!ENTITY % Atomic.content "( relation, ( term* | role* ), %Comment.class;* )" > <!ELEMENT atomic %Atomic.content; > <!ATTLIST atomic %Common.attrib; href %URI.datatype; #IMPLIED %logicalFormOf.attrib; %syntaxType.attrib; > <!-- C.3.3.2 Relation Element .......................... --> <!-- Name: relation URI: http://purl.org/xcl/1.0/#relation Label: Relation Description: see TBD --> <!ENTITY % Relation.content "( term, %Comment.class;* )" > <!ELEMENT relation %Relation.content; > <!ATTLIST relation %Common.attrib; > <!-- C.3.3.3 Equal Element ............................. --> <!-- Name: equal URI: http://purl.org/xcl/1.0/#equal Label: Equality Description: see clause A.2.3.4 --> <!ENTITY % Equal.content "( term, term )" > <!ELEMENT equal %Equal.content; > <!ATTLIST equal %Common.attrib; > <!-- C.3.3.4 Role Element .............................. --> <!-- Name: role URI: http://purl.org/xcl/1.0/#role Label: Role Description: see clause A.2.3.5 --> <!ENTITY % Role.content "( term, %Comment.class;* )" > <!ELEMENT role %Role.content; > <!ATTLIST role %Common.attrib; name NMTOKEN #REQUIRED > <!-- C.3.4 Term and Function Elements ............................ --> <!-- C.3.4.1 Term Element .............................. --> <!-- Name: term URI: http://purl.org/xcl/1.0/#term Label: Term Description: see clause 6.1.1.10 --> <!ENTITY % Term.content "( ( function, term+ )?, %Comment.class;* )" > <!ELEMENT term %Term.content; > <!ATTLIST term %Common.attrib; name CDATA #IMPLIED > <!-- C.3.4.2 Function Element .......................... --> <!-- Name: function URI: http://purl.org/xcl/1.0/#function Label: Function Description: see clause 6.1.1.11 --> <!ENTITY % Function.content "( term, %Comment.class;* )" > <!ELEMENT function %Function.content; > <!ATTLIST function %Common.attrib; > <!-- Architectural support declaration ............................ In order to use the XCL 1.0 document type definition as a base architecture for other SGML/XML applications, the following architectural support declaration should be used: <?IS24707 arch name="xcl" public-id="ISO/IEC 24707:2006//DTD XML Common Logic (XCL) 1.0//EN" dtd-system-id="http://purl.org/xcl/1.0/xcl1.dtd" renamer-att="XCLnames" doc-elem-form="text" ?> --> <!-- end of XCL 1.0 DTD -->
Following is a list of design goals, derived in part from both the Design Principles of XML and the Design Goals of KIF. The order of this list is not presented according to any priority, and intermixes various design aspects. (Clicking on a list number provides a self-referential link to that list item.)
This section derived from the design goals found in the earlier prototype XCL specification.
XCL documents shall be processable using commonly-available XML parsers. This means compliance with the normative requirements of XML 1.0 (Third Edition), such as Unicode, use of IETF and ISO standards for the identification of languages and countries, etc.
Where existing features in the family of XML specifications exist, these features shall be not be reinvented for XCL. For example, expression of the base URI of an XCL document shall use XML Base (i.e., the xml:base attribute) rather than inventing a new syntax.
No design elements shall be adopted which would impair the usability or extensibility of XCL documents in other contexts or applications.
In particular, it shall be straightforwardly possible to construct useful XCL applications which do not require processing of an XCL schema/DTD.
As a result of this, any XCL document has a high probability of being handled successfully by any XCL processor.
Whereas RDF encourages and often requires document authors to design new RDF markup, and HTML prohibits this (i.e., all HTML authors use the elements and attributes provided them in the "HTML tool kit"), there shall be a clear delineation between markup and document content in XCL, as in HTML. XCL document authors will use only XCL 1.0 markup, e.g., development of predicates will occur via PSIs rather than new XML elements or attributes.
Note: this is contrasted to extensions to XCL, which may require creation of XML markup (in an XML Namespace different than XCL 1.0). But when it is possible for such extensions to use the existing XCL syntax, designers are encouraged to avoid creation of new markup as much as possible.
As a result of this, the core syntax of an extended XCL document still has a high probability of being handled successfully by any XCL processor.
This is to be accomplished partly by providing a core XCL syntax that does not use arcane or unnecessary XML features such as XML Namespace prefixes. Three DTDs will be provided: an unprefixed DTD, a prefix-enabled DTD (whose default is no prefix but is modifiable by instances' internal subsets), and a default prefixed ("xcl:") DTD. Note: all three DTDs express the same syntax; differences are only in XML Namespace prefix.
A first draft of the XCL design should be ready for distribution and comment by end of summer 2003; a version should be ready for production use by the end of winter 2003.
While this is a difficult goal to provide a metric for, this is to be met by keeping the core syntax as simple as possible.
XCL should be simple and easy for implementors to grasp; its reference documentation should not exceed 20 pages, which should contain mostly formal grammar and very little normative text, if any. Note: normative text is not the same as descriptive or explanatory text.
It should be a straightforward task (though possibly labor-intensive) to create valid XCL documents by hand (i.e. without a validating authoring tool).
It should be a straightforward task (though possibly labor-intensive) to create a validating XCL authoring system.
Minimizing keystrokes is not deemed important in achieving any of the above goals, but other things being equal a concise notation should be preferred to a verbose.
Note: The following goals are tentatively included from the "Level 2" goals found in the earlier prototype XCL specification.
It shall be possible to author XCL documents whose expressions span multiple files, for purposes of modularization and reuse.
Rather than creating a proprietary linking syntax, the linking syntax for XCL shall be XLink 1.0, the linking language for XML.
XCL expressions shall be capable of being distributed across the Internet, for purposes of sharing and interchange (the latter requires that two expressions have a means of declaring concept identities).
When XCL documents are shared, or when concepts within a published XCL document are used by other XCL documents, the ability to establish subject identity is necessary. This is a concept derived from Topic Maps (ISO 13250:2000) essential for information interchange. E.g., absent subject identity, it is impossible to determine whether the logical terms in two different XCL documents refer to the same subject.
All components of the XCL syntax shall enable sharing and identity matching of concepts using Published Subject Indicators (PSIs). [PSIs are simply URIs used as canonical identifiers for a subject, similar to RDF's use of "namespaces" based on URIs.]
The documentation features for XCL shall use a different XML Namespace, with XCL 1.0 supporting simple text data, and subsequent (extension) versions to use a subset of XHTML.
All extensions to XCL shall occur as either PSIs within the existing XCL 1.0 syntax, or as extensions within a different XML Namespace. The latter is discouraged as this limits interchange.
This section includes information on namespace-prefixed use of XCL as well as extensions to XCL, which are either:
This shows a well-formed, namespace-prefixed XCL 1.0 document (using a prefix of "abc"). In well-formed XML, there are no constraints on the markup whatsoever apart from those from XML itself; XML processors only check to see that elements have end tags, start and end tags are balanced, attributes are quoted correctly, etc.
<?xml version="1.0"?> <abc:xcl xmlns:abc="http://purl.org/xcl/1.0/"> <abc:formula> </abc:formula> </abc:xcl>
This shows a valid, namespace-prefixed XCL 1.0 Level 2 document (using the prefix of "xcl"). This is accomplished by including a DOCTYPE declaration for the XCL 1.0 Level 2 Prefixed DTD.
<?xml version="1.0"?> <!DOCTYPE xcl PUBLIC "-//purl.org/xcl//DTD XML Common Logic (XCL) 1.0 Level 2 Prefixed//EN" "http://purl.org/xcl/1.0/xcl1-2p.dtd"> <xcl:xcl xmlns:xcl="http://purl.org/xcl/1.0/"> <xcl:formula> </xcl:formula> </xcl:xcl>
This shows a valid, namespace-prefixed XCL 1.0 Level 2 document (using a prefix of "abc"). This is accomplished by including a DOCTYPE declaration for the XCL 1.0 Level 2 Prefixed DTD, and redeclaring the default namespace prefix to the desired prefix value in the document's internal subset (the area between the square brackets containing the ENTITY declaration below):
<?xml version="1.0"?> <!DOCTYPE xcl PUBLIC "-//purl.org/xcl//DTD XML Common Logic (XCL) 1.0 Level 2 Prefixed//EN" "xcl1-2p.dtd" [ <!ENTITY % XCL.pfx "abc"> ]> <abc:xcl xmlns:abc="http://purl.org/xcl/1.0/"> <abc:formula> </abc:formula> </abc:xcl>
Note: Admittedly, this is beyond the syntactical complexity most people are willing to deal with, so an XCL DTD is provided declaring "xcl" as a namespace prefix. See Appendix C. This example is included here for those wishing to use a different prefix, or intermix XCL with other XML markup whilst still being able to validate their XCL documents.
A possible extension to XCL would be to include an appropriate subset of XHTML markup within the declaration for the %Comment.class; for improved documentation support. Other extensions (within a separate XCL-based namespace) might be to add a single <modal:constraint> element that could express the modal logic constraint within which a statement is true. Given that such constraints are similar conceptually to "scope" in XML Topic Maps, XCL could possibly then be used as an alternative serialization syntax for Topic Maps. Likewise, Conceptual Graphs expressed in XCL would immediately be "web-friendly".
Extensions to XCL are expected to often be handled within the existing syntax by creating canonical identifiers (Published Subject Indicators, or PSIs) for new quantifiers, connectives and predicates. Because of the basic graph structure of XCL it is as flexible as RDF or XTM in expressing semantic structures.
<?xml version="1.0"?> <!DOCTYPE xcl PUBLIC "-//purl.org/xcl//DTD XML Common Logic (XCL) 1.0//EN" "http://purl.org/xcl/1.0/xcl1.dtd"> <xcl xmlns="http://purl.org/xcl/1.0/"> </xcl>
XCL is designed as an interchange syntax for Common Logic, hence the intermixing of "arbitrary" XML markup within an XCL document would introduce an unknown measure of ambiguity. Would the added markup change the interpretation of a formula? Is it only a documentation feature? These are not properly the kinds of questions a computer can answer without assistance. To provide this assistance, all extensions to XCL should include (for humans) publicly-available documentation of the extensions, as well as an appropriate schema (e.g., XML 1.0 DTD, RELAX-NG schema, XML Schema). For the benefit of computers, extended XCL documents should be clearly marked, preferably with a DOCTYPE declaration.
In order to use the XCL 1.0 document type definition as a base architecture for other SGML/XML applications, the following architectural support declaration should be used:
<?IS24707 arch name="xcl" public-id="ISO/IEC 24707:2006//DTD XML Common Logic (XCL) 1.0//EN" dtd-system-id="http://purl.org/xcl/1.0/xcl1.dtd" renamer-att="XCLnames" doc-elem-form="text" ?>
$Log: index.html,v $ Revision 1.11 2005/12/16 10:47:36 altheim minor formatting bug fixes in text Revision 1.10 2005/12/15 01:43:52 altheim begin updating contents to match ISO CL draft of Dec 2005 Revision 1.9 2005/10/30 22:10:13 altheim last version prior to ISO CL harmonization Revision 1.8 2003/05/14 02:29:25 altheim functional DTD, test docs, tweaks on text Revision 1.7 2003/05/11 11:11:16 altheim broke off quantifier type as element type; finished several examples Revision 1.6 2003/05/11 04:20:43 altheim divided into two levels; improved examples; finished some sections; added Acknowledgements Revision 1.5 2003/05/08 02:09:32 altheim moved everything into 1.0 subdirectory and modified doc accordingly Revision 1.4 2003/05/08 01:48:03 altheim general cleanup, added PSIs and PSI metadata and index in appendix (first public draft)