ISO/IEC JTC1/WG4 N1984

ISO/IEC CD 13250

ISO/IEC JTC1/WG4

Document Processing and Relating Communication --
Document Description and Processing Languages


Title:
Information Processing -- SGML Applications -- Topic Navigation Maps
Source:
ISO JTC1/WG4
Project:
SGML Rapporteur Group
Status of Document:
Committee Draft
Requested action:
Approval of Committee Draft
Summary of major points:
Revised CD
Distribution:
National bodies participating in or observing the activities of JTC1/WG4


Information Processing -- SGML Applications -- Topic Navigation Maps

0. Introduction

This international standard provides a general mechanism for assigning properties to information objects using links. Thus, an object described as having a given property need not possess the property intrinsically, but may have it assigned extrinsically using a topic navigation map. Because of the extrinsic character of a topic map, it may be thought of as an "overlay" on a set of information objects.

Note: The Greek word 'topos' from which the English word 'topic' originates means 'location'. Therefore, 'topic' means here the qualification of a subject by the locations in which it is mentioned.

Note: A parallel distinction between the intrinsic and the extrinsic exists in the world of book indexing: the subject headings of an index need not appear as strings in the indexed text; indeed, those headings that do not appear amy give more potential value to the user than those that do appear, offering as they do a measure of abstraction.

An unlimited number of topic navigation maps may be overlaid on a given bounded object set. Thus, topic navigation maps enable multiple, concurrent views of information objects. These views may be relational, hierarchical, or both.

Topic navigation maps may assign properties to information objects for the following applications, among others:

This standard provides for multilingual topic navigation maps. Property Assignments may be set up to view or ignore information objects based on assigned properties including language or nationality. The topic navigation map's anchor roles (that is, its user interface) may be presented in a specific language using the localization attribute.

All property assignment in this standard is performed using HyTime hyperlink architectural forms and any or all of the location addressing facilities of HyTime. Therefore, information objects that can be addressed through a Topic Navigation Map can exist in any notation.

Note: In its design, HyTime distinguishes rigorously between linking (a relation among information objects) and locating (addressing the information objects). This design decision is essential to topic map interchange.

1. Scope

This standard provides techniques, based on facilities defined in ISO/IEC 10744:1997, for assigning extrinsic properties to information objects using topics, and for linking sets of related topics.

Note: This standard does not require or disallow use of any addressing scheme for the location of information objects, or any format for document storage.

One field of application for the standard is the addition of information to data not intrinsically, as markup, but extrinsically, as an "overlay".

Note: Content created using embedded markup and overlays may be deemed to be equivalent.

This field of application includes, but is not limited to, the interchange of indexes, glossaries, cross-references, thesauri, and other such reference material.

2. Conformance

If a document complies with all provisions of this International Standard, is a conforming SGML document as defined in ISO 8879, and is a conforming HyTime document as defined in ISO 10744:1997, it is a conforming Topic Navigation Map document.

Conformance to the Topic Navigation Map standard is independent of whether the document also conforms to any other document architecture.

A conforming Topic Map Engine must be able to perform architectural processing on the architectural forms defined in this standard: TNM:Topic, TNM:TopicAssociation, TNM:TopicNameLocator, TNM:PropertyAssignment, and optionally TNM:Anchspec(1).

(1)Note: This form is used in the case Topic Maps are based on the HyTime varlink architectural form.

TNM architectures are defined with reference to "SGML enabling architectures", as defined in Annex A of ISO 10744 (HyTime - SGML Extended Facilities).

3. Normative references

4. Definitions

Conventions

Editor's note (SH): 1/2/98. so what is duplicative, if not identical to the original, should be removed?

For the purposes of this standard the conventions defined in Clause 5 of ISO/IEC 10744:1997 have been followed.

Editor's note (SH): 1/2/98. Somewhere the ":" convention needs to be documented.

The terms and definitions given in ISO 8879:1986 and ISO/IEC 10744:1997 and the following terms and definitions apply to this standard.

Anchor
An object (or list of objects) that is linked to other objects or lists of objects by a hyperlink. [ISO 10744].
Anchor Role
The role an anchor plays in a link.
Architectural forms
Rules for creating and processing components of documents. Four kinds of architectural form are defined in ISO/IEC 10744:1997: element form, attribute form, data entity form, and data attribute form.
Architectural Form Definition Requirements (AFDR)
The requirements, specified in Annex A of ISO/IEC 10744:1997, for the formal definition of the architectural forms by which an enabling document architecture governs the SGML representation of its documents.
Assignable property
A property that may be assigned to an information object by a link. The property may, but need not be, deemed to be intrinsic to the information object.
Hub document
The HyTime document in which access to a hyperdocument begins.
MTB: Do we still need this
HyTime hyperlink
An information structure, defined using architectural forms defined in ISO/IEC 10744:1997, that represents a relationship between two or more objects.
Information object
Any entity or element that can be addressed and externally qualified through a topic or a property assignment. Information objects also include topic map constructs themselves, such as topics, topic associations, and property assignments represented as SGML elements.
Link
See HyTime hyperlink.
Mnemonic
An alternate representation of content, used for application-dependent processing (for example, alphabetic sorting of a topic by title, as expressed in its mnemonic attribute).
Navigation
Interactive traversal among the anchors of hyperlinks.
Occurrence role
See anchor role.
Property Assignment
A link that assigns properties to an information object for purposes other than navigation, e.g. filtering. For example, depending of properties assigned to them by a property assignment, objects may be selected or ignored by an application.
TNM engine
An application that can process topic navigation maps.
Topic
A link that aggregates information objects and allows them to share common semantics.
Topic association (was: Topic relationship)
A link whose anchors are topics only. The purpose of the association is left to the topic map designer.
Topic name
Text by which a topic can be identified. A topic may have several names.

5. Purpose

This standard provides facilities for creating, maintaining and interchanging topic-based navigational aids to large corpora of documents containing interrelated information. This standard makes a distinction between topic navigation maps -- sets of relations between formally defined topics covered in a given corpus -- defined within this standard and the links to, and addresses of, occurrences of relevant information within the corpora themselves, which are defined using facilities provided by ISO/IEC 10744, which defines the Hypermedia/Time-based Structuring Language known as HyTime.

Topic navigation maps can improve the accessibility of information by facilitating the task of providing, and imposing editorial consistency and maintainability on, navigational resources. Topic navigation maps are designed to simplify groupware-supported production of data for which navigational aids such as indexes, glossaries, tables of contents, lists and catalogs need to be generated. Topic navigation maps can also be used to enhance the navigability of very large information bases.

This standard provides an SGML architecture, defined according to the rules specified in the SGML Extended Facilities annex of ISO/IEC 10744, for creating and maintaining data that classifies information in documents according to topics, and classifies topics with respect to each other. This standard helps to increase consistency, and decrease redundancy, not only in navigational aids within documents, but also in navigational aids used with multiple documents, such as master indexes. The discipline that can be imposed by using the facilities provided in this standard will assist those who create and/or collect electronic information sets, and who wish to provide a given collection with a unified, consistent, and minimally redundant topic index.

The Standard Generalized Markup Language (SGML) defined in ISO 8879:1986 allows all kinds of documents to become databases. By providing ways to navigate data stores so that parts of documents that are relevant to a particular topic can be easily found and organized rapidly by machine, this standard augments the suitability of SGML for electronic document interchange. The number and complexity of indexable topics, and the associations between them, greatly exceeds the number and complexity of relations normally represented in traditional databases or, for that matter, in the kinds of indexes normally found in books. The number of topic associations that might usefully be represented with respect to any reasonably large collection of documents is, in fact, for all practical purposes limitless. Moreover, even in archived documents, new kinds of topic associations can be expected to appear from time to time. This standard, therefore, is specifically designed to allow multiple topic maps to be created over a period of time for any collection of data, and to allow for different topic maps to be inter-related.

An application-neutral, internationally understandable, rigorous, and yet flexible and open way to represent topical indexes, such as the one set forth in this standard, can help to make indexes easier to create, easier to maintain, and easier to use. As new associations are discovered and included as part of a topic architecture, the architecture changes. Many specialists may have to collaborate and contribute, over a number of years, to an evolving topic navigation map, which at any given time must unambiguously and comprehensibly govern all maintenance activities. Unless those who are adding and/or maintaining anchors have clear guidance, the instantiation of that topic navigation map -- the index itself -- may become unsound and unsafe.

There are many cases where individuals need to create their own classification of the information sets they frequently access. For example, when researching a subject a reader may wish to create his own method for linking relevant files together. This standard, therefore, provides a mechanism by which individuals can create their own 'views' of an information set, or of the associations between topics defined in existing topic navigation maps by other experts.

A topic navigation map defines topics and the associations that they bear to one another. It must, therefore, permit:

to be represented, universally interchanged, processed, merged, and used for data navigation.

In supplement, a topic navigation map assigns properties that apply to information objects, topics and topic assocations and are used for filtering in or out these information components from the current topic map view.

This standard provides SGML architectural forms that can be used in conjunction with the architectural forms defined in the HyTime standard to link topics definitions with information sources so that it can support applications that provide:

Topic navigation maps are defined using TNM:Topic-form attributes that assign a known meaning, universe and weighting to a topic, and TNM:TopicAssociation-form attributes that identify associations between topics, and TNM:PropertyAssignment form attributes that assign properties to information components. Categories of topics may be iteratively identified and described by linking suitable topics to other topics belonging to the category.

A topic map is created by linking, using HyTime hyperlinks, several pieces of information about a topic through a semantic assignment.

6. Resources

6.1 Parameter entities

<!entity % loc -- Location address forms --
               "anchloc|bibloc|dataloc|fcsloc|linkloc|listloc|
                mixedloc|nameloc|nmsploc|pathloc|proploc|queryloc|
                relloc|treeloc"

6.2 Defining the base element of a Topic Navigation Map

A topic navigation map may form a HyTime hub document. The purpose of a hub document is to give a HyTime engine the necessary information about the notations and entities comprising the hyperdocument. It is the starting point as far as HyTime processing is concerned. However, the hub document does not necessarily correspond to the document used as an entry point for user navigation. This entry point is application-dependent. If a topic navigation map forms a HyTime hub document, the base document element of the topic navigation map shall conform (except that the list of options provided in each parameter entity may be a subset of that shown) to the following architectural forms:

A Topic Map Engine shall be able to process the following subset of HyTime:

Editor's Note: To do: shrink this list

       <!-- HyTime Topic Navigation Map Document Hub -->
<!entity %
 loc            -- Location address forms --
 "anchloc|bibloc|dataloc|linkloc|listloc|mixedloc|nameloc|
  nmsploc|pathloc|proploc|queryloc|relloc|treeloc"          >
<!entity %
 link           -- Hyperlink forms --
 "varlink"                       >
<!entity %
 resbase        -- Base module resource forms --
 "bosspec"                                                  >
<!entity %
 resloc         -- Location address module resource forms --
 "agrovdef|datatok|grovplan|pgrovdef"                       >
<!entity %
 resschd        -- Scheduling module resource forms --
 "calspec|evsched|extent|extlist|measure"                                  >
<!entity %
 resorce        -- All resource architectural forms --
 "%resbase;|%resloc;|%resschd;"                             >
<!element TNM:hub  -- Topic Navigation Map HyTime hub document element --
           - O ANY +(%loc;|%link;|%resorce;)
-- OptionalAttributes [base]: bos, bosspcat --
-- OptionalAttributes [locs]: dgrvplan --
-- CommonAttributes [GenArc]: dvlatt, etfullnm, id, irefmodl,
 ireftype, lextype --
-- CommonAttributes [base]: dtxtatt, valueref --
-- CommonAttributes [locs]: refctl, refloc, reftype, rflocspn -- >
<!attlist TNM:hub
  TNM      NAME  #FIXED "TNM:hub"
  HyTime   NAME  #FIXED "HyDoc"    >

Note: The formal definition of the elements and attributes defined in this section is provided in Clause 6 of ISO/IEC 10744:1997.

7. TNM architectural forms

This Topic Navigation Maps standard defines the following SGML architectural forms:

The TNM-Topic, TNM-Member, TNM-TopicAssociation, and TNM-PropertyAssignment architectural forms can be used to add semantics to any HyTime link type. The architecture is based on the concept HyTime aggregate links (agglink). Three variants of the architectural forms are provided in the meta-DTD to allow users to use topic navigation maps with the HyTime Hyperdocument Links (hylink), Independent Links (ilink) or Variable Links (varlink) architectural forms. Annex B explains the equivalence between the three forms, and shows how how you can map between the three forms. The following parameter entities can be used to control which types of links are to be used by an application. For any application one of these entries will be set to "INCLUDE" and the other two must be set to "IGNORE".

<!ENTITY % varlink "INCLUDE">
<!ENTITY % hylink "IGNORE">
<!ENTITY % ilink "IGNORE">

For the purposes of the interchange of topic maps, applications should be able to convert the local storage format to the form of the architecture derived from a HyTime variable link (varlink) representation.

7.1 Representation of Topics: -- TNM-Class = TNM-Topic

A TNM-Topic is a HyTime link that relates information objects sharing semantics for the purposes of navigation. A topic link relates all information objects "about" a given subject (described by the topic name). A TNM-Topic link element can optionally have attributes that identify:

Each of these attributes can either be entered as a single string of SGML character data contained in an attribute value (TNM-name and TNM-definition), or as a set of references to the unique identifiers of objects, or object locators, defined as part of the topic navigation map (TNM-name-refs and TNM-def-refs) .

Note: As in SGML, elements addressed through a TNM-name-refs or TNM-def-refs attribute may be in any notation. Thus, a graphic or sound could become a topic name.

Note: The optional TNM-definition attribute can be used to disambiguate topic names that could serve more than one purpose. It can also be used to provide information that would help users to understand the parameters used to identify the information objects associated with the topic. More than one definition may be required (e.g. to provide different language representations of the definitions).

A TNM-Topic may also have associated with it the following optional attributes:

An element that conforms to the HyTime varlink architectural form will automatically assume the presence of the following fixed attributes, or attributes with a mimimal specified value:

