Infoloom
Semantic Integration Technologies
Michel Biezunski
Brooklyn, New York
mb@infoloom.com

The XML Topic Maps DTD (annotated)

Links:  Non-annotated DTD, Examples of XTM code, How to read a DTD. A guide to the XTM Syntax.

topicMap

<!ELEMENT topicMap
    ( topic | association | mergeMap )*
>
<!ATTLIST topicMap
    id ID #IMPLIED
    xmlns CDATA #FIXED 'http://www.topicmaps.org/xtm/1.0/'
    xmlns:xlink CDATA #FIXED 'http://www.w3.org/1999/xlink'
    xml:base CDATA #IMPLIED
>











High level container for an XTM topic map instance document.

topic Semantic unit, building block for the topic map. Each topic represents a subject.
association Each represents a relationship between topics.
mergeMap Each specifies a topic map to be merged. Preserves origin of sources.

topic

<!ELEMENT topic
    ( instanceOf*, subjectIdentity?, ( baseName | occurrence )* )
>
<!ATTLIST topic
    id ID #REQUIRED
>








Semantic unit, used as a building block for the topic map. Each <topic> element represents a subject, and only one.

instanceOf Type of topic (another topic)
subjectIdentity

Subject of topic. Can be:

  • constituted by resource
  • indicated by resources
baseName Names of topic.
occurrence Resources about topic.

instanceOf

<!ELEMENT instanceOf ( topicRef | subjectIndicatorRef ) >
<!ATTLIST instanceOf
    id ID #IMPLIED
>






Points to the type of the current object. (<topic>, <occurrence> or <association>).

topicRef Topic serving as type is a <topic> element.
subjectIndicatorRef Topic serving as type is expressed by a resource, which may or may not be a topic element.

subjectIdentity

<!ELEMENT subjectIdentity
    ( resourceRef?, ( topicRef | subjectIndicatorRef )* )
>
<!ATTLIST subjectIdentity
    id ID #IMPLIED
>








Subject of a topic. Serves as connecting point for several topics.

topicRef Identical to subject of another topic.
subjectIndicatorRef Indicated by the resource.
resourceRef Resource itself considered to be the subject of the topic.

topicRef

<!ELEMENT topicRef EMPTY >
<!ATTLIST topicRef
    id ID #IMPLIED
    xlink:type NMTOKEN #FIXED 'simple'
    xlink:href CDATA #REQUIRED
>








Empty element. Points to an element that must be a topic element. The topic to which the <topicRef> element is pointing indicates the subject (as opposed to being the subject, as in <resourceRef> ).

subjectIndicatorRef

<!ELEMENT subjectIndicatorRef EMPTY >
<!ATTLIST subjectIndicatorRef
    id ID #IMPLIED
    xlink:type NMTOKEN #FIXED 'simple'
    xlink:href CDATA #REQUIRED
>








Empty element. Points to an element that indicates the subject. The pointed element can be any kind of element.
NOTE: <subjectIndicatorRef> can be used instead of <topicRef>, if the syntactic constraint that the element which is targeted must be a topic element is not relevant in the context of the application.


baseName

<!ELEMENT baseName ( scope?, baseNameString, variant* ) >
<!ATTLIST baseName
    id ID #IMPLIED
>






The base name of a topic is a name that describes the topic and can be used for merging various topics under the base name merging rule: If two topics have the same name in the same scope, they are the same topic and therefore should be merged. A topic can have more than one base name. It can also have no base name.

scope indicates the domain for which a given base name is applicable.
baseNameString a string of characters constituting the name.
variant an alternate way to specify a base name.

baseNameString

