The informative Topic Maps website maintained by Michel Biezunski (InfoLoom) and Steven R. Newcomb (Coolheads Consulting) | |
A Topic Maps Graph in XMLMichel Biezunski and Steven R. Newcomb June 27, 2001 Text version: http://www.topicmaps.net/simpleTMGraph3.dtd CLAIMER: The requirements that the DISCLAIMER: The intended purpose of this DTD is to include more people in the discussion of the underlying "is-ness" of topic maps. This is for you if you want to understand the topic map graph model and you happen to be able to understand DTD formalism. (NOTE: See also http://www.topicmaps.net/TMGraphAPI3.htm, where a more practical set of requirements guided our efforts to produce a very different DTD. The design of the TMGraphAPI2.dtd DTD is based on the same requirement for absolute comprehensiveness; nothing in a topic map graph can be lost. However, there was no requirement for simplicity, and, instead, it was required that even the simplest DOM applications would be able to directly access and use the topic map information contained in documents that are expressed in terms of this DTD. In effect, this DTD describes an API to the information that it contains, which is why we call it a "Topic Maps Graph API DTD.") NOTE: By contrast, the below simpleTMGraph.dtd offers no directly-usable API to the information that it represents, so that, in any case, it can have little or no role to play in the publishing of large-scale topic maps. (It's still a revealing exercise.) It's a topic map graph a la http://www.topicmaps.net/pmtm4.htm. The authors request that all copies and translations of Topicmaps.net's Simple Topic Maps Graph Document Type Definition be complete and correct, including this and all other notices, and including attribution to the authors by names and e-mail addresses, please. The authors also request that any claims of conformance to Topicmaps.net's Processing Model be accurate. Either a processing system conforms to the model exactly and comprehensively in every detail, or it does not conform, and no claim of conformance is justified. ContentsElements
The Simple Topic Maps Graph DTD |
<!ELEMENT simpleTMGraph ( tNode | aNode | sNode | associationMemberArc | associationScopeArc | associationTemplateArc | scopeComponentArc )* > <!ATTLIST simpleTMGraph id ID #IMPLIED xmlns CDATA #FIXED 'http://www.topicmaps.net/temporary/simpleTMGraph/1.0/' xmlns:xlink CDATA #FIXED 'http://www.w3.org/1999/xlink' xml:base CDATA #IMPLIED > |
<!ELEMENT tNode ( constitutedBy?, indicatedBy* )> <!ATTLIST tNode id ID #REQUIRED > |
<!ELEMENT aNode ( indicatedBy* )> <!ATTLIST aNode id ID #REQUIRED > |
<!ELEMENT constitutedBy EMPTY > <!ATTLIST constitutedBy xlink:type NMTOKEN #FIXED 'simple' xlink:href CDATA #REQUIRED > |
<!ELEMENT indicatedBy EMPTY > <!ATTLIST indicatedBy xlink:type NMTOKEN #FIXED 'simple' xlink:href CDATA #REQUIRED > |
<!ELEMENT sNode EMPTY> <!ATTLIST sNode id ID #REQUIRED > |
<!ELEMENT associationMemberArc ( aNodeRef, atNodeRef, tNodeRef )> |
<aNodeRef> |
association |
<atNodeRef> |
member |
<tNodeRef> |
role |
<!ELEMENT associationScopeArc ( aNodeRef, sNodeRef )> |
<aNodeRef> |
association |
<sNodeRef> |
scope |
<!ELEMENT associationTemplateArc ( aNodeRef, tNodeRef )> |
<aNodeRef> |
association |
<tNodeRef> |
template |
<!ELEMENT scopeComponentArc ( sNodeRef, atNodeRef )> |
<sNodeRef> |
scope |
<atNodeRef> |
component topic or association |
<!ELEMENT aNodeRef EMPTY > <!ATTLIST aNodeRef xlink:type NMTOKEN #FIXED 'simple' xlink:href CDATA #REQUIRED > |
<!ELEMENT tNodeRef EMPTY > <!ATTLIST tNodeRef xlink:type NMTOKEN #FIXED 'simple' xlink:href CDATA #REQUIRED > |
<!ELEMENT atNodeRef EMPTY > <!ATTLIST atNodeRef xlink:type NMTOKEN #FIXED 'simple' xlink:href CDATA #REQUIRED > |
<!ELEMENT sNodeRef EMPTY > <!ATTLIST sNodeRef xlink:type NMTOKEN #FIXED 'simple' xlink:href CDATA #REQUIRED > |
<!ELEMENT simpleTMGraph (
tNode |
aNode |
sNode |
associationMemberArc |
associationScopeArc |
associationTemplateArc |
scopeComponentArc
)*
>
<!ATTLIST simpleTMGraph
id ID #IMPLIED
xmlns CDATA #FIXED
'http://www.topicmaps.net/temporary/simpleTMGraph/1.0/'
xmlns:xlink CDATA #FIXED 'http://www.w3.org/1999/xlink'
xml:base CDATA #IMPLIED
>
<!-- A topic node ("t-node") -->
<!ELEMENT tNode (
constitutedBy?,
indicatedBy*
)>
<!ATTLIST tNode
id ID #REQUIRED
>
<!-- An association node ("a-node") -->
<!ELEMENT aNode (
indicatedBy*
)>
<!ATTLIST aNode
id ID #REQUIRED
>
<!-- A reference to an addressable subject -->
<!ELEMENT constitutedBy EMPTY >
<!ATTLIST constitutedBy
xlink:type NMTOKEN #FIXED 'simple'
xlink:href CDATA #REQUIRED
>
<!-- A reference to a subject indicator -->
<!ELEMENT indicatedBy EMPTY >
<!ATTLIST indicatedBy
xlink:type NMTOKEN #FIXED 'simple'
xlink:href CDATA #REQUIRED
>
<!-- A scope node ("s-node") -->
<!ELEMENT sNode EMPTY>
<!ATTLIST sNode
id ID #REQUIRED
>
<!-- Arc used to connect an association to one of its
members, in a specific membership role (another
t-node). -->
<!ELEMENT associationMemberArc (
aNodeRef,
atNodeRef,
tNodeRef
)>
<!-- Arc used to connect an association (a-node) to one of
its scopes (s-nodes). -->
<!ELEMENT associationScopeArc (
aNodeRef,
sNodeRef
)>
<!-- Arc used to connect an association (a-node) to its
template (if any). -->
<!ELEMENT associationTemplateArc (
aNodeRef,
tNodeRef
)>
<!-- Arc used to connect a scope (s-node) to one of its
component topics or associations. -->
<!ELEMENT scopeComponentArc (
sNodeRef,
atNodeRef
)>
<!-- Reference to an association (a-node). -->
<!ELEMENT aNodeRef EMPTY >
<!ATTLIST aNodeRef
xlink:type NMTOKEN #FIXED 'simple'
xlink:href CDATA #REQUIRED
>
<!-- Reference to a topic (t-node). -->
<!ELEMENT tNodeRef EMPTY >
<!ATTLIST tNodeRef
xlink:type NMTOKEN #FIXED 'simple'
xlink:href CDATA #REQUIRED
>
<!-- Reference to an a-node or a t-node -->
<!ELEMENT atNodeRef EMPTY >
<!ATTLIST atNodeRef
xlink:type NMTOKEN #FIXED 'simple'
xlink:href CDATA #REQUIRED
>
<!-- Reference to an s-node -->
<!ELEMENT sNodeRef EMPTY >
<!ATTLIST sNodeRef
xlink:type NMTOKEN #FIXED 'simple'
xlink:href CDATA #REQUIRED
>