Versions Compared

Key

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

This page presents straw man data models for objects that correspond to Fedora 3 objects that only contain external datastreamsmay not need Linked Data Platform Containers (LDPCs).

The defining characteristics of this class of objects:

  • They do not contain bitstreams, but rather, metadata about bitstreams held elsewhere
  • They may contain pointer(s) to the referenced bitstreams (or bitstream objects)

...

Table of Contents

Example 1:  Fedora container object with a child resource at a specified path redirecting to external content

Request 1:  create container object

Code Block
languagexml
curl -i -X PUT "http://localhost:8080/rest/my_external_datastream_obj"

HTTP/1.1 201 Created
ETag: "f93bbf77fee0fa16da4872102a54240e7135eaf2"
Last-Modified: Thu, 12 Mar 2015 20:56:08 GMT
Content-Length: 53
Location: http://localhost:8080/rest/my_external_datastream_obj
Content-Type: text/plain
Server: Jetty(8.1.12.v20130726)

curl -H "Accept: text/turtle" "http://localhost:8080/rest/my_external_datastream_obj"

<http://localhost:8080/rest/my_external_datastream_obj> a ldp:RDFSource , ldp:Container , <http://www.jcp.org/jcr/nt/1.0folder> , <http://www.jcp.org/jcr/nt/1.0hierarchyNode> , <http://www.jcp.org/jcr/nt/1.0base> , <http://www.jcp.org/jcr/mix/1.0created> , fedora:Container , fedora:Resource , fedora:Resource , <http://www.jcp.org/jcr/mix/1.0created> , <http://www.jcp.org/jcr/mix/1.0lastModified> , <http://www.jcp.org/jcr/mix/1.0referenceable> ;
        fedora:lastModifiedBy "bypassAdmin"^^<http://www.w3.org/2001/XMLSchema#string> ;
        fedora:uuid "fe7a8497-d826-490d-a786-ba601e039055"^^<http://www.w3.org/2001/XMLSchema#string> ;
        fedora:createdBy "bypassAdmin"^^<http://www.w3.org/2001/XMLSchema#string> ;
        fedora:primaryType "nt:folder"^^<http://www.w3.org/2001/XMLSchema#string> ;
        fedora:created "2015-03-12T20:56:08.468Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
        fedora:mixinTypes "fedora:Container"^^<http://www.w3.org/2001/XMLSchema#string> , "fedora:Resource"^^<http://www.w3.org/2001/XMLSchema#string> ;
        fedora:lastModified "2015-03-12T20:56:08.468Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
        fedora:writable "true"^^<http://www.w3.org/2001/XMLSchema#boolean> ;
        fedora:hasParent <http://localhost:8080/rest/> ;
        fedora:exportsAs <http://localhost:8080/rest/my_external_datastream_obj/fcr:export?format=jcr/xml> .

<http://localhost:8080/rest/my_external_datastream_obj/fcr:export?format=jcr/xml> dc:format <http://fedora.info/definitions/v4/repository#jcr/xml> .

<http://fedora.info/definitions/v4/repository#jcr/xml> rdfs:label "jcr/xml"^^<http://www.w3.org/2001/XMLSchema#string> .

Request 2:  create child external content object

Code Block
languagexml
curl -i -X PUT -H"Content-Type: message/external-body; access-type=URL; URL=\"http://en.wikipedia.org/wiki/File:Harry_Whittier_Frees_-_What%27s_Delaying_My_Dinner.jpg\"" "http://localhost:8080/rest/my_external_datastream_obj/extds"

HTTP/1.1 201 Created
ETag: "cbc2d06dd76fe1b3f6379e5dc0b8212ab056443e"
Last-Modified: Thu, 12 Mar 2015 21:08:33 GMT
Link: <http://localhost:8080/rest/my_external_datastream_obj/extds/fcr:metadata>; rel="describedby"
Content-Length: 59
Location: http://localhost:8080/rest/my_external_datastream_obj/extds
Content-Type: text/plain
Server: Jetty(8.1.12.v20130726)

http://localhost:8080/rest/my_external_datastream_obj/extds

curl -i "http://localhost:8080/rest/my_external_datastream_obj/extds"

HTTP/1.1 307 Temporary Redirect
ETag: "cbc2d06dd76fe1b3f6379e5dc0b8212ab056443e"
Last-Modified: Thu, 12 Mar 2015 21:08:33 GMT
Content-Type: message/external-body; access-type=URL; url="http://en.wikipedia.org/wiki/File:Harry_Whittier_Frees_-_What%27s_Delaying_My_Dinner.jpg"
Content-Length: 0
Accept-Ranges: bytes
Content-Disposition: attachment; filename=""; creation-date="Thu, 12 Mar 2015 21:08:33 GMT"; modification-date="Thu, 12 Mar 2015 21:08:33 GMT"; size=0
Link: <http://www.w3.org/ns/ldp#Resource>;rel="type"
Link: <http://www.w3.org/ns/ldp#NonRDFSource>;rel="type"
Link: <http://localhost:8080/rest/my_external_datastream_obj/extds/fcr:metadata>; rel="describedby"
Allow: DELETE,HEAD,GET,PUT,OPTIONS
Location: http://en.wikipedia.org/wiki/File:Harry_Whittier_Frees_-_What%27s_Delaying_My_Dinner.jpg
Server: Jetty(8.1.12.v20130726)

The complete thing

