[Mirrored from: http://www.personal.u-net.com/~sgml/topicmap.htm]

Topic Navigation Maps

Background

In May 1996 the ISO committee responsible for SGML and its related standards approved a new work item to develop a set of architectural forms for the definition of topic navigation maps.

Work on topic navigation maps has been undertaken since 1994 by the Committee for the Application of HyTime (CApH). The CApH draft text has been taken as the basis for the first committee draft (CD) of this new ISO standard, which is currently being ballotted by national standards bodies. Annex B shows the text submitted for review. A revised draft of the text, based on the new HyLink architectural form is provided below.

Extensions to Current Draft Proposed by The SGML Centre

While the CD issued with the new proposal on the development of SGML applications for the development of Topic Navigation Maps provides a starting point for work in this area The SGML Centre feels that there are a number of functions that need to be added to the specification before it becomes an approved standard. These include:

  1. The development of architectural forms that do not incorporate the architectural forms that are already defined in ISO/IEC 10744 for independent links (details of the use of links as CApH constructs should only be given in an annex).
  2. It should be possible to restrict the identification of topics to particular set of elements, or to parts of elements (e.g. topics will only be noted when they occur within headings, glossary term definitions, the first paragraph after a heading, the first or last sentence of a paragraph or the first 40 characters of any element).
  3. It should be possible to restrict searches for occurrences of topics using criteria other than element boundaries (e.g. through other SGML or system properties, such as those used to identify the language or the country from which the documents originated).
  4. It should be possible to allow elements within existing SGML DTDs (e.g. terms within glossaries) to be used to identify new topics.
  5. It should be possible to identify the relationship between elements within existing DTDs by attaching a topic relation attribute list architectural form to an element.
  6. When a relationship applies to more than one topic it should be possible to select only addresses that identify the use of a particular relationship within a named set of topics. (This would narrow the current specification, whereby relationships are grouped according to universe, to be further restricted to specific topics within that universe.)
  7. It should be possible to create classes of relationships and then to navigate topic maps by selecting a particular class of relationships, selecting a relationship within the class and then selecting a topic that uses that relationship.
  8. It should be possible to define relationships between CApH.semanticTitle element instances so that maps of topics can be developed (e.g. the semantic title for the topic Painter is related to the broader topic of Artists).
  9. It should be possible to define relationships between topic relations so that navigable maps of relationships can be developed (e.g. the Built_by relationship is related to the Painted_by and Stonemason_for relationships).
  10. It should be possible to identify that translations of topics and relationship names in different languages are equivalent without them having to share a mnemonic that is in a single language.

Information Processing -- SGML Applications -- Topic Navigation Maps

Scope

This standard provides a mechanism, based on techniques defined in ISO/IEC 10744:1992, for identifying information objects that share a common topic. It can also be used to define the relationships between sets of related topics. This standard can, for example, be used to define:

Normative references

Definitions

Architectural Forms
Rules for creating and processing components of documents. Four kinds of architectural form are defined in ISO/IEC 10744: element form, attribute form, data entity form, and data attribute form.
Architectural Form Definition Requirements (AFDR)
The requirements, specified in Annex ? of the second edition of ISO/IEC 10744:1992, for the formal definition of the architectural forms by which an enabling document architecture governs the SGML representation of its documents.
Hub Document
The HyTime document in which access to a hyperdocument begins. In the case of a topic navigation map, a HyTime document in which semantic assignments and topic relations are defined.
Semantic Assignment
Assignment of semantic description to occurrences of a term within document sets.
TNM engine
An application that can process topic navigation maps.
Topic Relation
Relationship between two or more topics or sets of semantic assignments

Purpose

This standard provides facilities for creating, maintaining and interchanging topic-based navigational aids to large corpora of documents containing interrelated information. The standard makes a distinction between the highly concentrated and independent topic navigation maps -- sets of relations between the topics covered in a given corpus -- defined within this standard and the addresses 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, and to some extent automating, 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 topic, and classifies topics with respect to each other. The standard will help 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 libraries of documents, 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 relationships 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 relationships 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 relationships 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.

Creating and maintaining indexes can be a difficult and expensive proposition. Many indexes are indexes in name only. All too often, even when an index is well thought out, well constructed, and useful, little thought is given to its maintainability. When the time comes to create an updated or corrected index, the original documentation for the topic architecture of the index is no longer available. Indeed, it may never have existed or have been consciously expressed in any abstract way. Even an index on which enormous maintenance effort has been expended can quite easily become self-inconsistent, especially when the size of the indexing task dictates that it must be a cooperative effort, or when there have been changes in the responsible personnel.

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 make, easier to maintain, and easier to use. Creating a topic navigation maps is a complex task, similar to planning and building a building, involving myriad assumptions and artistic decisions. As new relationships 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.

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

to be represented, universally interchanged, processed, merged, and used for data navigation. An international standard for representing (among many other things) arbitrary relationships between arbitrary pieces of information wherever they are in situ, exists in ISO/IEC 10744. This standard uses a HyTime-based approach for linking topics with information, and an SGML architecture is defined that can support applications that provide:

Topic navigation maps are defined using TNM.SemanticAssignment-form elements whose roles are defined by the user, and TNM.TopicRelation-form elements that identify specific relations between topics. Categories of topics may be iteractively 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. Each semantic assignment has an anchor role (anchrole) attribute that defines the relationship between a topic and the references that are made to it. The first anchor role identified by the anchrole attribute provides a formal definition of the topic. This notion of definition is very general: a definition can be any portion of information (no specific internal structure needed) that describes the information being pointed to.

Architectural form definition

This clause 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 second edition of ISO/IEC 10744:1992. The meta-DTD defined by this document starts, therefore, with a (non-processable) markup declaration of the form:

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

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 DTD as possible, a processing instruction coded using the document's concrete syntax, whose contents are ArcBase TNM HyTime where 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 the following 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//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
          ArcVer         CDATA   #FIXED "ISO 13250:1997"
          ArcNamrA       NAME    TNM-name
                                 -- Can be used to assign locally
                                    meaningful names to TNM attributes --
          ArcDTD         CDATA   #FIXED "%TNM-DTD" 
                                 --Fixed within application DTD -- 
          ArcDocN        CDATA   "TNM-hub"                             >

The DTD must also contain the following entity definition, which is referenced by the architecture support attributes:

<!ENTITY % TNM-DTD -- Meta-DTD for this DTDs instances --
                   -- THIS ENTITY IS NOT TO BE REFERENCED! --
                   PUBLIC "ISO 13250//DTD Topic Navigation Map meta-DTD//EN">

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

<!NOTATION HyTime  PUBLIC
           "+//ISO/IEC 10744:1992//NOTATION
                   HyTime Architecture Definition Document//EN" >
                -- A base architecture conforming to the
                   Architectural Form Definition Requirements of
                   International Standard ISO/IEC 10744.     --
>
<!ATTLIST #NOTATION HyTime
                            -- Support attributes for all architectures --
                   ArcFormA -- Attribute name: architectural form --
                            -- lextype(ATTNAME) --
                            NAME     #FIXED HyTime
                   ArcVer   -- Architecture version identifier --
                            CDATA    #FIXED "ISO/IEC 10744:1992"
                   ArcNamrA -- Attribute name: attribute renamer --
                            -- lextype(ATTNAME) --
                            NAME     "HyNames"
                   ArcDocN  -- Architectural form name: document element --
                            NAME     "HyDoc"
                   ArcBridA -- Attribute name: bridge functions --
                            NAME     "HyBrid"
                   ArcFacN  -- Attribute names: architecture facilities --
                            -- lextype(ATTNAME*) --
                            NAMES    #FIXED
                                     "base locs links"
                            -- Support attributes for 
                               Topic Navigation Maps only --
                   hyqcnt   -- Highest quantum count ceiling --
                            -- Constraint: power of 2 >= 32  --
                            NUMBER   "32"
                   base     -- ArcFacil: Base module --
                            -- lextype(NMTOKENS) --
                            CDATA    ""        -- Default: no options --
                   locs     -- ArcFacil: Location address module --
                            -- lextype(NMTOKENS) --
                            CDATA    #IMPLIED  -- Default: no support --
                   links    -- ArcFacil: Hyperlinks module --
                            -- lextype(NMTOKENS) --
                            CDATA    #IMPLIED  -- Default: no support --
                   sched    -- ArcFacil: Scheduling module --
                            -- lextype(NMTOKENS) --
                            CDATA    #IMPLIED  -- Default: no support --
                   rend     -- ArcFacil: Rendition module --
                            -- lextype(NMTOKENS) --
                            CDATA    #IMPLIED  -- Default: no support --
                   manyaxes -- Maximum number of axes allowed in coordinate spaces --
                            NUMBER   #IMPLIED -- Default: no limit --
>
<!--Questions for Eliot:
 1) Why does this notation attribute list not have an entry for ArcDTD
    in 10744?
 2) How are you now supposed to indicate which facilities from the
    SGML Extended Facilities annex must be supported for the 
    architecture to work (e.g. dvlist, lextype, context)?-->

