Versions Compared

Key

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

...

Expand

3.1 General (Jared Whiklo)

  • Empty section

3.1.1 LDP Containers

  • (tick) MUST be able to create LDP Containers: Tested in 3.3
  • (tick)  MUST distinguish between triple types OR MUST return 409 with constrainedBy Link in headers for ldp:contains membership predicate if server cannot distinguish between triple types
    • We return a 409 because we can't distinguish and therefore the next 2 tests are not applicable.
  • (minus) MAY permit ldp:contains membership predicate if server can distinguish between triple types
  • (minus) SHOULD allow Prefer header in request to distinguish triple types if server can distinguish triple types

3.1.2 LDP-NR creation

  • (tick) SHOULD create an LDP-NR if creation request includes NonRDFSource type Link in headers, regardless of Content-Type headers

3.1.3 Constraints Document

3.1.4 Data Model

3.2 HTTP GET

3.2.1 Additional values for the Prefer header

3.2.2 LDP-RSs

  • (tick) MUST return Preference-Applied header if request's Prefer header is honored (Always applied)
    • (question) note: also test with a combinations of Prefer headers: some valid, some invalid
  • (tick) MUST return describes Link to LDP-NR if request is to associated LDP-RS

3.2.3 LDP-NRs

  • (tick) MUST return Digest header as directed by request's Want-Digest header

3.3 HTTP HEAD

  • (tick) MUST NOT return a body
  • (tick) SHOULD return same headers as if the request was a GET
    • (question) Almost perfect: Binary resources have duplicate headers that are not seen on HEAD
      Jira
      serverDuraSpace JIRA
      serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
      keyFCREPO-2714
  • (tick) MUST return a Digest header if the same request as a GET would have
  • (minus) MAY omit payload headers from response

3.4 HTTP OPTIONS (Yinlin Chen)

  • (tick) Any LDPR must support OPTIONS per [LDP] 4.2.8. 4.2. LDP servers must support the HTTP OPTIONS method. 

3.5 HTTP POST

  • (tick) MUST be supported on LDPC
  • (question) MAY not be supported on LDPCv
  • (tick) MUST include default interaction model in constrainedBy Link header
    • Correct for both LDP-RS and LDP-NR

3.5.1 LDP-NRs

  • (tick) MUST support creation of LDP-NRs
  • (tick) MUST create and associate an LDP-RS when an LDP-NR is created
  • (tick) MUST return 409 if request Digest header does not match calculated value for content of new LDP-NR
  • (tick) SHOULD return 400 if request Digest header's type is not supported (Should 'type' be 'algorithm', like the RFC?)

3.6 HTTP PUT

  • (tick) MAY include type Link header in request
  • (tick) SHOULD return 409 if request's type Link is not resource's current type or subtype thereof, or not in LDP namespace
  • (minus) MUST change resource's type if request's type Link is a subtype of resource's current type
  • (minus) MUST change resource's interaction model if request's type Link has an LDP interaction model

3.6.1 LDP-RSs

  • (question) MUST support PUT on LDP-RSs for non-server-managed triples
  • (tick)  MUST return 4xx (409) if request modifies server-managed triples on a LDP-RS
  • (tick) MUST return constrainedBy Link in headers if request modifies server-managed triples on a LDP-RS
  • (question) MUST return info in body about which statements could not be persisted if request modifies server-managed triples on a LDP-RS
  • (warning) Currently we allow the use of the -Dfcrepo.properties.management=relaxed option to allow updating server managed triples.

3.6.2 LDP-NRs (Danny Bernstein)

  • (tick) MUST support PUT on LDP-NRs to replace binary content
  • (tick) MUST return 409 if request Digest header does not match calculated value for new content of target LDP-NR
  • (tick) SHOULD return 400 if request Digest header's type is not supported

3.6.3 Creating resources with HTTP PUT

  • (question) If PUT is supported for creation of LDP-NRs, MUST create and associate an LDP-RS when an LDP-NR is created

3.7 HTTP PATCH (Jared Whiklo)

  • (tick) MUST be supported on LDP-RSs
  • (tick) MUST support Content-Type: application/sparql-update
  • (minus) MAY support other update types
  • (question) MUST return 4xx (409) when modifying protected resource statements
  • (question) MUST return info in body about which statements could not be persisted when modifying protected resource statements
  • (question) MUST return constrainedBy Link in headers when modifying protected resource statements
  • (tick) MUST return 2xx if successful

3.7.1 Containment Triples

  • (question) SHOULD return 409 Conflict if PATCH attempts to update containment triples

3.7.2 Interaction models

  • (tick) MUST return 409 when modifying the interaction model to a type that is not a subtype of the current type

3.8 HTTP DELETE (Yinlin Chen)

  • (warning) MAY be supported

