CTM - Use Cases

$Revision: 1.6 $ - $Date: 2006/04/19 16:20:03 $

Abstract

This document provides use cases for the Compact Syntax for Topic Maps (CTM). These use cases should provide criteria to evaluate the existing languages such as AsTMa= and LTM and serve as a basis for discussion in order to create a standard textual topic map notation.


1. Status of this Document
2. Introduction
3. Use Cases
3.1. Problem Domain
3.2. Creating Topics
3.2.1. Topic with an Item Identifier
3.2.2. Typed Topic - Using Item Identifiers
3.2.3. Typed Topic - Using Subject Identifiers
3.2.4. Multi Typed Topic - Using Item Identifiers
3.2.5. Multi Typed Topic - Using Subject Identifiers
3.3. Assigning Topic Names to a Topic
3.3.1. Topic with an Item Identifier and a Topic Name
3.3.2. Topic with a Subject Identifier and a Topic Name
3.3.3. Topic with a Subject Locator and a Topic Name
3.3.4. Typed Topic Name - Using Item Identifiers
3.3.5. Typed Topic Name - Using Subject Identifiers
3.3.6. Scoped Topic Name - Using Item Identifiers
3.3.7. Scoped Topic Name - Using Subject Identifiers
3.3.8. Multi Scoped Topic Name
3.3.9. Typed and Scoped Topic Name
3.3.10. Topic Name with a Variant of datatype String
3.3.11. Topic Name with a Variant of datatype XML
3.3.12. Topic Name with a Variant of datatype IRI
3.3.13. Topic Name with a Variant of a non-TMDM datatype
3.4. Assigning Occurrences to a Topic
3.4.1. Occurrence of datatype String
3.4.2. Typed Occurrence of datatype String - Using Item Identifiers
3.4.3. Typed Occurrence of datatype String - Using Subject Identifiers
3.4.4. Scoped Occurrence of datatype String - Using Item Identifiers
3.4.5. Scoped Occurrence of datatype String - Using Subject Identifiers
3.4.6. Occurrence of datatype XML
3.4.7. Occurrence of a non-TMDM datatype
3.5. Creating Associations
3.5.1. Creating an Association
3.5.2. Scoped Association
3.5.3. Supertype-Subtype relationship - Using Item Identifiers
3.5.4. Supertype-Subtype relationship - Using Subject Identifiers
3.6. Reification
3.6.1. Reification of a Topic Map
3.6.2. Reification of a Topic Name
3.6.3. Reification of a Variant
3.6.4. Reification of an Occurrence
3.6.5. Reification of an Association
3.6.6. Reification of an Association Role
3.7. Directives
3.7.1. Mergemap Directive
3.7.2. Encoding Directive
3.7.3. Namespace Directive
3.8. Comments
3.8.1. Singleline Comment
3.8.2. Multiline Comment
3.8.3. Local comments
3.9. Requirements / Features
3.9.1. Unicode
3.9.2. Escape syntax
3.9.3. Notation for a particular order
3.9.4. Declaration of topic map constructs inside other topic map constructs
3.10. Medium sized topic map

1. Status of this Document

This document is an working draft to collect potential use cases and usage scenarios for a Compact Syntax for Topic Maps (CTM).

2. Introduction

This document presents the use cases for the Compact Syntax for Topic Maps (CTM).

3. Use Cases

This section presents various use case scenarios. It is not meant to be complete, but should serve a base for evaluating the existing notations. Due to lack of a fixed TMQL / TMQL Update (TMQL part II) and TMCL syntax, the authors of this document left out the use cases where CTM should be used to create or update topic maps. The requirement for syntax compatibility between TMQL, TMCL and CTM remains, though.

3.1. Problem Domain

Assuming that a topic map about the music band The Beatles should be created, we define particular aspects of the topic map authoring task.

3.2. Creating Topics

This section contains use cases to create topics. Additionally this section defines use cases for creating type-instance relationships between topics. While the type-instance relationship is created with an association, the authors of this document assume that each syntax has a short hand notation for this common use case.

3.2.1. Topic with an Item Identifier

A topic with the item identifier "john" should be created. The topic must not have any further characteristics.

3.2.2. Typed Topic - Using Item Identifiers

A topic with the item identifier "john" should be created. The type of this topic should be a topic with the item identifier "person". The topic must not have any further characteristics.

3.2.3. Typed Topic - Using Subject Identifiers

A topic with the item identifier "john" should be created. The type of this topic should be a topic with the subject identifier "http://psi.example.org/person". The topic must not have any further characteristics.