<!ENTITY % HyTime  -- Meta-DTD for this DTDs instances --
                   -- THIS ENTITY IS NOT TO BE REFERENCED! --
                   -- This example declares the HyTime facilities
                      that must be supported when a Topic Map is
                      being defined. --
           SYSTEM  CDATA HyTime [
                   hyqcnt=32
                   base="unparsed" --?is this still available?--
                   locs="anydtd anysgml grovplan grovedef
                         pgrovdef agrovdef HyLex exidrefs 
                         multloc spanloc refctl query
                         coordloc pathloc relloc bibloc" 
                   links="manyanch" -- but not ilink --
                   sched="dimref" --?should markfun and HyFunk be required?--
]>

Editor's Question: Is the above list too complex: should any options be removed (or added)?

Defining the base element of a Topic Navigation Map

A topic navigation map is necessarily a HyTime hub document. [Editor's Question: Is this necessarily true? For example, the TEI example in Annex A would suggest that there may be a case for allowing topic navigation maps to form part of a larger document.] As such the base document element of the topic map must be conform to the following architetural forms:

            <!-- HyTime Topic Navigation Map Document Hub -->
<!entity % loc     -- Location address architectural forms --
"bibloc|nmsploc|nameloc|treeloc|listloc|relloc|dataloc|proploc|queryloc"
>
<!entity % link    -- Hyperlink architectural forms --
           "hylink|agglink">
<!entity % resloc  -- Resource architectural forms: location address module --
           "grovedef|grovplan" >
<!entity % resorce -- Resource architectural forms: all modules --
           "%resloc;"
--? is the retention of this parameter entity valid, or should we
    simply change later references to %resorce to %resloc?--
>
           <!-- ArcCFC: Architectural context-free content -->
<!-- %loc, %link, %resorce qualify but are used as
     meta-inclusions rather than meta-proper-subelements
-->
<!entity % ArcCFC   -- Architectural context-free content model --
           "TNM.SemanitcAssignment|TNM.TopicRelation|SemanticTitle"
>
<!element TNM-hub    -- Topic Navigation Map HyTime hub document element --
                   - O      (%ArcCFC;)* +(%loc;|%link;|%resorce;) >
<!attlist TNM-hub
          TNM      NAME  #FIXED "TNM-hub"
          maxbos   -- Bounding level of HyTime bounded object set when
                      document is a hub; overridable at run time --
                   -- Constraint: 0=no limit; 1=root; 2 to N --
                   NUMBER   "0"
          boslevel -- Default BOS level used by data entities
                      declared in hub document. --
                   -- Constraint: 0=no limit; 1=root; 2 to N --
                   NUMBER   "0"
          grovplan -- Grove plan for HyTime extended SGML document 
                      grove --
                   CDATA   #IMPLIED  -- reference --
                   -- Default: HyTime default grove plan --
>
]]>

Semantic assignment -- TNM.SemanticAssignment

A semantic assignment (TNM.SemanticAssignment) is a specialized HyTime hyperlink (hylink) that connects the information objects sharing a common semantic. This group of objects is collectively called a topic. The located objects have the common property of being anchors of a semantic assignment element. Therefore, one can distinguish:

Editor's Note: In view of the ability to self refer that has been added with the new HyLinks option I have taken it on myself to suggest the Semantic Titles embedded within the contents of the Semantic Assignment element should be treated as the Topic anchor, rather than having it be a pointer to another element. Is this acceptable? (I realise that this is probably not the way the architecture was originally designed, but it does seem to fit in with the new philosophy of HyLinks.) Should we also allow users to point elsewhere (e.g. to an entry in an index, glossary or thesaurus) to locate a SemanticTitle? If so, what mechanism is there in HyTime (other than conloc) to say this anchor role is either Self or a reference to another element? Can we, for example, replace the Semantic Title by a location address for a Semantic Title? Given that location addresses are top level inclusions, can users associate locations with Semantic Titles that would provide more in-depth explanations than are currently possible using Semantic Titles, or should the model for Semantic Assignments be extended to allow more than just Sematic Titles to appear? In particular, the thesaurus example in Annex A suggests that data within the element could form the implicit contents of a Semantic Title? How should this be expressed without creating a mixed content model?

Common examples of topics are index and/or glossary entries: an index entry is a set of locations sharing common semantics described by the term that is displayed in the index; they are normally displayed in alphabetical order. A glossary entry is a topic that is associated with text that is considered to be its definition. This standard enables topics that play at the same time the role of index and glossary entries: one of their anchor roles identifies their definition; the others identifies occurrences of the topic.

The value of the HyTime anchrole attribute is user-definable and allows users to distinguish between different roles of occurrence sets. The only constraint imposed by this standard is that the first anchor shall identify the semantic assignment. This is the principal way to enable the link to be referred to. All other declared anchors shall be lists of anchors that identify occurrences of the topic.

Editor's Note: I have taken the sentence "This is the principal way to enable the link to be referred to" to mean that the Semantic Titles themselves are the principle ways of referencing the objects located by the associated anchors. This has led me to introduce the concept of the #SELF anchor. Is this a valid interpretation?

When a semantic assignment is instantiated, its anchrole values have to be explicitly defined. The role of each anchor specifies the nature of the occurrence where the information about a given topic is to be found. These lists of anchor addresses are called "occurrence roles". There is no limit to what can be represented and distinguished through occurrence roles, nor to the number of occurrence roles. In particular, the anchors for a given anchor role need not be prespecified, but can be ascertained through a HyTime query location. The only limitation imposed by this standard is that occurrence roles must be defined in the DTD for a given semantic assignment element type. It is entirely the realm of the application to decide what to do when all anchor roles are not filled in. (A "null" address could be interpreted as no occurrence, for example.) The purpose of differentiating between different kinds of occurrence roles is to help users distinguish between different kinds of targets and navigate with more precision in a large set of information objects.

The semantic assignment element type form can be used to instantiate as many element types as desired in a DTD, allowing for a finer distinction; each semantic assignment element type can have a different set of anchors described in the anchrole attribute.

Anchor role values can be associated, by the user, with anchor description (anchdesc) attributes that allow the application to display information that enhances the understanding of information to be found at the anchor. The first anchor description points to information whose purpose is to clarify a semantic title, without adding any extra structural level.

Editor's Note: I have a problem with this definition of the role of the first anchor description. A Semantic Assignment can be given a set of Semantic Titles. Suppose these titles represent the different titles used for the topic in a multilingual dictionary of terms. According to the current definition it would only be possible to associate a single description with the SELF anchor role: i.e. one definition for all the titles. This means that there would not be a mechanism for selecting one of the titles and asking for a definition of it. As it is quite likely that the definitions of the terms are not exactly synonomous across languages this could lead to difficulties. I would, therefore, prefer to see descriptions of terms associated with individual titles (via an extension to the model of the TNM.SemanticAssignment element type form) rather than with the Topic as a whole. The first of the anchor role descriptions could, then, become information about the relationships between the set of definitions chosen to define the topic.

The first anchor listed in the anchrole attribute, called the topic anchor, identifies the text associated with TNM.SemanticAssignment element as the title of the topic. Making the semantic assignment element one of its own anchors permits users to traverse from some other link to the semantic assignment, and thence to any of the semantic assignment's other anchors.

Each of the other anchors (collectively called occurrences) may identify any number of information objects. The full power of HyTime's information addressing facilities can be used to associate semantic definitions with literally any piece of information, identified by whatever structural, contextual, semantic properties, or other means, are convenient.

Note: More than one occurrence role can be specified only if the HyTime manyanch option is supported by the underlying HyTime engine.

The TNM-specific mnemonic attribute allows a brief single-token name to be given to the semantic definition.

Editor's Note: The comment associated with the id attribute in the formal specification suggests that the id should be used to identify the element in anchors pointed to by topic relation links. However, the definition of the anchrole attribute for TNM.TopicRelation elements suggests that it should be the value of the mnemonic attribute that should be referred to. This would only be valid if the mnemonic attribute was defined as a location attribute using the refloc facility (Eliot. How does this work?) This dichotomy needs to be resolved. At present the role of the id attribute is undefined for this architectural form definition. In the thesaurus example in Annex A I suggest that a possible solution would be to make the default value for the mnemonic attribute the contents of a required ID attribute.

The TNM-specific SemanticUniverses attribute specifies the semantic context(s) in which the definition is valid. The generic identifier of a semantic assignment element constitutes implicitely a universe. Other tokens may be added to the default one as values of the SemanticUniverses attribute, as there is no limit to the number of universes attached to any instance of an element.

Editor's Note: There are a number of problems with the above definition:

1) The second sentence implies the semantic-universe-name lextype should be mapped to GI rather than just NAME. However, this standard does not define an architectural form for defining universes, and I see no reason why it should.

