ISO/IEC

Topic Map Data Model FAQ

This is a collection of answers to frequently asked questions about the Topic Map Data Model (TMDM) that we have gathered into a single (unofficial) document in order to help people understand the TMDM better.

Why isn't <mergeMap> in the model?

The short answer is that the model shows the result of parsing an XTM file into a topic map, and <mergeMap> references are only used to point to other XTM files that should be read in and merged into the current topic map. In other words, the <mergeMap> reference is not itself a part of the topic map in much the same that in XML entity references are not themselves part of the document, just references to something that should be included.

Why don't topics have types in the model?

They do, actually. In XTM the type is represented using the <instanceOf> element, but they can also be represented as associations using the core PSIs (see XTM 1.0, Annex F.3.2) defined for this purpose. In the model the types of topics are always represented using association items. The XTM 1.1 specification defines this in detail.

Why isn't <topicRef> in the model?

As the element type name says it is really just a reference to a topic; in the data model this turns into a topic item in the value of some property. There is no information in the reference itself that is relevant to the parsed topic map, and so the reference is replaced by the topic item itself (in the model; an implementation will almost certainly have a reference of some sort).

Again, the XTM 1.1 specification has the details.

Why isn't <subjectIndicatorRef> in the model?

In XTM the <subjectIndicatorRef> element is used for two purposes:

  1. to add a subject indicator to a topic, and
  2. to reference a topic via one of its subject indicators

In the model a locator item will be added to the [subject identifiers] property of the topic in the first case, while the second case is a little different. The way XTM works writing

<topic id="foo">
  <instanceOf>
    <subjectIndicatorRef xlink:href="http://example.com/#bar"/>
  </instanceOf>
  ...
</topic>

is the same as writing

<topic id="foo">
  <instanceOf>
    <topicRef xlink:href="#bar"/>
  </instanceOf>
  ...
</topic>

<topic id="bar">
  <subjectIdentity>
    <subjectIndicatorRef xlink:href="http://example.com/#bar"/>
  </subjectIdentity>
</topic>

To put it another way, a <subjectIndicatorRef> is just another form of topic reference, and so in the model it is replaced by the topic item itself. If there is no such topic item one is created and the given URI added as a subject identifier.

Why isn't my question answered here?

Uh, we don't know, really. Send us an email and ask, and we'll do our best to answer it. Email addresses: larsga@ontopia.net and Graham.Moore@networkedplanet.com.


The editors, 2005-12-21.