3.2.4. Multi Typed Topic - Using Item Identifiers

A topic with the item identifier "john" should be created. The types of this topic should be a topic with the item identifier "person" and a topic with the item identifier "musician". The topic must not have any further characteristics.

3.2.5. Multi Typed Topic - Using Subject Identifiers

A topic with the item identifier "john" should be created. The types of this topic should be a topic with the subject identifier "http://psi.example.org/person" and a topic with the subject identifier "http://psi.example.org/musician". The topic must not have any further characteristics.

3.3. Assigning Topic Names to a Topic

This section contains use cases to create topic names and their variant names.

3.3.1. Topic with an Item Identifier and a Topic Name

A topic with the item identifier "john" and with a topic name value "John Lennon" should be created. The topic must not have any further characteristics.

3.3.2. Topic with a Subject Identifier and a Topic Name

A topic with the subject identifier "http://psi.example.org/The_Beatles" and with a topic name value "The Beatles" should be created. The topic must not have any further characteristics.

3.3.3. Topic with a Subject Locator and a Topic Name

A topic with the subject locator "http://beatles.com/" and with a topic name value "Official website of The Beatles" should be created. The topic must not have any further characteristics.

3.3.4. Typed Topic Name - Using Item Identifiers

A topic with the item identifier "john" and with a topic name value "John Winston Lennon" should be created. The type of the topic name must be a topic with the item identifier "fullname". The topic must not have any further characteristics.

3.3.5. Typed Topic Name - Using Subject Identifiers

A topic with the item identifier "john" and with a topic name value "John Winston Lennon" should be created. The type of the topic name must be a topic with the subject identifier "http://psi.example.org/fullname". The topic must not have any further characteristics.

3.3.6. Scoped Topic Name - Using Item Identifiers

A topic with the item identifier "john" and with a topic name value "John Winston Lennon" should be created. The scope of the topic name must be a topic with the item identifier "fullname". The topic must not have any further characteristics.

3.3.7. Scoped Topic Name - Using Subject Identifiers

A topic with the item identifier "john" and with a topic name value "John Winston Lennon" should be created. The scope of the topic name must be a topic with the subject identifier "http://psi.example.org/fullname". The topic must not have any further characteristics.

3.3.8. Multi Scoped Topic Name

A topic with the item identifier "beatles" and with a topic name value "The Beatles" should be created. Another topic name with the value "Fab Four" should be created with a scope consisting of a topic with the item identifier "nickname" and a topic with the item identifier "short". The topic must not have any further characteristics.

3.3.9. Typed and Scoped Topic Name

A topic with the item identifier "john" and with a topic name value "John Ono Lennon" should be created. The type of the topic name must be a topic with the item identifier "fullname" and the scope of the topic name must be a topic with the item identifier "yoko". The topic must not have any further characteristics.

3.3.10. Topic Name with a Variant of datatype String

A topic with the item identifier "john" and with the topic name value "John Lennon" should be created. The topic name must have a variant in a scope consisting of a topic with the item identifier "sortname". The value of the variant must be "lennon, john" and the datatype must be "http://www.w3.org/2001/XMLSchema#string". The topic must not have any further characteristics.

3.3.11. Topic Name with a Variant of datatype XML

A topic with the item identifier "john" and with the topic name value"John Lennon" should be created. The topic name must have a variant that has a scope consisting of a topic with the item identifier "markup". The value of the variant must be "<b>John Lennon</b>" and the datatype must be "http://www.w3.org/2001/XMLSchema#anyType". The topic must not have any further characteristics.

3.3.12. Topic Name with a Variant of datatype IRI

A topic with the item identifier "john" and a topic name with the value "John Lennon" should be created. The topic name should have a variant that has a scope consisting of a topic with the item identifier "image". The value of the variant must be "http://en.wikipedia.org/wiki/Image:Jk_beatles_john.jpg" and the datatype must be "http://www.w3.org/2001/XMLSchema#anyURI".

3.3.13. Topic Name with a Variant of a non-TMDM datatype

A topic with the item identifier "revolution-nine" and a topic name with the value "Revolution 9" should be created. The topic name should have a variant that has a scope consisting of a topic with the item identifier "number". The value of the variant must be "9" and the datatype must be "http://www.w3.org/2001/XMLSchema#integer".

3.4. Assigning Occurrences to a Topic

This section defines use cases for creating occurrences.

3.4.1. Occurrence of datatype String