<!ENTITY % TopicAttributes
  'TNM-Class               NAME   #FIXED "TNM-Topic"
   -- CommonAttributes [GenArc]: id --
   TNM-names           CDATA  #IMPLIED
   -- Referential  --
   -- Points to element(s) containing names used to identify the topic --
   TNM-definitions            CDATA  #IMPLIED
   -- Referential  --
   -- Points to element(s) containing definitions of the topic's subject's --
   loctype                 CDATA  "TNM-names IDLOC TNM-definitions IDLOC"'
   TNM-SelectorAssociation IDREFS -- Points to SelectorPropertySet elements
                                     that:
                                       a) reference the identifiers of
                                          property assignment type elements that
                                          have been used to assign properties to
                                          located elements
                                       b) identify the names of attributes
                                          of location address elements
                                       c) identify the names of attributes assigned
                                          to located elements
                                     that can be used to manage referenced data --
                                   #IMPLIED
>
<![ %varlink; [
<!element TNM-Topic -- Topic Navigation Map Topic Definition (varlink syntax variant) --
                  - O   (aggmem)+
                  -- Attributes [links]: ancspcat, agglinkv, varlink, vartrav --
                  -- CommonAttributes [GenArc]: dafe, dvlatt, etfullnm, id,
                                                ireftype, lextype, opacity --
                     -- CommonAttributes [base]: activity, conloc, dtxtatt, valueref --
                     -- CommonAttributes [locs]: refctl, refloc, reftype, rflocspn --
>
<!attlist TNM-Topic
   %TopicAttributes;
   linktype                NAME   #FIXED "agglinkv"
>
]]>
<![ %hylink; [
<!element TNM-Topic  -- Topic Navigation Map Topic Definition (hylink syntax variant) --
          - O   (%HyCFC;)
          -- Attributes [links]: ancspcat, agglink --
          -- OptionalAttributes [link]: traverse --
 -- Eliot: Is this correct? --
          -- CommonAttributes [GenArc]: dafe, dvlatt, etfullnm, id,
                                        ireftype, lextype, opacity --
          -- CommonAttributes [base]: activity, conloc, dtxtatt, valueref --
          -- CommonAttributes [locs]: refctl, refloc, reftype, rflocspn --
>
<!attlist TNM-Topic
   %TopicAttributes;
   linktype                NAME   #FIXED "agglink"
   members                 IDREFS #REQUIRED
>
]]>
<![ %ilink; [
<!element TNM-Topic  -- Topic Map Navigation Topic Definition link (ilink syntax variant) --
          (%HyCFC;)
          -- Attributes [links]: ilink --
          -- OptionalAttributes [links]: traverse --
          -- CommonAttributes [GenArc]: dafe, dvlatt, etfullnm, id,
                                        ireftype, lextype, opacity --
          -- CommonAttributes [base]: activity, conloc, dtxtatt, valueref --
          -- CommonAttributes [locs]: refctl, refloc, reftype, rflocspn --
>
<!attlist TNM-Topic
   %TopicAttributes;
   linktype                NAMES  #FIXED "agglinki"
   linkends                IDREFS #REQUIRED
>
]]>

Mnenmonic attribute to be changed to an element that links the mnemonics can be assigned directly to the named locations.

A mnemonic attribute may be attached to each topic name referenced in the name-refs attribute to allow a short name to be given to the name. Where no mnemonic is assigned, the contents of the referenced element can be used as the mnemonic. The way in which the value of the mnemonic attribute may be used is application-dependent.

Note: For example, values of the mnemonic attribute may be used to control the order in which topics that are entries in a subject index are to be sorted.

<attlist %locs; --Constraint: May only be used in addresses listed
                                      in a name-refs attribute--
   TNM-Mnemonic CDATA #IMPLIED
>

7.2 Topic Member: -- TNM-Class = TNM-Member

A TNM-Member is an element conforming to the HyTime anchor specification (anchspec) architectural form used in the varlink variant of the architecture. A HyTime anchor specification contains HyTime location address elements, e.g. name space locators (nmsploc) or tree location (treeloc) locators. Within the definition of a topic these addresses identify places where information relating to the topic may be found.

Should we have the following? Optionally each TNM-Member can be assigned a TNM-role attribute to indicate the role played by members of the set within the link. By default the element type name of the element conforming to the TNM-Member architecture will be used.

   TNM-role     CDATA #IMPLIED --Default: Element type name --

Note: For topics defined in other forms the names assigned to anchoroles will be sufficient to identify the role of the anchor specification within the topic navigation map. For the varlink this is not possible as the anchrole for an aggregate link must be fixed to "members".

<![ %varlink; [
<!element TNM-Member  -- Topic Navigation Map aggregation link member --
                  (#PCDATA | %HyCFC;)*
                  -- Attributes [links]: anchspec, ancspcat, aggmem, vartrav --
                  -- CommonAttributes [GenArc]: dafe, dvlatt, etfullnm, id,
                     ireftype, lextype, opacity --
                     -- CommonAttributes [base]: activity, conloc, dtxtatt, valueref --
                     -- CommonAttributes [locs]: refctl, refloc, reftype, rflocspn -->
<!attlist TNM-Member
   TNM-Class    NAME  #FIXED "TNM-Member"
   linktype     NAME  #FIXED "aggmem"
   HyTime       NAME  #FIXED "anchspec"
   anchrole     NAME  #FIXED "members #LIST"
   loctype      CDATA "#CONTENT IDLOC"
   TNM-role     CDATA #IMPLIED -- Default: Element name --
>
]]>

Question: Does ilink need something to identify the roles of the locators referenced in the linkends attribute.

7.3 Representation of associations between topics: -- TNM-Class = TNM-TopicAssociation

A TNM-TopicAssociation is a link that relates topics and assigns association semantics for purposes of navigation.

Any number of associations can exist between any two or more topics.

Note: The topic association element type form (TNM-TopicAssociation) may serve as the base architecture for as many link element types as desired in a document type definition (DTD). Each such element becomes a topic association element type. Different topic element association types will typically have different sets of anchor specification elements (that is, assign different semantics).

A TNM-TopicAssociation is a record of a relationship. It points to one or more location address elements of TNM-Topics or TNM-TopicAssociations that are linked by the association.

Note: This constraint is formally defined by the inclusion of a Hytime reftype attribute in the definition of the TNM-TopicAssociation architectural definition.

The HyTime linktype attribute indicates the type of relationship being associated with the linked addresses. If no value is specified, the name of the element type using this architectural form is assumed to identify the type of relationship.

Other attributes are defined as for the TNM-Topic architectural form, or are inherited from HyTime.

>!ENTITY TopicAssociationAttributes
  'TNM-Class               NAME   #FIXED    "TNM-TopicAssociation"
   -- CommonAttributes [GenArc]: id --
   reftype                 (TNM-Topic|TNM-TopicAssociation|TNM-PropertyAssignment) #IMPLIED
   TNM-names               CDATA  #IMPLIED
   -- Referential  --
   -- Points to element(s) containing names used to identify the topic --
   TNM-definitions         CDATA  #IMPLIED
   -- Referential  --
   loctype                 CDATA  "TNM-Names IDLOCS TNM-definitions IDLOC"'

   TNM-SelectorAssociation IDREFS -- Points to SelectorPropertySet elements
                                     that:
                                       a) reference the identifiers of
                                          property assignment type elements that
                                          have been used to assign properties to
                                          located elements
                                       b) identify the names of attributes
                                          of location address elements
                                       c) identify the names of attributes assigned
                                          to located elements
                                     that can be used to manage referenced data --
                                   #IMPLIED
>
<![ %varlink; [
<!element TNM-TopicAssociation -- Topic Navigation Map Topic Association (varlink syntax variant) --
                  - O   (anchspec)+
                  -- Attributes [links]: ancspcat, varlink, vartrav --
                  -- CommonAttributes [GenArc]: dafe, dvlatt, etfullnm, id,
                     ireftype, lextype, opacity --
                     -- CommonAttributes [base]: activity, conloc, dtxtatt, valueref --
                     -- CommonAttributes [locs]: refctl, refloc, reftype, rflocspn --
>
<!attlist TNM-TopicAssociation
   %TopicAssociationAttributes;
   linktype                NAME   #FIXED "varlink"
>
]]>
<![ %hylink; [
<!element TNM-TopicAssociation  -- Topic Navigation Map Topic Association (hylink syntax variant) --
          - O   (%HyCFC;)
          -- Attributes [links]: hylink --
          -- OptionalAttributes [links]: traverse --
          -- CommonAttributes [GenArc]: dafe, dvlatt, etfullnm, id,
                                        ireftype, lextype, opacity --
          -- CommonAttributes [base]: activity, conloc, dtxtatt, valueref --
          -- CommonAttributes [locs]: refctl, refloc, reftype, rflocspn --
>
<!attlist TNM-TopicAssociation
   %TopicAssociationAttributes;
   linktype                NAME   #FIXED "hylink"
>
]]>
<![ %ilink; [
<!element TNM-TopicAssociation  -- Topic Map Navigation Topic Association link (ilink syntax variant) --
          - O (%HyCFC;)*
          -- Attributes [links]: ilink --
          -- OptionalAttributes [links]: traverse --
          -- CommonAttributes [GenArc]: dafe, dvlatt, etfullnm, id,
                                        ireftype, lextype, opacity --
          -- CommonAttributes [base]: activity, conloc, dtxtatt, valueref --
          -- CommonAttributes [locs]: refctl, refloc, reftype, rflocspn --
>
<!attlist TNM-TopicAssociation
   %TopicAssociationAttributes;
   linktype                NAME   #FIXED "ilink"
   linkends                IDREFS #REQUIRED
>
]]> 

7.4 Representation of Property Assignments: -- TNM-Class = TNM-PropertyAssignment

A property assignment is a link that relates topics with shared assigned properties.

Note: Such links can be used for purposes other than navigation, e.g. for filtering. For example, a language property assignment might be used to select (or ignore) anchors with an "English" property for subsequent viewing or traversal in a topic map.

Note: If a topic map can be thought of as an overlay, a property assignment can be thought of as a mask.

There are no constraints on the information objects to which properties can be assigned. These include topics, topic associations, anchor specification elements, names, documents, elements in documents, etc.

Note: The behavior of information objects to which property have been assigned is left to the application designer. Topic Map Engines will be able to process the information pointed to by property assignment links by providing the necessary data that allow applications to build partial views, to extract portions or to provide selection mechanisms to users. Examples of property assignments include "Domain", "Language", "User profile", "Weighting", "Time-validity", "Security".

Note: Since the property assignment architectural form disables traversal, it is not possible to use the property assignment for navigation.

A TNM-PropertyAssignment has the following TNM-specific attributes:

Question: Should this be a pointer, or just a CDATA attribute?

The locations of the data to which the properties are to be assigned are defined according to the type of link being used.

<!ENTITY % PropertyAssignmentAttributes
  'TNM-Class               NAME  #FIXED    "TNM-PropertyAssignment"
   -- CommonAttributes [GenArc]: id --
   TNM-names               CDATA  #IMPLIED
   -- Referential  --
   TNM-definitions         CDATA  #IMPLIED
   -- Referential  --
   loctype                 CDATA  "TNM-names IDLOC TNM-definitions IDLOC"'
>
<![ %varlink; [
<!element TNM-PropertyAssignment -- Topic Navigation Map Property Assignment link (varlink syntax variant) --
                  - O   (aggmem)+
                  -- Attributes [links]: ancspcat, agglinkv, varlink, vartrav --
                  -- CommonAttributes [GenArc]: dafe, dvlatt, etfullnm, id,
                     ireftype, lextype, opacity --
                     -- CommonAttributes [base]: activity, conloc, dtxtatt, valueref --
                     -- CommonAttributes [locs]: refctl, refloc, reftype, rflocspn --
>
<!attlist TNM-PropertyAssignment
   %PropertyAssignmentAttributes;
   linktype                NAME   #FIXED "agglinkv"
>
]]>
<![ %hylink; [
<!element TNM-PropertyAssignment  -- Topic Navigation Map Property Assignment link (hylink syntax variant) --
          - O   (%HyCFC;)+
          -- Attributes [links]: ancspcat, agglink
          -- OptionalAttributes [links]: traverse --
          -- CommonAttributes [GenArc]: dafe, dvlatt, etfullnm, id,
                                        ireftype, lextype, opacity --
          -- CommonAttributes [base]: activity, conloc, dtxtatt, valueref --
          -- CommonAttributes [locs]: refctl, refloc, reftype, rflocspn --
>
<!attlist TNM-PropertyAssignment
   %PropertyAssignmentAttributes;
   linktype                NAME   #FIXED "agglink"
   members                 IDREFS #REQUIRED
>
]]>
<![ %ilink; [
<!element TNM-PropertyAssignment  -- Topic Map Navigation Property Assignment link (ilink syntax variant) --
          (%HyCFC;)
          -- Attributes [links]: ilink --
          -- OptionalAttributes [links]: traverse --
          -- CommonAttributes [GenArc]: dafe, dvlatt, etfullnm, id,
                                        ireftype, lextype, opacity --
          -- CommonAttributes [base]: activity, conloc, dtxtatt, valueref --
          -- CommonAttributes [locs]: refctl, refloc, reftype, rflocspn --
>
<!attlist TNM-PropertyAssignment
   %PropertyAssignmentAttributes;
   linktype                NAMES  #FIXED "agglinki"
   linkends                IDREFS #REQUIRED
>
]]>

7.5 Selection of Subsetting Properties: -- TNM-Class = TNM-SelectorPropertySet

The TNM-SelectorPropertySet architectural form can be used to define elements which identify the names of properties that can be used to create subsets of the topics. Such subsets will make it easier for users to find the information they need where topics are associated with large numbers of information sources.

Note: TNM-SelectorPropertySet elements allow sets of properties to be shared between topics, and topic associations, without having to be defined/managed separately for each element.

To be done: describe attributes check this needs members.

