Memento Guide - Introduction to Memento

This first component of the Memento framework defines three types of resources: Original Resource, TimeGate, and Memento.
These are their intuitive definitions:

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.

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.

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:

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 TimeMaps.
This is an intuitive definition:

TimeMap: A TimeMap for an Original Resource is a resource from which a list of
URIs of Mementos of the Original Resource is available.

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

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 are serialized 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.
A detailed description of the use of this format for TimeMaps can be found in the
RFC 7089.

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,
and the TimeMap's temporal coverage using the "from" and "until" attributes.

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.