A topic with the item identifier "adayinthelife" and an occurrence with the value "I read the news today, oh boy" should be created. The datatype of this occurrence must be "http://www.w3.org/2001/XMLSchema#string". The topic must not have any further characteristics.

3.4.2. Typed Occurrence of datatype String - Using Item Identifiers

A topic with the item identifier "adayinthelife" and an occurrence with the value "I read the news today, oh boy" should be created. The type of the occurrence must be a topic with the item identifier "lyrics". The datatype of this occurrence must be "http://www.w3.org/2001/XMLSchema#string". The topic must not have any further characteristics.

3.4.3. Typed Occurrence of datatype String - Using Subject Identifiers

A topic with the item identifier "adayinthelife" and an occurrence with the value "I read the news today, oh boy" should be created. The type of the occurrence must be a topic with the subject identifier "http://psi.example.org/lyrics". The datatype of this occurrence must be "http://www.w3.org/2001/XMLSchema#string". The topic must not have any further characteristics.

3.4.4. Scoped Occurrence of datatype String - Using Item Identifiers

A topic with the item identifier "adayinthelife" and an occurrence with the value "I read the news today, oh boy" should be created. The scope of the occurrence must be a topic with the item identifier "en". The datatype of this occurrence must be "http://www.w3.org/2001/XMLSchema#string". The topic must not have any further characteristics.

3.4.5. Scoped Occurrence of datatype String - Using Subject Identifiers

A topic with the item identifier "adayinthelife" and an occurrence with the value "I read the news today, oh boy" should be created. The scope of the occurrence must be a topic with the subject identifier "http://www.topicmaps.org/xtm/1.0/language.xtm#en". The datatype of this occurrence must be "http://www.w3.org/2001/XMLSchema#string". The topic must not have any further characteristics.

3.4.6. Occurrence of datatype XML

A topic with the item identifier "adayinthelife" and an occurrence with the value "<html><head><title>A day in the life</title></head><body><p>I read the news today, oh boy</p></body></html>" should be created. The datatype of this occurrence must be "http://www.w3.org/2001/XMLSchema#anyType". The topic must not have any further characteristics.

3.4.7. Occurrence of a non-TMDM datatype

A topic with the item identifier "pennylane" and an occurrence with the value "2" should be created. The datatype of this occurrence must be "http://www.w3.org/2001/XMLSchema#integer". The topic must not have any further characteristics.

3.5. Creating Associations

This sections defines use cases to create associations and association roles.

3.5.1. Creating an Association

An association with a type consisting of a topic with the item identifier "created-by" should be created. A topic with the item identifier "yesterday" should play the role of type "work". Another topic with the item identifier "mccartney" should be the player of the role type "creator".

3.5.2. Scoped Association

An association with a type consisting of a topic with the item identifier "created-by" should be created. The scope of the association constists of a topic with the item identifier "inofficial". A topic with the item identifier "yesterday" should play the role of type "work". Another topic with the item identifier "mccartney" should be the player of the role type "creator".

3.5.3. Supertype-Subtype relationship - Using Item Identifiers

An association with a type consisting of a topic with the subject identifier "http://psi.topicmaps.com/iso13250/supertype-subtype" should be created. A topic with the item identifier "song" should play the role of type "http://psi.topicmaps.com/iso13250/subtype". Another topic with the item identifier "musical-work" should be the player of the role type "http://psi.topicmaps.com/iso13250/supertype".

3.5.4. Supertype-Subtype relationship - Using Subject Identifiers

An association with a type consisting of a topic with the subject identifier "http://psi.topicmaps.com/iso13250/supertype-subtype" should be created. A topic with the subject identifier "http://psi.example.org/song" should play the role of type "http://psi.topicmaps.com/iso13250/subtype". Another topic with the subject identifier "http://psi.example.org/musical-work" should be the player of the role type "http://psi.topicmaps.com/iso13250/supertype".

3.6. Reification

While the act of reification is well defined inside the (de)serialization process of XTM, the CTM syntax may define another, more explicit reification notation that is conform to the Topic Maps - Data Model (TMDM). The following use cases assume that there is no need to use item identifiers / subject identifiers to support reification.

3.6.1. Reification of a Topic Map

The topic map itself should be reified by a topic with a topic name value "Topic Map about The Beatles".

3.6.2. Reification of a Topic Name

A topic with the item identifier "john" should be created. The topic should have a topic name with the value "John Ono Lennon". The topic name should be reified by a topic.

3.6.3. Reification of a Variant