<!ENTITY % SelectorPropertySetAttributes
  'TNM-Class               NAME   #FIXED "TNM-SelectorPropertySet"
   TNM-AssignedProperties  IDREFS #IMPLIED -- Default: All assigned properties --
   TNM-LocatorProperties   NAMES  #IMPLIED -- Default: None --
   Properties-of-Data      NAMES  #IMPLIED -- Constraint: Name must be defined
                                              as attribute name for an SGML
                                              element that contains the located
                                              elements -- '
>
]]>

Note: Probably to be removed, but needs further discussion
A TNM-LocationAssociation can be used to define the relationship(s) between two or more data source locations. The contents of the TNM-LocationAssociation are a set of data source locators that identify objects or objects sets to be associated with each other. Each such location will have associated with it, either as part of its definition or through a TNM-PropertyAssignment, a DESCRIPTION attribute that locates a Description that describes the role played by the location in the association.

Informative Annex A: Sample Topic Maps

Example 00: Generic TNM Example

<?IS10744 arch
  name="hytime"
  arc-public-id="ISO/IEC 10744:1997//NOTATION Hypermedia/Time-based Structuring Language (HyTime)//EN"
  dtd-public-id="ISO/IEC 10744:1997//DTD AFDR Meta-DTD Hypermedia/Time-based Structuring Language (HyTime)//EN"
  form-att="HyTime"
  renamer-att="HyNames"
  doc-elem-form="HyDoc"
  bridge-form="hybrid"
  options="hylink clink agglink varlink ilink nmsploc"
>
<!-- Architectural DTD -->
<!ELEMENT TopicMap
  - -
  ANY
>
<!ELEMENT ( TNM-Topic | TNM-PropertyAssignment )
  - O
  (TNM-Member)+
  >
  <!ATTLIST ( TNM-Topic | TNM-PropertyAssignment )

      TNM-Names   -- Points to elements used as names for the topic.          Referential  --
         CDATA
         #IMPLIED 
      TNM-Definitions   -- Points to elements used as definitions for the topic. Referential  --
         CDATA
         #IMPLIED 
      loctype
         CDATA
         "TNM-Names IDLOC TNM-Definitions IDLOC" 
-- tells you what kind of location addresses is used for the
   attribute called TNM-names and TNM-definitions. --
-- default: IDREFS -
      linktype -- we are in a varlink variant --
         NAME
         #FIXED "agglinkv"
      HyTime
         NAME
         #FIXED "varlink"
      anchrole
         NAME
         #FIXED "agg"
  >
<!ELEMENT TNM-TopicAssociation  - O
  (TNM-Member)+
  >
  <!ATTLIST TNM-TopicAssociation
-- Reftype: only relates TNM-Topics, TNM-TopicAssociations, and TNM-Property Assignments --
      TNM-Names   -- Points to elements used as names for the topic.          Referential  --
         CDATA
         #IMPLIED 
      TNM-Definitions   -- Points to elements used as definitions for the topic. Referential  --
         CDATA
         #IMPLIED 
      loctype
         CDATA
         "TNM-Names IDLOC TNM-Definitions IDLOC" 
-- tells you what kind of location addresses is used for the
   attribute called TNM-names and TNM-definitions. --
-- default: IDREFS -
      linktype -- we are in a varlink variant --
         NAME
         #FIXED "agglinkv"
      HyTime
         NAME
         #FIXED "varlink"
      anchrole
         NAME
         #FIXED "agg"
  >
