memento logo

Memento Guide:
Introduction

About Demos Guide Tools



This document provides an introductory overview of the Memento architecture that allows seamless navigation from a Web resource to its prior/archived versions available elsewhere on the Web.

More formal information on the Memento framework is available in the Memento Internet Draft. More detailed information on the types of resources introduced by Memento is also available in the Determing Resource Type document.

Feedback is welcome on the Memento Development Group list at memento-dev@googlegroups.com.

The Memento Solution, Component 1: Follow your nose to prior/archived versions of a resource

This first component of the Memento framework defines three types of resources: Original Resource, TimeGate, and Memento. These are their intuitive definitions:
 
logo for Original Resource Original Resource: A Web resource that exists or used to exist on the live Web for which we want to find a prior version. By prior version is meant a Web resource that encapsulates what the Original Resource was like at some time in the past.
logo for Memento Memento: A Web resource that is a prior version of the Original Resource, i.e. that encapsulates what the Original Resource was like at some time in the past.
logo for TimeGate TimeGate: A Web resource that "decides" on the basis of a given datetime, which Memento best matches what the Original Resource was like around that given datetime.


This picture provides an architectural overview of how the Memento framework allows accessing a prior version of a resource: memento follow your nose architecture

Further details are as follows:
  • In order to allow an HTTP client to get to prior/archived versions of Original Resource (URI-R), this resource provides an HTTP Link header with a relationship type of "timegate" pointing at its TimeGate (URI-G).
  • A TimeGate supports content negotiation in the datetime dimension. When negotiating with the TimeGate, the HTTP client uses an Accept-Datetime header to express the desired datetime of a prior/archived version of URI-R. The TimeGate responds with the location of a matching version, named a Memento (URI-M1 or URI-M2), allowing the HTTP client to access it. Using the Memento-Datetime header, Mementos express their version/archival datetime.
  • Note that the Original Resource, its TimeGate, and its Mementos can all reside on the same server (as is the case with Content Management Systems), or they can be on different servers (as is the case with Web Archives).
  • HTTP Link headers with a relationship type of "original" point back from the TimeGate and the Mementos to the Original Resource, allowing an HTTP client to retrace its steps.
  • A Memento can point at other Mementos using a HTTP Link header with a relationship type of "memento". It can point at its temporally adjacent Mementos that combines the "prev" and "memento" relationships, and the "next" and "memento" relationships, respectively.
  • Both a TimeGate and a Memento can point at the very first and very last Memento for URI-R that is known to them using a HTTP Link header by combining the "first" and "memento" relationships, and the "last" and "memento" relationships, respectively.
  • Whenever the "memento" relation type is used in a link expressed in the HTTP Link header, it must be accompanied by a "datetime" attribute that conveys the archival datetime of the linked Memento.
  • Below is a sample HTTP response header from a TimeGate. It shows the TimeGate redirecting to a Memento, the URI-M of which is provided in the Location header. It also illustrates the use of the various Memento relation types in the Link header. Note the Vary header that indicates that the TimeGate used content negotiation in the datetime dimension.

The Memento Solution, Component 2: Batch discovery of prior/archived versions of a resource

The second component of the Memento framework defines two types of resources: TimeMaps and TimeBundles. These are their intuitive definitions:
 
logo for TimeMap TimeMap: A TimeMap for an Original Resource is a resource from which a list of URIs of Mementos of the Original Resource is available. TimeMaps may be available in various formats.
logo for TimeBundle TimeBundle: A TimeBundle is a resource that fits in the Semantic Web and Linked Data world. It is a conceptual (so-called non-information) resource that is the Aggregation of other resources, all of which share a temporal relationship with the Original Resource: the Original Resource itself, its TimeGate, and its Mementos.


This picture provides an architectural overview of how the Memento framework supports batch discovery of Mementos: memento batch discovery architecture

Further details are as follows:
  • A TimeMap (URI-T) for an Original Resource (URI-R) is a machine-readable document that lists the Original Resource itself, its TimeGate, and its Mementos as well as associated metadata such as archival datetime for Mementos. TimeMaps are exposed by systems that host prior versions of Original Resources, and allow for batch discovery of Mementos.
  • TimeMaps may be serialized in various formats. A required format serializes the list according to the syntax specified for the value of the HTTP Link header. That format is introduced in RFC5988, Web Linking RFC, and has media type application/link-format.
  • TimeGates and Mementos can make TimeMaps discoverable by providing an HTTP Link with a relationship type of "timemap", thereby also specifying the TimeMap's media type using the "type" attribute.
  • TimeMaps can also be made discoverable using mechanisms such as SiteMaps, Atom Feeds, or OAI-PMH.
  • Below is a sample TimeMap for the Original Resource http://a.example.org expressed according to the application/link-format format. It provides links to the Original Resource as well as for a TimeGate for it. It also links to the first and last Memento, and to two other ones. The TimeMap also includes a link to the TimeMap URI-T itself.

  • TimeBundles (URI-B) are used in Semantic Web and Linked Data applications, and also support batch discovery of Mementos.
  • TimeGates and Mementos can make TimeBundles discoverable by providing an HTTP Link with a relationship type of "timebundle".
  • Following the Linked Data conventions for non-information resources, a TimeBundle has no representation but rather is described by a TimeMap URI-T to which the TimeBundle redirects using an HTTP 303 status code.
  • A TimeMap that is used in Semantic Web and Linked Data applications is a desciption of an associated TimeBundle. Such a description may be expressed according to various RDF serializations (e.g. RDF/XML, n3, turtle) and allows for more expresiveness when compared to the required application/link-format serialization.
  • TimeBundles can also be made discoverable using mechanisms such as SiteMaps, Atom Feeds, or OAI-PMH.
  • Below is a sample TimeMap for the Original Resource http://public.lanl.gov/herbertv/ expressed in text/rdf+n3 format.