This specification defines an XML Schema representation of ISO 13250 Topic Maps that also makes the maximum possible use of existing XML Link functionality.
Draft for discussion.
This document is based on the 3rd July 2000 W3C Candidate Recommendation for the XML Linking Language (XLink) Version 1.0 specification, and the 24th October 2000 Candidate Recommendation for XML Schemas.
A list of current W3C Recommendations and other technical documents can be found at http://www.w3.org/TR/.
This document defines a set of XML Schema type definitions that can be used to create a customized Topic Map Schema that provides an XML representation of an ISO 13250 Topic Map.
Chapter 2 provides a Conceptual Framework, including an overview of ISO 13250 Topic Maps, a summary of XML Links and a summary of XML Schema type definitions.
Chapter 3 provides a set XML Schema Complex Type Definitions that can be used as the basis for creating a customized topic map.
Chapter 4 illustrates how the Complex Type Definitions defined in Chapter 3 can be used to create a customized topic map.
The purpose of the XML Schema for Topic Maps is to allow the full power of ISO 13250 Topic Maps to be captured as an XML Schema in a form that makes the maximum possible use of functionality already provided in XML Links.
Note: Unlike other proposals for XML representation of Topic Maps the techniques presented here do not require the use of a fixed set of tags, but permit all of the renaming facilities provided in ISO 13250. They also make maximal rather than minimal use of XML Link functionality.
The definition of XML Schema for ISO 13250 Topic Maps depends on the following specifications: [URI], [XML-Infoset], [XML-Namespaces], [XPath], [XLink], [XML Schema: Datatypes] and [XML Schemas: Structures].
The following highlighting and typography is used to present technical material in this document:
The special terms used to describe topic maps are formally defined in Chapter 2; hyperlinks connect other uses of the term to the definition. For example, a definition of term might read: [Definition] A term is something we use a lot. The definition is labeled as such and the term is highlighted typographically. The end of the definition is not specially marked in the displayed or printed text.
Non-normative examples are set off typographically and accompanied by a brief explanation:
Example
<xs:element name="NewsCategories" ref="TopicMaps">And an explanation of the example.
References to properties of information items as defined in [XLink] are notated as links to the relevant section thereof.
This chapter gives an overview of the XML Schema for ISO 13250 Topic Maps.
The ISO 13250 Topic Maps international standard defines a set of element types that have been assigned the following somewhat over-cryptic short names:
topicmap
topic
topname
basenamedispnamesortnameoccursassoc
assocrlfacet
fvalueaddthmsbosspecTMBridNote: The last two entries are specific to the fact that ISO 13250 is defined as an application of the ISO 10744 Hypermedia/Time Based Structuring Language (HyTime) international standard. They can, therefore, be ignored in the equivalent XML application.
The topicmap element type is used to identify those parts of a resource that
define a navigable topic map. It contains details of individual topics,
associations links between topics (assoc), facets that assign property values to
resource occurrences, and details of themes (topics) that are to be considered
to be associated with certain types of topic map components.
A topic consists of a set of topic names (topname) that can be used to
identify the meaning of the topic, and a set of pointers to the parts of
resources that have been identified as using, or explaining, the meaning. In
addition to a text-only basename, a topic can be assigned
any number of displayable names (dispname), which can be defined using any
number of languages and in any number of representations, and names that can be used to identify the correct
order(s) for the topic within alphabetically sorted lists of topic names (sortname)
applicable to a specific language or domain.
Note: Topics provide a set of "node labels" for a set of logically related resources which have not necessarily been logically (or even physically) labelled.
An association links two or more topics. Each link within the association has a role that identifies the reason the topic is part of the association.
Note: Association links provide a set of "edge labels" that describe the relationships between topics (but not their occurrences).
A facet can be used to assign a property/characteristic to a part of a
resource that does not have that property assigned internally. For example, it
could be used to identify the language of a particular a piece of text. A facet
definition can define a number of different facet values (fvalue), each of which
can be associated with one or more resources.
Where a topic map is designed to identify a subset within a set of topic
maps, the themes to be added (addthms) element can be used to identify the scope
in which the topics defined in this map, or in any linked map, are to be
considered to apply.
Figure 1 illustrates the relationships between the various component parts of a topic map.