A topic with the item identifier "john" and with the topic name value "John Lennon" should be created. The topic name must have a variant in a scope consisting of a topic with the item identifier "sortname". The value of the variant must be "lennon, john" and the datatype must be "http://www.w3.org/2001/XMLSchema#string". The variant name should be reified by a topic.

3.6.4. Reification of an Occurrence

A topic with the item identifier "john" should be created. The topic should have an occurrence with the value "http://johnlennon.com/" of datatype "http://www.w3.org/2001/XMLSchema#anyURI". The occurrence should be reified by a topic with the topic name value "Official website of John Lennon".

3.6.5. Reification of an Association

An association with a type consisting of a topic with the item identifier "partnership" should be created. The association consists of two roles. Both association roles are typed by a topic with the item identifier "partner". One player is a topic with the item identifier "lennon" the other player is a topic with the item identifier "mccartney". This association must be reified by a topic with a topic name value "Lennon / McCartney".

3.6.6. Reification of an Association Role

The association role of type creator with the player mccartney should be reified (see 3.5.1).

3.7. Directives

The CTM should support directives to make the authoring task easier.

3.7.1. Mergemap Directive

An existing topic map with the URI http://example.org/topicmaps/beatles should be merged with the currently edited topic map. The syntax of the encoded topic map under the given URI should be provided (either XTM or CTM).

3.7.2. Encoding Directive

The encoding of the topic map content should be made explicit at the document header.

3.7.3. Namespace Directive

The following namespaces should be defined: "wiki" for "http://en.wikipedia.org/wiki/" and "dc" for "http://purl.org/dc/elements/1.1/". Additionally the usage of these namespace declarations should be shown.

3.8. Comments

The CTM should support comments to annotate the topic map content.

3.8.1. Singleline Comment

A single line comment sould be created:

This is a topic map about The Beatles

3.8.2. Multiline Comment

A comment spanning mutliple lines sould be created:

This is a topic map about The Beatles

Authored by John Doe

3.8.3. Local comments

Put a comment inside a topic map construct definition

3.9. Requirements / Features

3.9.1. Unicode

Show how Unicode is used for topic map constructs.

3.9.2. Escape syntax

Show how special (maybe keywords) characters can be escaped.

3.9.3. Notation for a particular order

CTM MAY support a notation for a particular ordering. I.e. express that "Lovely Rita" is the 3rd song on the side 2 of the LP "Sgt. Pepper's Lonely Hearts Club Band"

3.9.4. Declaration of topic map constructs inside other topic map constructs

CTM MAY support the declaration of the topic map constructs inside other topic map constructs. I.e. express that a person named Paul McCartney has written the song "Yesterday" in one Association declaration.

3.10. Medium sized topic map

To get an impression how a medium sized topic map in the various notations looks like, we define a topic map in the above mentioned problem domain.

The solutions may use any syntactic sugar to define the topic map that meets the provided requirements.

Note

To the solution providers: Please comment the created topic maps well, especially if the solution contains constructs that may not be obvious for a reader who does not know the notation.



<?xml version="1.0" encoding="ISO-8859-1"?>
<topicMap xmlns="http://www.topicmaps.org/xtm/1.0/"
          xmlns:xlink="http://www.w3.org/1999/xlink"
          id="beatles-map">
<!-- Reifies the topic map -->
<topic id="beatles-topic">
  <subjectIdentity>
    <subjectIndicatorRef xlink:href="#beatles-map"/>
  </subjectIdentity>
  <baseName>
    <baseNameString>Topic map about The Beatles</baseNameString>
  </baseName>
</topic>

<topic id="group">
  <baseName>
    <baseNameString>group</baseNameString>
  </baseName>
</topic>

<!-- Music group -->
<topic id="music-group">
  <subjectIdentity>
    <subjectIndicatorRef xlink:href="http://psi.example.org/music/muscial-group"/>
  </subjectIdentity>
  <baseName>
    <baseNameString>Music group</baseNameString>
  </baseName>
</topic>


<!-- Music group is subclass of group -->
<association>
  <instanceOf>
    <subjectIndicatorRef
      xlink:href="http://www.topicmaps.org/xtm/1.0/core.xtm#superclass-subclass"/>
  </instanceOf>
  <member>
    <roleSpec>
      <subjectIndicatorRef
        xlink:href="http://www.topicmaps.org/xtm/1.0/core.xtm#superclass"/>
    </roleSpec>
    <topicRef xlink:href="#group"/>
  </member>
  <member>
    <roleSpec>
      <subjectIndicatorRef
        xlink:href="http://www.topicmaps.org/xtm/1.0/core.xtm#subclass"/>
    </roleSpec>
    <topicRef xlink:href="#music-group"/>
  </member>