2) The statement "Other tokens may be added to the default one" is confusing. The last CD had no default value. For the current definition #IMPLIED has been used, with a default value of the GI of the semantic assignment element, but this is unlikely to be what was originally intended. Was the intention to make the current file the "universe", or to assign a universe attribute to the TNM-hub element?

Editors Note: The following paragraph cannot be implemented until it is determined what the current mechanism for defining parsing context is and how this relates to grove plans. It needs to be determined in which circumstances a semantic-universe-name can or cannot be interpreted as something that controls parsing. According to the current definition grove plans can only be associated with HyDoc elements and location sources. It does not, therefore, make sense to try and associate a parsing context with a specific Semantic Assignment element. Nothing would be gained by moving this attribute to a TNM-hub. What might be useful would be to associate a grove plan with specific occurrence role locations, but this should be done on a location-by-location basis, not across a set of locations. As location sources can now have grove plans associated with them there seems to be little need to retain this paragraph. [[Depending on the application, the user can choose to constrain the tokens used in the semantic universes within a predefined list, shared by a community of users. The semantic universe can be described as a HyTime-defined parsing context (parsecxt). A TNM-aware application will allow users to filter those objects belonging to one, or several, universes, and discard remaining elements, as if they did not exist, using the omitprop attribute of the parsecxt definition. This feature helps authors and editors of hyperdocuments to create and maintain concurrent universes while giving users access to a known set of universes. The possibility of maintaining a unique hyperdocument while allowing several views on it should considerably enhance its maintainability.]]

An application that can process topic navigation maps is said to be a TNM engine. A TNM engine must be able to suppress an element with a particular value as one of its semantic-universe-name values in a SemanticUniverses attribute. A semantic assignment element is not processed in any context in which none of the universes specified by the token list [Editor's questions: Which token list? Is this still based on the concept of uniquely named parsing contexts? (If so it needs to be removed.)] is found in the value of the SemanticUniverses attribute, so that the element can be disqualified. The question of what it means, in any particular case, for information to be disqualified is entirely the realm of the application. In general, though, the purpose of disqualification by semantic universe is to avoid wasting the user's time and attention on irrelevant information. It is the responsability of the application to inform the TNM application whenever semantic universes become valid or invalid due to changes in user context; this minimizes transmission of unwanted information. (In some applications, a user can say that all universes are always valid, and then see everything. In other applications, universes can be used for separating access levels depending on the degree of classification for different parts of the document, as defined by the hyperdocument editor, but cannot be modified by individual end-users.)

A TNM engine is responsible for maintaining a namespace of universes for each mnemonic, and a namespace of mnemonics for each universe. Given a mnemonic, a TNM engine must be able to provide a comprehensive list of all mnemonics declared in semantic assignments within the TNM-hub's bounded object set (BOS).

Where appropriate the optional weighting attribute can be used to indicate the relevance of a particular instance of a semanitic assignment to the application. The specified integer could, for instance, be used to control the sequence of related assignments.

<!element TNM.SemanticAssignment
                                  -- connects portions of
                                     information sharing
                                     a common semantic.  --
                           - O   (semanticTitle*)                  >
<!attlist TNM.SemanticAssignment

    TNM         NAME        TNM.SemanticAssignment

    id          ID          #IMPLIED
                  -- Each TNM.SemanticAssignment should be assigned a unique
                     identifier to allow the topic to be used as an
                     anchor for a topic relation link. As all topics need
                     not be anchors, the id is not required. --

    mnemonic      -- The short or key name for the subject matter of
                     this definition; machine-processable identifier. 
                     Can be seen as a "semantically-loaded identifier" 
                     (which may or may not be unique)  --
                CDATA       #IMPLIED
  --? How can mnemonic be a "key name" if it is not unique?--
    SemanticUniverses  
                  -- Defines the semantic universe in which this topic is
                     useful. This attribute is generally used to filter out
                     non-relevant topics according to a list of universes chosen
                     by the user. --
                  -- lextype(semantic-universe-name+) --
                  -- Question: What constraints should be placed on
                               a semantic-universe-name? Should it
                               be a valid SGML name or any text with
                               spaces replaced by underlines so that 
                               spaces delimit universe specifications? 
                               Where is the relevant lextype declared?-- 
                CDATA      #IMPLIED -- Default: Generic identifier of element
                                                identifies relevant universe --
    weighting    -- Indicates relevence to topic or certainty
                    of information.
                    0 = means probably irrelevent.
                    100 = means definitely relevent.
                    If a weight is more than 100, it can indicate extreme
                    or compelling relevence, though weights greater
                    than 100 may be deemed to be 100 by any application.--
                NUMBER      #IMPLIED --Default: 100-- 

    HyTime      NAME        hylink

    anchrole    NAMES "Topic #SELF OccurrenceRole_1 #LIST ... OccurrenceRole_n #LIST"
                  -- The number of anchroles is not specified in the
                     architectural form because it is application-specific.
                     The occurrence anchor sets are generally lists of 
                     one or more objects (#LIST) or queries that return
                     lists of objects. Each occurrence role defined by this 
                     attribute must be declared as an attribute within
                     the definition of the element using this 
                     architecutral form. --

    anchdesc      -- Anchor description information --
                  -- Constraint: one per anchor or one for all --
                  CDATA --reference-- #IMPLIED -- Default: none --

    linktrav      -- Hyperlink traversal rules. One or more of:
                     E traversal after external arrival
                     I traversal after internal arrival
                     R return traversal after internal arrival
                     D departure after internal arrival
                     A any traversal or departure (EID)
                     N no traversal after internal arrival
                     P no internal arrival --
                  -- Constraint: one per anchor or one for all --
                  -- Lextype("I"|"R"|"D"|"A"|"N"|"P"|"ID"|"RD"|
                             "EI"|"ER"|"ED"|"EN"|"EP"|"ERD")+) --
                NAMES    #IMPLIED  -- Default: Any traversal or departure --
    --Eliot: Why is E not allowed on its own here?--
    listtrav      -- Traversal between members of list anchors.
                     One of: 
                     N no traversal
                     L left traversal
                     R right traversal
                     A adjacent (both left and right) traversal
                     optionally concatenated with:
                     W wrapping traversal --
                  -- Constraint: one per anchor or one for all --
                  -- Lextype(("N"|"L"|"R"|"A"|"LW"|"RW"|"AW")+) --
                NAMES    #IMPLIED  -- Default: No list traversal --

    emptyanch     -- Is empty anchor an error? --
                  -- Constraint: one per anchor or one for all --
                  -- Lextype("ERROR"|"NOTERROR") --
                NAMES "noterror" -- Allows topic maps that have no 
                                    existing occurrences to be defined -- 
    -- Definitions for attributes defined in the anchrole attribute --
  >

Semantic title

The optional TNM.SemanticTitle element in the content of a TNM.SemanticAssignment element is intended to contain a brief, single phrase text title for the semantic: one that is normally longer than the value of the mnemonic attribute. Generally, a semantic assignment has one semantic title. But there can be - interesting - cases where zero or several semantic titles can be useful:

<!element TNM.SemanticTitle - - ANY >
              -- Descriptive phrase title or expansion of the mnemonic
                 of the containing TNM.SemanticDefinition-form element --
<!attlist TNM.SemanticTitle
    TNM         NAME        TNM.SemanticTitle
>

Editor's Note: Should we show how a HyTime desctxt or conloc attributes could be used to point to a semantic title stored elsewhere?

Note 85* in the second edition of ISO/IEC 10744 draws the distinction between descriptive text and the content location facility. Both allow the content of the element to be outside the syntactic content. However, conloc locates the content in another element that happens to be in the document, while desctxt draws it from a table of elements that were created as a resource -- presumably for use in several documents.

* Check this number against published text of 2nd edition

Representation of relationships between topics -- TNM.TopicRelation

Topics may be linked to one another by means of topic relation links (TNM.TopicRelations). These links express application-defined relationships, if any, between the topics. Any number of relationships can exist between any two or more topics. The members of each topic are identified by a uniquely named attribute whose value resolves to the unique identifier of a TNM.SemanticAssignment.

Topics may be linked to one another to create abstract topic maps that might be used as skeletal structures onto which exemplary and/or related instances can subsequently be added.

The nature of the relationship represented by a topic relation link element type may be explained in an element which is linked, by the anchdesc attribute, to either a specific anchor role or to all of the anchor roles.

Where appropriate the optional weighting attribute can be used to indicate the relevance of a particular instance of a relationship to the application. The specified integer could be used to control the sequence of relationships.

The value of the TNM.SemanticUniverse attribute specifies the name(s) of the universe(s) in which the topic relationship expressed by the link is valid. A TNM engine must be able to warn the application whenever the TNM.SemanticAssignment-form element is processed in a context in which none of the universes specified by the token list is valid, so that the topic relationship can be disqualified.

Editor's Note: Now that parsing context is no longer specified in this way, but rather through a grove plan, is the above last sentence still relevant?

Universe(s) need not be specified, but they can be specified by defaulting them or fixing them in the DTD, or they can be specified (possibly overrriding a default value given in the DTD) in the start-tag of each element instance. If there is no default value and none is specified in the element instance, then the application's behavior with respect to disqualification is not specified by this standard.

The content of a TNM.TopicRelation element is not specified in this standard as it is, necessarilly, application dependent.

<!element TNM.TopicRelation - O ANY >
<!attlist TNM.TopicRelation
    id          ID          #IMPLIED
    TNM         NAME        TNM.TopicRelation
    SemanticUniverses CDATA #IMPLIED            -- Default: not specified --
                 -- Constraints: Use #ALL to mean "valid in all
                    universes" --

    weighting    -- Indicates relevence to relationship to
                    semanitic universes it is being applied to.
                    0 = means probably irrelevent.
                    100 = means definitely relevent.
                    If a weight is more than 100, it can indicate extreme
                    or compelling relevence, though weights greater
                    than 100 may be deemed to be 100 by any application.--
                NUMBER      #IMPLIED --Default: 100-- 

    HyTime      NAME        hylink

    anchrole    NAMES       #FIXED 
                     "Relationship Topic_list_1 #LIST ... Topic_list_n #LIST"
                  -- Constraint: Topic names must match value(s) assigned to the
                     mnemonic (or id?) attribute(s) of 
                     TNM.SemanticAssignment element(s) --
   --? What is the scope of topic mnemonics? Must the mnemonics always
       occur in the same TNM-hub document, or can relationships reference
       topics defined in a set of topic navigation maps? If the latter
       is the case, should a location source be associated with
       individual locations or should the entity name of the 
       file containing the relevant topic navigation map be used to 
       qualify the topic mnemonic?--
                  -- The number of anchroles is not specified in the
                     architectural form because it is application-specific.
                     Each anchrole defined by this 
                     attribute must be declared as an attribute within
                     the definition of the current element and
                     must identify objects through the mnemonic property
                     (or unique identifier?) of
                     associated semantic assignment elements. --

    anchdesc      -- Anchor description information --
                  -- Constraint: one per anchor or one for all --
                  IDREFS  #IMPLIED -- Default: none --

    linktrav      -- Hyperlink traversal rules. One or more of:
                     E traversal after external arrival
                     I traversal after internal arrival
                     R return traversal after internal arrival
                     D departure after internal arrival
                     A any traversal or departure (EID)
                     N no traversal after internal arrival
                     P no internal arrival --
                  -- Constraint: one per anchor or one for all --
                  -- Lextype("I"|"R"|"D"|"A"|"N"|"P"|"ID"|"RD"|
                             "EI"|"ER"|"ED"|"EN"|"EP"|"ERD")+) --
                NAMES    #IMPLIED  -- Default: Any traversal or departure --
    listtrav      -- Traversal between members of list anchors.
                     One of: 
                     N no traversal
                     L left traversal
                     R right traversal
                     A adjacent (both left and right) traversal
                     optionally concatenated with:
                     W wrapping traversal --
                  -- Constraint: one per anchor or one for all --
                  -- Lextype(("N"|"L"|"R"|"A"|"LW"|"RW"|"AW")+) --
                NAMES    #IMPLIED  -- Default: No list traversal --

    emptyanch     -- Is empty anchor an error? --
                  -- Constraint: one per anchor or one for all --
                  -- Lextype("ERROR"|"NOTERROR") --
                NAMES "noterror" -- Allows topic maps that have no 
                                    existing occurrences to be defined -- 
    -- Definitions for attributes defined in the anchrole attribute --
 >