Code Block
languagexml
curl -H "Accept: text/turtle" -H "Prefer:  return=representation; include=\"http://fedora.info/definitions/v4/repository#EmbedResources\";" "http://localhost:8080/rest/my_external_datastream_obj"

<http://localhost:8080/rest/my_external_datastream_obj> a ldp:RDFSource , ldp:Container , <http://www.jcp.org/jcr/nt/1.0folder> , <http://www.jcp.org/jcr/nt/1.0hierarchyNode> , <http://www.jcp.org/jcr/nt/1.0base> , <http://www.jcp.org/jcr/mix/1.0created> , fedora:Container , fedora:Resource , fedora:Resource , <http://www.jcp.org/jcr/mix/1.0created> , <http://www.jcp.org/jcr/mix/1.0lastModified> , <http://www.jcp.org/jcr/mix/1.0referenceable> ;
        fedora:lastModifiedBy "bypassAdmin"^^<http://www.w3.org/2001/XMLSchema#string> ;
        fedora:uuid "fe7a8497-d826-490d-a786-ba601e039055"^^<http://www.w3.org/2001/XMLSchema#string> ;
        fedora:createdBy "bypassAdmin"^^<http://www.w3.org/2001/XMLSchema#string> ;
        fedora:primaryType "nt:folder"^^<http://www.w3.org/2001/XMLSchema#string> ;
        fedora:created "2015-03-12T20:56:08.468Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
        fedora:mixinTypes "fedora:Container"^^<http://www.w3.org/2001/XMLSchema#string> , "fedora:Resource"^^<http://www.w3.org/2001/XMLSchema#string> ;
        fedora:lastModified "2015-03-12T21:08:33.787Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
        fedora:writable "true"^^<http://www.w3.org/2001/XMLSchema#boolean> ;
        fedora:hasParent <http://localhost:8080/rest/> ;
        ldp:contains <http://localhost:8080/rest/my_external_datastream_obj/extds> .

<http://localhost:8080/rest/my_external_datastream_obj/extds> a <http://www.jcp.org/jcr/nt/1.0resource> , <http://www.jcp.org/jcr/nt/1.0base> , <http://www.jcp.org/jcr/mix/1.0mimeType> , <http://www.jcp.org/jcr/mix/1.0lastModified> , fedora:Binary , fedora:Resource , <http://www.jcp.org/jcr/mix/1.0created> , <http://www.jcp.org/jcr/mix/1.0lastModified> , <http://www.jcp.org/jcr/mix/1.0referenceable> ;
        fedora:lastModifiedBy "bypassAdmin"^^<http://www.w3.org/2001/XMLSchema#string> ;
        fedora:uuid "86aa4107-768d-4e2d-9064-78be072c0888"^^<http://www.w3.org/2001/XMLSchema#string> ;
        fedora:mimeType "message/external-body; access-type=URL; url=\"http://en.wikipedia.org/wiki/File:Harry_Whittier_Frees_-_What%27s_Delaying_My_Dinner.jpg\""^^<http://www.w3.org/2001/XMLSchema#string> ;
        fedora:digest <urn:sha1:da39a3ee5e6b4b0d3255bfef95601890afd80709> ;
        premis:hasSize "0"^^<http://www.w3.org/2001/XMLSchema#long> ;
        fedora:createdBy "bypassAdmin"^^<http://www.w3.org/2001/XMLSchema#string> ;
        fedora:primaryType "nt:resource"^^<http://www.w3.org/2001/XMLSchema#string> ;
        fedora:created "2015-03-12T21:08:33.787Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
        fedora:mixinTypes "fedora:Binary"^^<http://www.w3.org/2001/XMLSchema#string> ;
        fedora:lastModified "2015-03-12T21:08:33.787Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
        premis:hasOriginalName ""^^<http://www.w3.org/2001/XMLSchema#string> .

<http://localhost:8080/rest/my_external_datastream_obj> fedora:exportsAs <http://localhost:8080/rest/my_external_datastream_obj/fcr:export?format=jcr/xml> .

<http://localhost:8080/rest/my_external_datastream_obj/fcr:export?format=jcr/xml> dc:format <http://fedora.info/definitions/v4/repository#jcr/xml> .

<http://fedora.info/definitions/v4/repository#jcr/xml> rdfs:label "jcr/xml"^^<http://www.w3.org/2001/XMLSchema#string> .

Example 2: LDP-RS as datastreams

This strawman proposal addresses the following issues:

  • Allow Fedora to create LDP-RS (RDF resources) that are NOT containers (LDPC), as allowed per the LDP spec.  These will henceforth be called LDP-RS-NCs ("LDP RDF Source, Non-containers") for the sake of this discussion
  • Allow the LDP-RS-NCs created by Fedora to contain arbitrary RDF
    • No requirements on allowable subjects, predicates, or objects in the triples
    • No constraints on constructs such as blank nodes
  • Allow the LDP-RS-NCs created to by Fedora to be 'pure' in that they are logically unmodified from client requests
    • No server managed triples are added by Fedora
  • Allow the LDP-RS interaction model as defined by LDP on these resources
    • Retrieve triples in specified representation (xml, turtle, ntriples, etc)
    • Logical PUT operation (i.e. logical contents of graph are stored, not necessarily the serialization bytes)
    • SPARQL Update semantics (PATCH)
    • Interpretation of relative URIs as per the LDP spec (for example, allowing null relative URIs "<>" to refer to the to-be-created resource URI)

Proposal

...

LDP-RS-NCs in Fedora shall be datastreams, differing only from binary datastreams (exposed as LDP-NRs in LDP) in the following significant ways:

...