</association>

<!-- Assoc. types -->
<topic id="created-by">
  <subjectIdentity>
    <subjectIndicatorRef xlink:href="http://psi.example.org/created-by"/>
  </subjectIdentity>
  <baseName>
    <baseNameString>created by</baseNameString>
  </baseName>
</topic>

<topic id="creator">
  <subjectIdentity>
    <subjectIndicatorRef xlink:href="http://purl.org/dc/elements/1.1/creator"/>
  </subjectIdentity>
  <baseName>
    <baseNameString>Creator</baseNameString>
  </baseName>
</topic>

<topic id="track-of">
  <subjectIdentity>
    <subjectIndicatorRef xlink:href="http://psi.test.org/assoc#istrackof"/>
  </subjectIdentity>
  <baseName>
    <baseNameString>is track of</baseNameString>
  </baseName>
</topic>


<topic id="superclass-subclass">
  <subjectIdentity>
    <subjectIndicatorRef xlink:href="http://www.topicmaps.org/xtm/1.0/core.xtm#superclass-subclass"/>
  </subjectIdentity>
  <baseName>
    <baseNameString>superclass subclass relationship</baseNameString>
  </baseName>
</topic>

<topic id="superclass">
  <subjectIdentity>
    <subjectIndicatorRef xlink:href="http://www.topicmaps.org/xtm/1.0/core.xtm#superclass"/>
  </subjectIdentity>
  <baseName>
    <baseNameString>superclass</baseNameString>
  </baseName>
</topic>

<topic id="subclass">
  <subjectIdentity>
    <subjectIndicatorRef xlink:href="http://www.topicmaps.org/xtm/1.0/core.xtm#subclass"/>
  </subjectIdentity>
  <baseName>
    <baseNameString>subclass</baseNameString>
  </baseName>
</topic>

<topic id="work">
  <subjectIdentity>
    <subjectIndicatorRef xlink:href="http://psi.example.org/work"/>
  </subjectIdentity>
  <baseName>
    <baseNameString>work</baseNameString>
  </baseName>
</topic>

<!-- Musical work -->
<topic id="musical-work">
  <subjectIdentity>
    <subjectIndicatorRef xlink:href="http://psi.example.org/music/muscial-work"/>
  </subjectIdentity>
  <instanceOf><topicRef xlink:href="#work"/></instanceOf>
  <baseName>
    <baseNameString>Musical work</baseNameString>
  </baseName>
</topic>

<!-- Song -->
<topic id="song">
  <subjectIdentity>
      <subjectIndicatorRef
        xlink:href="http://psi.example.org/music/song"/>
  </subjectIdentity>
   <baseName>
     <baseNameString>song</baseNameString>
   </baseName>
  <baseName>
    <scope>
      <subjectIndicatorRef
        xlink:href="http://www.topicmaps.org/xtm/1.0/language.xtm#de"/>
    </scope>
    <baseNameString>Lied</baseNameString>
  </baseName>
</topic>

<topic id="track">
  <baseName>
    <baseNameString>track</baseNameString>
  </baseName>
</topic>

<topic id="container">
  <baseName>
    <baseNameString>container</baseNameString>
  </baseName>
</topic>

<!-- Song is a subclass of musical work -->
<association>
  <instanceOf>
    <subjectIndicatorRef
      xlink:href="http://www.topicmaps.org/xtm/1.0/core.xtm#superclass-subclass"/>
  </instanceOf>
  <member>
    <roleSpec>
      <subjectIndicatorRef
        xlink:href="http://www.topicmaps.org/xtm/1.0/core.xtm#superclass"/>
    </roleSpec>
    <topicRef xlink:href="#musical-work"/>
  </member>
  <member>
    <roleSpec>
      <subjectIndicatorRef
        xlink:href="http://www.topicmaps.org/xtm/1.0/core.xtm#subclass"/>
    </roleSpec>
    <topicRef xlink:href="#song"/>
  </member>
</association>

<!-- Instrumental -->
<topic id="instrumental">
  <subjectIdentity>
      <subjectIndicatorRef
        xlink:href="http://psi.example.org/music/instrumental"/>
  </subjectIdentity>
  <baseName>
     <baseNameString>instrumental</baseNameString>
  </baseName>
  <occurrence>
    <instanceOf>
      <topicRef xlink:href="#description"></topicRef>
    </instanceOf>
    <resourceData>Instrumental indicates that a musical work that is performed by instruments only.</resourceData>
  </occurrence>