Informative Annex A: Examples

Editor's Note: At the current stage of development of this CD the examples identify a number of possible problems with the current definitions of the architectural forms. The examples have deliberately been defined to test some of the assumptions made in the definitions of the architectural forms, and should not be taken as indicating that the architectural forms as currently defined are wrong, or that the examples themselves are the correct way of implemeting the architectural forms as currently defined.

The following example shows how a document type definition for an annotated thesuari could be defined as a Topic Navigation Map:

<!SGML "ISO 8879:1986"
...
  APPINFO "ArcBase" 
>
<?ArcBase TNM HyTime>
<!DOCTYPE thesaurus [
<!NOTATION TNM PUBLIC "ISO 13250//NOTATION AFDR ARCBASE
                       Topic Navigation Map 
                       Architecture Definition Document//EN"
                    -- A base architecture used in conformance with the
                       Architectural Form Definition Requirements of
                       International Standard ISO/IEC 10744.          -->
<!ATTLIST #NOTATION TNM
          ArcFormA       NAME    TNM
          ArcNamrA       Name    TNM-name
                                 -- Can be used to assign locally
                                    meaningful names to TNM attributes --
          ArcDTD         CDATA   #FIXED "%TNM-DTD"
          ArcDocN        NAME    "thesaurus" 
--Eliot: I'm having problems with this attribute. It would appear that
         it has to be defined within the DTD it references. What happens
         if the name specified here is not the same as the DOCTYPE name?
         (Or should this actually be TNM-hub to indicate the class to be
         used to identify the hub document?)-->
<!ENTITY % TNM-DTD PUBLIC "ISO 13250//DTD Topic Navigation Map meta-DTD//EN">
%TNM-DTD
<!--Eliot: A related problem is that the base document element has to be the 
  ArcDTD for HyTime as well! How can this be specified in a way that
  ensures there is no conflict?-->
<!NOTATION HyTime  PUBLIC
           "+//ISO/IEC 10744:1992//NOTATION
                   HyTime Architecture Definition Document//EN" >
                -- A document architecture conforming to the
                   Architectural Form Definition Requirements of
                   International Standard ISO/IEC 10744.     --
>
<!ATTLIST #NOTATION HyTime
                            -- Support attributes for all architectures --
                   ArcFormA -- Attribute name: architectural form --
                            -- lextype(ATTNAME) --
                            NAME     #FIXED HyTime
                   ArcVer   -- Architecture version identifier --
                            CDATA    #FIXED "ISO/IEC 10744:1992"
                   ArcNamrA -- Attribute name: attribute renamer --
                            -- lextype(ATTNAME) --
                            NAME     "HyNames"
                   ArcDocN  -- Architectural form name: document element --
                            NAME     "HyDoc"
                   ArcBridA -- Attribute name: bridge functions --
                            NAME     "HyBrid"
                   ArcFacN  -- Attribute names: architecture facilities --
                            -- lextype(ATTNAME*) --
                            NAMES    #FIXED
                                     "base locs links"
                            -- Support attributes for 
                               Topic Navigation Maps only --
                   hyqcnt   -- Highest quantum count ceiling --
                            -- Constraint: power of 2 >= 32  --
                            NUMBER   "32"
                   base     -- ArcFacil: Base module --
                            -- lextype(NMTOKENS) --
                            CDATA    ""        -- Default: no options --
                   locs     -- ArcFacil: Location address module --
                            -- lextype(NMTOKENS) --
                            CDATA    #IMPLIED  -- Default: no support --
                   links    -- ArcFacil: Hyperlinks module --
                            -- lextype(NMTOKENS) --
                            CDATA    #IMPLIED  -- Default: no support --
                   sched    -- ArcFacil: Scheduling module --
                            -- lextype(NMTOKENS) --
                            CDATA    #IMPLIED  -- Default: no support --
                   rend     -- ArcFacil: Rendition module --
                            -- lextype(NMTOKENS) --
                            CDATA    #IMPLIED  -- Default: no support --
                   manyaxes -- Maximum number of axes allowed in coordinate spaces --
                            NUMBER   #IMPLIED -- Default: no limit --
>
<!ENTITY % HyTime  -- Meta-DTD for this DTDs instances --
                   -- THIS ENTITY IS NOT TO BE REFERENCED! --
                   -- Declares the set of HyTime facilities
                      that must be supported when a Topic Navigation Map
                      is being defined. --
           SYSTEM  CDATA HyTime [
                   hyqcnt=32
                   locs="anydtd grovplan grovedef
                         pgrovdef agrovdef HyLex exidrefs 
                         multloc spanloc query
                         coordloc pathloc relloc bibloc" 
                   links="manyanch" -- but not ilink --
                   sched="dimref" ]>
<!ELEMENT thesuarus  - O (category+)>
<!ATTLIST thesaurus TNM       NAME  #FIXED "TNM-hub"
                    HyTime    NAME  #FIXED "HyDoc"
                    TNM-name  CDATA "id subject"
                    subject   ID    #REQUIRED
                    -- Identifies semantic universe 
                       of thesaurus.-- >
<!ELEMENT category - O (category-title, term*, broader-terms*,
                          related-terms*, narrower-terms*)
 --NB: This model defines a set of relationships in itself.--
 --Note: The term element is optional as some categories can be
         defined using only terms that have already been defined 
         in other categories. Terms only need to be defined once. 
         The included-terms attribute points to terms defined 
         elsewhere that need to be included in the term set
         as well as to the terms defined within this element.-->
<!ATTLIST category 
    id                 ID     #REQUIRED
    TNM                NAME   TNM.TopicRelation
    SemanticUniverses  CDATA  #IMPLIED -- Default: Subject of thesaurus --
    weighting       -- Indicates relevence to category to subject
                       area of thesaurus.
                       0 = means probably irrelevent.
                       100 = means definitely relevent.
                       If a weight is more than 100, it can indicate extreme
                       or compelling relevence, though weights greater
                       than 100 may be deemed to be 100 by any application.--
                       NUMBER  #IMPLIED --Default: 100--
    --Question: Are weights really relevant to categories? 
                What effect would this weighting have on presentation
                or use of the thesaurus? --
    HyTime             NAME   hylink
    anchrole           NAMES  #FIXED 
                       --NB. 4 of the first 5 items in this list identify
                             relationships expressed in the model 
                             of the element. The last 3 represent
                             relationships in addition to those 
                             expressed in the model.--
                       "category-identified       
                        included-terms       #LIST
                        broader-terms        #LIST
                        related-terms        #LIST
                        narrower-terms       #LIST
                        French-equivalents   #LIST
                        German-equivalents   #LIST 
                        Italian-equivalents  #LIST"
    category-identified IDREF   --reftype(category-title)-- #REQUIRED
    included-terms      IDREFS  --reftype(term)--           #REQUIRED
    broader-terms       IDREFS  --reftype(term)--           #IMPLIED
    related-terms       IDREFS  --reftype(term)--           #IMPLIED
    narrower-terms      IDREFS  --reftype(term)--           #IMPLIED
    French-equivalents  IDREFS  --reftype(category)--       #IMPLIED
    German-equivalents  IDREFS  --reftype(category)--       #IMPLIED
    Italian-equivalents IDREFS  --reftype(category)--       #IMPLIED  
  --Question: Would it be better to use CDATA and an associated reference
              comment in place of IDREFS to allow terms in other files
              to be referenced?--
    linktrav           -- Hyperlink traversal rules:
                          E traversal after external arrival
                          R return traversal after internal arrival
                          D departure after internal arrival --
                       -- Constraint: one per anchor or one for all --
                       -- Lextype("I"|"R"|"D"|"A"|"N"|"P"|"ID"|"RD"|
                                  "EI"|"ER"|"ED"|"EN"|"EP"|"ERD")+) --
                       NAMES  "ERD"
    listtrav           -- Traversal between members of list anchors.
                          R right traversal only
                          W wrapping traversal --
                       -- Lextype(("N"|"L"|"R"|"A"|"LW"|"RW"|"AW")+) --
                       NAMES "RW"
                       -- As the list is ordered by relevance weighting 
                          right traversal seems a logical constraint. --
    emptyanch          -- Is empty anchor an error? --
                       -- Constraint: one per anchor or one for all --
                       -- Lextype("ERROR"|"NOTERROR") --
                       NAMES "noterror"
