Introduction to Heml

www.heml.org

Bruce Robertson

$Date: 2005-12-23 22:27:51 -0400 (Fri, 23 Dec 2005) $

Abstract

This document describes the goals and principles of the Historical Event Markup and Linking Project . This is $Revision: 1.8 $ and it relates to version 0.7.1 of the project.


[Categories such as time and space] represent the most general relations which exist between things; surpassing all our other ideas in extension, they dominate all the details of our intellectual life. If men did not agree upon these essential ideas at every moment, if they did not have the same conception of time, space, cause, and number, all contact between their minds would be impossible, and with that all life together.

--Emile Durkheim

Introduction

History and the Web

Like any other form of human communication, the web comprises a good deal of information about the past. Web sites of historical interest range in size and ambition from vast scholarly endeavours, such Athenians, a record of all known people who lived in ancient Athens, to small-scale personal efforts, like Genjirou Inui's My Guadalcanal. Indeed, web materials in an historical mode are produced in and for nearly every discipline of the humanities and social sciences. As diverse as they are, these sites share one important similarity: as works of history, nearly all make assertions about events that took place in the past or argue about those events. The peculiarities of layout and presentation in each historical site obscures this similarity. For example, Le Musée virtuel de la Nouvelle-France provides a time-line with links, entitled Explorations européennes en Amérique ; in contrast, the Prosopography of the Byzantine Empire collects articles on individuals, with significant dates included in parentheses.

As a result, though there exists a wealth of electronic resources which represent historical events, including course materials generated with Critical Tools or genealogical information collected with GeneWeb, these are each sui generis, and their data cannot be compared or combined. Indeed, typically their data are accessible only in the form of text, either as html data, or in bound volumes typeset from the database. This is unfortunate since data recording historical events are rich with information, such as dates and locations, which can be manipulated by computational means.

If we consider the web to be no more than a huge keyword-indexed repository, then this difference in presentation matters little. Searches on an historical person or event are, after all, sometimes remarkably effective. Yet this approach to historical documents omits much. Ideally an electronic historical document includes interfaces for posing other sorts of historical questions, most obviously, searches for evidence pertaining to a given date or range of dates and to a given spatial range. Today's web cannot effectively respond to the question, "what resources are available which describe historical events in Europe during the first century B.C."

Improving Historical Markup

However, if the underlying similarity of historical web materials was exposed and interchanged in the web of the future using a shared semantic markup scheme, such queries on the web itself would be possible. Text markup schemes for the humanities, chiefly the Text Encoding Initiative, have been in use for over a decade. Ideally, such schemes also provide a standard and well thought-out basis for encoding such material, thereby aiding the scholar who marks up a text with them, as well as assuring her that the results will interact well with other material so encoded and be presented in a clear and consistent manner.