<!ELEMENT baseNameString ( #PCDATA ) >
<!ATTLIST baseNameString
    id ID #IMPLIED
>






The character string contained in <baseNameString> is to be interpreted as the base name for the current topic.

variant

<!ELEMENT variant ( parameters, variantName?, variant* ) >
<!ATTLIST variant
    id ID #IMPLIED
>






Indicates alternate names for a given base name, which are dependent of processing contexts indicated by the parameters attribute. A variant can be nested within variants.

parameters Parameters used to specify the processing to be done. Published subjects may be used (such as "display" and "sort").
variantName Data (reference to file or string of characters) to be used as an alternate representation for a name.
variant Variants can be used recursively, to describe a hierarchy of possible variants.

variantName

<!ELEMENT variantName ( resourceRef | resourceData ) >
<!ATTLIST variantName
    id ID #IMPLIED
>






Specifies the form taken by the variant name. It can be either a string of characters, internal to the XTM document instance (using resourceData) or contained in a resource indicated by resourceRef, or it can be a graphic or any other type of file, pointed to by resourceRef.

resourceRef Points to the resource to be used to process the alternative form for the name.
resourceData Data present in the topic map document to be used directly as an alternate form for name.

parameters

<!ELEMENT parameters ( topicRef | subjectIndicatorRef )+ >
<!ATTLIST parameters
    id ID #IMPLIED
>






Indicates the context in which the variant is applicable.

topicRef Points to a topic whose subject is a processing context to which the variant name is applicable.
subjectIndicatorRef Points to a resource that indicates a subject which is a processing context to which the variant name is applicable.

occurrence

<!ELEMENT occurrence
    ( instanceOf?, scope?, ( resourceRef | resourceData ) )
>

<!ATTLIST occurrence
    id ID #IMPLIED
>









Indicates a resource which is relevant to a given topic.

instanceOf Type of occurrence (optional)
scope Scope in which the occurrence applies (optional).
resourceRef Points to the resource serving as occurrence.
resourceData Contains data serving as an occurrence in the topic map document (alternative to resourceRef).

resourceRef

<!ELEMENT resourceRef EMPTY >
<!ATTLIST resourceRef
    id ID #IMPLIED
    xlink:type NMTOKEN #FIXED 'simple'
    xlink:href CDATA #REQUIRED
>








Empty element. Points to a resource that is considered itself the subject.
NOTE: When <resourceRef> is used within an occurrence element, it indicates the address of the occurrence. (At a deeper level, each occurrence represents in fact the subject of another topic!)


resourceData

<!ELEMENT resourceData ( #PCDATA ) >
<!ATTLIST resourceData
    id ID #IMPLIED
>






The character string contained in <resourceData> is used as a resource which is located within the topic map document.

association

<!ELEMENT association
    ( instanceOf?, scope?, member+ )
>

<!ATTLIST association
    id ID #IMPLIED
>









Association between several members, each member playing a specific role in the associations. Members can comprise one or several topics.

instanceOf Refers to the association type of which an association is an instance.
scope The set of topics that represents the context in which the association is valid.
member Topics are syntactically grouped into "association members"; each corresponds to a role.

member

<!ELEMENT member
    ( roleSpec?, ( topicRef | resourceRef | subjectIndicatorRef )* )
>
<!ATTLIST member
    id ID #IMPLIED
>








Container for several topics (at least one) playing a given role in an association with other topics.

roleSpec Role that the member of the association plays in the association as a whole.
topicRef Points to topics that plays the role.
resourceRef Points to a resource, considered as a topic, that plays the role.
subjectIndicatorRef Points to a resource, that indicates a topic that plays the role.

roleSpec

<!ELEMENT roleSpec ( topicRef | subjectIndicatorRef ) >
<!ATTLIST roleSpec
    id ID #IMPLIED
>






Topic indicating the role a member plays in an association.

topicRef Refers to a topic whose subject is the role played by the member of the association.
subjectIndicatorRef Refers to a resource indicating a subject that is the role played by the member of the association.

scope

<!ELEMENT scope ( topicRef | resourceRef | subjectIndicatorRef )+ >
<!ATTLIST scope
    id ID #IMPLIED
>






Used as a container for several topics to indicate the domain in which a current assertion is valid. Assertions that have scope are: name assignment, occurrence assignment and associations.

topicRef Points to existing <topic> as component of the scope.
subjectIndicatorRef Points to a resource as part of the scope. The resource indicates the subject of the topic serving as a component of the scope.
resourceRef Points to a resource that itself serves as a component of the scope.

mergeMap

<!ELEMENT mergeMap ( topicRef | resourceRef | subjectIndicatorRef )* >
<!ATTLIST mergeMap
    id ID #IMPLIED
    xlink:type NMTOKEN #FIXED 'simple'
    xlink:href CDATA #REQUIRED
>




Specifies a topic map to be merged with the current one. Equivalent of "INCLUDE" or "IMPORT" in a computer language.

topicRef Points to existing <topic> as component of the scope.
subjectIndicatorRef Points to a resource as part of the scope. The resource indicates the subject of the topic serving as a component of the scope.
resourceRef Points to a resource that itself serves as a component of the scope.
Semantic Integration
Technologies
Consulting
Production Services

Customers
Customers' Products

Partners
Mailing lists
Organizations

Presentations

Bio
Contact me

© 2005, Michel Biezunski