3.8.1 Recursive Delete

  • (tick) An implementation that cannot recurse should not adverti advertise DELETE in response to OPTIONS requests for container with contained resources. 
  • (question) MUST use LDP containment relations for recursive deletion, if recursive deletion is supported
  • (tick) An implementation must not return a 200 (OK) or 204 (N No Content) response unless the entire operation successfully completed. 
  • (tick) An implementation must not emit a message that implies successful DELETE of a resource until the resource has b been successfully removed. 
  • (question) Compliance with LDP 5.2.5.1 When a contained LDPR is deleted, the LDPC server must also remove the corresponding containment triple, which has the effect of removing the deleted LDPR from the containing LDPC.
  • (question) Compliance with LDP 5.2.5.2 When 2 When contained LDPR is deleted, and the LDPC server created an associated LDP-RS (see the LDPC POST section), the LDPC server must also delete the associated LDP-RS it created.

3.8.1 Depth header ( Danny Bernstein: This section is no longer in the spec.)

  • (tick) MUST support a Depth header in the request, if DELETE is implemented
  • (question) MAY support only certain Depth header values: (How to query?)
  • (question) MUST return 400 if request includes Depth header and unsupported Depth header value: (How to query?)
  • (question) MUST use LDP containment relations for recursive deletion, if recursive deletion is supported: (How to query?)

3.9 External Binary Content (As of 4/21/18, this section is in the process of being implemented)

  • (question) Fedora servers should support the creation and update of LDP-NRs with content external to the request entity, as indicated by a link with rel="http://fedora.info/definitions/fcrepo#ExternalContent" and target that is the location of the external content. The handling attribute specifies how the server should handle the external content, and the optional type attribute specifies the media type of the external content.

    Fedora servers that do not support the creation of LDP-NRs with content external to the request entity must reject such requests with a 4xx range status code, and must describe this restriction in a resource indicated by a rel="http://www.w3.org/ns/ldp#constrainedBy" link in the Link response header. Fedora servers must reject with a 4xx range status code requests that include multiplerel="http://fedora.info/definitions/fcrepo#ExternalContent" links.

    Fedora servers must use the handling attribute in the external content link to determine how to process the request. This specification defines the following attibutes and expected behaviors:


    • (question) copy - requests that the server dereference the external content URI and treat that as if it were the entity body of the request.
    • (question) redirect - requests that the server record the location of the external content and handle requests for that content using HTTP redirect responses with the Content-Location header specifying the external content location. See also 3.9.3 Redirected and Proxied External Content.
    • (question) proxy - requests that the server record the location of the external content and handle requests for that content by proxying. See also 3.9.3 Redirected and Proxied External Content.

    (question) Fedora servers must reject with a 4xx range status code requests for which the handling attribute is not present or cannot be respected. In the case that the specified handling cannot be respected, the restrictions causing the request to fail must be described in a resource indicated by a rel="http://www.w3.org/ns/ldp#constrainedBy" link in the Link response header.

    (question) Fedora servers must use the value of the type attribute in the external content link as the media type of the external content, if provided. Any Content-Type header in the request should be ignored. If there is no type attribute:

    • (question) Servers may use the media type obtained when accessing the external content via the specified scheme (e.g. the Content-Type header for external content accessed via http).
    • (question) Servers may use a default media type.
    • (question) Servers may reject the request with a 4xx range status code.

    (question) A Fedora server receiving requests that would create or update an LDP-NR with content external to the request entity must reject request if it cannot guarantee all of the response headers required by the LDP-NR interaction model in this specification.


  • (tick) 3.9.1 Advertising External Content Support

  • (error) 3.9.3 GET and HEAD requests to any external LDP-NRmust correctly respond to the Want-Digest header defined in [RFC3230].

    • A successful response to a GET and HEAD request for external content with handling of redirectmust have status code of either 302 (Found) or 307 (Temporary Redirect).

  • (tick) MUST return message/external-body in Accept-Post header (for each supported access-type param of supported Content-Types) if external binary content is supported
    • (In response to what?)
    • Danny Bernstein: a GET on the resource to be POSTed to I believe.
  • (minus) MUST return 415 for LDP-NR create or update if request has message/external-body and an unsupported access-type, or if external binary content is not supported
  • (minus) MUST NOT accept request (return 4xx???) for LDP-NR create or update if request has message/external-body and the server cannot return all the required response headers
  • (question) SHOULD return a Content-Location header for LDP-NR GET or HEAD (read? to match create or update above) with a URI to the content if the server is proxying: (How to query for proxying?)
  • (question)  MAY support an expiration parameter (for LDP-NR create or update?) if the request has a message/external-body Content-Type header
    • (warning) Expiration parameter is possibly up in the air now ? possibly replace with "Prefer" header syntax.
  • (question) SHOULD copy content (for LDP-NR create or update?) if the request has a message/external-body Content-Type header and the expiration parameter is set
  • (question) MUST return 4xx or 5xx (for LDP-NR create or update?) if the request has a message/external-body Content-Type header and the expiration parameter cannot be accommodated
  • (tick) MUST return a contrainedBy Link header (for LDP-NR create or update?) if the response status is 4xx: Tested in 3.2 and 3.3

3.9.1 Referenced RDF content in mandataory LDP serializations

  • Non-normative section

3.8.2 Proxied content vs. redirected content

  • Non-normative section

...