>
<!ELEMENT term   - O (#PCDATA) 
--NB: According to the model for TNM.SemanticAssignment you would 
      need to put a Semantic Title element as the model here, but I question
      whether this is strictly necessary. The model here, though not
      strictly conforming to the architectural form, does indicate a sensible 
      alternative to a Semantic Title.-->
<!ATTLIST term 
    TNM         NAME        TNM.SemanticAssignment
    id          ID          #REQUIRED
    -- A term only needs to be defined once, and can then be referenced
       by other categories in which it is to be included. --
    mnemonic      -- The short or key name for the term --
                CDATA       #IMPLIED --Default: Same as id --
    SemanticUniverses  
                  -- Defines the semantic universe in which term is used.--
                  -- lextype(semantic-universe-name+) --
                CDATA      #IMPLIED -- Default: Value of subject attribute
                                                of thesaurus.--
    --NB: The default conflicts with the default value specified
          in the architectural form definition, but seems to be a 
          more natural example as the generic identifier of the element
          is simply term.--
    weighting       -- Indicates relevence to term to category: 
                       terms could be ordered based on relevance 
                       within category.
                       0 = means probably irrelevent.
                       100 = means definitely relevent.
                       If a weight is more than 100, it can indicate extreme
                       or compelling relevence, though weights greater
                       than 100 may be deemed to be 100 by any application.--
                       NUMBER  #IMPLIED --Default: 100--
    HyTime      NAME        hylink
    anchrole    NAMES       #FIXED  
                            "topic         #SELF 
                             dataset1-refs #LIST
                             dataset2-refs #LIST
                             dataset3-refs #LIST"
    anchdesc  -- Anchor description information --
              -- Constraint: one per anchor or one for all --
                IDREFS  #IMPLIED -- Default: none --
    --NB: There might be a case for making this description 
          compulsory. If this was the case each term could point 
          to a description that explained the role of the term
          within the thesaurus. Whilst this does not appear to be
          what the designers of HyTime expected this attribute to be
          used for, it would seem to be a useful interpretation of the
          role of this attribute within a topic navigation map.--
    dataset1-refs     IDREFS  #REQUIRED 
                      --NB: All terms in dataset1 glossaries 
                            have a unique id.--
    dataset2-refs     IDREFS --reftype(treelocs)-- #REQUIRED
    dataset2-refs     CDATA  --lextype(SDQL-query)--
                             '(matches "hot dogs")' 
    --Question: How should language equivalents of individual terms
                (rather than categories) be identified in
                this scenario? (Note that such terms would be
                dependent on referencing equivalent datasets.)--
    linktrav      -- Hyperlink traversal rules. One or more of:
                     E traversal after external arrival
                     I traversal after internal arrival
                     R return traversal after internal arrival
                     D departure after internal arrival
                     A any traversal or departure (EID)
                     N no traversal after internal arrival
                     P no internal arrival --
                  -- Constraint: one per anchor or one for all --
                  -- Lextype("I"|"R"|"D"|"A"|"N"|"P"|"ID"|"RD"|
                             "EI"|"ER"|"ED"|"EN"|"EP"|"ERD")+) --
                NAMES    #IMPLIED  -- Default: Any traversal or departure --
    listtrav      -- Traversal between members of list anchors.
                     One of: 
                     N no traversal
                     L left traversal
                     R right traversal
                     A adjacent (both left and right) traversal
                     optionally concatenated with:
                     W wrapping traversal --
                  -- Constraint: one per anchor or one for all --
                  -- Lextype(("N"|"L"|"R"|"A"|"LW"|"RW"|"AW")+) --
                NAMES    #IMPLIED  -- Default: No list traversal --
    emptyanch     -- Is empty anchor an error? --
                  -- Constraint: one per anchor or one for all --
                  -- Lextype("ERROR"|"NOTERROR") --
                NAMES "noterror" -- Allows topic maps that have no 
                                    existing occurrences to be defined -- 
>
<!ELEMENT (broader-terms|related-terms|narrower-terms)  - O EMPTY 
 --Question: Would it be necessary to make this model (term*) to
             allow terms that only ever occur as related terms
             to be defined outside of a category specification?--
>
<!ATTLIST (broader-terms|related-terms|narrower-terms) 
    id                 ID     #IMPLIED
    --NB: Here is a case where the old CApH rule requiring an ID does not
          make sense - hence the change to #IMPLIED in the architectural
          form definition. --
    TNM                NAME   TNM.TopicRelation
    SemanticUniverses  CDATA  #IMPLIED -- Default: Subject of thesaurus --
    HyTime             NAME   hylink
    anchrole           NAMES  #FIXED "relationship links-to"
    relationship       (broader-terms|related-terms|narrower-terms)
                              #IMPLIED --Default: Use GI--
    links-to            IDREFS  --reftype(term)--     #REQUIRED 
    weighting       -- Indicates relevence to associated terms to category.
                       0 = means probably irrelevent.
                       100 = means definitely relevent.
                       If a weight is more than 100, it can indicate extreme
                       or compelling relevence, though weights greater
                       than 100 may be deemed to be 100 by any application.--
                       NUMBER  #IMPLIED --Default: 100--
    linktrav           -- Hyperlink traversal rules:
                          A any traversal or departure (EID) --
                       -- Constraint: one per anchor or one for all --
                       -- Lextype("I"|"R"|"D"|"A"|"N"|"P"|"ID"|"RD"|
                                  "EI"|"ER"|"ED"|"EN"|"EP"|"ERD")+) --
                       NAMES  "A"
    listtrav           -- Traversal between members of list anchors.
                          A adjacent (both left and right) traversal
                          W wrapping traversal --
                       -- Lextype(("N"|"L"|"R"|"A"|"LW"|"RW"|"AW")+) --
                       NAMES "AW"
    emptyanch          -- Is empty anchor an error? --
                       -- Constraint: one per anchor or one for all --
                       -- Lextype("ERROR"|"NOTERROR") --
                       NAMES "error"
 >
]>