<!ELEMENT TNM-Member
   - O
   (#PCDATA)*
>
<!ATTLIST TNM-Member
   HyTime
     NAME
     #FIXED "anchspec"
   linktype
     NAME
     #FIXED "aggmem" -- aggregate members --
   anchrole
     NAME
     #FIXED "members #LIST" -- check whether we need it. --
   loctype
     CDATA
     "#CONTENT IDLOC" -- The content of an element is interpreted as an ID --
   TNM-role -- Semantic of the grouping --
      CDATA
       #IMPLIED -- default: element name --
>
<!ELEMENT TNM-TopicAssociation
  - -
  (TNM-Member+)

-- reftype: can only point to topic elements. Check with Eliot  --
>
<!ATTLIST TNM-TopicAssociation
  HyTime
    NAME
    #FIXED "varlink"
  linktype
    NAME
    #IMPLIED -- Default: element type name --
>


<!-- Why do we need this ? -->
<!ELEMENT TNM-TopicmapBridge
  - -
  (#PCDATA | TNM-TopicmapBridge)*
>
<!ATTLIST TNM-TopicmapBridge
  ID
     ID
     #IMPLIED
>

Document Instance

<!DOCTYPE MyTopicMap [
 <?IS10744 arch name="topicmap"
    public-id="ISO/IEC 13250//NOTATION Topic Map Navigation//EN"
    dtd-system-id="topicmaparch.dtd"
    renamer-att="TNMnames"
    options="nmsploc ... " -- insert here all necessary 
                              addressing facilities of HyTime  --
 >
 <!-- This is an external document in which the name of Gaudi is to be found -->
 <!ENTITY doc2 SYSTEM "doc2.sgm" NDATA SGML >

 <!ELEMENT MyTopicMap
    - -
    ANY
 >
 <!ATTLIST MyTopicMap
    topicmap
       NAME
       #FIXED "topicmap"
 >
 <!ELEMENT Para
   - -
   (#PCDATA)
 >
 <!ATTLIST Para
    ID
      ID
      #IMPLIED
    topicmap
      NAME
      #FIXED "topicmap-bridge"
 >
 <!ELEMENT Painter
   - -
   ((Name|nmsploc)* ,
    (Mentions |
     Works)+)
 >
 <!ATTLIST Painter
    id
      ID
      #REQUIRED
    TNM-names
        IDREFS  #REQUIRED
    topicmap
      NAME
      #FIXED "topic"
 >
 <!ELEMENT Name
    - -
    (#PCDATA)
 >
<!ATTLIST Name
id
    ID
     #REQUIRED
>
<!ELEMENT nmsploc
    - -
    (#PCDATA)
 >
<!ATTLIST nmsploc
    HyTime NAME #FIXED nmsploc
   locsrc ENTITY #IMPLIED
   namespc CDATA elements
   id  ID     #REQUIRED
>
<!-- reflevel can be used to restrict the number of levels of indirections -->


<!ELEMENT Mentions
    - O
    EMPTY
 >
 <!ATTLIST Mentions
    topicmap
       NAME
       #FIXED "TopicMember"
    members
      IDREFS
      #REQUIRED
    TNMnames
      CDATA
      "#ARCCONT members"
>
<!ELEMENT InfluencedBy
   - -
   (anchspec+)
>
<!ATTLIST InfluencedBy
   topicmap
     NAME
     #FIXED "topic-association"
>
<!ELEMENT anchspec
  - -
  (#PCDATA)
>
<!ATTLIST anchspec
  anchrole
    NAME
    #REQUIRED
  topicmap
    NAME
    #FIXED "anchspec"
  loctype
    CDATA
    #FIXED "#CONTENT IDLOC"
>
<!ELEMENT (OilPaintings | Watercolors | Sketches)
   - O
   ((name|nmsploc)*,
    Mentions+)
>
<!ATTLIST (OilPaintings | Watercolors | Sketches)
    id
      ID
      #REQUIRED
    names
       IDREFS
       #REQUIRED
    TNM-Class
      NAME
      #FIXED "TNM-Topic"
 >

<!ELEMENT Works
   - O
   EMPTY
>
<!ATTLIST Works
    TNM-Class
       NAME
       #FIXED "TNM-Member"
    members
      IDREFS
      #REQUIRED
    TNMnames
      CDATA
      "#ARCCONT members"
>
]>
<!-- 1. Most restrictive policy: only addressing by name is allowed
        obvious to implement
         not general
      2. No restriction on addressing
         difficult to implement
         general
-->
<!-- Conforming interchange topic map application :
    Conforming TNM: specific TNM instances, but not all (e.g., varlink-based) Conforming TNM-engine: any valid TNM document. --> <MyTopicMap> <!-- Main Topics --> <Painter id="picasso" names="picasso-name" definitions="picasso-def-en picasso-def-fr"> <!-- 1.Names --> <name id="picasso-name">Picasso</name> <!-- Direct reference to a name in the current document --> <!-- names is the attribute that assigns name(s) to the topic by pointing to a user-defined element containing the actual name, or containing the addresses of all names used for the topic. --> <!-- name is an element (not address element) --> <!-- name and bio are non-architectural element types --> <!-- 2. Definitions --> <bio id="picasso-def-en">Spanish painter and sculptor (1881-1973), who left Spain after the Civil War.</bio> <bio id="picasso-def-fr">Peintre et sculpteur espagnol (1881-1973)</bio> <!-- 3. Topic aggregate members --> <Mentions members="pic1 pic2 pic3"> <Works members="pic-oils pic-sketches"> </Painter> <!-- Put in the DTD -- check notation declaration -- --> <Painter id="gaudi" names="gaudi-name"> <!-- Here the name of Gaudi is to be found in an external document doc2 --> <nmsploc id="gaudi-name" locsrc="doc2">Gaudi</nmsploc> <Mentions members="gaudi1 gaudi2"> </Painter> <!-- Sub Topics --> <!-- Question: Number of resolution levels has an impact on the topic map engines --> <OilPaintings id="pic-oils" names="OilPicasso HuilePicasso"> <Name id="OilPicasso">Oil Paintings by Picasso</Name> <Name id="HuilePicasso">Peintures à l'huile de Picasso</Name> <Mentions members="pic-oil-1 pic-oil-2"> </OilPaintings> <Sketches id="pic-sketches" names="SketchPicasso"> <Name id="SketchPicasso">Sketches by Picasso</Name> <Mentions members="pic-sketch-1"> </Sketches> <!-- Topic Associations --> <InfluencedBy> <anchspec anchrole="influencee">Picasso</anchspec> <anchspec anchrole="influencer">gaudi</anchspec> </InfluencedBy> <!-- Mentions of things in topics --> <Para id= "pic1">Picasso</Para> <Para id="pic-oil-1">A painting</Para> <Para id="pic-oil-2">Another painting</Para> <Para id="pic-sketch-1">A sketch</Para> <Para id= "pic2">Picasso</Para> <Para id= "pic3">Picasso</Para> <para id="gaudi1">Gaudi</Para> <para id="gaudi2">Gaudi</Para> <PropertyAssignment names="language-name" def-refs="languages-def"> <property-name id="language-name">Language</property-name> <property-definition id="languages-def">Thing that is spoken by a group.</property-definition> <anchspec property-value="english">Picasso Gaudi picasso-def-en ...</anchspec> <anchspec property-value="french">Picasso Gaudi picasso-def-fr ...</anchspec> </PropertyAssignment> <!-- Note: it is possible to split the anchspecs into groups that collect the elements of the same type and still get the same result globally. <anchspec property-value = "english" type="name">Picasso Gaudi</anchspec> <anchspec property-value = "english" type="def">picasso-def-en ...</anchspec> <anchspec property-value = "french" type="name">Picasso Gaudi</anchspec> <anchspec property-value = "french" type="def">picasso-def-fr ...</anchspec> End of Note --> </MyTopicMap>

HyTime Architecture Document

<!DOCTYPE HYDOC PUBLIC "ISO/IEC 10744:1997//DTD AFDR Meta-DTD Hypermedia/Time-based Structuring Language (HyTime)//EN">
<HYDOC>
<VARLINK ANCHROLE="AGG" LINKTYPE="AGGLINK">
<ANCHSPEC ANCHROLE="MEMBERS">PIC1 PIC2 PIC3</ANCHSPEC>
<ANCHSPEC ANCHROLE="MEMBERS">PIC-OILS PIC-SKETCHES</ANCHSPEC>
</VARLINK>
<VARLINK ANCHROLE="AGG" LINKTYPE="AGGLINK">
<ANCHSPEC ANCHROLE="MEMBERS">GAUDI1 GAUDI2</ANCHSPEC>
</VARLINK>
<VARLINK ANCHROLE="AGG" LINKTYPE="AGGLINK">
<ANCHSPEC ANCHROLE="MEMBERS">PIC-OIL-1 PIC-OIL-2</ANCHSPEC>
</VARLINK>
<VARLINK ANCHROLE="AGG" LINKTYPE="AGGLINK">
<ANCHSPEC ANCHROLE="MEMBERS">PIC-SKETCH-1</ANCHSPEC>
</VARLINK>
<VARLINK>
<ANCHSPEC ANCHROLE="INFLUENCEE">Picasso</ANCHSPEC>
<ANCHSPEC ANCHROLE="INFLUENCER">gaudi</ANCHSPEC>
</VARLINK>
<HYBRID ID="PIC1">
</HYBRID>
<HYBRID ID="PIC-OIL-1">
</HYBRID>
<HYBRID ID="PIC-OIL-2">
</HYBRID>
<HYBRID ID="PIC-SKETCH-1">
</HYBRID>
<HYBRID ID="PIC2">
</HYBRID>
<HYBRID ID="PIC3">
</HYBRID>
<HYBRID ID="GAUDI1">
</HYBRID>
<HYBRID ID="GAUDI2">
</HYBRID>
</HYDOC>

TNM Architecture Document

<!DOCTYPE TOPICMAP SYSTEM "topicmaparch.dtd">
<TOPICMAP><TOPIC LOCTYPE="name-ref treeloc">
<TOPICMEMBER>PIC1 PIC2 PIC3</TOPICMEMBER>
<TOPICMEMBER>PIC-OILS PIC-SKETCHES</TOPICMEMBER>
</TOPIC>
<TOPIC LOCTYPE="name-ref treeloc">
<TOPICMEMBER>GAUDI1 GAUDI2</TOPICMEMBER>
</TOPIC>
<TOPIC LOCTYPE="name-ref treeloc">
<TOPICMEMBER>PIC-OIL-1 PIC-OIL-2</TOPICMEMBER>
</TOPIC>
<TOPIC LOCTYPE="name-ref treeloc">
<TOPICMEMBER>PIC-SKETCH-1</TOPICMEMBER>
</TOPIC>
<TOPIC-ASSOCIATION>
<ANCHSPEC ANCHROLE="INFLUENCEE">Picasso</ANCHSPEC>
<ANCHSPEC ANCHROLE="INFLUENCER">gaudi</ANCHSPEC>
</TOPIC-ASSOCIATION>
<TOPICMAP-BRIDGE ID="PIC1">Picasso</TOPICMAP-BRIDGE>
<TOPICMAP-BRIDGE ID="PIC-OIL-1">A painting</TOPICMAP-BRIDGE>
<TOPICMAP-BRIDGE ID="PIC-OIL-2">Another painting</TOPICMAP-BRIDGE>
<TOPICMAP-BRIDGE ID="PIC-SKETCH-1">A sketch</TOPICMAP-BRIDGE>
<TOPICMAP-BRIDGE ID="PIC2">Picasso</TOPICMAP-BRIDGE>
<TOPICMAP-BRIDGE ID="PIC3">Picasso</TOPICMAP-BRIDGE>
<TOPICMAP-BRIDGE ID="GAUDI1">Gaudi</TOPICMAP-BRIDGE>
<TOPICMAP-BRIDGE ID="GAUDI2">Gaudi</TOPICMAP-BRIDGE></TOPICMAP>

Example 1: Using XML Links to create a topic map for HTML resources

This example shows how three topics can be created and linked together using XML Links conforming to the Topic Navigation Map architecture to point to data stored in a set of HTML files. To make it easier to relate this example to the architecture the element names in the example are the same as the architectural form names. Filter property assignments are used to qualify relevance characteristics on the data sources.

The figure represents the three topics (SGML, XML, HTML) associated through a topic association to another topic, SGML uses. Each topic points to three aggregates of information objects: name, definition, and data source. The data sources contain URL to various Web sites.

For the sake of simplification, the filters used to qualify relevance of each data source are not represented on the figure.

Note. The element "Description" used in the document instance contains the name and definition for each topic. It is present here for the sake of clarity, but it is not imposed by the standard. In general, ISO 13250 does not impose any specific DTD and element containment, but only standardizes the attributes that are required for topic navigation information.

<?IS10744 arch
  name="hytime"
  arc-public-id="ISO/IEC 10744:1997//NOTATION Hypermedia/Time-based Structuring Language (HyTime)//EN"
  dtd-public-id="ISO/IEC 10744:1997//DTD AFDR Meta-DTD Hypermedia/Time-based Structuring Language (HyTime)//EN"
  form-att="HyTime"
  renamer-att="HyNames"
  doc-elem-form="HyDoc"
  bridge-form="hybrid"
  options="hylink clink agglink varlink ilink nmsploc"
>
<!-- Architectural DTD -->
<!ELEMENT TopicMap
  - -
  (Topic+, Description+, TopicAssociation*, Filters*)
>
<!ELEMENT Topic
  - O
  (TopicMember)+
  >
  <!ATTLIST Topic
      name
         CDATA
         #IMPLIED -- Constraint: Must not be specified if 
                     name-refs is specified. --
      name-refs   -- Referential  --
         CDATA
         #IMPLIED -- Constraint: Must not be specified if 
                     name is specified. --
      definition
         CDATA
         #IMPLIED -- Constraint: Must not be specified if 
                     def-refs is specified. --
      def-refs   -- Constraint: Must not be specified if 
                    definition is specified.  --
         CDATA
         #IMPLIED 
      loctype
         CDATA
         "name-refs IDLOC"
      valueref
         CDATA
         "name name-ref"
      linktype
         NAME
         #FIXED "agglink"
      HyTime
         NAME
         #FIXED "varlink"
      anchrole
         NAME
         #FIXED "agg"
  >
<!ELEMENT TopicMember
   - O
   (#PCDATA)*
>
<!ATTLIST TopicMember
   HyTime
     NAME
     #FIXED "anchspec"
   anchrole
     NAME
     #FIXED "members"
   loctype
     CDATA
     "#CONTENT IDLOC"
>
<!ELEMENT anchspec
  - -
  (#PCDATA)
>
<!ATTLIST anchspec
   anchrole
     NAME
     #REQUIRED
   loctype
     CDATA
     "#CONTENT IDLOC"
   HyTime
     NAME
     #FIXED "anchspec"
>

<!ELEMENT Topic-Association
  - -
  (anchspec+)
>
<!ATTLIST Topic-Association
  HyTime
    NAME
    #FIXED "varlink"
  linktype
    NAME
    #IMPLIED -- Default: element type name --
>

<!ELEMENT Topicmap-Bridge
  - -
  (#PCDATA | Topicmap-Bridge)*
>
<!ATTLIST Topicmap-Bridge
  ID
     ID
     #IMPLIED
>

<!ELEMENT Description (Name+, Definition*) >
<!ATTLIST Description
   id       ID    #IMPLIED
   mandator CDATA #IMPLIED -- attribute specific to this example --
   created  CDATA #IMPLIED -- date: format: YYYYMMDD : specific to this example --
>
<!ELEMENT Name (#PCDATA) >
<!ATTLIST Name
   id       ID    #REQUIRED
>
<!ELEMENT Definition (#PCDATA) >
<!ATTLIST Definition
   id       ID    #REQUIRED
>

<!ELEMENT TopicAssociation (Anchspec+) >
<!ATTLIST TopicAssociation
   TNM-class NAME #FIXED "TNM-TopicAssociation"
   id       ID    #IMPLIED
   xml:link (simple | extended)  extended #FIXED
>

<!ELEMENT Filters (FilterNames, Filter+ >

<!ELEMENT FilterNames (FilterName+) >
<!ATTLIST FilterNames
   id       ID    #IMPLIED
   mandator CDATA #IMPLIED
   created  CDATA #IMPLIED
>

<!ELEMENT FilterName (#PCDATA) >
<!ATTLIST FilterName
   id       ID    #REQUIRED
>
<!ELEMENT Filter (locator+) >
<!ATTLIST Filter
  xml:link (simple | extended)  extended  #FIXED
>
<!--  End of DTD -->


<!-- Start of Document Instance -->
<TopicMap>

<!-- Topics -->

<Topic
	
	id="SGML-topic"
	name-refs="SGML-N1 SGML-N2"
	 def-refs="SGML3 SGML4 SGML5">
	<TopicMember>
		http://www.ornl.gov/sgml/WG8/wg8home.htm 
		http://www.isgmlug.org
		http://www.sgmlopen.org/sgml/docs/goodies/goodies.htm
	</TopicMember>
</Topic>

<Topic 
	id="XML-topic" 
	name-ref="XML-N1 XML-N2" def-refs="XML-D1 XML-D2" 
>
	<TopicMember>
		http://www.w3.org/XML
		http://www.isgmlug.org
		http://www.sgmlopen.org/xml/docs/goodies/goodies.htm
	</TopicMember>
</Topic>

<Topic 
	id="HTML-topic"
	name-refs="HTML-N1 HTML-N2"
	def-refs="HTML-D1 HTML-D2"
>
	<TopicMember>
		http://www.w3.org/HTML
		http://www.echo.lu/oii/en/docstand.html#HTML
	</TopicMember>
 </Topic>

<Topic
	id="SGML-applications-topic"
	name-refs="SGML-APP-N1 SGML-APP-N2 SGML-APP-N3"
	def-refs="SGML-APP-D1"
>
</Topic>

<!-- Names and Definitions -->

    <!-- Version management specific information in element "Description" -->

<Description id="SGML" mandator="mb" created="19980501">
  	<Name id="SGML-N1">SGML</Name>
  	<Name id="SGML-N2">Standard Generalized Markup Language</Name>
  	<Name id="SGML-N3">ISO 8879</Name>
  <Definition id="SGML-D1">International standard for marking up electronic data</Definition>
  <Definition id="SGML-D2">ISO 8879:1986 <cite>Information Processing -
              Standard Generalized Markup Language (SGML)</cite></Definition>
 </Description>

 <Description id="XML" mandator="mb" created="19980501">
  	<Name id="XML-N1">XML</Name>
  	<Name id="XML-N2">Extensible Markup Language</Name>
  <Definition id="XML-D1">W3C standard for marking up electronic data for interchange over the Internet</Definition>
  <Definition id="XML-D2">W3C REC-xml-19980210 <cite>Extensible Markup Language (XML) 1.0</cite>
              (http://www.w3.org/TR/1998/REC-xml-19980210.html)</Definition>
 </Description>

 <Description id="HTML" mandator="mb" created="19980501">
  	<Name id="HTML-N1">HTML</Name>
  	<Name id="HTML-N2">HyperText Markup Language</Name>
  <Definition id="HTML-D1">W3C standard for marking up documents for delivery as part of the World Wide Web (W3)</Definition>
  <Definition id="HTML-D2">W3C REC-html40-971218 <cite>HTML 4.0 Specification</cite>
              (http://www.w3.org/TR/REC-html40)</Definition>
 </Description>

 <Description id="SGML-applications" mandator="mb" created="19980501">
  	<Name id="SGML-APP-N1">SGML Applications</Name>
  	<Name id="SGML-APP-N2">Applications of the Standard Generalized Markup Language</Name>
  	<Name id="SGML-APP-N3">Use of ISO 8879</Name>
  <Definition id="SGML-APP-D1">Use of International Standard 8879:1986 as basis for computer application</Definition>
 </Description>


<!-- Topic Association -->

<TopicAssociation id="SGML-uses">
  <TopicMember anchrole="container">SGML-applications-topic</TopicMember>
  <TopicMember anchrole="composed-of">SGML-topic XML-topic HTML-links</TopicMember>
</TopicAssociation>

<!-- Property Assignments -->
<!-- Filters are used for relevance weighting -->
<!-- role = 100 means "relevance weighting = 100%", etc. -->

<Filters>
<FilterNames id="RelevanceWeighting" mandator="mb" created="19980509">

<FilterName id="weighting-n">Relevance weighting</FilterName>
<!-- ... Other filter names when applicable ... -->

</FilterNames>

<Filter>

<TopicMember 
	anchrole=weighting-100
>
	SGML6 XML5 HTML5
</TopicMember>

<TopicMember
	anchrole=weighting-90
>
	SGML7 SGML8 XML6
</TopicMember>

<TopicMember
	anchrole=weighting-50
>
	XML7 HTML6
</TopicMember>

</Filter>

</Filters>
...
</TopicMap>

Example 2: HyTime-encoded Glossary and Thesaurus

Because XML locators can only identify a single Unique Resource Name (which could return a set, but normally returns a single object or a span) it will be more efficient to use HyTime variable links (varlink), anchor specifications (anchspec) and name space locations (nmsploc) to identify multiple data sources. This example shows the relationships between the categories (topics) that have been identified in a thesaurus and the definitions of the relevant concepts provided within a dictionary or glossary. Each concept consists of a term (the identifier of the concept) and a definition. For each category it is possible to identify equivalent terms, broader terms, narrower terms and other possibly related terms, and pointers to equivalent terms in French and German that are recorded in other thesauri.

Note: To help you to relate the example to the TNM and HyTime architectures each architectural element has had its TNM type recorded in a TNM-class attribute and its HyTime type recoded in a HyTime attribute (unless its element name is the same as the class name). However, not all relevant attributes are noted. For example, most of the anchspec elements also need multmem="list" to allow them to have multiple members.

Note: In practice all the HyTime and TNM attributes can be removed as they will form a fixed part of the DTD. The same may also be true for the nmsploc tags.

<!ELEMENT 
	Thesaurus - - 
	(Associations, Topics, Names, TopicMapDocumentation) 
>
<!ATTLIST
	Thesaurus
	TNM-class  NAME  hub
	HyTime     NAME  HyDoc
>

<!-- Containers for this specific example -->
<!ELEMENT Associations - - (category+) >
<!ELEMENT Topics - - (topic+) >
<!ELEMENT Names - - (concept+) >
<!ELEMENT TopicMapDocumentation - - (description+) >

<!ELEMENT category - - (category-title, equivalent-terms, broader-terms, narrower-terms, related-terms, french-equivalents, german-equivalents) >
<!ATTLIST category
   TNM-class NAME TopicAssociation
   HyTime    NAME varlink
   id        ID   #IMPLIED
>
<!ELEMENT category-title     - - (nmsploc+) >
<!ATTLIST category-title
   HyTime  NAME  anchspec
>
<!ELEMENT equivalent-terms   - - (nmsploc+) >
<!ATTLIST equivalent-terms
   HyTime  NAME  anchspec
>
<!ELEMENT broader-terms      - - (nmsploc+) >
<!ATTLIST broader-terms
   HyTime  NAME  anchspec
>
<!ELEMENT narrower-terms     - - (nmsploc+) >
<!ATTLIST narrower-terms
   HyTime  NAME  anchspec
>
<!ELEMENT related-terms      - - (nmsploc+) >
<!ATTLIST related-terms
   HyTime  NAME  anchspec
>
<!ELEMENT french-equivalents - - (nmsploc+) >
<!ATTLIST french-equivalents
   HyTime  NAME  anchspec
>
<!ELEMENT german-equivalents - - (nmsploc+) >
<!ATTLIST german-equivalents
   HyTime  NAME  anchspec
>
<!ELEMENT nmsploc            - - (#PCDATA) >
<!ATTLIST nmsploc
   HyTime  NAME  nmsploc
>
<!ELEMENT topic              - - (term, definition) >
<!ATTLIST topic
   TNM-class  NAME    Topic
   HyTime     NAME    varlink
   id         ID      #IMPLIED
>
<!ELEMENT term               - - (nmsploc+) >
<!ATTLIST term
   TNM-class NAME    NameLocator
   HyTime    NAME    anchspec
   id        ID      #IMPLIED
>
<!ELEMENT definition         - - (nmsploc+) >
<!ATTLIST definition
   HyTime    NAME    anchspec
   id        ID      #IMPLIED
>
<!ELEMENT concept            - - (#PCDATA) >
<!ATTLIST concept
   id        ID   #REQUIRED
>
<!ELEMENT description        - - (list | #PCDATA)* >
<!ATTLIST description
   id        ID   #REQUIRED
>
<!ELEMENT list               - - (item+) >
<!ELEMENT item               - - (#PCDATA) >

<!-- End of DTD -->


<!-- Start of Document Instance -->

<Thesaurus TNM-class="TNM-hub" HyTime="HyDoc">

<!-- Topic Associations -->

<Associations>
 <category TNM-class="TopicAssociation" HyTime="varlink" >
  <category-title HyTime="anchspec"><nmsploc>reality</nmsploc></category-title>
  <equivalent-terms HyTime="anchspec"><nmsploc>substantiality in-accordance-with-fact</nmsploc></equivalent-terms>
  <broader-terms HyTime="anchspec"><nmsploc>existence being</nmsploc></broader-terms>
  <narrower-terms HyTime="anchspec"><nmsploc>fact thing entity</nmsploc></narrower-terms>
  <related-terms HyTime="anchspec"><nmsploc>absoluteness factualness no-lie</nmsploc></related-terms>
  <french-equivalents HyTime="anchspec"><nmsploc>realite reel</nmsploc></french-equivalents>
  <german-equivalents HyTime="anchspec"><nmsploc>wirklichkeit realitat</nmsploc></german-equivalents>
 </category>
 ...

</Associations>
<!-- Topics -->
<!-- Pb with name-ref and definition. Def-ref doesn't work because
     definitions are in an external document (?)  -->

<Topics>

<topic id="topic-reality" name-ref="t1">
 <definition><nmsploc locsrc="ConciseOED">d1</nmsploc></definition>
</topic>

<topic id="topic-substantiality" name-ref="t2">
 <definition><nmsploc locsrc="ConciseOED">d2</nmsploc></definition>
</topic>

<topic id="topic-in-accordance-with-fact" name-ref="t3" mnemonic="InAccordanceWithFacts">
<!-- Where does the mnemonic go? -->
 <term TNM-class="TNM-NameLocator" >
 <definition><nmsploc locsrc="MB-Book">d3</nmsploc></definition>
</topic>

<topic id="topic-existence" name-ref="t4">
 <definition><nmsploc locsrc="ConciseOED">d4</nmsploc></definition>
</topic>

<topic id="topic-being" name-ref="t5">
 <definition><nmsploc locsrc="ConciseOED">d5</nmsploc></definition>
</topic>

<topic id="topic-factualness" name-ref="t6">
 <definition><nmsploc locsrc="ConciseOED">d6</nmsploc></definition>
</topic>

<topic id="realite" name-ref="t7">
 <definition><nmsploc locsrc="Larousse">d7</nmsploc></definition>
</topic>

<topic id="reel" name-ref="t8">
 <definition><nmsploc locsrc="Larousse">d8</nmsploc></definition>
</topic>

<topic id="wirklichkeit" name-ref="t9">
 <definition><nmsploc locsrc="GTh">d9</nmsploc></definition>
</topic>

<topic id="realitat" name-ref="t10">
 <definition><nmsploc locsrc="GTh">d10</nmsploc></definition>
</topic>

<topic id="category">
  <term TNM-class="Name"><nmsploc locsrc="http://www.publisher-x.com/thesauri/definitions.sgml">>
  <definition><nmsploc>category-def</nmsploc></definition>
</concept>

</Topics>

<!-- List of topic names -->
	<Names>
<concept id="t1">Reality</concept>
<concept id="t2">Substantiality</concept>
<concept id="t3">In accordance with facts</concept>
<concept id="t4">Existence</concept>
<concept id="t5">Being</concept>
<concept id="t6">Factualness</concept>
<concept id="t7">Réalité</concept>
<concept id="t8">Réel</concept>
<concept id="t9">Wirklichkeit</concept>
<concept id="t10">Realität</concept>
<concept id="thesaurus-category" >Category</concept>

</Names>
...




<TopicMapDocumentation>
<description id="Category-def">A category in this thesaurus consists of:
   <list>
    <item>a compulsory category-title, which is shown in the list of categories
    <item>one or more identifiers of equivalent terms
    <item>optionally, one or more identifiers of broader terms which can be deemed to encompass the term in the category title
    <item>optionally, one or more identifiers of terms that, whilst not exactly equivalent, can be considered to be related to the category title
    <item>optionally, one or more narrower terms which can be deemed to form a sub-catefory of the term in the category title.
   </list>
  </description>

</TopicMapDocumentation>
</Thesaurus>

<!-- External documents -->

<!-- 1. Concise OED -->

<ConciseOED>
...
 <definition id="d1">
   Property of being real; resemblance to original;
   what is real, what underlies appearances; existent thing
 </definition>
...
<definition id="d2">
   Having substance, actually existing, not illusory
 </definition>
...
<definition id="d4" source="ConciseOED">Being, existing
 </definition>
...
<definition id="d5" source="ConciseOED">
   Existence, constitution, nature, essence, anything that exists, a person
 </definition>
...
<definition id="d6" source="ConciseOED">
   The state of being factual
 </definition>

 ...
</ConciseOED>


<!-- 2. MB-Book -->

<MB-Book>
...
<def id="d3">
   That which agrees with well substantiated facts
 </def>
...
</MB-Book>

<!-- 3. Larousse -->

<def id="d7">Caractère de ce qui est réel, de ce qui existe effectivement.
</def>

<def id="d8">Ce qui existe effectivement, ce qui arrive en fait.
</def>

<!-- 4. German Thesaurus -->

<def id="d9">Die Wirklichkeit ...
</def>

<def id="d10">Die Realität ...
</def> 

Example 3: Mapping a Topic Map onto an existing architecture

The Text Encoding Intiative (TEI) has defined the following set of elements for defining taxonomies within TEI class declarations:

<!ELEMENT classDecl   - - (taxonomy+)>
<!ATTLIST classDecl       %a.global; >
<!ELEMENT taxonomy    - - (category+ |
                          ((bibl | biblStruct | biblFull), category*))>
<!ATTLIST taxonomy        %a.global; >
<!ELEMENT category    - - (catDesc, category*)>
<!ATTLIST category        %a.global; >
<!ELEMENT catDesc     - o (%phrase.seq; | textDesc) >
<!ATTLIST catDesc         %a.global; >
<!ELEMENT textDesc    - o (channel, constitution, derivation,
                           domain, factuality, interaction, preparedness,
                           purpose+) >
<!ATTLIST textDesc        %a.global;
                           %a.declarable; >
<!ELEMENT bibl        - o (#PCDATA | %m.phrase; | %m.biblPart;)*
<!ATTLIST bibl            %a.global;
                           %a.declarable; >

The example of the use of this construct given in the TEI Guidelines for Electronic Text Encoding and Interchange (TEI P3) is:

<taxonomy id=B>
 <bibl>Brown Corpus</bibl>
 <category id=B.A><catDesc>Press Reportage
   <category id=B.A1><catDesc>Daily</category>
   <category id=B.A2><catDesc>Sunday</category>
   <category id=B.A3><catDesc>National</category>
   <category id=B.A4><catDesc>Provincial</category>
   <category id=B.A5><catDesc>Political</category>
   <category id=B.A6><catDesc>Sports</category>
   ...
 </category>
 <category id=B.D><catDesc>Religion
   <category id=B.D1><catDesc>Books</category>
   <category id=B.D2><catDesc>Periodicals and tracts</category>
 </category>
 ...
</taxonomy>

To use this existing data as a topic navigation map you would need to:

  • define <taxonomy> as conforming to the TNM TopicAssociation architectural form
  • define <category> as conforming to the TNM Topic architectural form
  • define <bibl> as a conforming Description TNM anchor role
  • point to text containing <catDesc> with a conforming TNM Name Locator
  • identify the TEI document containing the class declaration as a TNM-hub document.
  • Note: To complete the definition for all the elements in the model of a TEI taxonomy you would also have to:

    The following example shows how the existing element definitions could be extended by defining a few extra parameter entities and then referencing these or adding TNM class identifiers to the existing attribute sets.

    <!ENTITY % TNM-TA  --Attributes used to define a Topic Navigation Map
                         Topic Association--
       'TNM-class   NAME        "TopicAssociation"
    
        id          -- Unique identifier for assignment --
                    -- ISO/IEC 10744 Clause: A.5.2 --
                    ID          #IMPLIED
                    -- Each TNM TopicAssociation can be assigned a unique
                       identifier to allow the association to be used as an
                       anchor for another topic association. As all associations
                       need not be anchors, the id is not required. -- '
    >
    <!ENTITY % TNM-Topic   --Attributes used to define a Topic Navigation Map
                             Topic--
       'TNM-class   NAME        "Topic"
    
        id          -- Unique identifier for assignment --
                    -- ISO/IEC 10744 Clause: A.5.2 --
                    ID          #IMPLIED
                    -- Each TNM  Topic should be assigned a unique
                       identifier to allow the topic to be used as an
                       anchor for a topic association. As all topics need
                       not be anchors, the id is not required. -- '
    >
    <!ENTITY % TNM-varlink
       'HyTime               NAME   varlink
        linktrav             -- Hyperlink traversal rules. One or more of:
                                A any traversal or departure (EID)
                                D departure after internal arrival
                                E traversal after external arrival
                                I traversal after internal arrival
                                N no traversal after internal arrival
                                P no internal arrival 
                                R return traversal after internal arrival --
                             -- Constraint: one per anchor or one for all --
                             (A|D|ED|EI|EN|EP|ER|ERD|I|ID|N|P|R|RD)
                             "A"
        listtrav             -- Traversal between members of list anchors.
                                A adjacent (both left and right) traversal
                                L left traversal
                                N no traversal
                                R right traversal
                                W wrapping traversal --
                             (N|L|R|A|LW|RW|AW)
                             "AW"
        emptyanch            -- Is empty anchor an error? --
                             -- Constraint: one per anchor or one for all --
                             -- Lextype("ERROR"|"NOTERROR") --
                             NAMES "noterror" '
    >
    <!ELEMENT classDecl   - - (taxonomy+)>
    <!ATTLIST classDecl       %a.global; >
    <!--Question: Is there any logical reason why classDecl should not be
                  declared as a TNM-hub even though it is not the
                  base document element for a TEI document?
                  At present TNM-hub is defined as the ArcDoc form
                  for the architecture, and ArcDoc is constrained to
                  be a document element (though it does not need to
                  be the base document element). This example raises the
                  question of hubs being only part of a larger entity,
                  as taxonomies are defined as part of a TEI corpora.-->
    <!ELEMENT taxonomy    - - (category+ |
                              ((bibl | biblStruct | biblFull), category*))>
    <!ATTLIST taxonomy        %a.global;
                              %TNM-TopicAssociation;
                              %TNM-varlink;
    >
    <!ELEMENT category    - - (catDesc, category*)>
    <!ATTLIST category        %a.global;
                              %TNM-Topic;
                              %TNM-varlink;
    >  
    <!ELEMENT catDesc     - o (%phrase.seq; | textDesc) >
    <!ATTLIST catDesc         %a.global;
                               TNM-class NAMES #FIXED "Description Name"
    >
    <!ELEMENT textDesc    - o (channel, constitution, derivation,
                               domain, factuality, interaction, preparedness,
                               purpose+) >
    <!ATTLIST textDesc        %a.global;
                               %a.declarable;
                               TNM-class NAME #FIXED "Description"
    >
    <!ELEMENT bibl        - o (#PCDATA | %m.phrase; | %m.biblPart;)*
    <!ATTLIST bibl            %a.global;
                               %a.declarable;
                               TNM-class NAMES #FIXED "Description Name"
    >

    Note: When, shortly, multiple attribute list declarations are permitted for each element then it will be possible to add these attributes directly using separate declarations, without having to modify the TEI declarations.

    Example 4: XML-coded Genealogical Table

    The following simplified example shows an XML-coded topic navigation map that links together a small subset of genealogical data:

    Note (Michel): This example needs to be further developed.

    <Genealogical-Information>
     <record-set>
    <record type="birth" id="BFC22-1">http://www.births.uk/Benfleet/1948|Bryan6851</record>
    <record type="birth" id="BFC22-2">http://www.births.uk/Shipley/1951|Oxley2342</record>
    <record type="marriage" id="BFC22-3">http://www.marriages.uk/Shipley/1978|Cert1637</record>
    <record type="birth" role="son" id="BFC22-4">http://www.births.uk/Cheltenham/1984|Bryan9242</record>
    <record type="birth" id="BFC22-5"          http://www.births.uk/Gloucester/1987|Bryan9429</record>
    </record-set>
    
     <relation-info  TNM-class="Topic" id="families">
      <pointer role="description" >families</pointer>
      <pointer role="husbands" >male-partners</pointer>
      <pointer role="wifes" >female-partners</pointer>
      <pointer role="children" >children</pointer>
    <!-- to do : fix address of following line -->
       <pointer role="occurrence" >below-in-doc</pointer>
     </relation-info>
    
    <relation-info id="male-partners"  TNM-Class="Topic">
      <pointer role="description" >male-partner</pointer>
      <pointer role="husband" >husband"
    </relation-info>
    
    <relation-info id="female-partners"  TNM-Class="Topic">
      <pointer role="description" >female-partner</pointer>
      <pointer role="wife" >wife"
               registry="Shipley, W. Yorkshire, England::1978::Marriages/>
      ...
     </relation-info>
    
    <relation-info id="children"  TNM-Class="Topic">
      <pointer role="description" >child</pointer>
      <pointer role="child" >BFC22-1</pointer>
      <!-- This line should be replaced by a pointer to the appropriate record (?) -->
      <pointer role ="registry">Benfleet, Essex, England::1948::Births</pointer>
      
      <pointer role="child" >BFC22-2</pointer>
               registry="Shipley, Yorkshire, England::1951::Births/>
      <pointer role="child" >BFC22-4</pointer>
               registry="Cheltenham, Glos, England::1984::Births/>
      <pointer role="child" >BFC22-5</pointer>
               registry="Gloucester, Glos, England::1987::Births</pointer>
      ...
    </topic>
    
    <description TNM-class="Description" id="families" TNM-filters="type lang"
                  TNM-mandator="Martin Bryan" TNM-created="19980401">
    <!-- filters should be put outside -->
    
      <name lang="en" type="normal">Family</title>
      <name lang="en" type="generic">Household</title>
      <name lang="en" type="generic">Partnership</title>
      <name lang="fr" type="normal">Famille</title>
      <name lang="fr" type="generic">Ménage</title>
      <name lang="fr" type="generic">Communauté</title>
    
      <definition TNM-class="Definition" lang="en"
                  source="http://www.myco.com/definitions/social.xml#Family">
        Two or more partners living together, with or without children
      </definition>
     </description>
     <description TNM-class="Description" id="male-partner"
                   TNM-filters="type lang">
      <name lang="en" type="normal">Husband</title>
      <name lang="en" type="generic">Spouse</title>
      <name lang="en" type="generic">Partner</title>
      <name lang="fr" type="normal">Mari</title>
      <name lang="fr" type="generic">Époux</title>
      <name lang="fr" type="generic">Partenaire</title>
      <definition TNM-class="Definition" lang="en">
       Male partner of formal marriage
      </definition>
     </description>
     <description TNM-class="Description" id="female-partner"
                  TNM-filters="type lang">
      <name lang="en" type="normal">Wife</title>
      <name lang="en" type="generic">Spouse</title>
      <name lang="en" type="generic">Partner</title>
      <name lang="en:cockney" type="slang">Trouble and strife</title>
      <name lang="fr" type="normal">Femme</title>
      <name lang="fr" type="generic">Épouse</title>
      <name lang="fr" type="generic">Partenaire</title>
      <definition TNM-class="Definition" lang="en">
       Female partner of formal marriage
      </definition>
     </description>
     <description TNM-class="Description" id="father"
                  TNM-filters="type lang">
      <name lang="en" type="normal">Father</title>
      <name lang="en" type="slang">Dad</title>
      <name lang="en" type="snob">Pater</title>
      <name lang="fr" type="normal">Père</title>
      <name lang="fr" type="slang">Papa</title>
      <definition TNM-class="Definition" lang="en">
       Biological father of child
      </definition>
     </description>
     <description TNM-class="Description" id="mother"
                  TNM-filters="type lang">
      <name lang="en" type="normal">Mother</title>
      <name lang="en" type="slang">Mum</title>
      <name lang="en" type="snob">Mater</title>
      <name lang="fr" type="normal">Mère</title>
      <name lang="fr" type="slang">Maman</title>
      <definition TNM-class="Definition" lang="en">
       Biological mother of child
      </definition>
     </description>
     <description TNM-class="Description" id="son"
                  TNM-filters="type lang">
      <name lang="en" type="normal">Son</title>
      <name lang="en" type="generic">Child</title>
      <name lang="fr" type="normal">Fils</title>
      <name lang="fr" type="generic">Enfant</title>
      <definition TNM-class="Definition" lang="en">
       Male child of mother and (possibly unidentified) father
      </definition>
     </description>
     <description TNM-class="Description" id="brother"
                  TNM-filters="type lang">
      <name lang="en" type="normal">Brother</title>
      <name lang="en" type="slang">Bro</title>
      <name lang="fr" type="normal">Frère</title>
      <name lang="fr" type="slang">Frangin</title>
      <definition TNM-class="Definition" lang="en">
       Male sibling
      </definition>
     </description>
     <description TNM-class="Description" id="daughter"
                  TNM-filters="type lang">
      <name lang="en" type="normal">Daughter</title>
      <name lang="en" type="generic">Child</title>
      <name lang="fr" type="normal">Fille</title>
      <name lang="fr" type="generic">Enfant</title>
      <definition TNM-class="Definition" lang="en">
       Female child of mother and (possibly unidentified) father
      </definition>
     </description>
     <description TNM-class="Description" id="sister"
                  TNM-filters="type lang">
      <name lang="en" type="normal">Sister</title>
      <name lang="en" type="slang">Sis</title>
      <name lang="fr" type="normal">Soeur</title>
      <name lang="fr" type="slang">Frangine</title>
      <definition TNM-class="Definition" lang="en">
       Female sibling
      </definition>
     </description>
     <description TNM-class="Description" id="child"
                  TNM-filters="type lang">
      <name lang="en" type="generic">Child</title>
      <name lang="en" type="normal">Son</title>
      <name lang="en" type="normal">Daughter</title>
      <name lang="fr" type="normal">Enfant</title>
      <name lang="fr" type="normal">Fils</title>
      <name lang="fr" type="normal">Fille</title>
      <definition TNM-class="Definition" lang="en">
       Child of mother and (possibly unidentified) father
      </definition>
     </description>
     <relations  id="BFC22-1relations"
                TNM-class="TopicAssociation">
      <child >BFC22-1</child>
      <mother-of >BFS1-2</mother-of>
      <father-of >BFS1-1</father-of>
      <brother-of >BFS1-5</brother-of>
      <son-of >BFC22-4</son-of>
      <daughter-of >BFC22-5</daughter-of>
     </relations>
     <relations  id="BFC22-2relations"
                TNM-class="LocationAssociation">
      <child >BFC22-2" description="child"/>
      <mother-of >OFS2-2" description="mother"/>
      <father-of >OFS2-1" description="father"/>
      <sister-of >OFS2-4" description="sister"/>
      <son-of >BFC22-4" description="son"/>
      <daughter-of >BFC22-5" description="daughter"/>
     </relations>
     <relations  id="BFC22-4relations"
                TNM-class="LocationAssociation">
      <child >BFC22-4" description="son"/>
      <mother-of >BFC22-2" description="mother"/>
      <father-of >BFC22-1" description="father"/>
      <brother-of >BFC22-5" description="brother"/>
     </relations>
     <relations  id="BFC22-4relations"
                TNM-class="LocationAssociation">
      <child >BFC22-5" description="daughter"/>
      <mother-of >BFC22-2" description="mother"/>
      <father-of >BFC22-1" description="father"/>
      <sister-of >BFC22-4" description="sister"/>
     </relations>
     <relations  id="BFC22marriage"
                 TNM-class="TopicAssociation">
      <certificate >BFC22-3</certificate>
      <husband >BFC22-1</husband>
      <wife >BFC22-2<wife/>
     </relations>
    </Genealogical-Information>

    Note: In practice most of the attributes beginging xml: and TNM- would not appear in the document instance but would be defined once in the formal document type definition. Their presence here is simply to allow the relationships between the component parts of the message to be clearly indicated in the example.

    Example 5: Using different types of HyTime Links

    This example shows how HyTime links other than the varlink form used as the basis for XML Links can be used as part of a Topic Navigation Map. Unless otherwise specified the links are defined in the generic hyperlink format (HyLink).

    The example is also designed to show how different topic maps can be interconnected. Three separate topic maps are defined, each of which shows how books and articles relating to computing will be classified under one of the standard library classification schemes, the Universal Decimal Classification (UDC), the Dewey Decimal Classification (DDC) and the Library of Congress Classification Scheme (LCC). A single set of topic associations is defined at the end of the example to indicate the relationships between the classification schemes.

    <Catalogue TNM-class="TNM-hub">
    
    <Classification level=0 id="UDC-base">
    	<Name id="UDC-name">Universal Decimal Classification</Name>
    	<Definition id="UDC-def">BS 1000M: <cite>International Medium Edition of the Universal Decimal Classification</cite></Definition>
    	<SubClassifications>UDC-0 UDC-1 UDC-2 UDC-3 UDC-4 UDC-5 UDC-6 UDC;7 UDC-8 UDC-9</SubClassifications>
    </Classification>
     ...
    
    <Classification level=1 id="UDC-5">
    	<Name id="UDC5-name">5 Mathematics and Natural Sciences (inc. Chemistry, Biology, Computing)</Name>
    	<Definition id="UDC5-def">Information related to mathematics and scientific subjects</Definition>
    	<SubClassifications>UDC-Mathematics</SubClassifications>
     </Classification>
     ...
    
    <Classification level=2 id="UDC-Mathematics">
    	<Name id="UDC-Mathematics-name">Mathematics</Name>
      	<Definition id="UDC-Mathematics-def">The sciences used for calculation</Definition>
    	<SubClassifications>... UDC-Computing ... </SubClassifications>
    
     </Classification>
     ...
    <Classification level=3 id="UDC-Computing">
    	<Name id="UDC-Computing-name">Computing</Name>
      	<Definition id="UDC-Computing-def">The development and use of electronic computers</Definition>
     </Classification>
    
    </ClassificationScheme>
    
    <ClassificationScheme id="DeweyDecimal">
     <Classification level=0 id="Dewey">
    	<Name id="Dewey-desc-name">Dewey Decimal Classification</Name>
      	<Definition>A complete listing of classifications can be found at
                  http://www.tnrdlib.bc.ca/dewey.html</Definition>
    	<SubClassifications>Dewey-000 Dewey-100 Dewey-200 Dewey-300 Dewey-400
                          Dewey-500 Dewey-600 Dewey-700 Dewey-800 Dewey-900</SubClassifications>
    
    </Classification>
    
     <Classification level=1 id="Dewey-000">
    	<Name id="Dewey-000-name">Generalities</Name>
      	<Definition id="Dewey-000-def">Subjects with a wide range of application</Definition>
    	<SubClassifications>Dewey-001 Dewey-002 Dewey-003 Dewey-004
                          Dewey-005 Dewey-006 Dewey-007 Dewey-008 Dewey-009</SubClassifications>
    
    </Classification>
    
     ...
     <Classification level=2 id="Dewey-004">
    	<Name id="Dewey-004-name">Data processing, Computer science</Name>
      	<Definition id="Dewey-004-def">Electronic proceessing of data and scientific theories applying thereto</Definition>
    	<SubClassifications>Dewey-DP Dewey-CS</SubClassifications>
    
     </Classification>
    
     <Classification level=2 id="Dewey-005">
    	<Name id="Dewey-005-name">Computer programming, programs, data</Name>
      	<Definition id="Dewey-005-def">Writing of computer programs to process data, and information on data types</Definition>
    	<SubClassifications>Dewey-CP Dewey-Programs Dewey-Data</SubClassifications>
    
     </Classification>
    
     <Classification level=2 id="Dewey-006">
    	<Name id="Dewey-006-name">Special computer methods</Name>
      	<Definition id="Dewey-006-def">Information relating to computers not categorized under
       Dewey classifications 004 and 005
     </Description ></Definition>
    	<SubClassifications>Dewey-SCM</SubClassifications>
    
     </Classification>
     ...
    </ClassificationScheme>
    
    
    
    <ClassificationScheme id="LCC">
    
     <Classification level=0 id="LCC-base">
    	<Name id="LCC-name">Library of Congress Classification Scheme</Name>
      	<Definition id="LCC-desc" ><cite>Outline of the Library of Congress Classification</cite></Definition>
    	<SubClassifications>LCC-A LCC-B LCC-C LCC-D LCC-E LCC-F LCC-G LCC-H
                          LCC-J LCC-K LCC-L LCC-M LCC-N
                          LCC-P LCC-Q LCC-R LCC-S LCC-T LCC-U LCC-V LCC-Z</SubClassifications>
    
     </Classification>
    
     ...
     <Classification level=1 id="LCC-Q">
    	<Name id="LCC-Q-name">Q Science</Name>
      	<Definition id="LCC-Q-def">Information related to scientific subjects</Definition>
    	<SubClassifications>... LCC-Mathematics ... LCC-GeneralSciences</SubClassifications>
    
     </Classification>
     ...
     <Classification level=1 id="LCC-T">
    	<Name id="LCC-T-name>T Technology</Name>
      	<Definition id="LCC-T-def>Information related to technical subjects</Definition>
    	<SubClassifications>... LCC-Electronics ... </SubClassifications>
    
     </Classification>
    
     ...
     <Classification level=1 id="LCC-Z">
    	<Name id="LCC-Z-name">Z Library Sciences</Name>
      	<Definition id="LCC-Z-def">Information related to libraries</Definition>
    	<SubClassifications>... LCC-InformationResources ... </SubClassifications>
    
     </Classification>
    
     ...
     <Classification level=2 id="LCC-Mathematics">
    	<Name id="LCC-Mathematics-name">Mathematics</Name>
      	<Definition id="LCC-Mathematics-def">The sciences used for calculation</Definition>
    	<SubClassifications>... LCC-ElectronicComputers LCC-ComputerScience
                              LCC-ComputerSoftware ... </SubClassifications>
    
     </Classification>
    
     ...
     <Classification level=3 id="LCC-ElectronicComputers">
    	<Name id="LCC-Electronic-Computers-name">Electronic Computers</Name>
      	<Definition id="LCC-Electronic-Computers-def">The development and use of electronic computers</Definition>
     </Classification>
    
     ...
     <Classification level=3 id="LCC-ComputerScience">
    	<Name id="LCC-Computer-Sciename">Computer Science</Name>
      	<Definition id="LCC-Computer-Science">Scientific theories related to the development and use of
                  electronic computers</Definition>
     </Classification>
    
     ...
     <Classification level=3 id="LCC-ComputerSoftware">
    	<Name id="LCC-Computer-Software-name">Computer Software</Name>
      	<Definition id="LCC-Computer-Software-def">Programs for the control of electronic computers</Definition>
     </Classification>
    
     ...
     <Classification level=2 id="LCC-GeneralSciences">
    	<Name id="LCC-General-Sciences-name">General Sciences</Name>
      	<Definition id="LCC-General-Sciences-def">Sciences nor covered in other categories</Definition>
    	<SubClassifications>... LCC-Cybernetics ... </SubClassifications>
    
     </Classification>
    
     ...
     <Classification level=3 id="LCC-Cybernetics">
    	<Name id="LCC-Cybernetics-name">Cybernetics</Name>
      	<Definition id="LCC-Cybernetics-def">Electronic process control</Definition>
    	<SubClassifications>... LCC-InformationTheory ... </SubClassifications>
    
     </Classification>
    
     ...
     <Classification level=4 id="LCC-InformationTheory">
    	<Name id="LCC-Information-Theory-name">Information Theory</Name>
      	<Definition id="LCC-Information-Theory-def">Scientifically provable theories relating to the control and use of
                  information</Definition>
     </Classification>
    
     ...
     <Classification level=2 id="LCC-Electronics">
    	<Name id="LCC-Electronics-name">Electronics</Name>
      	<Definition id="LCC-Electronics-def">Use of electronic signals</Definition>
    	<SubClassifications>... LCC-ComputerHardware ... </SubClassifications>
    
     </Classification>
    
     ...
     <Classification level=3 id="LCC-ComputerHardware">
    	<Name id="LCC-Computer-Hardware-name">Computer Hardware</Name>
      	<Definition id="LCC-Computer-Hardware-def">Electronic components used for commputing</Definition>
     </Classification>
    
     ...
     <Classification level=2 id="LCC-InformationResources">
    	<Name id="LCC-Information-Resources-name">Information Resources</Name>
      	<Definition id="LCC-Information-Resources-def">Places from which information can be obtained</Definition>
    	<SubClassifications>... LCC-InformationSuperhighway
                              LCC-ComputerNetworkResources
                              LCC-Databases ... </SubClassifications>
    
     </Classification>
    
     ...
     <Classification level=3 id="LCC-InformationSuperhighway">
    	<Name id="LCC-Information-Superhighway-name">Information Superhighway</Name>
      	<Definition id="LCC-Information-Superhighway-def">Highway used to interconnect computer networks for the purposes of
                  information dissemination</Definition>
     </Classification>
    
     ...
     <Classification level=3 id="LCC-ComputerNetworkResources">
    	<Name id="LCC-Computer-Network-Resources-name">Computer Network Resources</Name>
      	<Definition id="LCC-Computer-Network-Resources-def">Interconnected computer networks used for information dissemination</Definition>
     </Classification>
    
     ...
     <Classification level=3 id="LCC-Databases">
    	<Name id="LCC-Databases-name">Databases</Name>
      	<Definition id="LCC-Databases-def">Electronic stores of data organized into searchable records</Definition>
     </Classification>
    
     ...
    </ClassificationScheme>
    
    <ClassificationAssociation>
    <name>ComputingInfo-name
    	<Definition>Computing-Info-def
    <UDC>UDC-Computing
    <Dewey>Dewey-004 Dewey-005 Dewey-006
    <LCC>LCC-ElectronicComputers LCC-ComputerScience LCC-ComputerSoftware
          LCC-InformationTheory LCC-ComputerHardware LCC-InformationSuperhighway
          LCC-ComputerNetworkResources LCC-Databases>
    </ClassificationAssociation>
    <Description >
     	<Name id="ComputingInfo-name>ComputingInfo"
     	<Definition id="ComputingInfo-def">Information on the use of computers
    </Description>

    Example 6: A Library Stock Catalogue

    This example shows how a library catalogue could be generated by adding local extensions to a standardized classification scheme (UDC) and then linking books, articles and locally-produced theses to relevant classifications.

    <!-- UDC is considered a fixed classification system organized as a 
    tree structure. Therefore, each topic has a subclassification anchrole
    which is inherent in its definition. -->
    
    <!-- Document 1. UDC Classification Topic Map -->
    <UDC-Classification >
     <Classification level=0 id="UDC-base">
    	<Name>Universal Decimal Classification</Name>
      	<Definition>BS 1000M: <cite>International Medium Edition of the Universal Decimal Classification</cite></Definition>
    	<SubClassifications>UDC-0 UDC-1 UDC-2 UDC-3 UDC-4 UDC-5 UDC-6 UDC-7 UDC-8 UDC-9</SubClassifications>
    </Classification>
    
    ...
    <Classification level=1 id="UDC-5" >
      	<Name id="UDC5-name">5 Mathematics and Natural Sciences (inc. Chemistry, Biology, Computing)</Name>
      	<Definition>UDC5-def</definition>
      	<SubClassifications>UDC-Mathematics ... </SubClassifications>
    </Classification>
    ....
    <Def id="UDC5-def">Information related to mathematics and scientific subjects</Definition>
     ...
     <Classification level=2 id="UDC-Mathematics">
      	<Name id="UDC-Mathematics-name">Mathematics</Name>
      	<Definition id="UDC-Mathematics-def">The sciences used for calculation</Definition>
     	<SubClassifications>... UDC-Computing ...>
     </Classification>
     ...
     <Classification level=3 id="UDC-Computing"
      	<Name id="UDC-Computing-name">Computing</Name>
    	<Definition id="UDC-Computing-def1">The development and use of electronic computers</Definition>
    </Classification>
    
    </UDC-Classification>
    
    <!--  ------------------------------------------------------ -->
    <!-- Document 2 -->
    <Local-Library-Classification>
    
    
    <Link-to-UDC
      anchrole = "UDC-classification Explanation Local-Subclassifications"
      <UDC-Classification>UDC-Computing
      <Explanation>Local-Computing
      <Local-subclassifications>Local-ADA Local-BASIC Local-C Local-Databases
                          Local-HTML Local-Java Local-Pascal Local-SGML
                          Local-Spreadsheets Local-XML Local-General
    >
    <Explanation id="Local-Computing">Local subclassifications to make computing subjects accessible to staff and students</Explanation>
    </Link-to-UDC>
    
     <Classification level=3 id="Local-ADA">
    	<Name id="Local-ADA-sources-name">ADA</Name>
      	<Definition id="Local-ADA-sources-def">Information relating to the ADA programming language</Definition>
    	<SubClassifications>Local-ADA-books Local-ADA-articles Local-ADA-theses
    </Local-Library-Classification>
      </Classification>
    
    <!-- ------------------------------------------ -->
    <!-- Document 3. Stacks -->
    
    <Local-Stacks>
    
     <Shelf-area id="Local-ADA-books" position="Row12 Stack3 RowB">
      <SetName>Books on use of ADA programming language</SetName>
      <Book AcquisitionNo="a4114"><author>Bloggs, J.</author><title>ADA for dummies</title><Book>
      <Book AcquisitionNo="a5123"><author>Smith, J.</author><title>Advanced ADA</title><Book>
      ...
     </Shelf-area>
    
     <!-- Normally ordered by name of publication -->
     <Articles id="Local-ADA-articles">
      <Article Journal="ADAToday" Issue="Vol.13 No.3" Pages="23-25"
               position="Row22 Stack4 RowC Box15">
       <author>Bryan, M</author>
       <author>Biezunski, M</author>
       <title>Topic Navigation in Computer Programs</title>
      </Article>
      ...
     </Articles>
    
     <!-- Normally ordered by date of presentations -->
     <Theses id="Local-ADA-theses">
      <Thesis Department="Computing" Accepted="19970715"
               position="Row1 Stack3 RowA"
               author="Bryan. M"
               title="Using ADA to create and manage Topic Navigation Maps">
      </Thesis>
      ...
     </Theses>
     ...
    
    </Local-Stacks>


    Typographic conventions used in the examples are:


    Example 1. One Topic Instance, using HyTime Location Addressing

    This example declares that "Venice" is an instance of a topic belonging to the type "city".

    This topic is a link that has two anchor roles: "title", and "description".

    The title anchor points to an element called title, which is the title for the element. It contains the "name" of the topic, i.e. "Venice".

    The description anchor points to two elements identified by the unique identifiers "id3" and "id4" which are located within a document whose entity name is "doc1", and to an element identified by the unique identifier "id5" located within a document whose entity name is "doc2".

    Note: The following addressing markup is not optimized for saving space. Many alternatives are possible. It shows the syntax of addressing aggregates in multiple documents using HyTime 1997 architectural forms.

    Note that this international standard provides a common representation for linking semantics. The syntax of addressing is left to the application. The DTD used to represent the topic map information is application-specific, and is only given here as an example. What matters for ISO 13250 conformance is the use of TNM architectural forms, but not the DTD itself.

    Document Instance

    <Topicmap>
    <TopicTitle id=id1>Venice</TopicTitle>
    <City id=Ven>
      <TitleAnchor mnemonic=Venice id=tit1>
       <mixedloc>
        <nmsploc>id1</nmsploc>
       </mixedloc>
      </TitleAnchor>
      <DescriptionAnchor>
       <mixedloc>
        <nmsploc locsrc=doc1>id3 id4</nmsploc>
        <nmsploc locsrc=doc2>id5</nmsploc>
       </mixedloc>
      </DescriptionAnchor>
    </City>
    </Topicmap>

    DTD

    <!DOCTYPE TopicMap [
    
    <!ELEMENT TopicMap - - ( (TopicTitle*, City) | (TopicTitle*, Country) )+ >
    
    <!-- Topic Names -->
    
    <!ELEMENT TopicTitle - - (#PCDATA) >
    <!ATTLIST TopicTitle
    	id	ID	#REQUIRED
    >
    
    <!-- Topics -->
    
    <!ELEMENT City - - (TitleAnchor,DescriptionAnchor?) >
    <!ATTLIST City
    	tnm	NAME	TNM-Topic
    	HyTime	NAME	varlink
    	id	ID	#IMPLIED
    >
    <!ELEMENT Country - - (TitleAnchor,MentionAnchor?, HistoryAnchor?) >
    <!ATTLIST Country
    	tnm	NAME	TNM-Topic
    	HyTime	NAME	varlink
    	id	ID	#IMPLIED
    >
    
    <!-- Anchors -->
    
    <!ELEMENT TitleAnchor - - (mixedloc) >
    <!ATTLIST TitleAnchor
    	tnm	 NAME	 TNM-NameLocator	#FIXED
    	mnemonic CDATA   #IMPLIED
    	id	 ID	 #IMPLIED
    	HyTime	 NAME	 anchspec
    >
    <!ELEMENT DescriptionAnchor - - (mixedloc) >
    <!ATTLIST DescriptionAnchor
    	tnm	 NAME	TNM-Anchspec
    	HyTime	 NAME	anchspec
    	anchrole NAME	 Description
    >
    <!ELEMENT MentionAnchor - - (mixedloc) >
    <!ATTLIST MentionAnchor
    	tnm	 NAME	TNM-Anchspec
    	HyTime	 NAME	anchspec
    	anchrole NAME	 Mention
    >
    <!ELEMENT HistoryAnchor - - (mixedloc) >
    <!ATTLIST HistoryAnchor
    	tnm	 NAME	TNM-Anchspec
    	HyTime	 NAME	anchspec
    	anchrole NAME	 History
    >
    
    <!-- Addresses -->
    
    <!ELEMENT mixedloc - - (nmsploc)+ >
    <!ATTLIST mixedloc
    	HyTime	NAME	mixedloc
    >
    	
    <!ELEMENT nmsploc - - (#PCDATA) >
    <!ATTLIST nmsploc
    	HyTime	NAME	nmsploc
    	locsrc	CDATA	#IMPLIED
    >
    ]>

    Example 2. Same topic with different address syntax.

    This example uses the TEI Xpointers syntax to address elements in external documents.

    Document Instance

    <TopicMap>
    <TopicTitle id=id1>Venice</TopicTitle>
    <City id=Ven>
      <TitleAnchor mnemonic=Venice id=tit1>
        <ptr target=id1>
      </TitleAnchor>
      <DescriptionAnchor>
        <xptr doc=doc1 from='id (id3)'>
        <xptr doc=doc1 from='id (id4)'>
        <xptr doc=doc2 from='id (id5)'>
      </DescriptionAnchor>
    </City>
    </TopicMap>

    DTD

    <!DOCTYPE TopicMap [
    
    <!ELEMENT TopicMap - - ( (TopicTitle*, City) | (TopicTitle*, Country) )+ >
    
    <!ELEMENT TopicTitle - - (#PCDATA) >
    <!ATTLIST TopicTitle
    	id	ID	#REQUIRED
    >
    <!ELEMENT City - - (TitleAnchor, DescriptionAnchor?) >
    <!ATTLIST City
    	tnm	NAME	TNM-Topic
    	HyTime	NAME	varlink
    	id	ID	#IMPLIED
    >
    <!ELEMENT Country - - (TitleAnchor, MentionAnchor?, History?) >
    <!ATTLIST Country
    	tnm	NAME	TNM-Topic
    	HyTime	NAME	varlink
    	id	ID	#IMPLIED
    >
    
    <!-- Anchors -->
    
    <!ELEMENT TitleAnchor - - (ptr)+ >
    <!ATTLIST TitleAnchor
    	tnm	 NAME	TNM-NameLocator
    	HyTime	 NAME	anchspec
    	mnemonic CDATA	 #IMPLIED
    >
    <!ELEMENT DescriptionAnchor - - (xptr)+ >
    <!ATTLIST DescriptionAnchor
    	tnm	NAME	TNM-Anchspec
    	HyTime	NAME	anchspec
    >
    <!ELEMENT MentionAnchor - - (xptr) >
    <!ATTLIST MentionAnchor
    	tnm	NAME	TNM-Anchspec
    	HyTime	NAME	anchspec
    >
    <!ELEMENT HistoryAnchor - - (xptr) >
    <!ATTLIST HistoryAnchor
    	tnm	NAME	TNM-Anchspec
    	HyTime	NAME	anchspec
    >
    <!-- TEI DTD -->
    <!-- ptr (pointer) used for titles, required here to be in the
            topic map document -->
    <!-- xptr (extended pointer) used for addressing anchors in
            external documents -->
    
    <!ELEMENT ptr - O EMPTY>
    
    <!ATTLIST ptr 
         ana IDREFS #IMPLIED 
         corresp IDREFS #IMPLIED 
         next IDREF #IMPLIED 
         prev IDREF #IMPLIED 
         id ID #IMPLIED 
         n CDATA #IMPLIED 
         lang IDREF #IMPLIED 
         rend CDATA #IMPLIED 
         type CDATA #IMPLIED 
         resp CDATA #IMPLIED 
         crdate CDATA #IMPLIED 
         targType NAMES #IMPLIED 
         targOrder (Y | N | U) "U" 
         evaluate (all | one | none) #IMPLIED 
         target IDREFS #REQUIRED 
         TEIform CDATA "ptr" >
    
    
    <!ELEMENT xptr - O EMPTY>
    <!ATTLIST xptr 
         ana IDREFS #IMPLIED 
         corresp IDREFS #IMPLIED 
         next IDREF #IMPLIED 
         prev IDREF #IMPLIED 
         id ID #IMPLIED 
         n CDATA #IMPLIED 
         lang IDREF #IMPLIED 
         rend CDATA #IMPLIED 
         type CDATA #IMPLIED 
         resp CDATA #IMPLIED 
         crdate CDATA #IMPLIED 
         targType NAMES #IMPLIED 
         targOrder (Y | N | U) "U" 
         evaluate (all | one | none) #IMPLIED 
         doc ENTITY #IMPLIED 
         from CDATA "ROOT" 
         to CDATA "DITTO" 
         TEIform CDATA "xptr" 
    >
    ]>

    Note: The examples 1 and 2 are identical for the semantic properties applied to the topic, but they use a different addressing mechanism. The two topic map documents are interchangeable from the perspective of ISO 13250. Interchange may become operational if a mapping mechanism exists between the two forms of addressing. It is outside the scope of this international standard to provide mechanisms for address interchangeability, especially because there are a number of topic map applications which address information stored in proprietary formats. However, interchange is greatly facilitated by the fact that linking semantics is kept separate from addressing semantics.

    Example 3. Topic with two titles

    In this example, the topic "Venice" has two titles: "Venice" and "Venezia".

    3.1 Two title anchors

    <TopicTitle id=id1>Venice</TopicTitle>
    <TopicTitle id=id2>Venezia</TopicTitle>
    <City id=Ven>
      <TitleAnchor mnemonic=Venice id=tit1><nmsploc>id1</nmsploc></TitleAnchor>
      <TitleAnchor mnemonic=Venezia id=tit2><nmsploc>id2</nmsploc></TitleAnchor>
      <DescriptionAnchor>
        <mixedloc>
          <nmsploc locsrc=doc1>id3 id4</nmsploc>
          <nmsploc locsrc=doc2>id5</nmsploc>
        </mixedloc>
      </DescriptionAnchor>
    </city>

    Editor's note : In this example and the following, insert DTDs.

    3.2 Three topics

    This example extends the example 3.1 to three topic declarations.

    In this example, the optional attribute mnemonic is not present.

    Note that Venice has occurrences (descriptions) in some documents, while "Rome" and "Italy" have no occurrences. They are still fully valid topics.

    <TopicTitle id=id1>Venice</TopicTitle>
    <TopicTitle id=id2>Venezia</TopicTitle>
    <City id=Ven>
      <TitleAnchor id=tit1><nmsploc>id1</nmsploc></TopicTitle>
      <TitleAnchor id=tit2><nmsploc>id2</nmsploc></TopicTitle>
      <DescriptionAnchor>
        <mixedloc>
         <nmsploc locsrc=doc1>id3 id4</nmsploc>
         <nmsploc locsrc=doc2>id5</nmsploc>
        </mixedloc>
      </DescriptionAnchor>
    </City>
    
    <TopicTitle id=id6>Rome</TopicTitle>
    <TopicTitle id=id7>Roma</TopicTitle>
    <City id=Rom>
      <TitleAnchor id=tit6><nmsploc>id6</nmsploc></TitleAnchor>
      <TitleAnchor id=tit7><nmsploc>id7</nmsploc></TitleAnchor>
    </City>
    <TopicTitle id=id8>Italy</TopicTitle>
    <TopicTitle id=id9>Italia</TopicTitle>
    <Country id=It>
     <TitleAnchor id=tit8><nmsploc>id8</nmsploc></TitleAnchor>
     <TitleAnchor id=tit9><nmsploc>id9</nmsploc></TitleAnchor>
    </Country>

    4. Topic association Example

    This examples expresses the fact that Rome and Venice are both in Italy.

    In TNM terms, it translates as: The topic "Italy" is related to the topics "Rome" and "Venice" through a topic association whose semantics is "containment".

    <Containment>
    <Container><nmsploc>It</nmsploc></Container>
    <Contained><nmsploc>Rom Ven</nmsploc></Contained>
    </Containment>

    Note: If the DTD does not allow aggregates into topic associations anchroles, i.e. is limited to one-to-one associations, the same example could be written instead: Italy contains Venice and Italy contains Rome:

    
    <Containment>
    <Container><nmsploc>It</nmsploc></Container>
    <Contained><nmsploc>Ven</nmsploc></Contained>
    </Containment>
    
    <Containment>
    <Container><nmsploc>It</nmsploc></Container>
    <Contained><nmsploc>Rom</nmsploc></Contained>
    </Containment>

    5. Language property assignment

    In the example 3.2, topics have alternate titles. These titles (whose anchor specs are identified by tit1 and tit2) happen to be in different languages. Furthermore, if the element (e.g. a section) which is identified by id3 in doc2 is in English, while the element identified by id4 in doc2 is in Italian, it is possible to describe these properties using a TNM-PropertyAssignment hyperlink for language. Note that hyperlinks enable pointing to elements belonging to various types.

    <Language>
    
    <English>
    <mixedloc>
    <nmsploc>tit1 tit6 tit8</nmsploc>
    <nmsploc locsrc=doc1><nmsploc>id3</nmsploc>
    </mixedloc>
    </English>
    
    <Italian>
    <mixedloc>
    <nmsploc>tit2 tit7 tit9</nmsploc>
    <nmsploc locsrc=doc2><nmsploc>id4 id5</nmsploc>
    </mixedloc>
    </Italian>
    
    </Language>


    Normative Annex B: Architectural Form Definition Requirements specification for Topic Navigation Maps

    The architectural form definitions defined in Annex A shall be associated with each SGML document type definition that conforms to this standard.

    Note: Normally this will be done by using a parameter reference to point to a file containing a copy of the declarations given in Annex A.

    The architectural form definition for topic navigation maps references the architectural form definitions for HyTime. The architectural forms in this standard are identified as being applicable to element type forms defined in the HyTime standard. The attributes defined in the topic navigation map architectural forms extend the set defined for the referenced architectural forms in ISO/IEC 10744:1997, which must also be applied as appropriate for the element types used to define a topic map.

    This annex formally defines the enabling architectures required to implement topic navigation maps. It is defined using the specification for Architectural Form Definition Requirements in the SGML Extended Facilities annex of ISO/IEC 10744:1997. The meta-DTD defined by this document starts, therefore, with a (non-processable) markup declaration of the form:

    <!AFDR "ISO/IEC 10744:1997">

    The SGML declaration accompanying a document containing a topic navigation map shall include the token ArcBase in its APPINFO field to indicate that details of the SGML architectures for which support is required will be found in processing instructions starting with the (default) ArcBase keyword. If another name is required to identify applicable processing instructions it can be specified, as part of the same token, by using the form ArcBase=ArcUsed.

    An SGML document type definition (DTD) that uses the facilities defined in this standard shall contain, as near to the start of the part of the DTD that contains definitions using HyTime or the architectural forms defined in this document as possible, a processing instruction, coded using the document's concrete syntax, whose contents are IS10744 ArcBase TNM HyTime where IS10744 indicates that this standard conforms the the Architectural Form Definition Requirements specified in Annex A of ISO/IEC 10744:1997, ArcBase is the name assigned for identifying architectural bases in the APPINFO section of the SGML declaration associated with the DTD, TNM is a mnemonic used throughout this standard to identify components of a Topic Navigation Map and HyTime is the name of the base architecture from which topic navigation maps are derived.

    A DTD that uses the facilities defined in this standard shall contain an SGML notation declaration and architectural support attribute definitions based on the template shown below, modified if necessary to conform to the concrete syntax defined in the associated SGML declaration:

    <!NOTATION TNM PUBLIC "ISO 13250:1998//NOTATION AFDR ARCBASE
                   Topic Navigation Map
                   Architecture Definition Document//EN"
                -- A derived architecture used in conformance with the
                   Architectural Form Definition Requirements of
                   International Standard ISO/IEC 10744.           -->
    
    <!ATTLIST #NOTATION TNM
      ArcFormA       NAME    #FIXED "TNM"
      ArcNamrA       NAME    TNM-name
                             -- Can be used to assign locally
                                meaningful names to TNM attributes --
      ArcDTD         CDATA   #FIXED "TNM-DTD"
      ArcDocF        NAME    "TNM-hub"
      ArcAuto        (ArcAuto|nArcAuto) "nArcAuto"
      ArcQuant       CDATA   #FIXED "NAMELEN 24"
      -- NAMELEN has been extended to 24 to allow "natural" naming
         to be applied to Topic Navigation Map attribute values -- >

    Editor's Question: Do we need other attributes here, such as ArcBridF and ArcSuprA (or is the fact that the standard HyTime options are defined in the next section sufficient)? Sam: We don't need ArcBridF because we are doing an overlay. So where's the bridge? What's to suppress? No ArcSuprA either.

    Note: Definitions of the attributes defined in this declaration are provided in Annex A of the 2nd Edition of ISO/IEC 10744.

    Editor's note (Michel + Sam): We should try to keep this section as small as we can.

    The DTD must also contain the following entity definition, with its associated notation declaration, which is referenced by the following architecture support attributes:

    <!NOTATION AFDRMeta --AFDR Meta-DTD Notation--
                PUBLIC "ISO/IEC 10744:1997//NOTATION AFDR
                        Meta-DTD Notation//EN" >
    
    <!ENTITY TNM-DTD    -- Meta-DTD for navigation map instances --
                PUBLIC "ISO 13250:1998//DTD AFDR Meta-DTD
                        Topic Navigation Map//EN" CDATA AFDRMeta >

    In addition support should be declared for at least a minimal set of HyTime functionality by including the following declarations:

    <!-- HyTime Support Declarations -->
    <!NOTATION
     HyTime         -- HyTime Architecture --
                    -- A base architecture used in conformance with the
                       Architectural Form Definition Requirements of
                       International Standard ISO/IEC 10744. --
     PUBLIC "ISO/IEC 10744:1997//NOTATION AFDR ARCBASE
             Hypermedia/Time-based Structuring Language (HyTime)//EN"
    >
    <!ATTLIST  #NOTATION HyTime
     ArcFormA NAME     HyTime
     ArcNamrA NAME     HyNames
     ArcSuprA NAME     sHyTime
     ArcIgnDA NAME     HyIgnD
     ArcDocF  NAME     HyDoc
     ArcDTD   CDATA    "HyTime"
     ArcQuant CDATA    #FIXED "NAMELEN 9"
     -- NAMELEN must be at least 9 because the HyTime meta-DTD uses
        8-character parameter entity names. --
     ArcDataF NAME     #FIXED HyBridN
     ArcBridF NAME     #FIXED HyBrid
     ArcAuto  (ArcAuto|nArcAuto) nArcAuto
     ArcOptSA NAMES    "GenArc base locs links"
     GenArc            -- General architecture facilities --
              CDATA    -- Lextype: csname+ --
                       "HyLex ireftype lextype"
     base              -- Base module facilities --
              CDATA    -- Lextype: csname+ --
                       "bos bosspec conloc dimspec HyDimLst HyDimSpc valueref"
     locs              -- Location address module facilities --
                       -- Clause: 6.3 --
              CDATA    -- Lextype: csname+ --
                       "agrovdef bibloc dataloc datatok grovplan listloc mixedloc
                        multloc nameloc nmsploc pathloc pgrovdef proploc queryloc
                        refctl referatt refloc reftype relloc spanloc treecom treeloc
                        treetype"
     links             -- Hyperlinks module facilities --
                       -- Clause: 6.3 --
              CDATA    -- Lextype: csname+ --
                       "agglink anchloc clink hylink ilink linkloc traverse varlink"
     sched             -- Scheduling module facilities --
                       -- Clause: 6.3 --
              CDATA    -- Lextype: csname+ --
                       "calspec dimref grpdex grprepet HyCalSpc HyExSpec
                        HyExtLst HyGrand measure objalign pulsemap sched"
     anysgml           -- Any SGML declaration allowed --
                       -- Clause: 6.3 --
              (anysgml|nanysgml) anysgml
     exrefs            -- External references allowed --
                       -- Clause: 6.3 --
              (exrefs|nexrefs)   exrefs
     refmodel          -- SGML model groups for reftype --
                       -- Clause: 6.3 --
              (SGMLmdl|nSGMLmdl) SGMLmdl
     hyqcnt            -- Highest quantum count limit --
                       -- Clause: 6.3 --
              NUMBER   -- Constraint: power of 2 >= 32  --
                       32
     manyanch          -- Maximum number of anchors allowed in
                          hyperlinks --
                       -- Clause: 6.3 --
              NUMBER   -- Constraint: must be >= 2 --
                       #IMPLIED    -- Default: no limit --
    >
    <!NOTATION AFDRMeta
     PUBLIC "ISO/IEC 10744:1997//NOTATION AFDR Meta-DTD Notation//EN"
    >
    <!ENTITY
     HyTime         -- HyTime meta-DTD --
                    -- Clause: 6.3 --
                    PUBLIC "ISO/IEC 10744:1997//DTD AFDR Meta-DTD
                            Hypermedia/Time-based Structuring Language (HyTime)//EN"
                    CDATA AFDRMeta
    >

    All of the addressing mechanisms allowed by HyTime may be used in the context of this standard. However, each application can limit itself to a more specific list of the options relevant to its context by removing unused options from the declarations given above.


    Informative Annex C: TNM Meta-DTD

    This annex brings together all of the formal productions of this standard in a form that creates a valid SGML meta-DTD for topic naviation navigation maps.

    Note: While the copyright of this standard rests with ISO, the formal SGML definitions provided in this Annex may be copied providing that the following text is included, for example as an SGML comment, with the copy:

    (C) International Organization for Standarization 1998.
    Permission to copy in any form is granted for use with conforming
    Topic Navigation Maps as defined in ISO 13250, providing that
    this notice is included with all copies.

    The meta-DTD constructs required for Topic Navigation Map processing are:

    Editor's note: To be added later.

    Example 01: Generic SGML Example