  
The informative Topic Maps website maintained by  Michel Biezunski (InfoLoom) and  Steven R. Newcomb (Coolheads Consulting) | 
  | 
 | 
An API to a Topic Maps Graph, in XML
Michel Biezunski and Steven R. Newcomb 
June 27, 2001. 
Text version of this DTD: http://www.topicmaps.net/TMGraphAPI3.dtd 
Yet Another DTD for renditions-as-XML of Topic Maps Graphs. ("Topic Maps Graphs" a la http://www.topicmaps.net/pmtm4.htm) 
CLAIMER: This TMGraphAPI3.dtd DTD is designed to express
topic maps in such a way as to permit the information that
they contain to be directly and comprehensively accessible
via even the simplest DOM applications.  This appears to be
a possible way to publish topic maps, for use by DOM
applications that can't or shouldn't be required to create
or maintain an entire topic maps graph within themselves. 
The authors request that all copies and translations of
Topicmaps.net's "API to a Topic Maps Graph Document Type Definition" be
complete and correct, including this and all other notices, and
including attribution to the authors by names and e-mail addresses,
please. The authors also request that any claims of conformance to
Topicmaps.net's Processing Model be accurate. Either a processing
system conforms to the model exactly and comprehensively in every
detail, or it does not conform, and no claim of conformance is
justified. 
 | 
Root element type: <topicMapGraph>
     Each <topicMapGraph> element fully and consistently
     represents a single topic maps graph that has been fully
     rationalized and normalized.  <topicMapGraph> elements
     conform to all of the constraints on topic maps graphs
     that have been produced in accordance with all of the
     rules governing the processing of topic maps.  This DTD
     is designed to allow the fully normalized topic maps to
     be interchanged and used in contexts where topic map
     engines are not available, while preserving some of the
     formatting and querying flexibility provided by topic
     map graphs.
     <topicMapGraph> elements contain many redundant
     references.  Wherever a topic maps graph provides an arc
     that can be traversed in either direction,
     <topicMapGraph> elements provide referencing
     information at the elements that correspond to both
     ends of the arc, so that the same bidirectional
     traversal capability is fully preserved even when only
     the simplest XML hyperlinking technology is used to
     render or browse the <topicMapGraph>.
     Some information in <topicMapGraph> elements is
     provided redundantly in order to make it convenient to
     use the DOM API, for example, just as if it were a
     simple API designed for topic maps graphs.
     It is strongly recommended that all <topicMapGraph>
     elements be automatically rendered from fully-processed
     topic maps graphs.  It is inadvisable to attempt to create a
     <topicMapGraph> element by any other method, or to edit a
     <topicMapGraph> by hand.  If any method other than the
     recommended method is used, the result is very likely to be
     self-inconsistent, and it may cause applications to behave
     inconsistently.
<topicMapGraph>
<!ELEMENT topicMapGraph (
   aNode |
   membership |
   templateRoleRPR |
   tNode |
   sNode
   )*
>
<!ATTLIST topicMapGraph
   id          ID     #IMPLIED
   xmlns       CDATA  #FIXED 
      'http://www.topicmaps.net/temporary/topicMapGraph/1.0/'  
   xmlns:xlink CDATA  #FIXED 'http://www.w3.org/1999/xlink'
   xml:base    CDATA  #IMPLIED
>
 | 
   <aNode> | 
       Each <aNode> represents a topic association. | 
   <membership> | 
       Each <membership> represents the fact
       that a topic is a member of an association, and it
       characterizes the topic's membership by referring to a
       <templateRoleRPR> element that provides
       information about the role being played, and the association
       template, if any.   | 
   <templateRoleRPR> | 
       Each <templateRoleRPR> characterizes an
       association member role.  If the role is specified by one or
       more association templates, there is a
       <templateRoleRPR> for each such
       template/role combination.  In addition, if the role appears in
       one or more associations that do not have templates, there is
       exactly one <templateRoleRPR> -- that
       specifies no template -- that is used by all such template-less
       associations to characterize the role. | 
   <tNode> | 
       Each <tNode> represents a topic. | 
   <sNode> | 
       Each <sNode> represents a scope. | 
 
Primary Element Types
<tNode>
Each <tNode> element represents a topic. -->
<!ELEMENT tNode ( 
   constitutedBy?,
   indicatedBy*,
   isMember*,
   componentOfScope*,
   isRoleOf*,
   isTemplateHasRole*,
   isRPROf*,
   isTemplateOf*
   )
>
<!ATTLIST tNode
  id  ID  #REQUIRED
>
  | 
   <constitutedBy> | 
       References a subject constituter.
                             Used only if the subject of this
                             <tNode> is an addressable subject,
                             i.e., an information resource
                             considered as an information
                             resource, rather than in terms of
                             what it means or indicates. | 
   <indicatedBy> |  
'      Each references a subject indicator.  There really should be at
       least one of these.  It is OK for the
       <tNode> to reference itself, i.e., to use
       itself as a binding point, but it must be done explicitly;
       processing systems will not assume that the
       <tNode> is one of its own binding points
       automatically.   | 
   <isMember> | 
       Each references a <membership> that
           contains a <memberRef> that references
           this <tNode>.  Used only if this
           <tNode> is a member of an
           association. | 
   <componentOfScope> | 
       Each references an <sNode> that contains
           a <hasComponent> that references this
           <tNode>.  Used only if this
           <tNode> is a component of a scope.
            | 
   <isRoleOf> | 
       Each references a <templateRoleRPR>
           whose <roleRef> references this
           <tNode>.  Used only if this
           <tNode>'s subject is an association role
           in any association.   | 
   <isTemplateHasRole> | 
       Each references a <templateRoleRPR>
           whose <templateRef> references this
           <tNode>.  Used only if this
           <tNode>'s subject is an association
           template.   | 
   <isRPROf> | 
       Each references a <templateRoleRPR>
           whose <RPRRef> references this
           <tNode>.  Used only if this
           <tNode>'s subject is the class of which
           all players of a given role must be instances. | 
   <isTemplateOf> | 
       Each references an <aNode> that contains
           a <templateRef> that references this
           <tNode>.  Used only if this
           <tNode>'s subject is an association
           template.   | 
 
 
                
<aNode>
Each <aNode> represents a topic association.
<!ELEMENT aNode ( 
   templateRef?,
   indicatedBy*,
   hasMember*,
   isMember*,
   componentOfScope*,
   hasScope+
                ) 
>
<!ATTLIST aNode
  id  ID  #REQUIRED
>
 | 
   <templateRef> | 
       References a <tNode> whose subject is
           the template of the class of associations of which the
           association represented by this <aNode>
           is an instance.  Used only if this
           <aNode> has a template.   | 
   <indicatedBy> | 
       Each references a subject indicator.  There really should
           be at least one of these.  It is OK for the
           <aNode> to reference itself, i.e., to
           use itself as a binding point, but it must be done
           explicitly; processing systems will not assume that the
           <aNode> is one of its own binding points
           automatically.  Note: the subject of an
           <aNode> is *always* the relationship
           (the "association") that it represents. | 
   <hasMember*,> | 
       Each references a <membership> that
           contains an <associationRef> that refers
           back to the <aNode>.  Used only if the
           association represented by the <aNode>
           has one or more members. | 
   <isMember> | 
       Each references a <membership> that
           contains a <memberRef> that references
           this <aNode>.  Used only if this
           <aNode> is a member of an
           association. | 
   <componentOfScope> | 
       Each references an <sNode> that contains
           a <hasComponent> that references this
           <aNode>.  Used only if this
           <aNode> is a component of a scope.
            | 
   <hasScope> | 
       Each references an <sNode> that contains
           an <isScopeOf> that references this
           <aNode>.  Every
           <aNode> always has at least one scope,
           so there is always at least one
           <hasScope> element in each
           <aNode>. | 
 
<sNode>
Each <sNode> represents a scope.
<!ELEMENT sNode ( 
   hasComponent*,
   isScopeOf+
                ) 
>
<!ATTLIST sNode
  id  ID  #REQUIRED
>
 | 
   <hasComponent> | 
       Each references a <tNode> or
           <aNode> that contains an
           <componentOfScope> element that
           references this <sNode>.  The scope
           represented by an <sNode> is the set of
           topics that are referenced by the
           <hasComponent> elements contained in the
           <sNode>.  Note: In any given
           <topicMapGraph>, it is possible/likely
           that there will be an <sNode> that
           contains no <hasComponent> elements; the
           null set of topics is a valid scope. | 
   <isScopeOf> | 
       Each references an <aNode> that contains
           a <hasScope> element that references
           this <sNode>.  The
           <aNode>s that are referenced by the
           <isScopeOf> element have as one of their
           scopes the scope represented by this
           <sNode>. | 
 
<membership>
<!ELEMENT membership ( 
   memberRef,
   associationRef,
   templateRoleRPRRef,
   scopeRef+
                     )
>
<!ATTLIST membership
  id  ID  #REQUIRED
>
 | 
Each <membership> element characterizes the
     membership of an association member in an association.
   <memberRef> | 
       References a <tNode> or
           <aNode> that contains an
           <isMember> element that references this
           <membership>.  The referenced
           <tNode> or <aNode> is
           a member of the association represented by the
           <aNode> referenced by the sibling
           <associationRef> element, playing the
           role that is the subject of the <tNode>
           referenced by the <roleRef> element
           contained in the <templateRoleRPR>
           element referenced by the sibling
           <templateRoleRPRRef> element. | 
   <associationRef> | 
       References an <aNode> that contains a
           <hasMember> element that references this
           <membership>.  The referenced
           <aNode> represents the association of
           which the <tNode> or
           <aNode> referenced by the sibling
           <memberRef> is the member; the
           relationship between the association and the member is what
           is being characterized by the
           <membership> element. | 
   <templateRoleRPRRef> | 
       References a <templateRoleRPR> element
           that contains a <membershipRef> element
           that references this <membership>
           element.  The referenced
           <templateRoleRPR> element characterizes
           the role that the <tNode> or
           <aNode> referenced by the sibling
           <memberRef> element plays in the
           association represented by the <aNode>
           referenced by the sibling
           <associationRef> element. | 
   <scopeRef> | 
       Each references an <sNode> element that
           represents a scope that governs the association represented
           by the <aNode> referenced by the sibling
           <associationRef> element.  The set of
           <scopeRef>s that appears in a
           <membership> is always the same as the
           set of <scopeRef>s that appears in the
           <aNode> referenced by the
           <associationRef> element; this
           information is duplicated here purely for convenience.
            | 
 
Each <templateRoleRPR> element characterizes a
   role played in a class of associations (an association template),
   or, in the case of associations that do not have templates, it
   characterizes a unique role played in one or more associations that
   do not have templates.
In the case of associations that have templates, there is exactly
   one <templateRoleRPR> element for each unique
   combination of role topic (referenced by the contained
   <roleRef>) and template topic (referenced by the
   contained <templateRef>).
<templateRoleRPR>
<!ELEMENT templateRoleRPR ( 
   roleRef,
   templateRef?,
   RPRRef?,
   membershipRef*
                          )
>
<!ATTLIST templateRoleRPR
  id  ID  #REQUIRED
>
 | 
   <roleRef> | 
       References a <tNode> that contains an
           <isRoleOf> that references this
           <templateRoleRPR>.  The subject of the
           referenced <tNode> is an association
           role. | 
   <templateRef> | 
       References a <tNode> whose subject is an
           association template, and that contains a
           <isTemplateHasRole> element that
           references the containing
           <templateRoleRPR> element.  Used only if
           there is an association template that specifies the role
           that is the subject of the <tNode>
           referenced by the sibling <roleRef>.
            | 
   <RPRRef> | 
       References a <tNode> whose subject (the
           "Recognized Player of Role (RPR)" subject) is the class of
           subjects of which the subjects that play the role are
           required to be instances.  Used only when the association
           template constrains the subjects that are permitted to play
           the role that is the subject of the
           <tNode> referenced by the sibling
           <roleRef> element. | 
   <membershipRef> | 
       Each references a <membership>
           element that contains a
           <templateRoleRPRRef> element that
           references the containing
           <templateRoleRPR>.  In other words, the
           list of association memberships that are governed by the
           role/template combination characterized by a given
           <templateRoleRPR> element is the list of
           <membershipRef> elements that are
           contained in that <templateRoleRPR>
           element. 
           If there is no <templateRef>, then
           all of the memberships governed by the role topic
           (referenced by the <roleRef> element)
           are listed.  In other words, the lack of a template is
           itself regarded as a template (that can perhaps be called
           "the null template"), for purposes of establishing the
           uniqueness of the combination of role topic and template
           topic.  Thus, there is only one
           <templateRoleRPR> element for any given
           role topic in all of the template-less associations in
           which it is used as a role.  | 
 
Referencing Element Types
References to subject identity points ("binding points").
<constitutedBy>
Exactly one <constitutedBy> element may or may
          not appear in the content of a <tNode>.
          If specified, the <constitutedBy> element
          references the one-and-only information resource that
          constitutes the subject of the <tNode>
          that contains the <constitutedBy>.
<!ELEMENT constitutedBy EMPTY>
<!ATTLIST constitutedBy
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
>
 | 
<indicatedBy>
| 
      Any number of <indicatedBy> elements
          may appear in the content of a <tNode> or an
          <aNode>.  Each <indicatedBy> element
          references an information resource that
          indicates the subject of the <tNode> that
          contains the <indicatedBy>.  If the
          source of the topic or association
          represented by the <tNode> or <aNode> was one
          or more topic map interchange documents (such
          as documents that conform to the ISO 13250
          "HyTime" DTD, or to the XTM DTD), then there
          is always at least one <indicatedBy>
          element that refers to the corresponding
          "node demander" in that interchangeable
          topic map. 
 | 
 
<!ELEMENT indicatedBy EMPTY>
<!ATTLIST indicatedBy
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
>
 | 
References to <membership> elements. 
<isMember>
     <isMember> elements may appear in
          <tNode>s and <aNode>s.
          Each indicates that the subject of the containing
          <tNode> or <aNode> is
          a member of the association referenced by the
          <associationRef> element contained in the
          <membership> element referenced by the
          <isMember> element. 
<!ELEMENT isMember EMPTY>
<!ATTLIST isMember
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
>
 | 
<hasMember>
| 
      <hasMember> elements may appear in <aNode>s.
          Each specifies a member of the association
          that is the subject of the containing
          <aNode>.  The member itself is the subject of
          the <tNode> or <aNode> referenced by the
          <memberRef> element contained in the
          <membership> referenced by the <hasMember>
          element.  The role played by the member is
          the subject of the <tNode> referenced by the
          <roleRef> element contained in the
          <membership> referenced by the <hasMember>
          element.  
 | 
 
<!ELEMENT hasMember EMPTY>
<!ATTLIST hasMember
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
>
 | 
<membershipRef>
| 
      <membershipRef> elements may appear in
          <templateRoleRPR> elements.  Each specifies a
          membership in some association that is
          governed by the association role
          characterized and elaborated by the
          containing <templateRoleRPR> element.  
 | 
 
<!ELEMENT membershipRef EMPTY>
<!ATTLIST membershipRef
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
>
 | 
References to <sNodes>.
<componentOfScope>
     <componentOfScope> elements may appear in <tNode>s
          and <aNode>s.  Each indicates that the
          subject of the containing <tNode> or <aNode>
          is a component of the scope represented by
          the referenced <sNode>. 
<!ELEMENT componentOfScope EMPTY>
<!ATTLIST componentOfScope
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
>
 | 
<hasScope>
| 
      <hasScope> elements may appear in <aNode>s.
          Each indicates that the association that is
          the subject of the containing <aNode> is
          governed by the scope represented by the
          referenced <sNode>.  
 | 
 
<!ELEMENT hasScope EMPTY>
<!ATTLIST hasScope
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
>
 | 
<scopeRef>
| 
      One or more <scopeRef> elements may appear in
          every <membership> element.  Each indicates
          that the association that is the subject of
          the <aNode> referenced by the sibling
          <associationRef> element is governed by the
          scope represented by the <sNode> referenced
          by the <scopeRef>.  
 | 
 
<!ELEMENT scopeRef EMPTY>
<!ATTLIST scopeRef
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
>
 | 
References to <templateRoleRPR> elements.
<isRoleOf>
     <isRoleOf> elements may appear in <tNode>s.
          Each indicates that the subject of the
          containing <tNode> is an association role.
         
<!ELEMENT isRoleOf EMPTY>
<!ATTLIST isRoleOf
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
>
 | 
<isTemplateHasRole>
| 
      <isTemplateHasRole> elements may appear in
          <tNode>s.  The presence of an
          <isTemplateHasRole> in a <tNode> indicates
          that the subject of the containing <tNode> is
          an association template.  Each
          <isTemplateHasRole> refers to a
          <templateRoleRPR> element that characterizes
          one of the association roles templated by the
          containing <tNode>.  
 | 
 
<!ELEMENT isTemplateHasRole EMPTY>
<!ATTLIST isTemplateHasRole
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
>
 | 
<isRPROf>
| 
      <isRPROf> elements may appear in
          <tNode>s.  The presence of an
          <isRPROf> in a <tNode> indicates
          that the subject of the containing <tNode> is
          a recognized player of role.  Each
          <isRPROf> refers to a
          <templateRoleRPR> element that characterizes
          the recognized player of role templated by the
          containing <tNode>.  
 | 
 
<!ELEMENT isRPROf EMPTY>
<!ATTLIST isRPROf
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
>
 | 
<templateRoleRPRRef>
| 
      In <membership> elements, the
          <templateRoleRPRRef> element refers to the
          <templateRoleRPR> element that characterizes
          the role being played by the subject of the
          <tNode> or <aNode> referenced by the sibling
          <memberRef> element.  
 | 
 
<!ELEMENT templateRoleRPRRef EMPTY>
<!ATTLIST templateRoleRPRRef
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
>
 | 
References to <aNode> elements. 
<isTemplateOf>
     <isTemplateOf> elements may appear in
          <tNode>s whose subjects are association
          templates (classes of associations).  Each
          <isTemplateOf> refers to an <aNode> element
          that is governed by the template that is the
          subject of the <tNode> that contains the
          <isTemplateOf>. 
<!ELEMENT isTemplateOf EMPTY>
<!ATTLIST isTemplateOf
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
>
 | 
<isScopeOf>
| 
      One or more <isScopeOf> elements may appear
          in <sNode>s.  Each <isScopeOf> refers to an
          <aNode> element that is governed by the scope
          represented by the containing <sNode>.  
 | 
 
<!ELEMENT isScopeOf EMPTY>
<!ATTLIST isScopeOf
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
>
 | 
<associationRef>
| 
      In <membership> elements, the
          <associationRef> element refers to the
          <aNode> that represents the association in
          which the membership characterized by the
          <membership> exists.  
 | 
 
<!ELEMENT associationRef EMPTY>
<!ATTLIST associationRef
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
>
 | 
References to <tNode> elements.
<templateRef>
     A <templateRef> element may appear in an
          <aNode>, in which case it refers to
          the <tNode> element whose subject is the
          association template that governs the
          association that is the subject of the
          <aNode> that contains the <templateRef>.
          A <templateRef> element may also appear in a
          <templateRoleRPR> element, in which case it
          refers to the <tNode> element whose subject
          is an association template that has, as one
          of its member roles, the subject of the
          <tNode> referenced by the sibling <roleRef>
          element. 
<!ELEMENT templateRef EMPTY>
<!ATTLIST templateRef
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
>
 | 
<roleRef>
| 
      A <roleRef> appears in every
          <templateRoleRPR> element.  It refers to
          the <tNode> element whose subject is the
          association role that is specified and elaborated
          by the containing <templateRoleRPR> element.  
 | 
 
<!ELEMENT roleRef EMPTY>
<!ATTLIST roleRef
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
>
 | 
<RPRRef>
| 
      An <RPRRef> may appear in a <templateRoleRPR>
          element.  It refers to the <tNode> element
          whose subject (the "Recognized Player of Role
          (RPR)" subject) is the class of subjects of
          which the subjects that play the role (the
          role being characterized and elaborated by
          the containing <templateRoleRPR> element) are
          required to be instances.  
 | 
 
<!ELEMENT RPRRef EMPTY>
<!ATTLIST RPRRef
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
>
 | 
References to <tNode> and/or <aNode> elements. 
<hasComponent>
     <hasComponent> elements may appear in
          <sNode>s.  The scope represented by an
          <sNode> is the set of topics that are
          referenced by the <hasComponent> elements
          contained in the <sNode>. 
<!ELEMENT hasComponent EMPTY>
<!ATTLIST hasComponent
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
>
 | 
<memberRef>
| 
      A <memberRef> element appears in every
          <membership> element.  The <aNode> or <tNode>
          referenced by a <memberRef> has the
          association membership characterized by the
          containing <membership> element. 
 | 
 
<!ELEMENT memberRef EMPTY>
<!ATTLIST memberRef
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
>
 | 
  
 
XML Topic Maps Graph API DTD
<!ELEMENT topicMapGraph ( 
   aNode |
   membership |
   templateRoleRPR |
   tNode |
   sNode
                        )*
>
<!ATTLIST topicMapGraph
   id          ID     #IMPLIED
   xmlns       CDATA  #FIXED 
      'http://www.topicmaps.net/temporary/topicMapGraph/1.0/'  
   xmlns:xlink CDATA  #FIXED 'http://www.w3.org/1999/xlink'
   xml:base    CDATA  #IMPLIED
>
<!-- Namespace will be fixed when this DTD will be standardized. -->
<!-- 
     #########################################
     ######## PRIMARY ELEMENT TYPES ##########
     #########################################
-->
<!-- Each  element represents a topic. -->
<!ELEMENT tNode ( 
   constitutedBy?,
   indicatedBy*,
   isMember*,
   componentOfScope*,
   isRoleOf*,
   isTemplateHasRole*,
   isRPROf*,
   isTemplateOf*
                )
>
<!ATTLIST tNode
  id  ID  #REQUIRED
>
<!-- Each  represents a topic association. -->
<!ELEMENT aNode ( 
   templateRef?,
   indicatedBy*,
   hasMember*,
   isMember*,
   componentOfScope*,
   hasScope+
                ) 
>
<!ATTLIST aNode
  id  ID  #REQUIRED
>
<!-- Each  represents a scope.  -->
<!ELEMENT sNode ( 
   hasComponent*,
   isScopeOf+
                ) 
>
<!ATTLIST sNode
  id  ID  #REQUIRED
>
<!-- Each  element characterizes the
     membership of an association member in an
     association. -->
<!ELEMENT membership ( 
   memberRef,
   associationRef,
   templateRoleRPRRef,
   scopeRef+
         )
>
<!ATTLIST membership
  id  ID  #REQUIRED
>
<!ELEMENT templateRoleRPR ( 
   roleRef,
   templateRef?,
   RPRRef?,
   membershipRef*
 )
>
<!ATTLIST templateRoleRPR
  id  ID  #REQUIRED
>
<!-- 
     #########################################
     ######## REFERENCING ELEMENT TYPES ######
     #########################################
-->
<!-- References to subject identity points ("binding
     points").  -->
     <!ELEMENT constitutedBy EMPTY>
     <!ATTLIST constitutedBy
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
     >
     <!ELEMENT indicatedBy EMPTY>
     <!ATTLIST indicatedBy
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
     >
<!-- References to  elements. -->
     <!ELEMENT isMember EMPTY>
     <!ATTLIST isMember
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
     >
     <!ELEMENT hasMember EMPTY>
     <!ATTLIST hasMember
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
     >
     <!ELEMENT membershipRef EMPTY>
     <!ATTLIST membershipRef
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
     >
<!-- References to . -->
     <!ELEMENT componentOfScope EMPTY>
     <!ATTLIST componentOfScope
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
     >
     <!ELEMENT hasScope EMPTY>
     <!ATTLIST hasScope
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
     >
     <!ELEMENT scopeRef EMPTY>
     <!ATTLIST scopeRef
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
     >
<!-- References to  elements. -->
     <!ELEMENT isRoleOf EMPTY>
     <!ATTLIST isRoleOf
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
     >
     <!ELEMENT isTemplateHasRole EMPTY>
     <!ATTLIST isTemplateHasRole
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
     >
     <!ELEMENT isRPROf            EMPTY>
     <!ATTLIST isRPROf
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
     >
     <!ELEMENT templateRoleRPRRef EMPTY>
     <!ATTLIST templateRoleRPRRef
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
     >
<!-- References to  elements. -->
     <!ELEMENT isTemplateOf EMPTY>
     <!ATTLIST isTemplateOf
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
     >
     <!ELEMENT isScopeOf EMPTY>
     <!ATTLIST isScopeOf
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
     >
     <!ELEMENT associationRef EMPTY>
     <!ATTLIST associationRef
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
     >
<!-- References to  elements. -->
     <!ELEMENT templateRef EMPTY>
     <!ATTLIST templateRef
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
     >
     <!ELEMENT roleRef EMPTY>
     <!ATTLIST roleRef
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
     >
     <!ELEMENT RPRRef EMPTY>
     <!ATTLIST RPRRef
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
     >
<!-- References to  and/or  elements. -->
     <!ELEMENT hasComponent EMPTY>
     <!ATTLIST hasComponent
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
     >
     <!ELEMENT memberRef EMPTY>
     <!ATTLIST memberRef
        xlink:type      NMTOKEN   #FIXED 'simple'
        xlink:href      CDATA     #REQUIRED
     >
 |