About the Wiki » Museums to Go » Products & Services » TourML (in progress)

TourML (pronounced “turmoil”) from the Indianapolis Museum of Art is an attempt to standardize the data of museum tours.  By exposing your tour content in TourML, you should be able to leverage the work of others and expose your tour on many platforms.

In thinking about how to support the Information Architecture described by Nancy in her post, as well as support for a more traditional stop-based tour as described in the TAP application. It seemed to make the most sense to design the schema based around the concepts of “Tours” and “Stops” as these seem to be common terms.  With some simple extensions, it seems that this architecture can also support the Soundtracks and Soundbites concept described by Nancy as well.

The architecture looks a little something like this:

TOURS:

  • A Tour is a container for a collection of Stops.
  • Tours have meta-data attributes like: Titles, Descriptions, Credits, etc…
  • Tours might contain information about a set of top-level stops which are “entry-points” to the tour (not currently in schema)

TOURSETS: (not currently in schema)

  • A TourSet is a container for multiple Tours which may be present on a single device. This is similar to what Ted presents in this overview of the DMA tours

STOPS:

  • Stops are the primary object in the TourML schema, and contain references to the media files (i.e. audio/video/images) and navigation logic that makes this a mobile tour
  • Stops can be of several different types which will change the way an application displays/renders them, and what information that application platform expects to find within the stop. Initial StopTypes include but are not limited to:
    • Audio
    • Video
    • Text / HTML content
    • Image | ImageGallery (not currently in schema)
    • Polls (not currently in schema)
    • StopGroups
  • StopGroups are contain a list of other stops are are how an application can choose to construct a menu or list of stops
  • Image stops with multiple images specified could be rendered as image galleries or slideshows
  • Text/HTML stops might choose to make use of a wiki syntax in the CMS so that authors could easily link to other stops on the tour within some simple descriptive text… Those stops could then be rendered as thumbnails or links by the application device
  • All Stops contain a certain amount of common data including:
    • Type – the type of the stop as described above
    • Title
    • ID – a unique identifier for the stop, not for humans
    • StopCode – a code (either numeric or text) which can be entered by visitors to access this stop.  This might be a traditional keypad input… the answer to some clue… or an accession number from the collection.
    • Icon (optional) – an override of a default stop-type icon
    • Goto – a stop reference that should be accessed immediately upon finishing the action of this stop. (i.e. goto this image after playing this audio file; or, ask this poll question after watching this video)
  • To implement Nancy’s example of Soundtracks and Soundbites we could construct a tour which has a string of audio-stops each of which could be separated by a StopGroup containing a series of choices of sound-bites which would invite the visitor to either dig-deeper or continue on with the sound-track.  We could add an attribute to the StopGroup type which would automatically goto a particular stop after a specified delay.  So we could play an audio/video file… offer a chance to dig deeper, and move onto the next section after 2 seconds.

———————————————————————

This TourML XMLSchema is currently being developed.

Open issues:

  • Multiple tours
  • Location of WebStop linked resources
  • SurveyStop
  • Bundling content

See attached for the latest version and a sample tour instance.

TourML schema and sample (zip file)

TourML Sample XML Instance

  1. <?xml version=“1.0″ encoding=“UTF-8″?>
  2. <!– All tours have a root “Tour” element –>
  3. <Tour xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns=“http://www.imamuseum.org/TourML/1.0″
  4. xsi:schemaLocation=“http://www.imamuseum.org/TourML/1.0 TourML.xsd “>
  5. <Title>
  6. A sample TourML document
  7. </Title>
  8. <Description>
  9. This file is meant to demonstrate proper usage of the TourML standard
  10. </Description>
  11. <Param key=“app-icon” value=“images/ss-icon.png” />
  12. <Param key=“splash-image” value=“images/ss-splash.jpg” />
  13. <ImageStop id=“1″> <!– All stops require an id used for reference –>
  14. <Title>CT imagery of the mummy</Title>
  15. <Icon>./images/icon1.jpg</Icon>
  16. <Param key=“zoomable” value=“true” />
  17. <Source>./images/ankh-ct.png</Source>
  18. </ImageStop>
  19. <VideoStop id=“2″ goto=“1″> <!– Goto the CT image after this video –>
  20. <Title>How do you give a mummy a CT scan?</Title>
  21. <Icon>./images/icon2.jpg</Icon>
  22. <Source>./videos/ankh-ct.mov</Source>
  23. </VideoStop>
  24. <AudioStop id=“3″>
  25. <Title>Dr. Abbot’s observations</Title>
  26. <Icon>./images/icon3.jpg</Icon>
  27. <Source>./audio/abbot-interview.mp3</Source>
  28. </AudioStop>
  29. <StopGroup id=“4″ code=“101″>
  30. <Title>Ankhaman’s remains</Title>
  31. <StopRef id=“2″ /> <!– Reference to CT video –>
  32. <StopRef id=“3″ /> <!– Reference to Dr’s audio interview –>
  33. </StopGroup>
  34. <WebStop id=“5″ code=“102″>
  35. <Title>Read more about mummies</Title>
  36. <Icon>./images/icon4.jpg</Icon>
  37. <Source>http://www.wikipedia.com/Mummies</Source>
  38. </WebStop>
  39. </Tour>

