Versions Compared

Key

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

...

  • LDPR - original resource
  • LDPRv - one in the same with as LDPR, but it has the versioning interaction model turned on (http://fedora.info/definitions/fcrepo#VersionedResource). This implies that it is a TimeGate and has a TimeMap.
  • LDPCv - a LDP container that contains information about the LDPRm's LDPRms associated with a LDPRv. The TimeMap is generated from this information, so this is <<what, the LDPCv itself?>> is generally considered the TimeMap, though it may contain more information then than what's delivered in a TimeMap response. 
  • LDPRm - a specific version of a LDPR.  The LDPRv is not a LDPRm itself.
  • TimeGatethe application which selects the best Memento of an Original Resource for a given datetime. This is where datetime negotiation happens.http://timegate.readthedocs.io/en/latest/getting-started.html#memento-timegate
  • TimeMap - LDPRv URL + "/fcr:versions"

...

RESTful Interactions

Enable Versioning on a LDPR:

...

  • Upon Resource Creation: if a Link: rel="type" header of type http://fedora.info/definitions/fcrepo#VersionedResource is provided when creating a resource, it will be created with versioning turned on. 
    • A LDPR will be created with the versioning interaction model (therefore it will be an LDPRv)
    • A LDPCv will be created, from which a TimeMap can be generated.
    • A LDPRm will be generated, contained by the LDPCv.
    • Any subsequent responses from the LDPRv will include the appropriate memento links in the header: timegateTimegate, timemapTimemap
  • On Existing Resource: if a PUT request is made against an existing resource with a link header ( Link: rel="type") specifying type of http://fedora.info/definitions/fcrepo#VersionedResource included the resource will become versionable. 
    • The versioning interaction model will be added to the LDPR, making it a LDPRv.
    • A LDCPv will be created, from which a TimeMap can be generated.
    • A LDPRm will be generated, contained by the LDPCv.
    • Any subsequent responses from the LDPRv will include the appropriate memento links in the header: timegate, timemap

...

  • A GET request to the TimeGate Resource (the LDPRv itself) with "Accept-Datetime" header specified will return the LDPRm associated with that datetime, or the closest one if there is not an exact match. 
    • example header usage:  "Accept-Datetime: Thu, 31 May 2007 20:35:00 GMT"
    • a Link header will be in the response to show the TimeGate URI
  • If an "Accept-Datetime" header is provided which predates the first LDPRm of the resource, then a 404 is returned.
  • If an "Accept-Datetime" header is provided with a time that is later then the last memento gathered, then the current LDPR will be returned.  See: Datetime negotiation algorithm example for Accept-Datetime negotiation details.


...


Internal Interactions / Algorithms

...