Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Excerpt

Versioning in Fedora implements the Memento protocol. Its formal name is HTTP Framework for Time-based Access to Resource States – Memento.  This document focuses exclusively on how the Fedora software implemented implements the Memento software and best practices when using Fedora Versioning.

It is worthwhile reading the entire Memento specification to become acquainted with the Memento terminology (such as Original Resource, a Memento resource, Timemap, Timegate) and various interaction patterns, but the most relevant sections of the Memento specification to Fedora are section 4.1.1 and its relevant parent sections.  Section 4.1.1 presents theHTTP/Memento interaction pattern implemented in Fedora.  Also, familiarizing yourself with the Versioning section (Section 4 - https://fcrepo.github.io/fcrepo-specification/#resource-versioning) of the Fedora API Specification will be helpful to understanding concepts and terminology (LDPRv, LDPCv, LDPRm).

...

Excerpt Include
RESTful HTTP API - Versioning
RESTful HTTP API - Versioning

...

Anchor
memento-datetime-nego
memento-datetime-nego
Memento Datetime Negotiation Algorithm

The date algorithm Fedora uses to determine which LDPRm should be returned to a TimeGate request, as indicated by the value of the Acceptthe Accept-datetime Datetime header, is as follows: 

  • Any AcceptAny Accept-datetime Datetime value that is earlier than the first/oldest Memento will return a reference to the first/oldest Memento. 
  • Any AcceptAny Accept-datetime Datetime value that is later than a specific Memento’s timestamp but earlier than another Memento’s timestamp will return the older Memento. 
  • An AcceptAn Accept-datetime Datetime value that matches a stored Memento datetime value perfectly will result in return the Memento preserved at that timestamp.
  • An AcceptAn Accept-datetime Datetime value that is later than the last Memento will return a reference to the last/youngest Memento.

Fedora follows Memento Datetime negotiation pattern 1.1 as described in section 4.1.1 of the Memento specification, in which the Original Resource Acts as its own TimeGate (URI-R=URI-G; 302-Style Negotiation; Distinct URI-M).

Note bene

Fedora does not automatically initiate versioning for all resources.  The client MUST initiate versioning by invoking a special Link header at the time a resource is created.  See ?????

...