Figure 1. Relationships between elements in topic maps
There are two types of XML links: simple links that reference a single resource and extended links that can reference multiple resources, and define traversal rules (arcs) between them.
Note: This specification only uses extended XML links.
Elements conforming to the XML Linking Language [XLink] specification are
identified by the presence of one or more attributes that define the linking
properties to be associated with the element. The type of XLink element is
identified by a namespaced type attribute from this set. Normally
the xlink namespace is used for this purpose, e.g. xlink:type="extended".
The following attributes are used to identify the components of an XML extended link that are used within this specification:
xlink:typexlink:hrefxlink:rolexlink:titlexlink:labelThe xlink:type attribute identifies which type of link object is
being defined. Options include simple, extended, locator,
arc, resource and title.
The xlink:href attribute is used to identify a resource that is
to be "located" by an XLink locator component. It is defined in terms of
a [URI], as defined in IETF RFC 2396, with an optional fragment identifier based
on the XPointer specification [XPTR].
The optional xlink:role attribute can be used to provide a
pointer to a resource that explains the role played by the link. It is
defined in terms of a [URI], as defined in IETF RFC 2396, with an optional
fragment identifier based on the XPointer specification [XPTR].
The optional xlink:title attribute can be used to describe the
meaning of a link or resource in a human-readable fashion. It should contain a
string that describes the resource. An alternative way of defining titles is by
use of an xlink:title embedded element.
NB: This specification uses embedded xlink:title elements
in preference to attributes of the same name. Users can choose to add a
similarly named attribute to their applications where appropriate.
The optional xlink:label attribute is used to identify locators
that play specific roles within a traversal rule (arc). (The way in
which labels and traversal rules should be applied within a topic map is not
defined in this specification. Developers of topic map schemas based on the Complex Type
Definitions defined in Chapter 3 may choose to add them if
they are deemed appropriate.)
Chapter 3 provides a set of XML Schema Complex Type Definitions, as defined in [XML Schemas: Structures], that describe the component parts of a Topic Map, together with an abstract element declaration for each type that can be used as the basis for declaring locally applicable elements. Chapter 4 shows how these abstract element definitions will typically be used to create a customized topic map. This section describes the set of XML Schema elements and attributes used in the type definitions and examples.
Each XML Schema is enclosed within a schema element. This
element should define which namespaces, conforming to the [XML-Namespaces]
specification, are to be used for schemas, and any other
namespaces that are to be referred to within the schema. Topic maps elements
that conform to the XML Schema specification have been assigned to the xs
namespace within this specification, while attributes that are taken from the XML Linking Language are
assigned to the xlink namespace. Unassigned attributes are
considered to share the namespace of their parent element.
A Complex Type Definition is defined within an XML Schema xs:complexType
element. All Complex Type Definitions are assigned
class names using the name attribute.
Each Complex Type Definition can start with one or more of xs:annotation elements
that explain the role of the element, and provide other relevant information,
such as development history. Within this specification only xs:documentation
elements are used to annotate the definitions.
Embedded elements are identified by the presence of an xs:element
declaration within the Complex Type Definition. Within this specifications all
such declarations are made by reference (using the ref attribute)
to another Complex Type Definition. The maximum and minimum number of
occurrences of the element that are permitted within a topic map is defined
using the minOccurs and maxOccurs attributes.
Optionally, each element declaration can be annotated using the xs:annotation
element used to annotate the Complex Type Definition.
Groups of elements that may be used interchangeably are enclosed within an
xs:choice element. Groups of elements that must occur in the order
specified are defined within an xs:sequence element. The maximum
and minimum number of repetitions of the choice or sequence that are permitted
within a topic map can, where appropriate, be defined using the minOccurs
and maxOccurs attributes.
Each attribute (property/characteristic) assigned to a Complex Type Definition
is defined in an xs:attribute declaration. Each
attribute is assigned a name (defined using the name attribute)
which is unique within the Complex Type Definition, and a type
based on, or derived from, the [XML Schema:
Datatypes] specification.
It is also assigned one of the following statements relating to the way in which
it is used:
use="fixed": Only the value defined by the value
attribute of the declaration is permitteduse="required": The developer of the topic map must
provide a value for this attribute each time an element of this type is useduse="optional": The developer of a topic map may
optionally provide a value for this attribute whenever an element of this type
is used.Optionally, each attribute declaration can be annotated using the xs:annotation element used to annotate the
Complex Type Definition.
Within a customized topic map the relationship between the locally named element
declaration and the imported Complex Type Definition is declared using the substitutionGroup
attribute, whose value must be the name of one of the Abstract Element
Declarations defined in Chapter 3 for the topic map to be valid. The name to be assigned to
the instance of the class described within the customized topic map is indicated
using the name attribute.
Each topic map has a single root element, though more than one topic map can be defined within a document, and elements not defined using Complex Type Definitions defined in this chapter may occur within the same document.
Each schema used to define a topic map must be stored within an XML Schema xs:schema
element. This element shall define the namespaces being used within the
definition. Users can assign any namespace name they like to elements, but they
must declare at least two namespaces, one of which references the XML Schema
specification using the URI http://www.w3.org/2000/10/XMLSchema
and the other of which references the XML Linking Language specification using
the URI http://www.w3.org/1999/xlink.
Users may choose to support the definitions for XML Linking Language attributes,
and the XML Language attribute, from an external source.
Note: It is possible that these two URIs will change between the time of writing this specification and the final acceptance of these two standards as official W3C Recommendations. In this event the final URI as defined in the relevant Recommendation must be used in place of the versions used herein.
| Type Definition for Root of Topic Map |
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
targetNamespace="http://www.diffuse.org/TopicMaps/Schema"
xmlns:xml="http://www.w3.org/1998/XML"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xs="http://www.w3.org/2000/10/XMLSchema"
xmlns:tm="http://www.diffuse.org/TopicMaps/Schema">
<xs:annotation>
<xs:documentation>
Fifth working draft: 29th January 2001
(c) Copyright: The SGML Centre (http://www.sgml.u-net.com)
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://www.w3.org/1998/XML"
schemaLocation="http://www.diffuse.org/TopicMaps/xml-atts.xsd"/>
<xs:import namespace="http://www.w3.org/1999/xlink"
schemaLocation="http://www.diffuse.orgTopicMaps/xlink-atts.xsd"/>
<xs:complexType name="TopicMapType">
<xs:annotation>
<xs:documentation>Root element for topic map</xs:documentation>
</xs:annotation>
<xs:choice maxOccurs="unbounded">
<xs:element ref="tm:AbstractTopic"
maxOccurs="unbounded"/>
<xs:element ref="tm:AbstractAssociation"
minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="tm:AbstractFacet"
minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="tm:AbstractAddedThemes"
minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="AddedThemes" type="xs:IDREFS"
use="optional">
<xs:annotation>
<xs:documentation>
Contains the unique identifiers of topics
that are to be used as additional scopes for all
topic map conformant elements within this topic map.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:element name="AbstractTopicMap" type="tm:TopicMapType"
abstract="true"/>
|
[Definition] A topic map consists of a set of topics, associations, facets and added theme elements that are used to manage a set of terms relevant to a particular knowledge domain.
Each topic map must start with an element that is derived from the TopicMapType
Complex Type Definition shown above. This element must contain one or more of
the following types of embedded elements:
Topic: At least one topic must be defined within each topic map
Association: Describing the relationship between two or more
topicsFacet: Describing a characteristic to be assigned to one or
more resourcesAddedThemes: Identifying the relationship between topics maps.The AddedThemes attribute associated with the TopicMapType
Complex Type Definition allows one or more of the topics within the topic map to
be used as a general theme for the topic map.
| Example | |||
|
| Type Definition for Topic |
<xs:complexType name="TopicType">
<xs:annotation>
<xs:documentation>
Container for a set of names that can be used to identify
the topic together with the occurrences of resources that have
been identified as being relevant to the topic.
</xs:documentation>
</xs:annotation>
<xs:choice maxOccurs="unbounded">
<xs:element ref="tm:AbstractTopicNames"/>
<xs:element ref="tm:AbstractOccurs"/>
</xs:choice>
<xs:attribute ref="xlink:type" use="fixed" value="extended"/>
<xs:attribute name="id" type="xs:ID" use="required"/>
<xs:attribute name="identity" type="xs:uriReference"
use="optional">
<xs:annotation>
<xs:documentation>
Reference to subject descriptors used to provide
an unambiguous indication of the identity of a subject
that this topic covers.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="topics" type="tm:uriReferences"
use="optional">
<xs:annotation>
<xs:documentation>
Contains the unique identifiers of topic(s)
whose subject(s) are the classes of topics
of which this topic is an instance.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="scope" type="tm:uriReferences"
use="optional">
<xs:annotation>
<xs:documentation>
Contains the unique identifiers of topic(s) that
identify the themes(s) this topic is to be considered
to fall within.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:simpleType name="uriReferences">
<xs:annotation>
<xs:documentation> List of URIs</xs:documentation>
</xs:annotation>
<xs:list itemType="xs:uriReference"/>
</xs:simpleType>
<xs:element name="AbstractTopic" type="tm:TopicType"
abstract="true"/>>
|
[Definition] A Topic assigns a set of topic names to a set of resources that relate in some way to the meaning normally associated with the names.
{Definition] A subject descriptor is a reference to a positive, unambiguous, indication of the identify of a subject. For example, it could be a reference to some descriptive text, a Dewey Decimal Code or a Universal Decimal Classification. A public subject descriptor is a subject descriptor which is designed to be used as a common referent of the identity attributes in many topic maps.
[Definition] The theme of a topic, topic name, occurrence or
association is the set of topics defined in the scope attribute of
the element, together with any topics identified as being additional themes for
part or all of the topic map (e.g. by an AddedThemes attribute or element).
Each element used to define a topic within a topic map must be derived from
the TopicType Complex Type Definition shown above. This
element conforms to the definition of an extended XML link. At least one set of
topic names or occurrences must be defined for each topic, but there is no
restriction on how many sets of names or instances of occurrences may be
provided for each topic. Each of the occurrences defined in the topic has each
of the names that have the same scope assigned as one of its topic identifiers.
Each topic must be assigned a unique identifier as the value of its id
attribute so that it can be referenced by associations, etc. This unique identifier
must be a valid XML name.
Each topic can optionally be assigned a reference to a subject descriptor as
the value of its identity attribute. This XML pointer identifies
the relevance of the topic by reference to terms that may not be defined as
part of a topic map. Any two topics that have the same URI as the value of their
identify attribute are considered to be equivalent to a single topic that is the
union of the contents of the two topics, and of any associations that reference
them.
Where a topic is an instance of an existing topic that relationship can
optionally be recorded in the topics attribute. The value of this
attribute must be a list of valid URI references whose fragment identifier
identifies the unique identifier assigned to a topic definition.
Note: References to identifiers of topics within the same map must begin with a # to indicate that the entry is a URI rather than a name token.
Where the names and occurrences contained within the topic element are only
relevant within a specific knowledge domain, the set of topics that identify
relevant domains can optionally be recorded in the scope attribute.
The referenced topics become one of the themes of all names and occurrences
defined by the topic.
| Example | |||
|
| Type Definition for Topic Names |
<xs:complexType name="TopicNamesType">
<xs:annotation>
<xs:documentation>Names used to identify topic.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="tm:AbstractBaseName"
maxOccurs="unbounded"/>
<xs:element ref="tm:AbstractDisplayName"
minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="tm:AbstractSortName"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="xlink:type" use="fixed" value="title"/>
<xs:attribute name="scope" type="tm:uriReferences"
use="optional">
<xs:annotation>
<xs:documentation>
Contains the unique identifiers of topic(s) that
identify the scope(s) this set of names is to be
considered apply to.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:element name="AbstractTopicNames"
type="tm:TopicNamesType" abstract="true"/>
|
[Definition] A topic name is a string used by a computer or human to distinguish one topic from another. There are three types of topic names: text-only base names, human-friendly display names (which can include images) and computer-readable sort names.
Each element used to define the set of names to be used to identify a topic
within a topic map must be derived from the TopicNamesType Complex Type
Definition
shown above.
Each set of topic names must include at least one subelement that conforms to
the BaseNameType Complex Type Definition (see below).
Alternative versions of base names may also be supplied for use in
different languages or for use within different scopes (knowledge
domains).
Where appropriate, a more human-friendly displayable form of the name may be
assigned to the topic for use within a specific language/domain by one or more
elements conforming to the DisplayNameType Complex Type Definition (see below).
Where the base name is not suitable for correctly ordering the topic within
alphabetical listings in one or more of the specified languages/domains, an
element conforming to the SortNameType Complex Type Definition
(see below) can be assigned to the topic.
Where all the entries in a set of topic names are only
relevant within specific knowledge domains, the set of topics that identify relevant domains can optionally be recorded in the scope attribute.
The referenced topics become one of the themes of all names defined for the topic.
NB: If more than one set of topic names is assigned to a topic the names they contain should have different scopes. Where two topics share the same name within exactly the same set of scopes, the names and occurrences applicable to each scope are treated as a single set of names/occurrences.
| Example | |||
|
| Type Definition for Base Name |
<xs:complexType name="BaseNameType">
<xs:annotation>
<xs:documentation>Text string used to identify topic in lists
of topics if no displayed name is assigned to the topic.</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="scope" type="tm:uriReferences"
use="optional">
<xs:annotation>
<xs:documentation>
Contains the unique identifiers of topic(s) that
identify the scope(s) this name is to be
considered apply to.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="xml:lang" type="xs:language"
use="optional">
<xs:annotation>
<xs:documentation>
Language code(s)(conforming to IETF RFC 1766) that
indicate the language group the displayed name
will be understood by.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name="AbstractBaseName"
type="tm:BaseNameType" abstract="true"/>
|
[Definition] A base name is a string used to distinguish one topic from another.
Each element used to define a base name for the recognition of a topic within a
topic map must be derived from the BaseNameType Complex Type Definition
shown above. If multiple base names are assigned to a topic each such name
should be relevant to a specific language or knowledge domain.
Where a base name is only
relevant within specific knowledge domains, the set of topics that identify
relevant domains can optionally be recorded in the scope attribute.
The referenced topics become one of the themes of the base name, in addition to
those assigned to any enclosing elements conforming to the TopicNamesType,
TopicType or TopicMapsType Complex Type Definitions
by their scope or AddedThemes attributes.
Where a base name is only significant for a specific language the xml:lang
attribute should be used to identify the language used in conformance with IETF
RFC 1736.
| Example | |||
|
| Type Definition for Display Name |
<xs:complexType name="DisplayNameType" mixed="true">
<xs:annotation>
<xs:documentation>
String, image or other form of presentable information
to be displayed in place of the base name within a
list of topics. For example, it could be a shorter or
longer version of the base name, or a picture or
clickable sound bite identifying the topic.
If not present the base name is displayed.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:any namespace="##other"/>
</xs:sequence>
<xs:attribute name="scope" type="tm:uriReferences"
use="optional"/>
<xs:attribute ref="xml:lang" type="xs:language"
use="optional">
<xs:annotation>
<xs:documentation>
Language code(s)(conforming to IETF RFC 1766) that
indicate the language group the displayed name
will be understood by.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:element name="AbstractDisplayName"
type="tm:DisplayNameType" abstract="true"/>
|
[Definition] A display name provides a more user-friendly format for the topic for use within a particular language/scope.
Each element used to define displayable name for the recognition of a topic
within a topic map must be derived from the DisplayNameType Complex Type
Definition
shown above. If multiple display names are assigned to a topic each such
name should be identified as being relevant to a specific language or business domain.
A display name may consist of text or any other element that is not defined within the same namespace as a topic map.
Where a display name is only
relevant within specific knowledge domains, the set of topics that identify
relevant domains can optionally be recorded in the scope attribute.
The referenced topics become one of the themes of the name, in addition to those
assigned to any enclosing elements conforming to the TopicNamesType, TopicType
or TopicMapsType Complex Type Definitions by their scope
or AddedThemes attributes.
Where a display name is only significant for a specific language the xml:lang
attribute should be used to identify the language used in conformance with IETF
RFC 1736.
| Example | |||
|
| Type Definition for Sort Name |
<xs:complexType name="SortNameType">
<xs:annotation>
<xs:documentation>Name used for sorting purposes when ordering lists</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="scope" type="tm:uriReferences"
use="optional">
<xs:annotation>
<xs:documentation>
Contains the unique identifiers of topic(s) that
identify the scope(s) this name is to be
considered apply to.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute ref="xml:lang" type="xs:language"
use="optional">
<xs:annotation>
<xs:documentation>
Language code(s)(conforming to IETF RFC 1766) that
indicate the language group the displayed name
will be understood by.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name="AbstractSortName" type="tm:SortNameType" abstract="true"/> |
[Definition] A sort name is used to correctly identify the sequence in which a topic should be listed when this is not directly indicated by the base name.
For example, if the base name is Charles VI the sort name might
be Charles6 so that similarly named kings will be listed in the
correct order, and Charles VI will not appear after Charles
IX.
Each element used to define the sorting order for a set of topics within a
topic map must be derived from the SortNameType Complex Type Definition
shown above. If multiple sort names are assigned to a topic each such name
should be identified as being relevant to a specific language or business domain.
Where a sort name is only
relevant within specific knowledge domains, the set of topics that identify
relevant domains can optionally be recorded in the scope attribute.
The referenced topics become one of the themes of the sort name, in addition to
those assigned to any enclosing elements conforming to the TopicNamesType,
TopicType or TopicMapsType Complex Type Definitions
by their scope or AddedThemes attributes.
Where a sort name is only significant for a specific language the xml:lang
attribute should be used to identify the language used in conformance with IETF
RFC 1736.
| Example | |||
|
| Type Definition for Occurs |
<xs:complexType name="OccursType">
<xs:annotation>
<xs:documentation>Identifies resource that utilizes topic</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="tm:AbstractPrompt"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="xlink:type" use="fixed" value="locator"/>
<xs:attribute ref="xlink:href" type="xs:uriReference"
use="required">
<xs:annotation>
<xs:documentation>
URI (conforming to IETF RFC 2396, with XML fragment
identifiers for identification of subsections of a
resource) that identifies where the topic is applied.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute ref="xlink:label" type="xs:NMTOKEN"
use="optional"/>
<xs:attribute ref="xlink:role" type="xs:uriReference"
use="optional"/>
<xs:attribute name="scope" type="tm:uriReferences"
use="optional"/>
</xs:attribute>
<xs:attribute name="xml:lang" type="xs:language"
use="optional">
<xs:annotation>
<xs:documentation>
Language code(s) (conforming to IETF RFC 1766) that
indicate the language group(s) the contents of the
resources being pointed at is relevant for.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:element name="AbstractOccurs"
type="tm:OccursType" abstract="true"/>
|
[Definition] An occurrence of a topic identifies which parts of a resource are related to the topic, and the role that part of the resource plays with respect to the topic.
Each element used to identify occurrences of a topic from a topic map within
a web resources must be derived from the OccursType Complex Type Definition
shown above. It can optionally contain one or more elements conforming to the PromptType
Complex Type Definition.
Each element conforming to the OccursType Complex Type Definition is an XLink locator. It must have an XLink href
attribute that identifies a resource whose content is related in some way to the
topic. Where only part of the resource is relevant for the topic a fragment
identifier that is conformant with the XPointer specification may be used to
identify the relevant part of the resource.
NB: Because XML Links do not allow embedded XML Links to be used as locators of resources, occurrences declared using this schema can only be assigned to a single resource. (ISO 13250 allows an occurrence to identify a set of resources.)
Each occurrence type element may optionally be assigned an XML name that
identifies the role played by the occurrence with respect to the topic. If no
value is supplied for the xlink:label attribute the name assigned
to the element is taken to be a sufficient label.
NB: The general-purpose xlink:label has been used in
preference to a specialist occurrence role attribute (e.g. occrl
in ISO 13250) to ensure maximum possible reuse of in-built XLink
functionality. It is equivalent to the role attribute used
on higher level elements.
Where there exists a topic that defines a set of names relevant to the role,
and/or occurrences explaining it, the xlink:role attribute can be
used to reference the unique identifier of this topic.
NB: This attribute serves the same purpose as the type
attribute in an ISO 13250 occurs type element. It represents
a restriction on the xlink:role attribute in that it
restricts the type of resource that can be referenced to one that conforms to
the TopicType Complex Type Definition.
Where an occurrence is only
relevant within specific knowledge domains, the set of topics that identify
relevant domains can optionally be recorded in the scope attribute.
The referenced topics become one of the themes associated with the occurrence,
in addition to those assigned to any enclosing elements conforming to the TopicType
or TopicMapsType Complex Type Definitions by their scope
or AddedThemes attributes.
Where the content of the occurrence is in a language other than that used for
the bulk of the topic map the xml:lang attribute should be used to
identify the language used within the resource in conformance with IETF RFC
1736.
| Example | ||
|
||
In the Diffuse Standards and Specification List the ExplainedIn
element is used to identify occurrences that explain the standard. It is based on the
OccursType
Complex Type Definition, and is an instantiation of the AbstractOccurs
class. It can optionally contain a Prompt element. It acts as
an XLink locator. |
| Type Definition for Prompt |
<xs:complexType name="PromptType">
<xs:annotation>
<xs:documentation>Optional text used to prompt users as to the contents of the resource</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:any namespace="##other"/>
</xs:sequence>
<xs:attribute ref="xlink:type" use="fixed" value="title"/>
<xs:attribute name="xml:lang" type="xs:language"
use="optional">
<xs:annotation>
<xs:documentation>
Language code(s) (conforming to IETF RFC 1766) that
indicate the language group(s) the contents of the
resources being pointed at is relevant for.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:element name="AbstractPrompt"
type="tm:PromptType" abstract="true"/>
|
[Definition] A prompt provides a textual clue to the user as to what he will see if he chooses a particular resource.
Each element used to prompt the user to select a locator within a topic
map must be derived from the PromptType Complex Type Definition
shown
above. It will be considered to be a title element by XLink
processors.
Prompts may contain text and any element that does not conform to one of the Complex Type Definitions defined in this specification.
Where the content of the prompt is provided in more than one language the xml:lang
attribute should be used to identify the language used in conformance with IETF
RFC 1736.
| Example | ||
|
||
In the Diffuse Standards and Specification List the Prompt element is used to
record text that is to be displayed to the user as the title of an element. Any
element can be embedded within the title (e.g. it could be an HTML fragment). It is based on the
PromptType
Complex Type Definition, and is an instantiation of the AbstractPrompt
class. It acts as an XLink title. |
| Type Definition for Association |
<xs:complexType name="AssociationType">
<xs:annotation>
<xs:documentation> Association between topics within topic map</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="tm:AbstractAssociationRole"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="xlink:type" use="fixed" value="extended"/>
<xs:attribute name="role" type="xs:NMTOKEN" use="optional"/>
<xs:attribute ref="xlink:role" type="xs:uriReference"
use="optional">
<xs:annotation>
<xs:documentation>
Contains the unique identifier of a topic
whose names can be used to identify the role of
the association.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="scope" type="tm:uriReferences">
<xs:annotation>
<xs:documentation>
Contains the unique identifiers of topic(s) that
identify the scope(s) this association falls within.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:element name="AbstractAssociation"
type="tm:AssociationType" abstract="true"/>
|
[Definition] An association link expresses relationships between topics. Each such relationship is named (typed).
NB: Association links describe the relationships between topics rather than specific occurrences of topics within resources.
Each element used to define a relationship between two or more topics within a topic
map must be derived from the AssociationType Complex Type Definition
shown above. This
element conforms to the definition of an extended XML link.
Each association link may optionally be assigned an XML name that identifies
the role played by the association. If no value is supplied for the role
attribute the name assigned to the element is taken to be a sufficient label.
Where an association is an instance of a type of association that has already
been named/described in an existing topic, the relevant topic can be identified
using the xlink:role attribute. The value of this
attribute must be a valid URI reference whose fragment identifier identifies the unique identifier assigned to the
relevant topic definition.
NB: The general-purpose xlink:role has been used in
preference to a specialist association type attribute (e.g. type
in ISO 13250) to ensure maximum possible reuse of in-built XLink
functionality. It represents a restriction on the xlink:role attribute
in that it restricts the type of resource that can be referenced to one that
conforms to the TopicType Complex Type Definition.
Where an association is only
relevant within specific knowledge domains, the set of topics that identify
relevant domains can optionally be recorded in the scope attribute.
The referenced topics become one of the themes associated with the association,
in addition to those assigned to any enclosing elements conforming to the TopicMapsType
Complex Type Definition by its AddedThemes attribute.
| Example | ||
|
||
The Associaton
element is used to identify relationships between topics. It is based on the
AssociationType
Complex Type Definition, and is an instantiation of the AbstractAssocistion
class. It acts as an XLink extended link. |
| Type Definition for Association Role |
<xs:complexType name="AssociationRoleType">
<xs:annotation>
<xs:documentation>Role played by association</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="tm:AbstractPrompt"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="xlink:type" use="fixed" value="locator"/>
<xs:attribute ref="xlink:href" type="xs:uriReference"
use="required"/>
<xs:attribute ref="xlink:label" type="xs:NMTOKEN"
use="optional">
<xs:annotation>
<xs:documentation>
Name (without spaces) used to identify role played
by this part of the association. If not present,
the element name is taken to indicate the role.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute ref="xlink:role" type="xs:uriReference"
use="optional">
<xs:annotation>
<xs:documentation>
Contains the unique identifier of a topic
whose names can be used to display the role of
this part of the association.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:element name="AbstractAssociationRole"
type="tm:AssociationRoleType" abstract="true"/>
|
[Definition] An association role identifies the role played by a specific linked resource within a particular association.
NB: An association role can be thought of as an edge label that links two topics to prompt users when they are navigating between topics in a topic map.
Each element used to describe the role of a topic within an association
relationship must be derived from the AssociationRoleType Complex Type
Definition
shown above.
Each element conforming to the AssociationRoleType Complex Type Definition is an XLink locator. It must have an XLink href
attribute that identifies a topic defined in a topic map, using the topic's
unique identifier as the fragment identifier of the URI.
NB: Because XML Links do not allow embedded XML Links to be used as locators of resources, association roles declared using this schema can only be assigned to a single resource. (ISO 13250 allows an association role to identify a set of resources.)
Each association role element may optionally be assigned an XML name that
identifies the role played this part of the association. If no value is supplied
for the xlink:label attribute the name assigned to the element is
taken to be a sufficient label.
NB: The general-purpose xlink:label has been used in
preference to a specialist anchor role attribute (e.g. anchrole
in ISO 13250) to ensure maximum possible reuse of in-built XLink
functionality. It is equivalent to the role attribute used
on higher level elements.
Where there exists a topic that defines a set of names relevant to the role,
and/or occurrences explaining it, the xlink:role attribute can be
used to reference the unique identifier of this topic.
NB: The general-purpose xlink:role has been used in
preference to a specialist association type attribute (e.g. type
in ISO 13250). It represents a restriction on the xlink:role
attribute in that it restricts the type of resource that can be referenced to
one that conforms to the TopicType Complex Type Definition.
| Example | ||
|
||
The Purpose element can be used to identify the role played by
a particular topic in a relationship between two topics. The type of
purpose can be recorded in the xlink:label attribute of the arc.
The element is based on the AssociationRoleType
Complex Type Definition, and is an instantiation of the AbstractAssociationRole
class. It acts as an XLink locator. |
| Type Definition for Facet |
<xs:complexType name="FacetType">
<xs:annotation>
<xs:documentation> Property to be assigned to resource</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="tm:AbstractFacetValue"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="xlink:type" use="fixed" value="extended"/>
<xs:attribute name="property" type="xs:NMTOKEN"
use="optional">
<xs:annotation>
<xs:documentation>
Name (without spaces) used to identify property to be
added by the facet. If not present the element name is
taken to be the name of the property.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute ref="xlink:role" type="xs:uriReference"
use="optional"/>
</xs:complexType>
|
[Definition] A facet link assigns a property/value pair to resources that currently do not exhibit that property.
Each element used to define a facet (property) to be assigned to a resource
must be derived from the FacetType Complex Type Definition shown above. This
element conforms to the definition of an extended XML link. The element contains
a number of elements conforming to the FacetValueType Complex Type Definition that assign specific values for the property to a specific resource.
NB: Facets with no currently assigned facet values can be defined as part of the generation of a topic map to indicate that values are expected to be assigned at a later date (or have been assigned in the past).
Each facet may optionally be assigned an XML name that identifies the name of
the property being assigned to resources. If no value is supplied for the property
attribute the name assigned to the element is taken to be a sufficient label.
Where a facet is an instance of a topic that already exists as part of a
topic map, the relevant topic can be identified using the xlink:role attribute. The value of this
attribute must be a valid URI reference whose fragment identifier identifies the unique identifier assigned to the
relevant topic definition.
NB: The general-purpose xlink:role has been used in
preference to a specialist facet type attribute (e.g. type
in ISO 13250) to ensure maximum possible reuse of in-built XLink
functionality. It represents a restriction on the xlink:role attribute
in that it restricts the type of resource that can be referenced to one that
conforms to the TopicType Complex Type Definition.
| Example | ||
|
||
The Relevance
element can be used to record relevance weightings. (In this example the element
name acts as the name of the property being assigned, so the property
attribute does not need to be specified.) This element is based on the FacetType
Complex Type Definition, and is an instantiation of the AbstractFacet
class. It acts as an XLink extended link. All facets must be assigned a unique
identifier. |
| Type Definition for Facet Value |
<xs:complexType name="FacetValueType">
<xs:annotation>
<xs:documentation>Value to be assigned to facet property</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="tm:AbstractPrompt"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="xlink:type" use="fixed" value="locator"/>
<xs:attribute ref="xlink:href" type="xs:uriReference"
use="required"/>
<xs:attribute name="value" type="xs:NMTOKEN" use="optional"/>
<xs:attribute ref="xlink:role" type="xs:uriReference"
use="optional"/>
</xs:complexType>
<xs:element name="AbstractFacetValue"
type="tm:FacetValueType" abstract="true"/>
|
[Definition] A facet value assigns a specific value of a property to a resource, or to part of a resource.
Each element used to assign a specific value for a facet to one or more
resources must be derived from the FacetValueType Complex Type Definition
shown above.
Each element conforming to the FacetValueType Complex Type Definition is an XLink locator. It must have an XLink href
attribute that identifies a resource to which the property and value are to be
assigned. Where only part of the resource is to be assigned the property a
fragment identifier that is conformant with the XPointer specification may be
used to identify the relevant part of the resource.
NB: Because XML Links do not allow embedded XML Links to be used as locators of resources, facet values declared using this schema can only be assigned to a single resource. (ISO 13250 allows a facet value to be assigned to a set of resources.)
The value to be assigned to the property identified by the enclosing facet
type element can be specified as in the value attribute. If no
value is specified the name of the element is taken to be the value to be
assigned to the property.
NB: For compatibility with ISO 13250 this should be a valid name, beginning with a letter, rather than an XML name token as defined in the architectural form. However, as the example shows below, there will be times when it is easier to use just numbers, as is permitted for name tokens.
Where there exists a topic that defines a set of names relevant to the value,
and/or occurrences explaining it, the xlink:role attribute can be
used to reference the unique identifier of this topic.
NB: The general-purpose xlink:role has been used in
preference to a specialist facet value type attribute (e.g. type
in ISO 13250) to ensure maximum possible reuse of in-built XLink
functionality. It represents a restriction on the xlink:role attribute
in that it restricts the type of resource that can be referenced to one that
conforms to the TopicType Complex Type Definition.
| Example | ||
|
||
The Weighting element can be used to assign a weighting to a
particular resource. The applicable weighting is assigned using the value
attribute (if the topic map is to interact with ISO 13250 compatible engines
this entry would have to start with a letter). This element is based on the FacetValueType
Complex Type Definition, and is an instantiation of the AbstractFacetValue
class. It acts as an XLink locator. |
| Type Definition for Added Themes |
<xs:complexType name="AddedThemesType">
<xs:annotation>
<xs:documentation> Empty element whose attributes identify which themes are to be added to which URIs within which topic map </xs:documentation>
</xs:annotation>
<xs:attribute name="themes" type="tm:uriReferences"
use="required">
<xs:annotation>
<xs:documentation>
List of unique identifiers of topics that are to be
used as added themes within the scope of elements of
the type identified by the "characteristic" attribute
within the maps identified by the "topicmaps" attribute
(or any topic map known to the system if no topic maps
are explicitly identified).
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="topicmaps" type="tm:uriReferences"
use="optional">
<xs:annotation>
<xs:documentation>
List of URIs (as defined in IETF RFC 2396) of topic maps
to which topics in the local map are to assigned to
as additional themes to all elements within the map.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="assignto" type="tm:uriReferences"
use="optional">
<xs:annotation>
<xs:documentation>
List of URIs (as defined in IETF RFC 2396) of elements
within topic maps to which topics in the local map are to
be assigned as additional themes.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:element name="AbstractAddedThemes"
type="tm:AddedThemesType" abstract="true"/>
|
[Definition] An added theme is a topic that is to be added to the list of scopes applied to a particular class of elements throughout one or more topic maps.
Each element used to indicate topics which define the scope of one or more
types of elements in this or another topic map must be derived from the AddedThemesType
Complex Type Definition shown above. The element is an empty element
which has no embedded content.
The themes attribute contains a space separated list of URIs
whose fragment identifiers identify topics in one or more topic maps that are to
be used to assign additional themes to those listed in the scope
attribute of one or more types of topic map elements.
The topicmaps attribute contains a space separated list of URIs
of documents that conform to the TopicMapType
Complex Type Definition to which the identified themes are to be added to all
elements. If no
value is assigned to this attribute the topics are added to the topic map
containing the element conforming to the AddedThemesType Complex Type Definition.
The optional assignto attribute can be used to identify specific
topic maps elements to which characteristics are to be added. More than one value can be specified in a space separated list.
| Example | ||
|
||
The Domains element can be used to identify which domains a
particular topic map is relevant for. It is based on the AddedThemesType
Complex Type Definition, and is an instantiation of the AbstractAddedThemes
class, which requires the use of a themes attribute to record the
URIs (XML fragment identifiers) of topics that are to be used to scope entries
within the topic map. The topic maps the themes are to be associated can
be recorded using the topicmaps attribute if they are not to be
applied to the current map. Where the themes apply to specific topic then the
URIs of the affected elements should be recorded in the assignto
attribute. |
A topic map application must define its own XML schema. This schema will
need to include the type definitions and element declarations shown
in Chapter 3. It will also need to assign local names for each of the abstract
element declarations using to form substitution groups of local elements that
map to the abstract element declarations. The following example shows how this
can be done.
| Example of Schema for Simple Topic Map | |||
|
| Example of Simple Topic Map | |||
|
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.diffuse.org/TopicMaps/Schema" xmlns:tm="http://www.diffuse.org/TopicMaps/Schema" xmlns:xs="http://www.w3.org/2000/10/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xml="http://www.w3.org/XML/1998/namespace">
<xs:annotation>
<xs:documentation>
Fifth working draft: 29th January 2001
(c) Copyright: The SGML Centre (http://www.sgml.u-net.com)
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="c:\Diffuse\TopicMaps\xml-atts.xsd"/>
<xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="c:\Diffuse\TopicMaps\xlink-atts.xsd"/>
<xs:simpleType name="uriReferences">
<xs:annotation>
<xs:documentation> List of URIs</xs:documentation>
</xs:annotation>
<xs:list itemType="xs:uriReference"/>
</xs:simpleType>
<xs:complexType name="TopicMapType">
<xs:annotation>
<xs:documentation> Root element for topic map</xs:documentation>
</xs:annotation>
<xs:choice maxOccurs="unbounded">
<xs:element ref="tm:AbstractTopic" maxOccurs="unbounded"/>
<xs:element ref="tm:AbstractAssociation" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="tm:AbstractFacet" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="tm:AbstractAddedThemes" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="AddedThemes" type="xs:IDREFS" use="optional">
<xs:annotation>
<xs:documentation>
Contains the unique identifiers of topics
that are to be used as additional scopes for all
topic map conformant elements within this topic map.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="TopicType">
<xs:annotation>
<xs:documentation>
Container for a set of names that can be used to identify
the topic together with the occurrences of resources that have
been identified as being relevant to the topic.
</xs:documentation>
</xs:annotation>
<xs:choice maxOccurs="unbounded">
<xs:element ref="tm:AbstractTopicNames"/>
<xs:element ref="tm:AbstractOccurs"/>
</xs:choice>
<xs:attribute ref="xlink:type" use="fixed" value="extended"/>
<xs:attribute name="id" type="xs:ID" use="required"/>
<xs:attribute name="identity" type="xs:uriReference" use="optional">
<xs:annotation>
<xs:documentation>
Reference to subject descriptors used to provide
an unambiguous indication of the identity of a subject
that this topic covers.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="topics" type="tm:uriReferences" use="optional">
<xs:annotation>
<xs:documentation>
Contains the unique identifiers of topic(s)
whose subject(s) are the classes of topics
of which this topic is an instance.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="scope" type="tm:uriReferences" use="optional">
<xs:annotation>
<xs:documentation>
Contains the unique identifiers of topic(s) that
identify the themes(s) this topic is to be considered
to fall within.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="TopicNamesType">
<xs:annotation>
<xs:documentation> Names used to identify topic.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="tm:AbstractBaseName" maxOccurs="unbounded"/>
<xs:element ref="tm:AbstractDisplayName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="tm:AbstractSortName" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="xlink:type" use="fixed" value="title"/>
<xs:attribute name="scope" type="tm:uriReferences" use="optional">
<xs:annotation>
<xs:documentation>
Contains the unique identifiers of topic(s) that
identify the scope(s) this set of names is to be
considered apply to.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="BaseNameType">
<xs:annotation>
<xs:documentation>Text string used to identify topic in lists
of topics if no displayed name is assigned to the topic.</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="scope" type="tm:uriReferences" use="optional">
<xs:annotation>
<xs:documentation>
Contains the unique identifiers of topic(s) that
identify the scope(s) this name is to be
considered apply to.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute ref="xml:lang" type="xs:language" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="DisplayNameType" mixed="true">
<xs:annotation>
<xs:documentation>
String, image or other form of presentable information
to be displayed in place of the base name within a
list of topics. For example, it could be a shorter or
longer version of the base name, or a picture or
clickable sound bite identifying the topic.
If not present the base name is displayed.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:any namespace="##other"/>
</xs:sequence>
<xs:attribute name="scope" type="tm:uriReferences" use="optional"/>
<xs:attribute ref="xml:lang" type="xs:language" use="optional">
<xs:annotation>
<xs:documentation>
Language code(s) (conforming to IETF RFC 1766) that
indicate the language group the displayed name
will be understood by.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="SortNameType">
<xs:annotation>
<xs:documentation> Name used for sorting purposes when ordering lists</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="scope" type="tm:uriReferences" use="optional">
<xs:annotation>
<xs:documentation>
Contains the unique identifiers of topic(s) that
identify the scope(s) this name is to be
considered apply to.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute ref="xml:lang" type="xs:language" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="OccursType">
<xs:annotation>
<xs:documentation> Identifies resource that utilizes topic</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="tm:AbstractPrompt" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="xlink:type" use="fixed" value="locator"/>
<xs:attribute ref="xlink:href" type="xs:uriReference" use="required">
<xs:annotation>
<xs:documentation>
URI (conforming to IETF RFC 2396, with XML fragment
identifiers for identification of subsections of a
resource) that identifies where the topic is applied.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute ref="xlink:label" type="xs:NMTOKEN" use="optional"/>
<xs:attribute ref="xlink:role" type="xs:uriReference" use="optional"/>
<xs:attribute name="scope" type="tm:uriReferences" use="optional"/>
</xs:complexType>
<xs:complexType name="PromptType" mixed="true">
<xs:annotation>
<xs:documentation>Optional text used to rpompt users as to the contents of the resource</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:any namespace="##other"/>
</xs:sequence>
<xs:attribute ref="xlink:type" use="fixed" value="title"/>
<xs:attribute ref="xml:lang" type="xs:language" use="optional"/>
</xs:complexType>
<xs:complexType name="AssociationType">
<xs:annotation>
<xs:documentation> Association between topics within topic map</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="tm:AbstractAssociationRole" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="xlink:type" use="fixed" value="extended"/>
<xs:attribute name="role" type="xs:NMTOKEN" use="optional"/>
<xs:attribute ref="xlink:role" type="xs:uriReference" use="optional">
<xs:annotation>
<xs:documentation>
Contains the unique identifier of a topic
whose names can be used to identify the role of
the association.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="scope" type="tm:uriReferences">
<xs:annotation>
<xs:documentation>
Contains the unique identifiers of topic(s) that
identify the scope(s) this association falls within.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="AssociationRoleType">
<xs:annotation>
<xs:documentation> Role played by association</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="tm:AbstractPrompt" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="xlink:type" use="fixed" value="locator"/>
<xs:attribute ref="xlink:href" type="xs:uriReference" use="required"/>
<xs:attribute ref="xlink:label" type="xs:NMTOKEN" use="optional">
<xs:annotation>
<xs:documentation>
Name (without spaces) used to identify role played
by this part of the association. If not present,
the element name is taken to indicate the role.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute ref="xlink:role" type="xs:uriReference" use="optional">
<xs:annotation>
<xs:documentation>
Contains the unique identifier of a topic
whose names can be used to display the role of
this part of the association.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="FacetType">
<xs:annotation>
<xs:documentation> Property to be assigned to resource</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="tm:AbstractFacetValue" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="xlink:type" use="fixed" value="extended"/>
<xs:attribute name="property" type="xs:NMTOKEN" use="optional">
<xs:annotation>
<xs:documentation>
Name (without spaces) used to identify property to be
added by the facet. If not present the element name is
taken to be the name of the property.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute ref="xlink:role" type="xs:uriReference" use="optional"/>
</xs:complexType>
<xs:complexType name="FacetValueType">
<xs:annotation>
<xs:documentation> Value to be assigned to facet property</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="tm:AbstractPrompt" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="xlink:type" use="fixed" value="locator"/>
<xs:attribute ref="xlink:href" type="xs:uriReference" use="required"/>
<xs:attribute name="value" type="xs:NMTOKEN" use="optional"/>
<xs:attribute ref="xlink:role" type="xs:uriReference" use="optional"/>
</xs:complexType>
<xs:complexType name="AddedThemesType">
<xs:annotation>
<xs:documentation> Empty element whose attributes identify which themes are to be added to which URIs within which topic map </xs:documentation>
</xs:annotation>
<xs:attribute name="themes" type="tm:uriReferences" use="required">
<xs:annotation>
<xs:documentation>
List of unique identifiers of topics that are to be
used as added themes within the scope of elements of
the type identified by the "characteristic" attribute
within the maps identified by the "topicmaps" attribute
(or any topic map known to the system if no topic maps
are explicitly identified).
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="topicmaps" type="tm:uriReferences" use="optional">
<xs:annotation>
<xs:documentation>
List of URIs (as defined in IETF RFC 2396) of topic maps
to which topics in the local map are to assigned to
as additional themes to all elements within the map.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="assignto" type="tm:uriReferences" use="optional">
<xs:annotation>
<xs:documentation>
List of URIs (as defined in IETF RFC 2396) of elements
within topic maps to which topics in the local map are to
be assigned as additional themes.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:element name="AbstractTopicMap" type="tm:TopicMapType" abstract="true">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
</xs:element>
<xs:element name="AbstractTopic" type="tm:TopicType" abstract="true"/>
<xs:element name="AbstractTopicNames" type="tm:TopicNamesType" abstract="true"/>
<xs:element name="AbstractBaseName" type="tm:BaseNameType" abstract="true"/>
<xs:element name="AbstractDisplayName" type="tm:DisplayNameType" abstract="true"/>
<xs:element name="AbstractSortName" type="tm:SortNameType" abstract="true"/>
<xs:element name="AbstractOccurs" type="tm:OccursType" abstract="true"/>
<xs:element name="AbstractPrompt" type="tm:PromptType" abstract="true"/>
<xs:element name="AbstractAssociation" type="tm:AssociationType" abstract="true"/>
<xs:element name="AbstractAssociationRole" type="tm:AssociationRoleType" abstract="true"/>
<xs:element name="AbstractFacet" type="tm:FacetType" abstract="true"/>
<xs:element name="AbstractFacetValue" type="tm:FacetValueType" abstract="true"/>
<xs:element name="AbstractAddedThemes" type="tm:AddedThemesType" abstract="true"/>
</xs:schema>