TourML XML Schema Definition

  1. <?xml version=“1.0″ encoding=“UTF-8″?>
  2. <schema targetNamespace=“http://www.imamuseum.org/TourML/1.0″
  3. elementFormDefault=“qualified” xmlns=“http://www.w3.org/2001/XMLSchema”
  4. xmlns:tns=“http://www.imamuseum.org/TourML/1.0″>
  5. <element name=“Tour”>
  6. <annotation>
  7. <documentation>
  8. The root element for TourML. A tour contains all the
  9. information relating to a museum tour.
  10. </documentation>
  11. </annotation>
  12. <complexType>
  13. <sequence>
  14. <element name=“Title” type=“string” maxOccurs=“1″ minOccurs=“0″>
  15. </element>
  16. <element name=“Description” type=“string” maxOccurs=“1″
  17. minOccurs=“0″>
  18. </element>
  19. <element name=“Param” type=“tns:ParamType” maxOccurs=“unbounded”
  20. minOccurs=“0″></element>
  21. <group ref=“tns:StopTypes” maxOccurs=“unbounded” minOccurs=“1″>
  22. </group>
  23. </sequence>
  24. </complexType>
  25. </element>
  26. <group name=“StopTypes”>
  27. <annotation>
  28. <documentation>
  29. A declaration of all the instantiable stop types
  30. </documentation>
  31. </annotation>
  32. <choice>
  33. <element name=“AudioStop” type=“tns:AudioStopType”></element>
  34. <element name=“ImageStop” type=“tns:ImageStopType”></element>
  35. <element name=“StopGroup” type=“tns:StopGroupType”></element>
  36. <element name=“VideoStop” type=“tns:VideoStopType”></element>
  37. <element name=“WebStop” type=“tns:WebStopType”></element>
  38. </choice>
  39. </group>
  40. <complexType name=“BaseStopType” abstract=“true”>
  41. <annotation>
  42. <documentation>
  43. An abstract stop on a guided museum tour
  44. </documentation>
  45. </annotation>
  46. <sequence>
  47. <element name=“Title” type=“string” maxOccurs=“1″ minOccurs=“0″>
  48. </element>
  49. <element name=“Description” type=“string” maxOccurs=“1″
  50. minOccurs=“0″>
  51. </element>
  52. <element name=“Icon” type=“anyURI” maxOccurs=“1″ minOccurs=“0″>
  53. <annotation>
  54. <documentation>URI to an image that can be used to represent the
  55. stop</documentation>
  56. </annotation>
  57. </element>
  58. <element name=“Param” type=“tns:ParamType” maxOccurs=“unbounded”
  59. minOccurs=“0″>
  60. </element>
  61. </sequence>
  62. <attribute name=“id” type=“string” use=“required”>
  63. <annotation>
  64. <documentation>
  65. An internal reference id for stops
  66. </documentation>
  67. </annotation>
  68. </attribute>
  69. <attribute name=“code” type=“string” use=“optional”>
  70. <annotation>
  71. <documentation>
  72. The code an end user would enter to reach this stop
  73. </documentation>
  74. </annotation>
  75. </attribute>
  76. <attribute name=“goto” type=“string” use=“optional”>
  77. <annotation>
  78. <documentation>
  79. A pointer to another stop to visit after this one
  80. </documentation>
  81. </annotation>
  82. </attribute>
  83. </complexType>
  84. <!– begin end-user stop type definitions –>
  85. <complexType name=“AudioStopType”>
  86. <annotation>
  87. <documentation>
  88. A stop presenting an audio file
  89. </documentation>
  90. </annotation>
  91. <complexContent>
  92. <extension base=“tns:BaseStopType”>
  93. <sequence>
  94. <element name=“Source” type=“anyURI”></element>
  95. </sequence>
  96. <attribute ref=“tns:duration” use=“optional”></attribute>
  97. </extension>
  98. </complexContent>
  99. </complexType>
  100. <complexType name=“ImageStopType”>
  101. <annotation>
  102. <documentation>
  103. A stop presenting an image file
  104. </documentation>
  105. </annotation>
  106. <complexContent>
  107. <extension base=“tns:BaseStopType”>
  108. <sequence>
  109. <element name=“Source” type=“anyURI”></element>
  110. </sequence>
  111. </extension>
  112. </complexContent>
  113. </complexType>
  114. <complexType name=“StopGroupType”>
  115. <annotation>
  116. <documentation>
  117. A stop that represents a collections of stops
  118. </documentation>
  119. </annotation>
  120. <complexContent>
  121. <extension base=“tns:BaseStopType”>
  122. <sequence maxOccurs=“unbounded” minOccurs=“1″>
  123. <element name=“StopRef” type=“tns:StopReferenceType”></element>
  124. </sequence>
  125. </extension>
  126. </complexContent>
  127. </complexType>
  128. <complexType name=“VideoStopType”>
  129. <annotation>
  130. <documentation>
  131. A stop presenting a video file
  132. </documentation>
  133. </annotation>
  134. <complexContent>
  135. <extension base=“tns:BaseStopType”>
  136. <sequence>
  137. <element name=“Source” type=“anyURI”></element>
  138. </sequence>
  139. <attribute ref=“tns:duration”></attribute>
  140. </extension>
  141. </complexContent>
  142. </complexType>
  143. <complexType name=“WebStopType”>
  144. <complexContent>
  145. <extension base=“tns:BaseStopType”>
  146. <sequence>
  147. <element name=“Source” type=“anyURI”></element>
  148. </sequence>
  149. </extension>
  150. </complexContent>
  151. </complexType>
  152. <!– end stop type definitions –>
  153. <complexType name=“StopReferenceType”>
  154. <annotation>
  155. <documentation>
  156. A reference type to another stop
  157. </documentation>
  158. </annotation>
  159. <attribute name=“id” type=“string”>
  160. <annotation>
  161. <documentation>
  162. The id of the stop being referenced
  163. </documentation>
  164. </annotation>
  165. </attribute>
  166. </complexType>
  167. <attribute name=“duration” type=“double”>
  168. <annotation>
  169. <documentation>
  170. A decimal representation of a time duration for media
  171. </documentation>
  172. </annotation>
  173. </attribute>
  174. <complexType name=“ParamType”>
  175. <annotation>
  176. <documentation>A generic element that can be used to store
  177. application specific configurations</documentation>
  178. </annotation>
  179. <attribute name=“key” type=“string”></attribute>
  180. <attribute name=“value” type=“string”></attribute>
  181. </complexType>
  182. </schema>