Editor's Note: Many existing examples of the use of topic maps rely on the relationships between people. The following example is an attempt to fully define the relations a person may have using the topic relation element type form. An initial analysis would suggest that there may be a problem in doing this because of the restriction that a topic-relation's anchroles resolve to elements identified using a mnemonic name rather than an id. Another problem, noted in the comments for the DTD, is that you cannot currently refer to the contents of siblings to define the type of relationship.

A geneology could be defined as part of a topic navigation map by defining a topic relation element type, and supporting elements, entities and processing instructions, of the following form:

<!ENTITY % calendars PUBLIC "ISO 13250//NONSGML LEXTYPES
                              TNM-example UTC date order//EN">
<?LEXUSE calendars>
<!ELEMENT person - O (surname, given-names, relations) >
<!ATTLIST person mnemonic     ID    #REQUIRED    >
<!ELEMENT (surname|given-name) - O (#PCDATA)>
<!ELEMENT relations - O EMPTY
 --NB This model gives problems with the use of #SELF for the first 
      anchrole. In fact what the anchor role wants to point to is
      either the GI itself (which is sufficient for identifying the
      role of the link) or the person's name defined by the contents of
      the siblings of relations, i.e. the surname and given name
      of the person who the other anchors are relations of. (One way
      to do this could be to change the content model to allow the
      element to contain a relloc.) 
      What do you think the preferred way of defining
      the relationship should be in this case?--
>
<!ATTLIST relations
    id                   ID     #REQUIRED
    TNM                  NAME   TNM.TopicRelation
    SemanticUniverses    CDATA  #IMPLIED    -- Default: not specified --
    HyTime               NAME   hylink
    anchrole             NAMES  #FIXED 
                         "relations-of         #SELF
                          maternal-ancestors   #LIST
                          paternal-ancestors   #LIST
                          maternal-siblings    #LIST
                          paternal-siblings    #LIST
                          spouses              #LIST
                          other-child-creators #LIST
                          sons                 #LIST
                          daughters            #LIST"
    maternal-ancestors   IDREFS #REQUIRED --lextype(UTC-date 
                                                    #ORDER calendar)--
                                          --reftype(person)--
    paternal-ancestors   IDREFS #IMPLIED  --lextype(UTC-date 
                                                    #ORDER calendar)--
                                          --reftype(person)--
    maternal-siblings    IDREFS #IMPLIED  --reftype(person)--
    paternal-siblings    IDREFS #IMPLIED  --reftype(person)--
    spouses              CDATA  --reftype(person)--
                                --lextype (IDREF, UTC-date, UTC-date?)+--
                                --Constraint: First UTC-date identifies
                                  start of relationship, second one
                                  identifies end of relationship-- 
                                #IMPLIED
    other-child-creators IDREFS #IMPLIED  --reftype(person)--
    sons                 IDREFS #IMPLIED  --reftype(person)--
    daughters            IDREFS #IMPLIED  --reftype(person)--
    linktrav             -- Hyperlink traversal rules:
                            A any traversal or departure (EID) --
                         -- Constraint: one per anchor or one for all --
                         -- Lextype("I"|"R"|"D"|"A"|"N"|"P"|"ID"|"RD"|
                                    "EI"|"ER"|"ED"|"EN"|"EP"|"ERD")+) --
                         NAMES  "A"
    listtrav             -- Traversal between members of list anchors.
                            A adjacent (both left and right) traversal
                            W wrapping traversal --
                         -- Lextype(("N"|"L"|"R"|"A"|"LW"|"RW"|"AW")+) --
                         NAMES "AW"
    emptyanch            -- Is empty anchor an error? --
                         -- Constraint: one per anchor or one for all --
                         -- Lextype("ERROR"|"NOTERROR") --
                         NAMES "noterror error noterror noterror noterror
                                noterror noterror noterror noterror"
 >

For the preceding declarations to work there would need to be a lexical ordering defintion of the following form within the file identified through the lexord processing instruction:

<!--
This file is identified by the following public identifier:
    "ISO 13250//NONSGML LEXTYPES TNM-example UTC date order//EN"
This set extends the default lexical ordering set, HyOrd, found
in HyTime.
-->
<!LEXORD calendar  -- UTC date order --
                   SPEC PUBLIC "ISO 13250//NOTATION LEXORD
                                TNM-example UTC date order//EN" > 

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; >

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:

Editor's Note: This last statement is currently invalid as the model for a TEI-hub does not allow for the complete range of TEI elements, unless %ArcCFC is redefined and the three elements it currently defined are made part of of the asssociated inclusion. In other words, should we change the model of TNM-hub to something like:

 <!element TNM-hub O O ANY +(TNM.SemanticAssignment|TNMSemanticTitle|
                             TNM.TopicRelation|%loc;|%link;|%resorce;)>

To do this you would extend the existing definitions as follows:

<!ENTITY % TNM.TR  --Attributes used to define a Topic Navigation Map
                     Topic Relation--
   'TNM                  NAME   TNM.TopicRelation
    SemanticUniverses    CDATA  #IMPLIED    -- Default: not specified --
    HyTime               NAME   hylink
    linktrav             -- Hyperlink traversal rules. One or more of:
                            E traversal after external arrival
                            I traversal after internal arrival
                            R return traversal after internal arrival
                            D departure after internal arrival
                            A any traversal or departure (EID)
                            N no traversal after internal arrival
                            P no internal arrival --
                         -- Constraint: one per anchor or one for all --
                         -- Lextype("I"|"R"|"D"|"A"|"N"|"P"|"ID"|"RD"|
                                    "EI"|"ER"|"ED"|"EN"|"EP"|"ERD")+) --
                         NAMES  "A"
    listtrav             -- Traversal between members of list anchors.
                            A adjacent (both left and right) traversal
                            W wrapping traversal --
                         -- Lextype(("N"|"L"|"R"|"A"|"LW"|"RW"|"AW")+) --
                         NAMES "AW"
    emptyanch            -- Is empty anchor an error? --
                         -- Constraint: one per anchor or one for all --
                         -- Lextype("ERROR"|"NOTERROR") --
                         NAMES "noterror"  '   
>
<!ENTITY % TNM.SA   --Attributes used to define a Topic Navigation Map
                      Semanitic Assignment--
 TNM         NAME        TNM.SemanticAssignment
    id          ID          #IMPLIED
    mnemonic      -- the short or key name for the term --
                CDATA       #IMPLIED --Default: Same as id --
    SemanticUniverses  
                  -- Defines the semantic universe in which term is used.--
                  -- Lextype: (semantic-universe-name+) --
                CDATA      #IMPLIED -- Default: All universes --
    weighting       -- Indicates relevence to term to category: 
                       terms could be ordered based on relevance 
                       within category.
                       0 = means probably irrelevent.
                       100 = means definitely relevent.
                       If a weight is more than 100, it can indicate extreme
                       or compelling relevence, though weights greater
                       than 100 may be deemed to be 100 by any application.--
                       NUMBER  #IMPLIED --Default: 100--
    HyTime      NAME        hylink
    linktrav      -- Hyperlink traversal rules. One or more of:
                     E traversal after external arrival
                     I traversal after internal arrival
                     R return traversal after internal arrival
                     D departure after internal arrival
                     A any traversal or departure (EID)
                     N no traversal after internal arrival
                     P no internal arrival --
                  -- Constraint: one per anchor or one for all --
                  -- Lextype("I"|"R"|"D"|"A"|"N"|"P"|"ID"|"RD"|
                             "EI"|"ER"|"ED"|"EN"|"EP"|"ERD")+) --
                NAMES    #IMPLIED  -- Default: Any traversal or departure --
    listtrav      -- Traversal between members of list anchors.
                     One of: 
                     N no traversal
                     L left traversal
                     R right traversal
                     A adjacent (both left and right) traversal
                     optionally concatenated with:
                     W wrapping traversal --
                  -- Constraint: one per anchor or one for all --
                  -- Lextype(("N"|"L"|"R"|"A"|"LW"|"RW"|"AW")+) --
                NAMES    #IMPLIED  -- Default: No list traversal --
    emptyanch     -- Is empty anchor an error? --
                  -- Constraint: one per anchor or one for all --
                  -- Lextype("ERROR"|"NOTERROR") --
                NAMES "noterror" -- Allows topic maps that have no 
                                    existing occurrences to be defined -- 
>
<!ELEMENT classDecl   - - (taxonomy+)>
<!ATTLIST classDecl       %a.global; >
<!--Question: Is there any logical reason why classDecl should not be
              declared ss 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.TR;
          anchrole        NAMES  #FIXED 
                          "taxonomy-of          #SELF
                           categories-in        #LIST"
          anchdesc     -- Anchor description information --
                       -- Constraint: one per anchor or one for all --
                          IDREFS  #IMPLIED
                       -- Constraint: Must be at least one unless 
                          one of the elements defining a bibliographic
                          source for the taxonomy has been specified
                          before the first embedded category. --
          categories-in   IDREFS #IMPLIED --Default: contained elements --
                                          --reftype(category)-- >