</topic>

<!-- instrumental is a subclass of musical work -->
<association>
  <instanceOf>
    <subjectIndicatorRef
      xlink:href="http://www.topicmaps.org/xtm/1.0/core.xtm#superclass-subclass"/>
  </instanceOf>
  <member>
    <roleSpec>
      <subjectIndicatorRef
        xlink:href="http://www.topicmaps.org/xtm/1.0/core.xtm#superclass"/>
    </roleSpec>
    <topicRef xlink:href="#musical-work"/>
  </member>
  <member>
    <roleSpec>
      <subjectIndicatorRef
        xlink:href="http://www.topicmaps.org/xtm/1.0/core.xtm#subclass"/>
    </roleSpec>
    <topicRef xlink:href="#instrumental"/>
  </member>
</association>

<!-- Album -->
<topic id="album">
  <subjectIdentity>
      <subjectIndicatorRef
        xlink:href="http://psi.test.org/music#album"/>
  </subjectIdentity>
  <baseName>
     <baseNameString>album</baseNameString>
  </baseName>
</topic>

<!-- Person -->
<topic id="person">
  <subjectIdentity>
    <subjectIndicatorRef xlink:href="http://psi.test.org/person"/>
  </subjectIdentity>
  <baseName>
    <baseNameString>person</baseNameString>
  </baseName>
</topic>


<topic id="member">
  <baseName>
    <baseNameString>member</baseNameString>
  </baseName>
</topic>


<!-- John Lennon -->
<topic id="john">
  <instanceOf>
    <topicRef xlink:href="#person"></topicRef>
  </instanceOf>
  <subjectIdentity>
      <subjectIndicatorRef
        xlink:href="http://psi.example.org/music/beatles/john"/>
  </subjectIdentity>
  <baseName>
    <baseNameString>John Lennon</baseNameString>
      <variant>
        <parameters>
          <subjectIndicatorRef xlink:href="http://www.topicmaps.org/xtm/1.0/core.xtm#sort"></subjectIndicatorRef>
          </parameters>
        <variantName>
          <resourceData>lennon, john</resourceData>
          </variantName>
        </variant>
  </baseName>
</topic>

<!-- Paul McCartney -->
<topic id="paul">
  <instanceOf>
    <topicRef xlink:href="#person"></topicRef>
  </instanceOf>
  <subjectIdentity>
      <subjectIndicatorRef
        xlink:href="http://psi.example.org/music/beatles/paul"/>
  </subjectIdentity>
  <baseName>
    <baseNameString>Paul McCartney</baseNameString>
      <variant>
        <parameters>
          <subjectIndicatorRef xlink:href="http://www.topicmaps.org/xtm/1.0/core.xtm#sort"></subjectIndicatorRef>
          </parameters>
        <variantName>
          <resourceData>mccartney, paul</resourceData>
          </variantName>
        </variant>
  </baseName>
</topic>

<!-- Ringo Starr -->
<topic id="ringo">
  <instanceOf>
    <topicRef xlink:href="#person"></topicRef>
  </instanceOf>
  <subjectIdentity>
      <subjectIndicatorRef
        xlink:href="http://psi.example.org/music/beatles/ringo"/>
  </subjectIdentity>
  <baseName>
    <baseNameString>Ringo Starr</baseNameString>
      <variant>
        <parameters>
          <subjectIndicatorRef xlink:href="http://www.topicmaps.org/xtm/1.0/core.xtm#sort"></subjectIndicatorRef>
          </parameters>
        <variantName>
          <resourceData>starr, ringo</resourceData>
          </variantName>
        </variant>
  </baseName>
</topic>

<!-- George Harrison -->
<topic id="george">
  <instanceOf>
    <topicRef xlink:href="#person"></topicRef>
  </instanceOf>
  <subjectIdentity>
      <subjectIndicatorRef
        xlink:href="http://psi.example.org/music/beatles/george"/>
  </subjectIdentity>
  <baseName>
    <baseNameString>George Harrison</baseNameString>
      <variant>
        <parameters>
          <subjectIndicatorRef xlink:href="http://www.topicmaps.org/xtm/1.0/core.xtm#sort"></subjectIndicatorRef>
          </parameters>
        <variantName>
          <resourceData>harrison, george</resourceData>
          </variantName>
        </variant>
  </baseName>
</topic>