8 comments

  1. Nancy Proctor @ 2009-05-15 11:46

    Thanks so much for sharing this! I hope it’s ok I inserted a link to the IMA on your page so folks know it’s the same brilliant brains who gave us ArtBabble, the Dashboard, etc. who are developing TourML!

  2. This looks really great. Is it possible to add some for of location attributes for stops? I’m thinking of 3 instances.

    1) Inside a museum these would somehow relate to where they are on a map (maybe some simple x,y co-ordinates)
    2) For outdoor exhibitions (for example sculpture walks) these would be lat/lng.
    3) Possibly just a textural description of a location.

  3. All Stop elements can contain zero or more “Param” elements in which you could supply this information. We tried to avoid adding tour specific fields to the schema to keep it from exploding.

  4. [...] architectures that can work for lots of different museums.  An early version of this spec (TourML – pronounced turmoil) can be seen in action in the Dallas Museum of Art’s new mobile tour.  You can read more about [...]

  5. Just a naive question … Why don’t you extend SMIL3.0 from the W3C. It might ne may be more standardized and ubiquitous ?

    http://www.w3.org/TR/2008/REC-SMIL3-20081201/

  6. Not naive by any means. We have heard of SMIL for transcriptions, but I was not aware of this 3.0 specification. At first glance SMIL 3.0 seems to fairly complex. The motivation behind TourML was to be a simple spec that only represents content of a tour. SMIL appears to be heavy on presentation, though you might not have to use those parts. In any case, thanks for the pointer and we will explore the possibility of extending this spec instead.

    - Charlie

  7. [...] discussion of SMIL3.0 starting on Museum Mobile: http://is.gd/3qMSO Any views on its use in handheld apps? #mtogo RT @museweb Mobile for Museums report from @chnm [...]

  8. Nancy Proctor @ 2009-09-19 17:56

    Sam Kome (http://www.facebook.com/home.php#/profile.php?id=2717747&ref=mf) asks: “Do any SMIL players exist for mobile apps yet? I think it has the right features (timing, animation, text) otherwise, maybe tough to develop with (at first).”

Add your comment now

Comment moderation is enabled. Your comment may take some time to appear.