<!ELEMENT category    - - (catDesc, category*)>
<!ATTLIST category        %a.global; 
                          %TNM.SA;
          anchrole        NAMES       #FIXED  
                          "descriptor #SELF 
                          --Question: Should this be changed to
                                      be an explicit reference
                                      to the enclosed catDesc element>--
                           sub-categories #LIST
                           sources    #LIST"
          anchdesc     -- Anchor description information --
                       -- Constraint: one per anchor or one for all --
                          IDREFS  #IMPLIED -- Default: None --
          sub-categories  IDREFS  #IMPLIED --reftype(category)--
                                           -- Default: Implied from 
                                              nesting of categories--
          sources         IDREFS  #IMPLIED -- Default: None at present --
>
<!ELEMENT catDesc     - o (%phrase.seq; | textDesc)    >
<!ATTLIST catDesc         %a.global;
          --Note: If the category descriptor attribute cannot be defined
                  using #SELF the id attribute in a.global may have
                  to be redefined to make it required.--
          TNM             NAME    "TNM.SemanticTitle"  >

Annex B - Text of Published Committee Draft (August 1996)

Scope

This standard provides a mechanism, based on techniques defined in ISO/IEC 10744:1992, for identifying information objects that share a common topic. It can also be used to define the relationships between sets of related topics. It can be used to define:

Related Standards

Definitions

TBD

Purpose of the Topic Navigation Map Module

The purpose of this Topic Navigation Map module is to facilitate the maintainability and usability of topic-based navigational aids for large corpora of documents containing interrelated information. The fundamental idea is to make a distinction between highly concentrated and independent topic maps -- sets of relations between the topics covered in a given corpus -- and the addresses of relevant information within the corpora themselves. Such topic maps can improve the accessibility of information, and they can facilitate and, to some extent, automate the task of providing, and imposing editorial consistency and maintainability, on navigational resources. The design of topic maps allows the groupware-supported production of the data from which navigational aids such as indexes, glossaries, tables of contents, lists and catalogs can be generated. It can also be used to enhance the navigability of very large information bases.

This Topic Navigation Map module provides a basis for creating and maintaining information that, in effect, classifies the information in documents according to topic, and classifies topics with respect to each other. It is intended to help 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 Topic Navigation Map module will also assist those who create and/or collect libraries of documents, and who then 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. For this facility to be useful there must be 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. However, the number and complexity of indexable topics and the relationships between them in all documents 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. In fact, the number of topic relationships that might usefully be represented with respect to any reasonably large collection of documents is, for all practical purposes, limitless. Moreover, even in archived documents, new kinds of topic relationships can be expected to appear from time to time.

Creating and maintaining topic indexes is a difficult and expensive proposition. Creating a topic index is a complex task, like planning and building a building, involving myriad assumptions and artistic decisions. Many indexes are indexes in name only: ramshackle affairs that are unable to bear the stress of the everyday purposes for which indexes are presumably intended, they are essentially almost useless. All too often, however, even when an index is well thought out, well constructed, and useful, little thought is given to its maintainability. When the time comes to create an updated or corrected index, the original documentation for the topic architecture of the index is no longer available. Indeed, it may never have existed or have been consciously expressed in any abstract way. Even an index on which enormous maintenance effort is expended can quite easily become a self-inconsistent hodgepodge, especially when the size of the indexing task dictates that it must be a cooperative effort, or when there have been changes in the responsible personnel.

An application-neutral, internationally understandable, rigorous, and yet flexible and open way to represent topical indexes, such as the one set forth in this Topic Navigation Map module, can help to make indexes easier to make, easier to maintain, and easier to use. As new relationships are discovered and included as part of the topic architecture, the architecture changes. Many architects may have to collaborate and contribute, over the years, to an evolving architecture, 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 architecture -- the index itself -- may become unsound and unsafe.

A topic architecture fundamentally consists of topics and the relations that they bear to one another. There is need, therefore, for a way to permit:

to be represented, universally interchanged, processed, merged, and used for data navigation. An international standard for representing (among many other things) arbitrary relationships between arbitrary pieces of information wherever they are in situ, exists in ISO/IEC 10744, which defines the Hypermedia/Time-based Structuring Language known as HyTime. In this Topic Navigation Map module a HyTime-based approach of linking topics with information has been developed, and an architecture is defined that can support applications that provide:

Using this Topic Navigation Map module, a particular topic architecture, designed for some document, some set of documents, or even for an entire field of knowledge, can be represented in a topic map. A topic map consists of a set of topics and a set of topic relationships. Topics are defined using CApH.semanticAssignment-form elements whose roles are defined by the user, and CApH.topicRelation-form elements that identify specific relations between topics. Categories of topics may be iteractively identified and described by linking suitable topics to other topics belonging to the category.

A topic is created by linking, using a HyTime independent link, several pieces of information about a topic through a semantic assignment link. A topic can be defined by assigning an anchrole attribute to the link's definition: whatever anchor corresponds to the definition in the anchrole attribute, if any, is therefore considered as the definition of the topic. This notion of definition is very general: a definition can be any portion of information (no specific internal structure needed) that is pointed to.

Semantic Assignment -- CApH.semanticAssignment

A semantic assignment (CApH.semanticAssignment) is a specialized HyTime independent link (ilink) that associates all the information objects sharing a common semantic. This group of objects is collectively called a topic. The located objects have the common property of being anchors of a semantic assignment element. Therefore, one can distinguish:

Common examples of topics are index and/or glossary entries: an index entry is a set of locations sharing common semantics described by the term that is displayed in the index; they are normalyy displayed in alphabetical order. A glossary entry is a topic that points to an occurrence considered as its definition. CApH enables topics that play at the same time the role of index and glossary entries: one of their occurrence roles is their definition, the others being the equivalent of index entries.

The value of the HyTime anchrole attribute is user-definable and allows the user to distinguish between different roles of occurrence sets. The only constraint imposed by CApH is that the first anchor be the semantic assignment. This is the only way to enable the link to be referred to. All other declared anchors can be aggregate anchors.

When a semantic assignment is instantiated, its anchrole values have to be explicitely defined. The role of each anchor is to specify the nature of the occurrence where the information about a given topic is to be found. These anchor addresses are called "occurrence roles". There is no limit to what can be represented and distinguished as occurrence roles, nor to the number of occurrence roles. The only HyTime limitation is that occurrence roles are fixed in the DTD for a given semantic assignment element type. It is entirely the realm of the application to decide what to do when all anchors are not filled in. (A "null" address could be interpreted as no occurrence, for example.) The purpose of differentiating between different kinds of occurrence roles is to help users distinguish between different kinds of targets and navigate with more precision in a large set of information objects.

A semantic assignment can be used to instantiate as many element types as desired in an actual SGML document type defintion (DTD), allowing for a finer distinction; each semantic assignment element type can have a different set of anchors described in the anchrole attribute.

Endterm values can be associated, by the user, with any instantiated element to allow the application to display information that enhances the understanding of information to be found at the anchor. Index subentries found in printed indexes do sometimes play such a role of specializing under a given topic. HyTime applications can use the endterm attribute to display this information to users. Used in the context of a CApH application, the endterm values point to information whose purpose is to clarify a semantic title, without adding any extra structural level.

Anchor aggregation may be given special significance in a given derived type as long as the basic meaning of the CApH form remains intact. HyTime's aggregate traversal (aggtrav) attribute may be used with agglink aggregate anchors independently or as an enhancement of the meaning of a derived type of an instance.

There is no requirement that the value of the aggloc attribute of an aggregate anchor of a CApH.semanticAssignment be agglink; it could be aggloc instead. Moreover, there is no requirement that any anchor be an aggregate at all. (In such cases, from a HyTime perspective, the value of the aggtrav attribute is irrelevant.)

The first anchor, called the topic anchor, must identify the CApH.semanticAssignment element itself. Making the semantic assignment one of its own anchors permits users to traverse from some other link (if any) to the semantic assignment, and thence to either (or part of, or all) of the semantic assignment's other anchors. HyTime link traversal is possible only between the anchors of a link; there is no implicit traversability between a link and its anchor addresses unless it is itself one of those anchor addresses (anchaddr).

Specification of the link in an anchaddr attribute value can be defaulted. In HyTime links, if there is one more anchor indicated by the anchrole attribute than are actually specified via the anchaddr attribute, the first anchor is always understood to be the link itself; i.e. the link is the missing anchor.

Each of the other anchors (collectively called occurrences) may identify any number of information objects. The full power of HyTime's information addressing facilities can be used to associate semantic definitions with literally any pieces of information, identified by whatever structural, contextual, semantic properties, or other means are convenient.