<!-- The Beatles -->
<topic id="thebeatles">
  <instanceOf>
    <topicRef xlink:href="#music-group"></topicRef>
  </instanceOf>
  <subjectIdentity>
      <subjectIndicatorRef
        xlink:href="http://psi.example.org/music/beatles/the%20beatles"/>
  </subjectIdentity>
  <baseName>
    <baseNameString>The Beatles</baseNameString>
      <variant>
        <parameters>
          <subjectIndicatorRef xlink:href="http://www.topicmaps.org/xtm/1.0/core.xtm#sort"></subjectIndicatorRef>
          </parameters>
        <variantName>
          <resourceData>beatles, the</resourceData>
          </variantName>
        </variant>
  </baseName>
  <occurrence>
    <instanceOf>
      <topicRef xlink:href="#website"/>
    </instanceOf>
    <resourceRef xlink:href="http://thebeatles.com/"/>
  </occurrence>
</topic>

<topic id="membership">
  <baseName>
    <baseNameString>Membership</baseNameString>
  </baseName>
  <baseName>
    <scope><topicRef xlink:href="#group"/></scope>
    <baseNameString>has member</baseNameString>
  </baseName>
  <baseName>
    <scope><topicRef xlink:href="#member"/></scope>
    <baseNameString>is member of</baseNameString>
  </baseName>
</topic>

<!-- Members of The Beatles -->
<association>
  <instanceOf>
    <topicRef xlink:href="#membership"/>
  </instanceOf>
  <member>
    <roleSpec><topicRef xlink:href="#member"/></roleSpec>
    <topicRef xlink:href="#john"/>
  </member>
  <member>
    <roleSpec><topicRef xlink:href="#group"/></roleSpec>
    <topicRef xlink:href="#thebeatles"/>
  </member>
</association>

<association>
  <instanceOf>
    <topicRef xlink:href="#membership"/>
  </instanceOf>
  <member>
    <roleSpec><topicRef xlink:href="#member"/></roleSpec>
    <topicRef xlink:href="#paul"/>
  </member>
  <member>
    <roleSpec><topicRef xlink:href="#group"/></roleSpec>
    <topicRef xlink:href="#thebeatles"/>
  </member>
</association>

<association>
  <instanceOf>
    <topicRef xlink:href="#membership"/>
  </instanceOf>
  <member>
    <roleSpec><topicRef xlink:href="#member"/></roleSpec>
    <topicRef xlink:href="#george"/>
  </member>
  <member>
    <roleSpec><topicRef xlink:href="#group"/></roleSpec>
    <topicRef xlink:href="#thebeatles"/>
  </member>
</association>

<association>
  <instanceOf>
    <topicRef xlink:href="#membership"/>
  </instanceOf>
  <member>
    <roleSpec><topicRef xlink:href="#member"/></roleSpec>
    <topicRef xlink:href="#ringo"/>
  </member>
  <member>
    <roleSpec><topicRef xlink:href="#group"/></roleSpec>
    <topicRef xlink:href="#thebeatles"/>
  </member>
</association>

<!-- The Lennon/McCartney partnership -->
<topic id="lennon-mccartney-reifier">
  <subjectIdentity>
    <subjectIndicatorRef xlink:href="#lennon-mccartney"/>
  </subjectIdentity>
  <baseName>
    <baseNameString>Lennon / McCartney</baseNameString>
  </baseName>
</topic>

<association id="lennon-mccartney">
  <instanceOf>
    <topicRef xlink:href="#partnership"/>
  </instanceOf>
  <member>
    <roleSpec><topicRef xlink:href="#partner"/></roleSpec>
    <topicRef xlink:href="#paul"/>
  </member>
  <member>
    <roleSpec><topicRef xlink:href="#partner"/></roleSpec>
    <topicRef xlink:href="#john"/>
  </member>
</association>

<topic id="partner">
  <baseName>
    <baseNameString>partner</baseNameString>
  </baseName>
</topic>

<topic id="partnership">
  <baseName>
    <baseNameString>partnership</baseNameString>
  </baseName>
</topic>

<topic id="website">
  <baseName>
    <baseNameString>website</baseNameString>
  </baseName>
</topic>

<topic id="description">
  <baseName>
    <baseNameString>description</baseNameString>
  </baseName>
</topic>

<topic id="length">
  <baseName>
    <baseNameString>length</baseNameString>
  </baseName>
</topic>

