...
Excerpt | ||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Working with a versionable resource (a LDPRv)A versionable resource is a type of All (regular) resource - see RESTful HTTP API - Containers - but it is created by invoking a specific Link header and the GET method has an additional interaction model beyond the GET scenarios when interacting with non - versioned resources. All of the headers and methods for regular resources are applicable to a versionable resource. A resource can be declared versionable when it is created originally. This is achieved by including the following link header to your PUT or POST commands when creating the resource. When a versionable resource is created, the versions container will be created at the same time.
Request URI: /path/to/resource Methods: GET, PUT, POST
Status |
|
Status | ||
---|---|---|
|
For more details about Fedora'For more details about Fedora's datetime negotiation behaviors, see Memento Datetime Negotiation Algorithm.
Request Headers:
ACCEPT-datetime An RFC-1123 Date. (E.g. "Wed, 30 May 2018 23:02:44 GMT")
Example:
Code Block |
---|
curl -H "Accept: text/turtle" -H "Accept-Datetime: Wed, 29 Aug 2018 15:47:50 GMT" http://localhost:8080/rest/path/to/resource |
Response:
Code Block |
---|
HTTP/1.1 302 Found Date: Wed, 29 Aug 2018 22:09:28 GMT Set-Cookie: JSESSIONID=hrj5jm80kdjdw9attrozpy19;Path=/ Expires: Thu, 01 Jan 1970 00:00:00 GMT Set-Cookie: rememberMe=deleteMe; Path=/; Max-Age=0; Expires=Tue, 28-Aug-2018 22:09:28 GMT Link: <http://www.w3.org/ns/ldp#Resource>;rel="type" Link: <http://www.w3.org/ns/ldp#Container>;rel="type" Link: <http://www.w3.org/ns/ldp#BasicContainer>;rel="type" Link: <http://localhost:8080/static/constraints/ContainerConstraints.rdf>; rel="http://www.w3.org/ns/ldp#constrainedBy" Link: <http://localhost:8080/rest/path/to/resource6>; rel="timegate" Link: <http://localhost:8080/rest/path/to/resource>; rel="original" Link: <http://localhost:8080/rest/path/to/resource/fcr:versions>; rel="timemap" Link: <http://mementoweb.org/ns#OriginalResource>; rel="type" Link: <http://mementoweb.org/ns#TimeGate>; rel="type" Accept-Patch: application/sparql-update Accept-Post: text/turtle,text/rdf+n3,text/n3,application/rdf+xml,application/n-triples,application/ld+json Allow: MOVE,COPY,DELETE,POST,HEAD,GET,PUT,PATCH,OPTIONS Link: <http://localhost:8080/rest/path/to/resource/fcr:acl>; rel="acl" Preference-Applied: return=representation Vary: Prefer Vary: Accept Vary: Range Vary: Accept-Encoding Vary: Accept-Language Vary: Accept-Datetime Location: http://localhost:8080/rest/path/to/resource/fcr:versions/20180829154750 Content-Length: 0 Server: Jetty(9.3.1.v20150714) |
Status:
Status | ||||||
---|---|---|---|---|---|---|
|
Status | ||||||||
---|---|---|---|---|---|---|---|---|
|
Status | ||||||||
---|---|---|---|---|---|---|---|---|
|
Examples:
Excerpt | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Working with a versions container (a LDPCv)Request URI: /path/to/resource/fcr:versions Methods: GET, POST
Status |
|
Code Block |
---|
curl -H "Accept: text/turtle |
Code Block |
#PUT
curl -X PUT -H "Link: <http://mementoweb.org/ns#OriginalResource>; rel=\"type\"" http://localhost:8080/rest/path/to/resource
#POST
curl -X POST -H "Link: <http://mementoweb.org/ns#OriginalResource>; rel=\"type\"" -H "Slug: resource" http://localhost:8080/rest/path/to |
/resource/fcr:versions |
Response:
Code Block |
---|
Status: HTTP/1.1 200 OK
Headers:
ETag: W/"671df2a47622331ffb6b70b6156526a67e5ab760"
Last-Modified: Wed, 30 May 2018 21:03:54 GMT
Link: <http://www.w3.org/ns/ldp#Resource>;rel="type"
Link: <http://www.w3.org/ns/ldp#RDFSource>;rel="type"
Link: <http://localhost:8080/rest/path/to/resource/fcr:versions/fcr:acl>; rel="acl"
Link: <http://mementoweb.org/ns#TimeMap>; rel="type"
Link: <http |
Working with a versions container (a LDPCv)
Request URI: /path/to/resource/fcr:versions
Methods: GET, POST, DELETE
Status title GET
Get a list of the available versions of an object
title | GET |
---|
Request Headers:
ACCEPT application/ld+json, application/link-format, application/n-triples, application/rdf+xml, application/x-turtle, application/xhtml+xml, application/xml, text/html, text/n3, text/plain, text/rdf+n3, text/turtle
Example:
Code Block |
---|
curl -H "Accept: text/turtle" http://localhost:8080/rest/path/to/resource/fcr:versions |
Response:
Code Block |
---|
Status: HTTP/1.1 200 OK Headers: ETag: W/"671df2a47622331ffb6b70b6156526a67e5ab760" Last-Modified: Wed, 30 May 2018 21:03:54 GMT Link: <http://www.w3.org/ns/ldp#Resource>;rel="type" Link: <http://www.w3.org/ns/ldp#RDFSource>;rel="type" Link: <http://localhost:8080/rest/path/to/resource/fcr:versions/fcr:acl>; rel="acl" Link: <http://mementoweb.org/ns#TimeMap>; rel="type" Link: <http://localhost:8080/rest/path/to/resource>; rel="original" Link: <http://localhost:8080/rest/path/to/resource>; rel="timegate" Link: resource>; rel="original" Link: <http://localhost:8080/rest/path/to/resource>; rel="timegate" Link: <http://localhost:8080/rest/path/to/resource/fcr:versions>; rel="timemap" Vary-Post: Memento-Datetime Allow: POST,HEAD,GET,OPTIONS,DELETE Preference-Applied: return=representation Vary: Prefer Vary: Accept Vary: Range Vary: Accept-Encoding Vary: Accept-Language Content-Type: text/turtle;charset=utf-8 Content-Length: 1944 Body: @prefix memento: <http://mementoweb.org/ns#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix fedora: <http://fedora.info/definitions/v4/repository#> . @prefix ldp: <http://www.w3.org/ns/ldp#> . <http://localhost:8080/rest/path/to/resource/fcr:versions>; rel="timemap" Vary-Post: Memento-Datetime Allow: POST,HEAD,GET,OPTIONS,DELETE Preference-Applied: return=representation Vary: Prefer Vary: Accept Vary: Range Vary: Accept-Encoding Vary: Accept-Language Content-Type: text/turtle;charset=utf-8 Content-Length: 1944 Body: @prefix memento: <http://mementoweb.org/ns#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix fedora: <http://fedora.info/definitions/v4/repository#> . @prefix ldp: <http: rdf:type fedora:TimeMap ; rdf:type fedora:Resource ; fedora:lastModifiedBy "bypassAdmin" ; fedora:createdBy "bypassAdmin" ; fedora:created "2018-05-30T21:00:48.169Z"^^<http://www.w3.org/ns2001/ldp#> . <http://localhost:8080/rest/path/to/resource/fcr:versions>XMLSchema#dateTime> ; rdffedora:typelastModified "2018-05-30T21:03:54.88Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> ; memento:original fedora:TimeMap<http://localhost:8080/rest/path/to/resource> ; rdf:type fedoraldp:ResourceRDFSource ; fedora:lastModifiedBywritable "bypassAdmin" ; true ; fedora:createdBy ldp:contains "bypassAdmin" ; fedora:created "2018-05-30T21:00:48.169Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> <http://localhost:8080/rest/path/to/resource/fcr:versions/20180530210300> ; fedora:lastModifiedldp:contains "2018-05-30T21:03:54.88Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> ; memento:original <http://localhost:8080/rest/path/to/resource> ; rdf:type ldp:RDFSource ; fedora:writable true ; ldp:contains <http://localhost:8080/rest/path/to/resource/fcr:versions/20180530210300> ; ldp:contains <http://localhost:8080/rest/path/to/resource/fcr:versions/20180530210354> . |
Status:
Status | ||||||
---|---|---|---|---|---|---|
|
/resource/fcr:versions/20180530210354> . |
Status:
Status | ||||||
---|---|---|---|---|---|---|
|
Status | ||||||||
---|---|---|---|---|---|---|---|---|
|
Status colour Blue title POST
Create a new versioned resource (a new LDPRm)
colour | Blue |
---|---|
title | POST |
Versions are created such that the current time will be used by default and the current state of the versionable resource will be preserved. Any specified body will be ignored.
Example:
Code Block |
---|
# Create version from current state of the object
curl -X POST http |
Versions can by created in one of two ways, with a Memento-Datetime header and request body or with neither. If the Memento-Datetime header is omitted, the current time will be used by default and the current state of the versionable resource will be preserved. Any specified body will be ignored. If, however, the Memento-Datetime header is included, the versioned resource will be stored at this time marker and the request body will be stored as the versioned resource.
Request Headers
MEMENTO-DATETIME (Optional) An RFC-1123 Date. (E.g. "Wed, 30 May 2018 23:02:44 GMT")
Example 1 (Create a new version resource 'now.' Its state is that of the current versionable resource.):
Code Block |
---|
# Create version from current state of the object
curl -X POST http://localhost:8080/rest/path/to/resource/fcr:versions
|
Response:
Code Block |
---|
HTTP/1.1 201 Created
Date: Wed, 29 Aug 2018 21:21:34 GMT
Set-Cookie: JSESSIONID=dmqpuv06yty7b0tf9y94z3rx;Path=/
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Set-Cookie: rememberMe=deleteMe; Path=/; Max-Age=0; Expires=Tue, 28-Aug-2018 21:21:34 GMT
ETag: W/"f7c04eb7e3f04c17d1fc852bef5f6b030ea271e7"
Last-Modified: Wed, 29 Aug 2018 20:22:11 GMT
Link: <http://localhost:8080/static/constraints/ContainerConstraints.rdf>; rel="http://www.w3.org/ns/ldp#constrainedBy"
Link: <http://localhost:8080/rest/path/to/resource>; rel="timegate"
Link: <http://localhost:8080/rest/path/to/resource>; rel="original"
Link: <http://localhost:8080/rest/path/to/resource/fcr:versions>; rel="timemap"
Memento-Datetime: Wed, 29 Aug 2018 21:21:34 GMT
Link: <http://mementoweb.org/ns#Memento>; rel="type"
Location: http://localhost:8080/rest/path/to/resource/fcr:versions/20180829212134
Content-Type: text/plain
Content-Length: 68
Server: Jetty(9.3.1.v20150714)
http://localhost:8080/rest/versioning/v9/fcr:versions/20180829212134 |
Status:
Example 2 (Create a new versioned resource at the supplied time marker. Its state is supplied as the request body.):
Code Block |
---|
# Create version by supplying body and Memento-Datetime
curl -X GET http://localhost:8080/rest/path/to/resource > resource.ttl
curl -X POST -H "Memento-Datetime: Wed, 30 May 2018 23:02:44 GMT" -H "Content-Type: text/turtle" --data-binary "@resource.ttl" http://localhost:8080/rest/path/to/resource/fcr:versions |
Response:
Code Block |
---|
HTTP/1.1 201 Created Date: Wed, 29 Aug 2018 21:38:01 GMT Set-Cookie: JSESSIONID=7bs7ddtba9l110261g9qyyotq;Path=/ Expires: Thu, 01 Jan 1970 00:00:00 GMT Set-Cookie: rememberMe=deleteMe; Path=/; Max-Age=0; Expires=Tue, 28-Aug-2018 21:38:01 GMT ETag: W/"a6b6c76b16935d00bcd1b5f259cfd2ecb225e3bd" Last-Modified: Wed, 29 Aug 2018 20:22:11 GMT Link: <http://localhost:8080/static/constraints/ContainerConstraints.rdf>; rel="http://www.w3.org/ns/ldp#constrainedBy" Link: <http://localhost:8080/rest/path/to/resource>; rel="timegate" Link: <http://localhost:8080/rest/path/to/resource>; rel="original" Link: <http://localhost:8080/rest/path/to/resource/fcr:versions |
Response:
Code Block |
---|
HTTP/1.1 201 Created Date:versions>; rel="timemap" Memento-Datetime: Wed, 3029 MayAug 2018 2321:0221:4434 GMT Link: <http://mementoweb.org/ns#Memento>; rel="type" Location: http://localhost:8080/rest/path/to/resource/fcr:versions/20180530230244 Content-Type: text/plain Content-Length: 68 Server: Jetty(9.3.1.v20150714) http://localhost:8080/rest/versioning/v9/fcr:versions/20180530230244 |
Status:
Status | ||||||
---|---|---|---|---|---|---|
|
Status | ||||||
---|---|---|---|---|---|---|
|
Example:
Code Block |
---|
curl -X DELETE httpSet-Cookie: JSESSIONID=dmqpuv06yty7b0tf9y94z3rx;Path=/ Expires: Thu, 01 Jan 1970 00:00:00 GMT Set-Cookie: rememberMe=deleteMe; Path=/; Max-Age=0; Expires=Tue, 28-Aug-2018 21:21:34 GMT ETag: W/"f7c04eb7e3f04c17d1fc852bef5f6b030ea271e7" Last-Modified: Wed, 29 Aug 2018 20:22:11 GMT Link: <http://localhost:8080/static/constraints/ContainerConstraints.rdf>; rel="http://www.w3.org/ns/ldp#constrainedBy" Link: <http://localhost:8080/rest/path/to/resource>; rel="timegate" Link: <http://localhost:8080/rest/path/to/resource>; rel="original" Link: <http://localhost:8080/rest/path/to/resource/fcr:versions |
Response:
Code Block |
---|
HTTP/1.1 204 No Content Dateversions>; rel="timemap" Memento-Datetime: Wed, 29 Aug 2018 21:4121:5434 GMT Set-Cookie: JSESSIONID=1hfa3law3t4kp3z3wjps3qw84;Path=/ Expires: Thu, 01 Jan 1970 00:00:00 GMT Set-Cookie: rememberMe=deleteMe; Path=/; Max-Age=0; Expires=Tue, 28-Aug-2018 21:41:54 GMTLink: <http://mementoweb.org/ns#Memento>; rel="type" Location: http://localhost:8080/rest/path/to/resource/fcr:versions/20180829212134 Content-Type: text/plain Content-Length: 68 Server: Jetty(9.3.1.v20150714).1.v20150714) http://localhost:8080/rest/versioning/v9/fcr:versions/20180829212134 |
Status:
Status | ||||||||
---|---|---|---|---|---|---|---|---|
|
Status | ||||||||
---|---|---|---|---|---|---|---|---|
|
Excerpt | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Working with a versioned resource (a LDPRm)Request URI: /path/to/resource/fcr:versions/<timestamp> Methods: GET, DELETE
Status |
|
Code Block |
---|
curl -H "Accept: text/turtle" http://localhost:8080/rest/path/to/resource/fcr:versions/20180829154750 |
Response:
Code Block |
---|
HTTP/1.1 200 OK Date: Thu, 30 Aug 2018 14:31:30 GMT Set-Cookie: JSESSIONID=yb9ppso27n221q1xdvu4cqzi5;Path=/ Expires: Thu, 01 Jan 1970 00:00:00 GMT Set-Cookie: rememberMe=deleteMe; Path=/; Max-Age=0; Expires=Wed, 29-Aug-2018 14:31:30 GMT ETag: W/"e766f5e674845e72f7d589e346b6a96a7735336e" Last-Modified: Wed, 29 Aug 2018 15:47:31 GMT Link: <http://www.w3.org/ns/ldp#Resource>;rel="type" Link: <http://www.w3.org/ns/ldp#Container>;rel="type":47:31 GMT Link: <http://www.w3.org/ns/ldp#BasicContainer>ldp#Resource>;rel="type" Link: <http://localhost:8080/static/constraints/ContainerConstraints.rdf>; rel="http://www.w3.org/ns/ldp#constrainedBy" Link: <http://localhost:8080/rest/path/to/resource>; ldp#Container>;rel="timegatetype" Link: <http://localhost:8080/rest/path/to/resource>; www.w3.org/ns/ldp#BasicContainer>;rel="originaltype" Link: <http://localhost:8080/reststatic/path/to/resource/fcr:versions>constraints/ContainerConstraints.rdf>; rel="timemap" Allow: GET,HEAD,OPTIONS,DELETE Memento-Datetime: Wed, 29 Aug 2018 15:47:50 GMThttp://www.w3.org/ns/ldp#constrainedBy" Link: <http://mementoweb.org/ns#Memento>localhost:8080/rest/path/to/resource>; rel="typetimegate" Preference-AppliedLink: return=representation Vary: Prefer Vary: Accept Vary: Range Vary: Accept-Encoding Vary: Accept-Language Content-Type: text/turtle;charset=utf-8 Content-Length: 1754 Server: Jetty(9.3.1.v20150714) @prefix premis: <http://www.loc.gov/premis/rdf/v1#> . @prefix test: <info:fedora/test/> . @prefix memento: <http://mementoweb.org/ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix webac: <http://fedora.info/definitions/v4/webac#> . @prefix acl<http://localhost:8080/rest/path/to/resource>; rel="original" Link: <http://localhost:8080/rest/path/to/resource/fcr:versions>; rel="timemap" Allow: GET,HEAD,OPTIONS,DELETE Memento-Datetime: Wed, 29 Aug 2018 15:47:50 GMT Link: <http://mementoweb.org/ns#Memento>; rel="type" Preference-Applied: return=representation Vary: Prefer Vary: Accept Vary: Range Vary: Accept-Encoding Vary: Accept-Language Content-Type: text/turtle;charset=utf-8 Content-Length: 1754 Server: Jetty(9.3.1.v20150714) @prefix premis: <http://www.w3loc.orggov/nspremis/authrdf/acl#>v1#> . @prefix ns001test: <http<info://localhost:8080/rest/ktestfedora/test/> . @prefix xsimemento: <http://www.w3.org/2001/XMLSchema-instance> . @prefix xmlns: <http://www.w3.org/2000/xmlns/>mementoweb.org/ns#> . @prefix rdfrdfs: <http://www.w3.org/19992000/0201/22-rdf-syntax-ns#>schema#> . @prefix fedorawebac: <http://fedora.info/definitions/v4/repository#>webac#> . @prefix xmlacl: <http://www.w3.org/XML/1998/namespace>/ns/auth/acl#> . @prefix ns001: <http://localhost:8080/rest/ktest/> . @prefix ebucorexsi: <http://www.ebuw3.chorg/metadata/ontologies/ebucore/ebucore#>2001/XMLSchema-instance> . @prefix ldpxmlns: <http://www.w3.org/ns2000/xmlns/ldp#>> . @prefix xsrdf: <http://www.w3.org/2001/XMLSchema>1999/02/22-rdf-syntax-ns#> . @prefix fedoraconfigfedora: <http://fedora.info/definitions/v4/config#>repository#> . @prefix foafxml: <http://xmlnswww.w3.comorg/foafXML/0.11998/>namespace> . @prefix dcebucore: <http://purl.org/dc/elements/1.1/> . <http://localhost:8080/rest/path/to/resource> rdf:type ldp:RDFSource ; rdf:type ldp:Container ;www.ebu.ch/metadata/ontologies/ebucore/ebucore#> . @prefix ldp: <http://www.w3.org/ns/ldp#> . @prefix xs: <http://www.w3.org/2001/XMLSchema> . @prefix fedoraconfig: <http://fedora.info/definitions/v4/config#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix dc: <http://purl.org/dc/elements/1.1/> . <http://localhost:8080/rest/path/to/resource> rdf:type fedoraldp:ResourceRDFSource ; rdf:type ldp:BasicContainerContainer ; rdf:type fedora:ContainerResource ; fedora:created "2018-08-29T15:47:31.041Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> ; rdf:type fedora:writable trueldp:BasicContainer ; fedorardf:lastModifiedtype "2018-08-29T15:47:31.041Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> ; fedora:lastModifiedBy "fedoraAdmin"Container ; fedora:createdBycreated "fedoraAdmin"2018-08-29T15:47:31.041Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> ; rdffedora:typewritable ldp:RDFSource true ; rdffedora:typelastModified "2018-08-29T15:47:31.041Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> ; fedora:lastModifiedBy ldp:Container"fedoraAdmin" ; fedora:writablecreatedBy true . |
Status:
Status | ||||||
---|---|---|---|---|---|---|
|
Example:
Code Block |
---|
curl -i -X DELETE http://localhost:8080/rest/path/to/resource/fcr:versions/20180829154750 |
Response:
Code Block |
---|
HTTP/1.1 204 No Content Date: Thu, 30 Aug 2018 14:35:21 GMT Set-Cookie: JSESSIONID=1w3ta3umg5nai1q4mtfp5qn48p;Path=/ Expires: Thu, 01 Jan 1970 00:00:00 GMT Set-Cookie: rememberMe=deleteMe; Path=/; Max-Age=0; Expires=Wed, 29-Aug-2018 14:35:21 GMT Server: Jetty(9.3.1.v20150714)"fedoraAdmin" ; rdf:type ldp:RDFSource ; rdf:type ldp:Container ; fedora:writable true . |
Status:
Status | ||||||
---|---|---|---|---|---|---|
|
|
Status | ||||||||
---|---|---|---|---|---|---|---|---|
|