The CApH-specific mnemonic attribute allows a brief single-token name to be given to the semantic definition.

The CApH-specific semanticUniverses attribute specifies the semantic context(s) in which the definition is valid. The generic identifier of a semantic assignment element constitutes implicitely a universe. Other tokens may be added to the default one as values of the semanticUniverses attribute, as there is no limit to the number of universes attached to any instance of an element.

Depending on the application, the user can choose to constrain the tokens used in the semantic universes within a predefined list, shared by a community of users. The semantic universe can be described as a HyTime-defined parsing context (parsecxt). A CApH-aware application will allow users to filter those objects belonging to one, or several, universes, and discard remaining elements, as if they did not exist, using the omitprop attribute of the parsecxt definition. This feature helps authors and editors of hyperdocuments to create and maintain concurrent universes while giving users access to a known set of universes. The possibility of maintaining a unique hyperdocument while allowing several views on it should considerably enhance its maintainability.

A CApH engine must be able to suppress an element with a CApH-defined semanticUniverses attribute. It is processed in any context in which none of the universes specified by the token list is found in the value of the semanticUniverses attribute, so that the element can be disqualified. The question of what it means, in any particular case, for information to be disqualified is entirely the realm of the application. In general, though, the purpose of disqualification by semantic universe is to avoid wasting the user's time and attention on irrelevant information. It is the responsability of the application to inform the CApH application whenever semantic universes (parsing contexts) become valid or invalid due to changes in user context; this minimizes transmission of unwanted information. (In some applications, a user can say that all universes are always valid, and then see everything. In other applications, universes can be used for separating access levels depending on the degree of classification for different parts of the document, as defined by the hyperdocument editor, but can not be modified by individual end-users.)

The CApH application is responsible for maintaining a namespace of universes for each mnemonic, and a namespace of mnemonics for each universe. Given a mnemonic, a CApH engine that supports the semantic assignments must be able to provide a comprehensive list of all mnemonics declared in semantic assignments in the bounded object set (BOS)

<!element CApH.semanticAssignment
                                  -- associates portions of
                                     information sharing
                                     a common semantic.     --
                           - O   (semanticTitle*) >
<!attlist CApH.semanticAssignment

    CApH        NAME        CApH.semanticAssignment

    id          ID          #IMPLIED
                  -- CApH strongly encourages the id of a CApH.semanticAssignment
                     element to be present, in order to use this topic as an
                     anchor for a topic relation link. As all topics must
                     not be anchors, the id is not required. --

    HyTime      NAME        ilink

    mnemonic      -- the short or key name for the subject matter of
                     this definition; machine-processable identifier. Can be seen 
                     as a "semantically-loaded identifier" 
                     (which may or may not be unique)  --
                CDATA       #IMPLIED

    semanticUniverses
                  -- Defines the semantic universe in which this topic is
                     useful. This attribute is generally used to filter out the
                     non-relevant topic according to a list of universes chosen
                     by the user. --

    anchrole    NAMES       #FIXED
                      "Topic OccurrenceRole_1 #AGG... OccurrenceRole_n #AGG"
                  -- The number of anchroles is not specified in the
                     architectural form because it is application-specific.--
                     The anchors can generally be aggregates (#AGG), although
                     this is not required by CApH, if some application
                     needs to specify an anchor role in which the address
                     is not the address of an aggregate. --

    anchaddr      -- Anchor addresses. (was "linkends").
                     Constraint: one anchor per anchor role. --
                  -- CApH constraint: "Topic" anchor must be the
                     link itself. --
                IDREFS      #REQUIRED

    extra         -- External access traversal rule --
                  -- Constraint: one per anchor or one for all --
                  -- Lextype(("E"|"I"|"A"|"N"|"P")+) --
                NAMES    #IMPLIED  -- Default: no HyTime traversal --
    intra         -- Internal access traversal rule --
                  -- Constraint: one per anchor or one for all --
                  -- Lextype(("E"|"I"|"A"|"N"|"P")+) --
                NAMES    #IMPLIED  -- Default: no HyTime traversal --

    endterms      -- Link end term information.--
                     Constraint: one per anchor or one for all.  --
                IDREFS      #IMPLIED  -- Default: none --

    aggtrav        -- Traversal of agglink anchors: agg or members.
                     Constraint: one per anchor or one for all.
                     lextype(("AGG"|"MEM"|"COR"), (s+,
                     ("AGG"|"MEM"|"COR"))*) --
                NAMES                 "MEM AGG MEM"
>

CApH Semantic Title

The optional CApH.semanticTitle element in the content of a CApH.semanticAssignment element is intended to contain a brief, single phrase text title for the semantic: one that is normally longer than the value of the mnemonic attribute. Generally, a semantic assignment has one semantic title. But there can be - interesting - cases where zero or several semantic titles can be useful:

<!element CApH.semanticTitle - - ANY >
              -- Descriptive phrase title or expansion of the mnemonic
                 of the containing CApH.semanticDefinition-form element --
<!attlist CApH.semanticTitle
    CApH        NAME        CApH.semanticTitle
>

Architectural Form for Topic Navigation

Hypertexts contain cross-reference links, and links of other kinds, that serve various purposes. Some links have explicit topic implications, and some do not. Some of those that have topic implications may nonetheless not be explicitly intended by their author as an indication of what should be provided to users as an aid to navigation within a topic space.

CApH-conforming links that aid topic navigation are recognized by the values of their CApH attributes, which must be either CApH.topicRelation or CApH.semanticAssignment.

Representation of Relationships between Topics: CApH.topicRelation

Topics may be linked to one another by means of topic relation links (CApH.topicRelations). These links express application-defined relationships, if any, between the topics. Any number of relationships can exist between any two or more topics. Each topic is specified in the anchaddr attribute by means of a unique identifier reference that ultimately resolves to the unique identifier of a CApH.semanticAssignment.

Topics may be linked to one another to create abstract topic maps that might be used as skeletal structures onto which exemplary and/or related instances can subsequently be added.

The exact nature of the relationship represented by a topic relation link element type may be given in a semantic definition element which is linked to all instances of links bearing this generic identifier by means of a semantic assignment link.

The content of a CApH.topicRelation is not specified by the CApH.

The value of the CApH.semanticUniverse attribute specifies the name(s) of the universe(s) in which the topic relationship expressed by the link is valid. A CApH engine must be able to warn the application whenever the CApH.semanticAssignment-form element is processed in a context in which none of the universes specified by the token list is valid, so that the topic relationship can be disqualified.

Universe(s) need not be specified, but they can be specified by defaulting them or fixing them in the DTD, or they can be specified (possibly overrriding a default value given in the DTD) in the start-tag of each element instance. If there is no default value and none is specified in the element instance, then the application's behavior with respect to disqualification is not specified by CApH.

<!element CApH.topicRelation - O ANY >
<!attlist CApH.topicRelation
    id          ID          #REQUIRED
    CApH        NAME        CApH.topicRelation
    semanticUniverses  CDATA  #IMPLIED            -- Default: not specified --
                  -- Constraints: Use #ALL to mean "valid in all
                     universes" --
    HyTime      NAME        ilink
    anchrole      -- Anchor roles.  Constraint: one per anchor. --
                  -- CApH lextype("Relation", s+, (NAME, (s+, RNI, "AGG")?),
                     (s+, NAME, s+, (RNI, "AGG")?)+). --
                  -- CApH constraint: As NAMEs, use value(s) of the
                     mnemonic attribute(s) of CApH or user
                     instantiated CApH.semanticDefinition element(s) --
                CDATA       #FIXED in-DTD
    anchaddr      -- Anchor addresses --
                  -- Constraint: one anchor per anchor role. If one is omitted,
                     ilink element is first anchor.--
                  -- CApH constraint: IDREFS must resolve to elements
                     conforming to CApH.semanticAssignment,
                     CApH.semanticDefinition, or CApH.topicRelation
                     architectural forms --
                IDREFS       #REQUIRED
    extra         -- External access traversal rule --
                  -- Constraint: one per anchor or one for all --
                  -- Lextype(("E"|"I"|"A"|"N"|"P")+) --
                NAMES    #IMPLIED  -- Default: no HyTime traversal --
    intra         -- Internal access traversal rule --
                  -- Constraint: one per anchor or one for all --
                  -- Lextype(("E"|"I"|"A"|"N"|"P")+) --
                NAMES    #IMPLIED  -- Default: no HyTime traversal --
    endterms      -- Link end term information.--
                  -- Constraint: one per anchor or one for all.--
                IDREFS      #IMPLIED  -- Default: none --
    aggtrav        -- Traversal of agglink anchors: agg or members.
                     Constraint: one per anchor or one for all.
                     lextype(("AGG"|"MEM"|"COR"), (s+,
                     ("AGG"|"MEM"|"COR"))*) --
                NAMES                 agg
>