<topic id="lyrics">
  <subjectIdentity>
      <subjectIndicatorRef
        xlink:href="http://psi.example.org/lyrics"/>
  </subjectIdentity>
  <baseName>
    <baseNameString>lyrics</baseNameString>
  </baseName>
  <occurrence>
    <instanceOf>
      <topicRef xlink:href="#description"/>
    </instanceOf>
    <resourceData>The text of a song</resourceData>
  </occurrence>
</topic>

<!-- Album -->
<topic id="sgtpepper-album">
  <instanceOf>
    <topicRef xlink:href="#album"></topicRef>
  </instanceOf>
  <subjectIdentity>
      <subjectIndicatorRef
        xlink:href="http://psi.testing.org/beatles/album/sgtpepper"/>
  </subjectIdentity>
  <baseName>
    <baseNameString>Sgt. Pepper's Lonely Hearts Club Band</baseNameString>
  </baseName>
</topic>

<topic id="mmt-album">
  <instanceOf>
    <topicRef xlink:href="#album"></topicRef>
  </instanceOf>
  <subjectIdentity>
      <subjectIndicatorRef
        xlink:href="http://psi.testing.org/beatles/album/magicalmysterytour"/>
  </subjectIdentity>
  <baseName>
    <baseNameString>Magical Mystery Tour</baseNameString>
  </baseName>
</topic>

<!-- Songs -->

<topic id="flying">
  <instanceOf>
    <topicRef xlink:href="#instrumental"></topicRef>
  </instanceOf>
  <baseName>
    <baseNameString>Fyling</baseNameString>
  </baseName>
  <occurrence>
    <instanceOf>
      <topicRef xlink:href="#length"></topicRef>
    </instanceOf>
    <resourceData>2:16</resourceData>
  </occurrence>
</topic>


<topic id="adayinthelife">
  <instanceOf>
    <topicRef xlink:href="#song"></topicRef>
  </instanceOf>
  <baseName>
    <baseNameString>A day in the life</baseNameString>
  </baseName>
  <occurrence>
    <instanceOf>
      <topicRef xlink:href="#length"></topicRef>
    </instanceOf>
    <resourceData>5:03</resourceData>
  </occurrence>
  <occurrence>
    <instanceOf>
      <topicRef xlink:href="#lyrics"/>
    </instanceOf>
    <resourceData>I read the news today oh, boy
About a lucky man who made the grade
And though the news was rather sad
Well, I just had to laugh
I saw the photograph
He blew his mind out in a car 
[...]
    </resourceData>
  </occurrence>
</topic>

<association>
  <instanceOf>
    <subjectIndicatorRef xlink:href="http://psi.example.org/created-by"/>
  </instanceOf>
  <member>
    <roleSpec>
      <subjectIndicatorRef xlink:href="http://purl.org/dc/elements/1.1/creator"/>
    </roleSpec>
    <topicRef xlink:href="#lennon-mccartney-reifier"/>
  </member>
  <member>
    <roleSpec><topicRef xlink:href="#work"/></roleSpec>
    <topicRef xlink:href="#adayinthelife"/>
  </member>
</association>

<association>
  <instanceOf>
    <subjectIndicatorRef xlink:href="http://psi.example.org/created-by"/>
  </instanceOf>
  <member>
    <roleSpec>
      <subjectIndicatorRef xlink:href="http://purl.org/dc/elements/1.1/creator"/>
    </roleSpec>
    <topicRef xlink:href="#thebeatles"/>
  </member>
  <member>
    <roleSpec><topicRef xlink:href="#work"/></roleSpec>
    <topicRef xlink:href="#flying"/>
  </member>
</association>

<!-- Connection song to album -->
<association>
  <instanceOf>
    <subjectIndicatorRef xlink:href="http://psi.test.org/assoc#istrackof"/>
  </instanceOf>
  <member>
    <roleSpec>
      <topicRef xlink:href="#container"/>
    </roleSpec>
    <topicRef xlink:href="#mmt-album"/>
  </member>
  <member>
    <roleSpec><topicRef xlink:href="#track"/></roleSpec>
    <topicRef xlink:href="#flying"/>
  </member>
</association>

<association>
  <instanceOf>
    <subjectIndicatorRef xlink:href="http://psi.test.org/assoc#istrackof"/>
  </instanceOf>
  <member>
    <roleSpec>
      <topicRef xlink:href="#container"/>
    </roleSpec>
    <topicRef xlink:href="#sgtpepper-album"/>
  </member>
  <member>
    <roleSpec><topicRef xlink:href="#track"/></roleSpec>
    <topicRef xlink:href="#adayinthelife"/>
  </member>
</association>
</topicMap>