Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Update section 4

...

Expand
4.1 Versioned Resources
  • (tick) When an  LDPR  is created with a  rel="type"  link in the  Link  header specifying type type http://mementoweb.org/ns#OriginalResource to indicate versioning, it  must  be created as an LDPRv
  • (question) When an  LDPR  is created with a  rel="type"  link in the  Link  header specifying type http://mementoweb.org/ns#OriginalResource to indicate versioning, it  must  be created as  and a version container (LDPCv)   must  be created to contain Memento resources ( LDPRm ) capturing time-varying representations of the  LDPRv . Patterns for version creation are described in 

4.

Implementation Patterns .

1.1 HTTP GET (LDPRv)

  • (tick) The Accept-Datetime header

4.1.1 HTTP GET  (LDPRv)

4.1.2 HTTP PUT PUT (LDPRv) (Danny Bernstein)

  • (tick) An implementation must support PUT support PUT, as is the case for any LDPR.
4.2 Version 2 Version Resources (LDPRm)
  • (tick) An  LDPRm   may  be deleted;
  • (tick) however, it  An  LDPRm  must not  be modified once created.

4.2.1 HTTP GET §GET (LDPRm)

  • (tick) An implementation must support GET support GET, as is the case for any LDPR (LDP-RS memento)
  • (tick) An implementation must support GET support GET, as is the case for any LDPR (LDP-NR memento)
  • (tick) The headers for  GET  requests and responses on this resource  must  conform to [ RFC7089 section 2.1 . Particularly it should be noted that the relevant  TimeGate  for an  LDPRm  is the original versioned  LDPRv .
  • (tick) In addition, any Any response to GET request a GET request must include a <a <http://mementoweb.org/ns#Memento>; rel="type" link in the Link headerthe Link header.

4.2.

2 HTTP OPTIONS  §

2 HTTP OPTIONS (LDPRm)

4.2.

3 HTTP

3 HTTP POST (LDPRm)

  • (tick) An implementation must not support POST for  support POST for LDPRms.

4.2.

4 HTTP

4 HTTP PUT (LDPRm)

  • (tick) An implementation must not support PUT for  support PUT for LDPRms.

4.2.

5 HTTP PATCH (LDPRm)

HTTP PATCH 
  • (tick) An implementation must not support PATCH for  support PATCH for LDPRms.

4.2.

6 HTTP

6 HTTP DELETE (LDPRm)

  • (tick) An implementation may support DELETE for  support DELETE for LDPRms. If DELETE is If DELETE is supported, the server is responsible for all behaviors implied by the LDP-containment of the LDPRm.
4.3 Version 3 Version Containers (LDPCv) (Jared Whiklo)
  • (tick)(question) An implementation must indicate TimeMap in the same way it indicates the container interaction model of the resource via HTTP headers.Currently returns Link: <http://fedora.info/definitions/v4/repository#TimeMap>; rel="type"
  • (tick) An implementation must not allow the creation of an LDPCv that is LDP-contained by its associated LDPRv.

4.3.

1 HTTP

1 HTTP GET (LDPCv) (Jared Whiklo)

  • (tick) An implementation must support GET support GET, as is the case for any LDPR.
  • (question) Any response to GET request a GET request must include a <a <http://mementoweb.org/ns#TimeMap>; rel="type" link in the Link header.
    • Uses the URI in above 4.3 point 1, needs updating
    the Link header.
  • (tick)(tick) An LDPCv must respond to GET to GET Accept: application/link-format as format as indicated in [ RFC7089 section 5 and specified in [ RFC6690 section 7.3.
  • (tick) An implementation must include the Allow header as outlined in  4.3.2 HTTP OPTIONS .(warning)the Allow header
  • (question) If an LDPCv supports POST, then it must include the Accept-Post header
  • (question) If an LDPCv supports PATCH If an LDPCv supports POST, then it must include the Accept-Post header described in  4.3.3 HTTP POST .the Accept-Patch header

4.3.

3 does not reference an Accept-Post header.
  • (minus) If an LDPCv supports PATCH, then it must include the Accept-Patch header.
    • Accept-Patch it is not mentioned in the spec.
  • 4.3.2 HTTP OPTIONS

    2 HTTP OPTIONS (LDPCv) (Jared Whiklo)

    • (question) Implementations MUST support OPTIONS
    • (question) Implementation's response to an OPTIONS request MUST include "(tick) An implementation must Allow: GET, HEAD, OPTIONS as per [ LDP ]."
    • (tick) Implementations may Allow: DELETE if (tick) An implementation may Allow: DELETE if the versioning behavior is removable by deleting the LDPCv. See  4.3.4 HTTP DELETE  for requirements on DELETE if supported. (tick) An implementation may Allow: PATCH if
    • (question) Implementations may Allow: PATCH if the LDPCv has mutable properties. See  3.7.1 Containment Triples  for requirements on PATCH if supported.
      • NB: it does not allow PATCH
    • (tick) Implementations may Allow: POST if (tick) An implementation may Allow: POST if versions can be explicitly minted by a client. See 
    • (question) If an LDPCv supports POST, the response MUST include the "Accept-Post" header
    • (question) If an LDPCv supports PATCH, the response MUST include the "Accept-Patch" header

    4.3.

    HTTP POST  for requirements on POST if supported.

    3 HTTP POST (LDPCv) 

    • (minus) Although an LDPCv is both a TimeMap and an LDPC, it may disallow POST requests.

    4.3.3.1 Implementations that allow POSTs for LDPCvs

    • (tick) If an LDPCv supports POST, a POST request that does not contain a Memento-Datetime header should be understood to create a new LDPRm contained by the LDPCv, reflecting the state of the LDPRv at the time of the POST
  • (tick) Currently PUT is allowed. The spec doesn't explicitly ban it, but perhaps it should?
    • Esmé Cowles : an update to the spec should specify that LDPCv may disallow PATCH and PUT. Esme will do that.
    • We will need a JIRA to disallow PATCH and PUT and remove from OPTIONS.
  • (error) PUTting on binaries and their description mementos not quite done.
  • 4.3.3 HTTP POST 

    • (minus) Although an LDPCv is both a TimeMap and an LDPC, it may disallow POST requests.
    • (tick) (question) If an LDPCv supports POST, a POST that  request that does not contain a Memento-Datetime header MUST ignore any request body
    • (tick) If an LDPCv supports POST, a POST with a Memento-Datetime header should be understood to create  header should be understood to create a new LDPRm contained by the LDPCv, reflecting with the state of the LDPRv at the time of the POST. Any request body must be ignored.given in the request body
    • (question) (tick) If an LDPCv supports POST, a POST with a Memento-Datetime header should be understood to create a new LDPRm contained by the LDPCv, with the state given in the request body and the datetime given in the Memento-Datetime request header.

    4.3.3.2 Implementations that disallow POSTs for LDPCv

    • (minus) If an implementation does not support one or both of POST cases above, it must respond to such requests with a 4xx range status code and a link to an appropriate constraints document (see [ LDP 4.2.1.6).

    4.3.4 HTTP PUT (LDPCv)

    • (question) Implementations MAY disallow PUT

    4.3.5 HTTP PATCH (LDPCv)

    • (question) Implementations MAY disallow PATCH

    4.3.

    HTTP DELETE (LDPCv)

    • (tick) An implementation may support DELETE.
    • (tick) An implementation that does support DELETE  should do so by both removing the LDPCv and removing the versioning interaction model from the original LDPRv.

    4.

    4 Vary 

    4 Implementation Patterns

    (error) Non-normative note: When a POST to an LDPCv, or a PUT or PATCH to an LDPRv creates a new LDPRm, the response indicates this by using a Vary header as appropriate. When an LDPCv supports POST, and allows clients to specify a datetime for created URI-Ms, Vary-Post/Vary-Put: Memento-Datetime.
    (warning) Verify whether this is done and if not create JIRA.e

    4.5 Implementation Patterns 

    Non-normative note: This section describes the way the normative specification might be applied to implement discoverable versioning patterns. If an implementation of an LDPCv does not support POST to mint versions, that must be advertised via OPTIONS as described in  4.3.2 HTTP OPTIONS . This allows a client to perform an OPTIONS request on an LDPCv to determine if it can explicitly mint versions. If the LDPCv does not support POST, the client should assume some other mechanism is used to mint versions, for example, the implementation may automatically mint versions instead, but that is outside the requirements of this specification. This document specifies normatively only how LDPCvs and LDPRms can be discovered, and how they should act.

    4.5.1 Server-Managed Version Creation  §

    (warning) Non-normative note: Upon PUT or PATCH to an LDPRv, a new LDPRm is created in an appropriate LDPCv. This LDPRm is the version of the original LDPRv that was just created.

    4.5.2 Client-Managed Version Creation  §

    (warning) Non-normative note: An LDPRm for a particular LDPRv is created on POST to any LDPCv associated with that LDPRv. The new LDPRm is contained in the LDPCv to which the POST was made and features in that LDPCv-as-a-TimeMap. This pattern is very flexible and might be useful for migration from other systems into Fedora implementations. Responses from requests to the LDPRv include a rel="timemap" link in the Linkheader that references the same LDPCv as per [ RFC7089 section 5.

    4.5.3 Replacing Contents from Mementos  §

    Non-normative note: Using the ingest-by-reference mechanism, one can replace the contents of an LDPRvwith that of an LDPRm by providing it's URL as the URL parameter in a Content-Type: message/external-body header. For example, given an LDPRm with URL  http://example.org/some/memento , the full header would be 
    Content-Type: message/external-body; access-type=URL; expiration=1;
        URL="http://example.org/some/memento"
    • Non-normative section

    5 Resource Authorization

    Leads

    ...