The potential for doing the same with historical events has been shown by Hockey et al. (1998). Yet the scholar working with this material currently has no such standard data formats established for her, and so each struggles alone against the pitfalls of designing schemata suited to this purpose. (Townsend provides guidelines for the larger question of marking-up of historical texts as documents. The European Community's ACO*HUM Working Group on History and Historical Informatics suggests that such standards are required in their Principia, but, as far as I know, there is no effort under way to provide them.)

Making New Tags

In the past, humanities markup was been built around the Standard Generalized Markup Language, or SGML. However, SGML has proven too complex for direct presentation and manipulation on the web. Recognizing the power of generalized markup on the web, a group of experts have developed a new standard in markup called the eXtensible Markup Language, or XML. XML is a means of defining one's own mark-up and including, for instance, tags like <era> or <revision_number>. The excitement has built around XML's usefulness in business and literary studies, where a very rich mark-up language has already been composed by the TEI. The purpose of the current project is to define XML tags that describe historical events and to show how such markup can be transformed into useful and interesting presentations on the web.

An important extension of XML, known as XML Namespaces, allows parts of one markup scheme to be employed within another. With this advance, an entire document need not conform to one single schema; instead, relatively small XML elements pertinent to one domain can be embedded into a larger markup scheme, such as XHTML, the XML-compliant successor to HTML. A well-established example of this is MathML, the XML-based mathematics markup language. Elements prefixed with the MathML namespace can appear within XHTML documents, allowing the parser and display engine to treat these elements as mathematical notation.

It is the goal of this project to define XML elements that expose and outline historical events asserted in documents across the web and to parse and display these elements in interesting and useful ways.

Mark-up for History

How could these historical XML elements be used?

Consider, for instance, twelve diaries or memoirs, each a different view of the Siege of Sarajevo in 1994 and published on the web. They would include entries about events such as the stationing of troops or the evacuation of a certain region on such-and-such a day. If a standard form of mark-up were used to tag the text that recorded these events and their date and location, a computer could collect this information and associate it with the document. It would then be possible to search for descriptions of events on a certain day, or in a certain region or both, and retrieve references to the proper section of the pertinent memoir or memoirs.

Other alternative views of the events could be produced from these marked-up documents. It is common, for instance, for historical texts to include a chronological chart of events to aid the reader. From our twelve memoirs, each marked up in the same manner, we could create an exhaustive chronological chart detailing every event the texts' editors thought worthy of inclusion. Furthermore, the entries in our chronological chart would refer to their sources. Alternatively, if the mark-up scheme included information about the events' location, the documents could be used to produce historical maps or to search for events that took place in only a certain quarter of the city.

Consider now the usefulness of such a mark-up scheme if it were applied to even a fraction of the thousands of historical documents and web sites published on the web. It would be possible for a curious student to ask what happened worldwide between the years 1500 and 1200 BCE and to receive a list of events linked to scholarly sources or historical arguments. Time-lines and maps could be generated from disparate sources worldwide. Such a scheme would afford humanity a new and exciting means of communicating about its past.

Theoretical Considerations

Among historians and philosophers of history debate continues over what constitutes historical evidence and how it relates to the work of the practicing historian (Carr 1987:10-15; Elton 1969:112-13; Jenkins 1991:26, 48-50). This project does not seek to solve these problems, much less to impose one approach on the scholar who uses it; it hopes instead to provide a new medium for communicating about the past, one in which this debate can be continued. Though the concentration on `events' in this proposal might suggest that it is best suited for political history, we hope that non-traditional approaches to the study of the past will also be well served by this organizational tool, because it puts all encoded events on equal footing. For instance, so-called microhistory, whether temporal or spatial (Ginzburg 1993:14-15), can more easily be pursued in this organizational scheme, in which the life of a slave, recorded in Athenians, is on the same footing as any other event.

It is also true, as Zuern (1999) points out, that the typographical representing historical events is a rhetorical device. We hope that scholars using our tools will allow their audience to choose the format in which they view their information, opening it up to further interpretation and discovery.

Project Specification

The Heml project has been guided by the following goals, principles and plans.

Project Goals

This project provides a basic set of text mark-up and transformations for historical information. These include:

  1. A lightweight XML Schema for historical events for use in stand-alone documents and with elements embedded in XHTML,
  2. A sample set of XSLT style sheets and Java code that transform data encoded according to (1) above into useful representations, including:
    1. Ordered lists of historical events, linked to their sources and translated, if necessary between calendrical systems
    2. Timelines generated in Scalable Vector Graphics
    3. Maps generated in Scalable Vector Graphics
  3. Means of joining and combining distributed documents that conforming (1), producing a non-centralized repository of historical event markup.

These constitute an integrated approach to the electronic representation of historical events; they make it possible to combine, compare and reuse sources for course materials, on-line resources and research project databases, providing this world with new views on its past.

Project Principles

The Heml Project's products are:

  1. Multi-lingual and multi-calendrical
  2. Free, specifically licensed under the LGPL
  3. Useful: markup elements are not introduced until transformation tools which exploit them are available, and will endeavor to make them accessible to any person with an understanding of HTML
  4. Cooperative: as standard and usable XML namespaces develop in related fields, these are explored and adopted or integrated. Heml is not meant to be the language for marking up historical events; it does aim to be a most information-rich interchange format for historical data.

Use of Metadata Frameworks

The Heml Project is exploring how best to make use of general metadata frameworks such as RDF and TopicMaps. Our first efforts in this will probably involve our jackdaw metadata files.

We have begun making use of Dublin Core metadata in our XHTML-extension documents, and notes relating to the applicability of Dublin Core elements appear throughout this document.

Heml 2002-05-29 Schema to Encode Historical Events

Heml markup is a reasonably lightweight description of things that happened in the human past. It might be helpful to imagine it emulating the back pages of historical monographs, wherin a more simple chronological and geographical outline provided through maps, timelines and such keep the reader oriented. Such appendices make reference to the full text for complete discussion; similarly, Heml is a language to link a lightweight historical representation back to full text or text that discuss the event at length.

Accordingly in the Heml schema, an event comprises

  1. A label to name the event
  2. One or more keywords that group conceptually similar events
  3. A location in which the event took place
  4. A 'chronology' of the event, describing the time in or at which it event took place
  5. A list of persons or groups of persons who participate in the event
  6. A list of evidence for the event, either in physical form (such as printed books or 16mm film) or as a web resource

Markup Patterns

Heml markup has some core terms for, and approaches to, the problems of internationalization and references to unique identities. An introduction to these is useful before examining the basic elements of a Heml event.

As shown in the examples, all elements have the namespace http://www.heml.org/schemas/2002-05-29/heml. The prefix heml: is customarily assigned to this namespace. With the exception of xml:lang and xlink:href, attributes are not namespaced.

Element names always begin with a capital letter, and words within their names are written run-on, each with a beginning capital letter, such as PhysicalSourceSet.

Attributes are written in miniscule; new words within their names are separated with an underscore.

'Sets'

Heml elements whose names ending in 'Set' contain multiple instances of an element which describe the same thing, each in a different language. These languages are specified with a xml:lang attribute, and it is a schema error if the same language string appears in two different instances. In Example 1, “LocationLabelSet for New Carthage” the English, Greek, Japanese and Latin Labels (names) for the Punic settlement 'New Carthage' are collected in a LocationLabelSet element. Other elements following the same pattern include: NameSet, EventLabelSet and KeywordClassificationSet.

Example 1. LocationLabelSet for New Carthage


<Location uri="http://testing.com/#New_Carthage"
    xmlns="http://www.heml.org/schemas/2003-09-17/heml" >
  <LocationLabelSet>
    <Label xml:lang="en">New Carthage</Label>
    <Label xml:lang="la">Carthago Nova</Label>
    <Label xml:lang="ja">カルタゴ=ノヴァ</Label>
    <Label xml:lang="el">Καινη` πόλις</Label>
  </LocationLabelSet>
  <!-- Additional Location information follows -->
</Location>

uri/uriRef Pairs

Concepts such as persons, places and ideas ought to be uniquely identified within a document but can appear many time and in different contexts. Heml expresses this with a design pattern using uri and uriRef attributes. With the exception of the Event element itself, every element that takes a uri attribute has a corresponding empty element with a single attribute, uriRef. The latter's name is derived by adding 'Ref' to the former's name. For example, a <Person idref="Hannibal"> element contains a multilingual represenation of a person's name; subsequent references to this same Hannibal must be expressed with <PersonRef idref="Hannibal"/>. Example 2, “Person Described with uriRef Attributes” shows how this works; Example 4, “Sample Classification Element” also illustrates.

All definitions of concepts such as person, places and ideas are located in a top-level element, heml:Definitions. This preceeds the top-level heml:Events element, which comprises the heml:Event elements.

Example 2. Person Described with uriRef Attributes

          
<Participants xmlns="http://www.heml.org/schemas/2003-09-17/heml">
  <PersonWithRole>
    <PersonRef uriRef="http://testing.com/#Hannibal"/>
    <RoleLabelSetRef uriRef="http://testing.com/#general"/>
  </PersonWithRole>
  <!-- Further Persons or PersonWithRoles here .... -->
</Participants>    

Event Label

The label for each event is expressed in a EventLabelSet element; this groups together one or more heml:Label elements, each of which contains a description of the historical event in a brief headline-style entry suitable for inclusion in a table or printing on a map. heml:Labels have a xml:lang attribute to specifying the language of its label text. It is a schema error to have two Label elements with the same xml:lang value. heml:EventLabelSets use the 'Set' design described in the section called “'Sets'”. Example 3, “Sample EventLabelSet” illustrates.

Example 3. Sample EventLabelSet

<EventLabelSet xmlns="http://www.heml.org/schemas/2003-09-17/heml">
  <Label xml:lang="en">Ebro River Treaty</Label>
  <Label xml:lang="ja">エトロ川の協定</Label>
</EventLabelSet>
      

Classification

Example 4. Sample Classification Element

<Classification xmlns="http://www.heml.org/schemas/2003-09-17/heml">
  <KeywordClassificationSetRef uriRef="http://testing.com/#hostilities"/>
  <KeywordClassificationSetRef uriRef="http://testing.com/#Diplomacy"/>
</Classification>

          

Chronology

The Chronology element records what can be known about the time within or at which an event took place. It does not aim to be anything like a complete ontology of time; rather it is developed in conjunction with Java xslt extension elements that make sense of its markup, sorting and comparing events. The extension elements in turn are based on IBM's developerWorks' International Calendars in the ICU4J classes and on the Java Date class. At present, the only possible primatives are the XML Schema GYear and Date types, wrapped similarly named tags. However, the previous version of Heml accepted primatives from all calendars supported by ICU4J, and that will be made possible once again quite soon.

These primatives express a point in time, called an AbsoluteDate and illustrated in Example 5, “Sample AbsoluteDate Element”, or a DateRange, which represents a span of time, as shown in Example 6, “Sample DateRange Element”.

Example 5. Sample AbsoluteDate Element

<Chronology>
    <Year>-0218</Year>
</Chronology>

Example 6. Sample DateRange Element


   <Chronology>
     <Comment>1 Sierpnia 1944 - 30 Wrzensia 1944</Comment>
       <DateRange>
         <StartingDate>
           <Date>1944-08-01</Date>
         </StartingDate>
         <EndingDate>
           <Date>1944-09-30</Date>
         </EndingDate>
       </DateRange>
     </Chronology>

It therefore includes not only the year, month, day, etc. of the date, but also its calendrical scheme (i.e. Gregorian or Hebrew ), era (i.e. BC or AH ). Dates deriving from diverse calendrical schemes are thus accurately sorted and translated from one scheme, likely the one in which the source material was written, to another, likely the one with which the reader is most familiar. For example:

      <!-- The Battle of al-Yarmuk -->
      <!-- RECORDED IN ISLAMIC CALENDAR -->
      <date calendar="islamicsacred" era="AH" xml:lang="en">
        <year>15</year>
      </date>
      

The University of Virginia's Temporal Modelling Project in the summer of 2001 was most helpful in thinking through this element.

Note

This concept should be distinguished from the Dublin Core Coverage element, which has different goals and admits different data. In all cases it should be possible to generate Coverage elements from DateRanges. Perhaps this should be a goal.

Location

The Location elements appear in the LocationDefinitions element, one of the collections of definitions that appear at the head of the Heml document. It includes information sufficient for a rudamentary mapping front-end. It defines a LocationLabelSet to provide a name for the location and a geographic point expressed in Latitude and Longitude. Note that decimal lat/long values are used in the GeographicalHourLatitude and GeographicalHourLongitude elements.

Example 7. heml:Location Element for Rome

<Location xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
xmlns="http://www.heml.org/schemas/2003-09-17/heml" 
uri="http://heml.org/docs/#Rome">                                 
  <LocationLabelSet>
    <Label xml:lang="en">Rome</Label>
    <Label xml:lang="la">Roma</Label>
    <Label xml:lang="ja">&#x30ED;&#x30FC;&#x30DE;</Label>
    <Label xml:lang="el">&#x1FEC;&#x1F7D;&#x3BC;&#x3B7;</Label>
  </LocationLabelSet>
  <geo:Point>
    <geo:lat>41.8172222222222</geo:lat>
    <geo:long>12.3188888888889</geo:long>
  </geo:Point>
</Location>

      

In accordance with the uri/uriRef pattern, Events would be described as taking place in this location if the Event element contained the following: <LocationRef uriRef="http://heml.org/docs/#Rome"/>.

Participants

The heml:Participants element contains information about people or groups that participated in an event and the role or roles each played. Person are represented with the heml:Person, located in the heml:Definitions/heml:PersonDefinitions element and illustrated in Example 8, “Sample Person Element”. A corresponding PersonRef element is used in a Event/Participants/ element to indicate that the specified person participates in the event.

Example 8. Sample Person Element

<Person 
xmlns="http://www.heml.org/schemas/2003-09-17/heml" 
uri="http://heml.org/docs/FRAGLongus">
  <NameSet>
    <Name xml:lang="la">
      <NameElement ordinal="1">Sepronius</NameElement>
      <NameElement ordinal="2">Longus</NameElement>
      <NameElement ordinal="3">Tiberius</NameElement>
    </Name>
    <Name xml:lang="ja">
      <NameElement ordinal="1">&#x30BB;&#x30F3;&#x30D7;&#x30ED;&#x30FC;&#x30CB;&#x30A6;&#x30B9;</NameElement>
      <NameElement ordinal="2">&#x30ED;&#x30F3;&#x30B0;&#x30B9;</NameElement>
      <NameElement ordinal="3">&#x30C6;&#x30A3;&#x30D9;&#x30EA;&#x30A6;&#x30B9;</NameElement>
    </Name>
    <Name xml:lang="el">
      <NameElement ordinal="1">&#x3A3;&#x3B5;&#x3BC;&#x3C0;&#x3C1;&#x1F7D;&#x3BD;&#x3B9;&#x3BF;&#x3C2;</NameElement>
      <NameElement ordinal="2">&#x39B;&#x1F79;&#x3B3;&#x3B3;&#x3BF;&#x3C2;</NameElement>
      <NameElement ordinal="3">&#x3A4;&#x3B5;&#x3B2;&#x1F73;&#x3C1;&#x3B9;&#x3BF;&#x3C2;</NameElement>
    </Name>
  </NameSet>
</Person>

Example 9. Sample RoleLabelSet Element

<RoleLabelSet uri="http://testing.com/#general"
     xmlns="http://www.heml.org/schemas/2003-09-17/heml">
  <Label xml:lang="en">General</Label>
  <Label xml:lang="la">Dux</Label>
  <Label xml:lang="ja">将軍</Label>
  <Label xml:lang="el">στρατηγός</Label>
</RoleLabelSet>

Persons in disparate documents will be reconciled in the database if they have the same uri.

Evidence

This element collects references to a resource that the editor considers evidence for the asserted historical event. Since the same piece of evidence might appear in both physical form and in a networked resource, this element can comprise one or both of the PhysicalSourceSet and NetworkedSourceSet elements. These use the approach described in the section called “'Sets'” in order to refer to the document in various languages.

As Example 10, “An Evidence Element” shows, the PhysicalSource element uses namespaced bibliographic elements from DocBook. In truth, I have not found an XML Schema for DocBook, so I defined a small schema for the necessary db:bibliomixed elements. When the DocBook authority publishes an XML Schema, I will import it. It is likely that the namespace will change then, too.

Example 10. An Evidence Element

<Evidence 
    xmlns="http://www.heml.org/schemas/2003-09-17/heml"
    xmlns:db="http://www.oasis-open.org/docbook/xmlschema/4.1.2">
  <NetworkedSourceSet>
    <!-- the href attribute value below has been abridged 
         to keep this example legible          
      -->
    <SimpleLink xml:lang="en" 
        xlink:href="http://etext.lib.virginia.edu/etcbin/toccer-new2...">
        Livy 25.8-10
    </SimpleLink>
    <SimpleLink xml:lang="la" 
        xlink:href="http://www.gmu.edu/departments/fld/CLASSICS/liv.25.html#8">
        T. Livius 25.8-10
    </SimpleLink>
  </NetworkedSourceSet>
  <PhysicalSourceSet>
    <PhysicalSource xml:lang="en">
      <db:bibliomixed>
        <db:author>Livy</db:author>. <db:pubdate>1982</db:pubdate>. 
        <db:title>From the Founding of the City</db:title>. Translated by B.O Foster. 
        <db:publishername>The Loeb Classical Library</db:publishername>. 
        <db:pagenums>vol. VI 367-377 (25.8-10)</db:pagenums>.
      </db:bibliomixed>
    </PhysicalSource>
    <PhysicalSource xml:lang="la">
      <db:bibliomixed>
        <db:author>Livy</db:author>. <db:pubdate>1982</db:pubdate>. 
        <db:title>Ab Urbe Condita</db:title>. Translated by B.O Foster. 
        <db:publishername>The Loeb Classical Library</db:publishername>. 
        <db:pagenums>vol. VI 366-376 (25.8-10)</db:pagenums>.
      </db:bibliomixed>
    </PhysicalSource>
  </PhysicalSourceSet>
</Evidence>

Filtering Events

Before the display transformations, events can be transformed to conform to interests of the viewer.[1] We refer to these as filter transformations. The obvious filtering parameters are language, chronological range, geographical range and person.

Language Filter

Version 0.5 of Heml includes an XSLT that filters Sets (see the section called “'Sets'”) according to their xml:lang attributes. It follows the following rules:

  1. If an element with the desired xml:lang attribute exists, that element alone among its siblings is passed to the output.
  2. Otherwise, the first of the siblings are passed to the output, with the understanding that the first of a set of label elements is the most authoritative, either because it is the first language of the editor, or the language of the text itself, or for some other reason.

Displaying Events

The data, encoded in the form of an XML document that conforms with the DTDs, will not be viewed in its raw form, but rather will be formatted in an interesting or useful way. This goal is met using the eXtensible Stylesheet Language ( XSL) and related technologies such as Scalable Vector Graphics and the Document Object Model.

The following sub-sections discuss the views provided with Heml and future plans.

HTML Lists and Single Event Displays

Events may be displayed in several different list views, including the event list in its entirety as well as lists defining events by participant, location and keyword. Single events may also be rendered in popup windows.

SVG Table

A table of events, chronologically sorted and (optionally) translated into a common calendrical scheme, with links to source materials.

SVG Maps

A scalable vector graphics map labeled with the events in a given chronological range.

Whenever possible, the transformations performed to produce these output are written in xslt. These in turn are chained together and associated with URLs through the Cocoon2 web publishing framework. Cocoon2 also automates the generation of jpeg images from dynamically produced SVG documents and other conveniences.

Comparisons and conversions of dates are performed with an xslt extension to the xalan xslt engine. The IntDateCompare class matches impedances between IBM's International Calendars for Java and xalan.

Dynamic Map

Shows points on a map representing locations for events spanning a given period of time. Mousing over these events will show event locations and a table of events that occured in these locations. Each event in the table contains a hypertext link to further event information.

Figure 1. Sample Heml Dynamic Map

Sample Heml Dynamic Map
1

Moving your mouse over a location point will reveal the name of that location. Events that occured at that location will be listed in a floating table. Each event in the table contains a hypertext link to further information.

2

This floating table contains events that occured at a selected location. The table may be dragged, minimized or closed. To open a closed table click on any location point on the map.

Animated Map

Animation runs a slider along a timeline, plotting events on a map as they occur. Each event listed on the map contains a hypertext link to more information on that event. The animation may be manipulated using a control panel which offers the ability to play, pause, stop, fast forward and rewind. The duration of the event may also be selected. The slider on the timeline is draggable by the mouse to the desired time.

Figure 2. Sample Heml Animated Map

Sample Heml Animated Map
3

Panel allows you to control the animation via play, stop, pause, fast forward and rewind.

4

Moving the slider with the mouse allows you to control the duration of the animation.

5

You may also slide this pointer with your mouse to choose a desired place on the timeline.

6

Events present as red during the time that they occured. Each event contains a hyperlink to further information.

SVG Timelines

Timelines are generated by a more complex process. XSLT has no access to information about font size and layout and so cannot effectively produce timelines of arbitrary size and scale. We therefore handle this transformation by a Java2D application, the org.heml.image.timeline package. Using the Batik library, any such application can output its image to an SVG document. The timeline package is handed the heml events though a DOM adaptor package.

Figure 3. Sample Heml Timeline

A Heml Timeline

Heml 0.5 timeline representing events during Stalin's rule

RDF Output

This view provides an experimental raw RDF representation of the selected Heml data in xml form.

XHTML+HEML Documents

The project includes a schema and transformations for XHTML 1.0 documents which may include heml:Event elements within blocks of text. (XHTML is HTML expressed in valid XML.) The heml:Event element here is meant as an historical signpost for the reader. This XHTML profile is suited for:

  1. Informal documents with an historical dimension, such as family histories or accounts of summer vacations
  2. Course notes
  3. Retrofitting Heml events in existing web pages

When viewed with an XHTML-savvy web broswer -- such as Mozilla or Internet Explorer, Konqueror or Opera -- the raw XHTML+HEML document appears as a normal web page. However, when it is passed through the 0.5.6 Heml webapp, a sidebar is appended to the document, with links to the maps and timelines corresponding to the events included in the document. The events themselves are represented in-line by a blue 'H'. Mousing over this brings up the date and label of the event, as well as a link to a map, if appropriate. Upon clicking on the 'H', a popup window appears listing participants, references, etc. for this event.

Existing web pages can be retrofitted with Heml events thus:

  1. Convert HTML web page to XHTML using tidy. This command converts FILE_IN.html and saves the result as FILE_OUT.xhtml:
    tidy -asxml -n -o FILE_OUT.xhtml FILE_IN.html 
  2. Add namespace declarations for heml, geo and xlink to the <html> element:
    <html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:xlink="http://www.w3.org/1999/xlink" 
    xmlns:heml="http://www.heml.org/schemas/2003-09-17/heml" 
    xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
    >
    If you wish to validate your xhtml+heml document, you will also need to provide the schema location:
    <html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:xlink="http://www.w3.org/1999/xlink" 
    xmlns:heml="http://www.heml.org/schemas/2003-09-17/heml" 
    xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.w3.org/1999/xhtml 
    http://heml.mta.ca/Schemas/2003-09-17/xhtml+heml.xsd"
    >
  3. Add definitions of Persons, Locations, Keywords, etc. in a heml:Definitions element, within the xhtml:head element.
     <heml:Definitions>
      <heml:LocationDefinitions>
        <heml:Location uri="#bonn">
          <heml:LocationLabelSet>
            <heml:Label xml:lang="en" >Bonn</heml:Label>
          </heml:LocationLabelSet>
          <geo:Point>
            <geo:lat>7.0666666666</geo:lat>
            <geo:long>50.733333333</geo:long>
          </geo:Point>
        </heml:Location>
        <-- Further definitions continue here ...  -->
    
    
  4. Add Heml events where text usually appears:
    <b>He was born in the German town of Bonn</b> 
    on the 16th of December 1770.
      <heml:Event xmlns:heml="http://www.heml.org/schemas/2003-09-17/heml"
         ="#beethoven_born">
        <heml:EventLabelSet>
          <heml:Label xml:lang="en">Beethoven Born</heml:Label>
        </heml:EventLabelSet>
        <heml:Chronology>
          <heml:Date>1770-12-16</heml:Date>
        </heml:Chronology>
        <heml:LocationRef uriRef="#bonn"/>
      </heml:Event>
    His grandfather Ludwig and his father Johann were
    both musicians.
    
  5. Check the document for validity and/or well-formedness.
  6. Test out your XHTML+HEML document by passing it through the Heml server. If your document is published on the web at http://mycompany.com/mydocument.xhtml, you can look at a transformed version at the URL: http://heml.mta.ca/heml-cocoon/text.html?url=http://mycompany.com/mydocument.xhtml. When using the Heml webapp as a proxy server in this way, the transformation is quite slow because the webapp does not cache any resources. For long-term use, download the webapp and install your documents on a local filesystem.

Future Plans

Schema Proposals

A future version of Heml will include the concepts of chronological or chronographic uncertainty, relative offsets and recurring classes of events, such as the coronation of a line of kings.

Path (Metadata)

A sequence of events that comprise a voyage and should be displayed thus could be associated across documents with this element.

Offset

Used in complex date constructs, such as termini post or ante quem or when one event is known to be a certain time from another. E.g.:

        <offset id="LifeExpect" type="+">
          <certainty value="95%"/>
          <year>80</year>
        </offset>
      

Other Media

Though Heml today concentrates its efforts on text, it is just as possible to refer to sources or to annotate documents which are in visual or audio media. The appreciation of a song like Stan Roger's Northwest Passage could be improved with the addition of Heml tags, for instance. Presumably this would be an application of SMIL or similar technology.

Similar Technologies

The following standards also encode events in time. Though they are not suited to the historian's needs, it might be of interest to write xslt transformations to and from them.

Works Cited

Brooks, F.P. 1995. The Mythical Man-Month. Addison Wesley.

Carr, E.H. 1987. What Is History? Penguin.

Elton,G. 1969. The Practice of History. Fontana.

Ginzburg, C. 1993. “Microhistory: Two or Three Things That I know about It”. Critical Inquiry 20 10-35.

Hockey, S. 1998. “SGML and the Orlando Project: Descriptive Markup for an Electronic History of Women's Writing”. Computers and the Humanities 31 271-84.

Jenkins K. 1991. Re-Thinking History. Routledge.

This work was funded by the Social Sciences and Humanities Research Council of Canada, the Purdy Crawford Teaching Center at Mount Allison University and the New Brunswick Innovation Foundation. Many students at Mount Allison University assisted.



[1] In a web of the future that supports XML Queries, these interests might be built into the request to a query engine. Currently, heml merely collects all event elements under a single document and filters these.

Valid XHTML 1.0 Strict Heml Project (c) 2001-2006 Bruce Robertson