Request URI: /path/to/some/resource
Methods: GET, POST, PUT, PATCH, HEAD, OPTIONS, DELETE, MOVE, COPY
GET Retrieve the content of the resource
Request Headers:
RANGE Byte range of content to retrieve, of the form: "Range: bytes=500-999"
ACCEPT RDF sources support content negotiation with these formats: application/ld+json, 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
IF-NONE-MATCH IF-MODIFIED-SINCE
PREFER return=minimal
return=representation
return=representation; include=" URIs "
return=representation; omit=" URIs "
where minimal indicates that only triples directly related to a resource should be returned, and representation indicates that links to other resources and their properties should also be included. URIs is a space-separate list of LDP defined preferences, and also:
URI | Description |
---|---|
http://fedora.info/definitions/v4/repository#EmbedResources | Embed "child" resources in the returned representation |
http://fedora.info/definitions/v4/repository#InboundReferences | Include assertions from other Fedora resources to this node (excluded from representation by default) |
http://fedora.info/definitions/v4/repository#ServerManaged | Embed server managed properties in the representation (enabled by default) |
Example (1): Turtle
curl -H "Accept: text/turtle" "http://localhost:8080/rest/path/to/resource"
Response:
Status: 200 OK Headers: ETag: "0ed38fe211c2663ace5322e970e7b7d606196e00" Last-Modified: Mon, 19 May 2014 19:44:59 GMT Preference-Applied: return=representation; include="http://www.w3.org/ns/ldp#PreferMembership http://www.w3.org/ns/ldp#PreferContainment" Vary: Prefer Accept-Patch: application/sparql-update Allow: MOVE,COPY,DELETE,POST,HEAD,GET,PUT,PATCH,OPTIONS Accept-Post: text/turtle,text/rdf+n3,application/n3,text/n3,application/rdf+xml,application/n-triples,multipart/form-data,application/sparql-update Link: <http://www.w3.org/ns/ldp#Resource>;rel="type" Link: <http://www.w3.org/ns/ldp#DirectContainer>;rel="type" Content-Type: text/turtle Body: <http://localhost:8080/rest/path/to/resource> <http://fedora.info/definitions/v4/rest-api#hasAccessRoles> <http://localhost:8080/rest/path/to/resource/fcr:accessroles> ; <http://fedora.info/definitions/v4/rest-api#exportsAs> <http://localhost:8080/rest/path/to/resource/fcr:export?format=jcr/xml> ; <http://fedora.info/definitions/v4/repository#hasParent> <http://localhost:8080/rest/path/to> ; a <http://www.w3.org/ns/ldp#Container> , <http://www.w3.org/ns/ldp#DirectContainer> ; <http://www.w3.org/ns/ldp#membershipResource> <http://localhost:8080/rest/path/to/resource> ; <http://www.w3.org/ns/ldp#hasMemberRelation> <http://fedora.info/definitions/v4/repository#hasChild> ; a <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> , <http://fedora.info/definitions/v4/rest-api#resource> , <http://fedora.info/definitions/v4/rest-api#object> , <http://fedora.info/definitions/v4/rest-api#relations> , <http://www.jcp.org/jcr/mix/1.0created> , <http://www.jcp.org/jcr/mix/1.0lastModified> , <http://www.jcp.org/jcr/mix/1.0referenceable> , <http://purl.org/dc/elements/1.1/describable> , <http://fedora.info/definitions/v4/rest-api#resource> ; <http://fedora.info/definitions/v4/repository#primaryType> "nt:folder"^^<http://www.w3.org/2001/XMLSchema#string> ; <http://fedora.info/definitions/v4/repository#created> "2014-05-19T19:44:59.647Z"^^<http://www.w3.org/2001/XMLSchema#string> ; <http://fedora.info/definitions/v4/repository#lastModified> "2014-05-19T19:44:59.645Z"^^<http://www.w3.org/2001/XMLSchema#string> ; <http://fedora.info/definitions/v4/repository#mixinTypes> "fedora:resource"^^<http://www.w3.org/2001/XMLSchema#string> , "fedora:object"^^<http://www.w3.org/2001/XMLSchema#string> ; <http://fedora.info/definitions/v4/repository#lastModifiedBy> "bypassAdmin"^^<http://www.w3.org/2001/XMLSchema#string> ; <http://fedora.info/definitions/v4/repository#uuid> "2b655d37-e88a-44c5-86c1-3b3935cdea49"^^<http://www.w3.org/2001/XMLSchema#string> ; <http://fedora.info/definitions/v4/repository#createdBy> "bypassAdmin"^^<http://www.w3.org/2001/XMLSchema#string> ; a <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> , <http://fedora.info/definitions/v4/rest-api#resource> , <http://fedora.info/definitions/v4/rest-api#object> , <http://fedora.info/definitions/v4/rest-api#relations> , <http://www.jcp.org/jcr/mix/1.0created> , <http://www.jcp.org/jcr/mix/1.0lastModified>, <http://www.jcp.org/jcr/mix/1.0referenceable> , <http://purl.org/dc/elements/1.1/describable> , <http://fedora.info/definitions/v4/rest-api#resource> .
Example (2): RDF/XML
curl -H "Accept: application/rdf+xml" "http://localhost:8080/rest/path/to/resource"
Response:
Status: 200 OK Headers: ETag: "0ed38fe211c2663ace5322e970e7b7d606196e00" Last-Modified: Mon, 19 May 2014 19:44:59 GMT Preference-Applied: return=representation; include="http://www.w3.org/ns/ldp#PreferMembership http://www.w3.org/ns/ldp#PreferContainment" Vary: Prefer Accept-Patch: application/sparql-update Allow: MOVE,COPY,DELETE,POST,HEAD,GET,PUT,PATCH,OPTIONS Accept-Post: text/turtle,text/rdf+n3,application/n3,text/n3,application/rdf+xml,application/n-triples,multipart/form-data,application/sparql-update Link: <http://www.w3.org/ns/ldp#Resource>;rel="type" Link: <http://www.w3.org/ns/ldp#DirectContainer>;rel="type" Content-Type: application/rdf+xml Body: <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="http://localhost:8080/rest/path/to/resource"> <hasAccessRoles xmlns="http://fedora.info/definitions/v4/rest-api#" rdf:resource="http://localhost:8080/rest/path/to/resource/fcr:accessroles"/> <exportsAs xmlns="http://fedora.info/definitions/v4/rest-api#" rdf:resource="http://localhost:8080/rest/path/to/resource/fcr:export?format=jcr/xml"/> <hasParent xmlns="http://fedora.info/definitions/v4/repository#" rdf:resource="http://localhost:8080/rest/path/to"/> <rdf:type rdf:resource="http://www.w3.org/ns/ldp#Container"/> <rdf:type rdf:resource="http://www.w3.org/ns/ldp#DirectContainer"/> <membershipResource xmlns="http://www.w3.org/ns/ldp#" rdf:resource="http://localhost:8080/rest/path/to/resource"/> <hasMemberRelation xmlns="http://www.w3.org/ns/ldp#" rdf:resource="http://fedora.info/definitions/v4/repository#hasChild"/> <rdf:type rdf:resource="http://www.jcp.org/jcr/nt/1.0folder"/> <rdf:type rdf:resource="http://www.jcp.org/jcr/nt/1.0hierarchyNode"/> <rdf:type rdf:resource="http://www.jcp.org/jcr/nt/1.0base"/> <rdf:type rdf:resource="http://www.jcp.org/jcr/mix/1.0created"/> <rdf:type rdf:resource="http://fedora.info/definitions/v4/rest-api#resource"/> <rdf:type rdf:resource="http://fedora.info/definitions/v4/rest-api#object"/> <rdf:type rdf:resource="http://fedora.info/definitions/v4/rest-api#relations"/> <rdf:type rdf:resource="http://www.jcp.org/jcr/mix/1.0created"/> <rdf:type rdf:resource="http://www.jcp.org/jcr/mix/1.0lastModified"/> <rdf:type rdf:resource="http://www.jcp.org/jcr/mix/1.0referenceable"/> <rdf:type rdf:resource="http://purl.org/dc/elements/1.1/describable"/> <rdf:type rdf:resource="http://fedora.info/definitions/v4/rest-api#resource"/> <primaryType xmlns="http://fedora.info/definitions/v4/repository#" rdf:datatype="http://www.w3.org/2001/XMLSchema#string">nt:folder</primaryType> <created xmlns="http://fedora.info/definitions/v4/repository#" rdf:datatype="http://www.w3.org/2001/XMLSchema#string">2014-05-19T19:44:59.647Z</created> <lastModified xmlns="http://fedora.info/definitions/v4/repository#" rdf:datatype="http://www.w3.org/2001/XMLSchema#string">2014-05-19T19:44:59.645Z</lastModified> <mixinTypes xmlns="http://fedora.info/definitions/v4/repository#" rdf:datatype="http://www.w3.org/2001/XMLSchema#string">fedora:resource</mixinTypes> <mixinTypes xmlns="http://fedora.info/definitions/v4/repository#" rdf:datatype="http://www.w3.org/2001/XMLSchema#string">fedora:object</mixinTypes> <lastModifiedBy xmlns="http://fedora.info/definitions/v4/repository#" rdf:datatype="http://www.w3.org/2001/XMLSchema#string">bypassAdmin</lastModifiedBy> <uuid xmlns="http://fedora.info/definitions/v4/repository#" rdf:datatype="http://www.w3.org/2001/XMLSchema#string">2b655d37-e88a-44c5-86c1-3b3935cdea49</uuid> <createdBy xmlns="http://fedora.info/definitions/v4/repository#" rdf:datatype="http://www.w3.org/2001/XMLSchema#string">bypassAdmin</createdBy> <rdf:type rdf:resource="http://www.jcp.org/jcr/nt/1.0folder"/> <rdf:type rdf:resource="http://www.jcp.org/jcr/nt/1.0hierarchyNode"/> <rdf:type rdf:resource="http://www.jcp.org/jcr/nt/1.0base"/> <rdf:type rdf:resource="http://www.jcp.org/jcr/mix/1.0created"/> <rdf:type rdf:resource="http://fedora.info/definitions/v4/rest-api#resource"/> <rdf:type rdf:resource="http://fedora.info/definitions/v4/rest-api#object"/> <rdf:type rdf:resource="http://fedora.info/definitions/v4/rest-api#relations"/> <rdf:type rdf:resource="http://www.jcp.org/jcr/mix/1.0created"/> <rdf:type rdf:resource="http://www.jcp.org/jcr/mix/1.0lastModified"/> <rdf:type rdf:resource="http://www.jcp.org/jcr/mix/1.0referenceable"/> <rdf:type rdf:resource="http://purl.org/dc/elements/1.1/describable"/> <rdf:type rdf:resource="http://fedora.info/definitions/v4/rest-api#resource"/> </rdf:Description> </rdf:RDF>
Example (3): Prefer headers
curl -H "Prefer: return=representation; include=\"http://fedora.info/definitions/v4/repository#InboundReferences\"; omit=\"http://www.w3.org/ns/ldp#PreferMembership http://www.w3.org/ns/ldp#PreferContainment\"" http://localhost:8080/rest/parent
Response:
Status: 200 OK Headers: ETag: "25fb5cb1d24983d57b10cb0b4656de113d5b8257" Last-Modified: Mon, 19 May 2014 19:24:40 GMT Preference-Applied: return=representation; include="http://fedora.info/definitions/v4/repository#InboundReferences" Vary: Prefer Accept-Patch: application/sparql-update Allow: MOVE,COPY,DELETE,POST,HEAD,GET,PUT,PATCH,OPTIONS Accept-Post: text/turtle,text/rdf+n3,application/n3,text/n3,application/rdf+xml,application/n-triples,multipart/form-data,application/sparql-update Link: <http://www.w3.org/ns/ldp#Resource>;rel="type" Link: <http://www.w3.org/ns/ldp#DirectContainer>;rel="type" Content-Type: text/turtle Body: <http://localhost:8080/rest/parent> <http://fedora.info/definitions/v4/rest-api#hasAccessRoles> <http://localhost:8080/rest/parent/fcr:accessroles> ; <http://fedora.info/definitions/v4/rest-api#exportsAs> <http://localhost:8080/rest/parent/fcr:export?format=jcr/xml> ; <http://fedora.info/definitions/v4/repository#hasParent> <http://localhost:8080/rest/> ; a <http://www.w3.org/ns/ldp#Container> , <http://www.w3.org/ns/ldp#DirectContainer> ; <http://www.w3.org/ns/ldp#membershipResource> <http://localhost:8080/rest/parent> ; <http://www.w3.org/ns/ldp#hasMemberRelation> <http://fedora.info/definitions/v4/repository#hasChild> ; a <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> , <http://fedora.info/definitions/v4/rest-api#resource> , <http://fedora.info/definitions/v4/rest-api#object> , <http://fedora.info/definitions/v4/rest-api#relations> , <http://www.jcp.org/jcr/mix/1.0created> , <http://www.jcp.org/jcr/mix/1.0lastModified>, <http://www.jcp.org/jcr/mix/1.0referenceable> , <http://purl.org/dc/elements/1.1/describable> , <http://fedora.info/definitions/v4/rest-api#resource> . <http://localhost:8080/rest/collection> <http://fedora.info/definitions/v4/rels-ext#hasCollectionMember> <http://localhost:8080/rest/parent> . <http://localhost:8080/rest/parent> <http://fedora.info/definitions/v4/repository#primaryType> "nt:folder"^^<http://www.w3.org/2001/XMLSchema#string> ; <http://fedora.info/definitions/v4/repository#created> "2014-05-19T19:21:37.182Z"^^<http://www.w3.org/2001/XMLSchema#string> ; <http://fedora.info/definitions/v4/repository#lastModified> "2014-05-19T19:24:40.662Z"^^<http://www.w3.org/2001/XMLSchema#string> ; <http://fedora.info/definitions/v4/repository#mixinTypes> "fedora:resource"^^<http://www.w3.org/2001/XMLSchema#string> , "fedora:object"^^<http://www.w3.org/2001/XMLSchema#string> ; <http://fedora.info/definitions/v4/repository#lastModifiedBy> "bypassAdmin"^^<http://www.w3.org/2001/XMLSchema#string> ; <http://fedora.info/definitions/v4/repository#uuid> "c21706cd-cc1a-4d77-b637-d940e0dc7888"^^<http://www.w3.org/2001/XMLSchema#string> ; <http://fedora.info/definitions/v4/repository#createdBy> "bypassAdmin"^^<http://www.w3.org/2001/XMLSchema#string> ; a <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> , <http://fedora.info/definitions/v4/rest-api#resource> , <http://fedora.info/definitions/v4/rest-api#object> , <http://fedora.info/definitions/v4/rest-api#relations> , <http://www.jcp.org/jcr/mix/1.0created> , <http://www.jcp.org/jcr/mix/1.0lastModified>, <http://www.jcp.org/jcr/mix/1.0referenceable> , <http://purl.org/dc/elements/1.1/describable> , <http://fedora.info/definitions/v4/rest-api#resource> .
Example (4): Non-RDF Source
curl "http://localhost:8080/rest/path/to/binary/resource"
Response:
Status: 200 OK Headers: ETag: "0ed38fe211c2663ace5322e970e7b7d606196e00" Last-Modified: Mon, 19 May 2014 19:44:59 GMT Vary: Prefer Link: <http://localhost:8080/rest/path/to/binary/resource/fcr:metadata">;rel="describedby" Content-Type: image/jpg Body: {binary content}
Status:
200 OK
304 Not Modified
404 Not Found
POST Create new resources within a LDP container
Query Parameters:
CHECKSUM (Optional) Provide a SHA-1 checksum which will be checked against the uploaded content to ensure error-free transfer.
Request Headers:
CONTENT-DISPOSITION (Optional) The filename provided in the content disposition header will be stored in a premis:hasOriginalName property.
CONTENT-TYPE (Optional) MIME type of the uploaded binary or RDF content.
CONTENT-LOCATION (Optional) A URI to a resource to use instead of the request body
If the MIME type corresponds to a supported RDF format or SPARQL-Update, the uploaded content will be parsed as RDF and used to populate the child node properties. RDF will be interpreted using the current resource as the base URI (e.g. <> will be expanded to the current URI). Namespaces must be declared in full.
For other MIME types, the uploaded content will be used to create a binary resource.
SLUG (Optional) A suggested name for the new child resource, which the repository may ignore.
The slug you provide does not guarantee the location of the created resource. Clients must check the Location header for the path to the created resource.
Example (1): Create a new child node
curl -X POST "http://localhost:8080/rest/"
Response:
Status: 201 Created Headers: ETag: "3ac31b09de1536a332d9c6ee8453669947721840" Location: http://localhost:8080/rest/some/path/to/a/new/resource Body: http://localhost:8080/rest/some/path/to/a/new/resource
Example (2): Create a new child binary resource with empty content
curl -i -X POST -H "Content-Type:text/plain" "http://localhost:8080/rest"
Response:
Status: 201 Created ETag: "487f188240d2be3ae32d49958c0eeea18224be0a" Last-Modified: Thu, 29 May 2014 15:46:13 GMT Link: <http://localhost:8080/rest/b8/fc/32/be/b8fc32be-34be-428e-bf7c-81be97e5f2e3/fcr:metadata>; rel="describedby"; anchor="http://localhost:8080/rest/b8/fc/32/be/b8fc32be-34be-428e-bf7c-81be97e5f2e3" Location: http://localhost:8080/rest/b8/fc/32/be/b8fc32be-34be-428e-bf7c-81be97e5f2e3 Content-Type: text/plain Transfer-Encoding: chunked Body: http://localhost:8080/rest/b8/fc/32/be/b8fc32be-34be-428e-bf7c-81be97e5f2e3
Example (3): Create a new container with RDF properties
curl -i -X POST -H "Content-Type: text/turtle" --data-binary "@body.rdf" "http://localhost:8080/rest/" Request Body: PREFIX dc: <http://purl.org/dc/elements/1.1/> <> dc:title "some-resource-title"
Response:
Status: 201 Created Headers: ETag: "a66937ca13bc29c63f7b1a55d447a76cd8f1d573" Location: http://localhost:8080/rest/new/node/uri Body: http://localhost:8080/rest/new/node/uri
Example (4): Uploaded file with checksum
curl -i -X POST --data-binary "@picture.jpg" "http://localhost:8080/rest/parent/container?checksum=urn:sha1:cb1a576f22e8e3e110611b616e3e2f5ce9bdb941"
Response:
Status: 201 Created Headers: ETag: "fe4e2bf389fe05dab6390564e40012d8d36eca19" Location: http://localhost:8080/rest/parent/object/auto/generated/ds/id Body: http://localhost:8080/rest/parent/object/auto/generated/ds/id
Example (5): Uploaded file with checksum mismatch
curl -X POST --data-binary "@picture.jpg" "http://localhost:8080/rest/parent/object?checksum=urn:sha1:checksumdoesntmatch"
Response:
Status: 409 Conflict Body: Checksum Mismatch of cb1a576f22e8e3e110611b616e3e2f5ce9bdb941 and urn:sha1:checksumdoesntmatch
Example (6): Uploaded file with filename
curl -i -X POST --data-binary "@picture.jpg" -H "Content-Disposition: attachment; filename=\"picture.jpg\"" "http://localhost:8080/rest/parent/container"
Response:
Status: 201 Created Headers: ETag: "fe4e2bf389fe05dab6390564e40012d8d36eca19" Location: http://localhost:8080/rest/parent/object/auto/generated/ds/id Body: http://localhost:8080/rest/parent/object/auto/generated/ds/id
Status:
201 Created
404 Not Found (resource does not exist – use PUT to specify a new resource name)
409 Conflict (checksum mismatch)
PUT Create a resource with a specified path, or replace the triples associated with a resource with the triples provided in the request body.
Some resource properties are repository managed and cannot be removed or modified. Any attempt to do so may result in a 4xx error.
RDF will be interpreted using the current resource as the base URI (e.g. <> will be expanded to the current URI)
Request Headers:
CONTENT-TYPE text/turtle, text/rdf+n3, application/n3, text/n3, application/rdf+xml, application/n-triples, text/html, text/plain, application/ld+json, message/external-body
IF-MATCH
IF-UNMODIFIED-SINCE
CONTENT-LOCATION (Optional) A URI to a resource to use instead of the request body
Query Parameters:
CHECKSUM Checksum of the binary content (in the form urn:sha1:<sha1-hash>). If the checksum doesn't match, a 409 Conflict will be returned.
Example (1): Updating properties with RDF content
1.1 Perform a GET to the current container's RDF content
curl -X GET -H "Content-Type: text/turtle" "http://localhost:8080/rest/node/to/update" Body: PREFIX dc: <http://purl.org/dc/elements/1.1/> ... PREFIX ldp: <http://www.w3.org/ns/ldp#> <http://localhost:8080/rest/node/to/update> 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:primaryType "nt:folder"^^<http://www.w3.org/2001/XMLSchema#string> ; fedora:created "2014-11-20T16:23:31.684Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> ; fedora:lastModified "2014-11-20T16:23:31.684Z"^^<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> ; ... <http://fedora.info/definitions/v4/repository#jcr/xml> rdfs:label "jcr/xml"^^<http://www.w3.org/2001/XMLSchema#string> . <http://54.173.23.104:8080/fcrepo4/rest/test1/fcr:export?format=jcr/xml> dc:format <http://fedora.info/definitions/v4/repository#jcr/xml> .
1.2 Add your updates (e.g. <> dc:title "some-resource-title" .) under the full result of the GET response in 1.1
curl -X PUT -H "Content-Type: text/turtle" --data-binary "@new-triples.rdf" "http://localhost:8080/rest/node/to/update" Request Body: PREFIX dc: <http://purl.org/dc/elements/1.1/> ... PREFIX ldp: <http://www.w3.org/ns/ldp#> <http://localhost:8080/rest/node/to/update> 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> , fcrepo:Container , fcrepo:Resource , fcrepo: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> ; fcrepo:primaryType "nt:folder"^^<http://www.w3.org/2001/XMLSchema#string> ; fcrepo:created "2014-11-20T16:23:31.684Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> ; fcrepo:lastModified "2014-11-20T16:23:31.684Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> ; fcrepo:mixinTypes "fedora:Container"^^<http://www.w3.org/2001/XMLSchema#string> , "fedora:Resource"^^<http://www.w3.org/2001/XMLSchema#string> ; ... <http://fedora.info/definitions/v4/repository#jcr/xml> rdfs:label "jcr/xml"^^<http://www.w3.org/2001/XMLSchema#string> . <http://54.173.23.104:8080/fcrepo4/rest/test1/fcr:export?format=jcr/xml> dc:format <http://fedora.info/definitions/v4/repository#jcr/xml> . <> dc:title "some-resource-title" .
Response:
Status: 204 No Content
Note that to prevent conflicts, the value of the fedora:lastModified
triple in the request must match its current counterpart in the repository. The way to ensure this is to base the changes in a PUT request on the RDF content obtained in an immediately prior GET request, and never try to PUT consecutively, as this will result in a 400 error.
Example (2): Creating a new resource at a specified path
curl -i -X PUT "http://localhost:8080/rest/node/to/create"
Response:
Status: 201 Created Response Headers: ETag: "ef214795c3b9109389ffa542a6c081976e1e9587" Last-Modified: Mon, 19 May 2014 20:52:57 GMT Location: http://localhost:8080/rest/node/to/create Body: http://localhost:8080/rest/node/to/create
Example (3): Creating new binary resource at a specified path
curl -X PUT --upload-file image.jpg -H"Content-Type: image/jpeg" "http://localhost:8080/rest/new/image"
Response:
Status: 201 Created Headers: ETag: "urn:sha1:ea3d29b28522724a82de042a7b7a4e79a1653435" Last-Modified: Mon, 19 May 2014 20:55:31 GMT Location: http://localhost:8080/rest/new/image Body: http://localhost:8080/rest/new/image
Note that once a resource is created as an RDF or non-RDF source, it must remain an RDF or non-RDF source. In order to change the type of resource, you must DELETE and then re-create the resource.
Status:
204 No Content
412 Precondition Failed
Example (4): Creating a new binary resource at a specified path redirecting to external content
curl -X PUT -H"Content-Type: message/external-body; access-type=URL; URL=\"http://www.example.com/file\"" "http://localhost:8080/rest/node/to/create"
Response:
Status: 201 Created Headers: ETag: "ef214795c3b9109389ffa542a6c081976e1e9587" Last-Modified: Mon, 19 May 2014 20:52:57 GMT Link: <http://localhost:8080/rest/node/to/create/fcr:metadata>; rel="describedby" Location: http://localhost:8080/rest/node/to/create Body: http://localhost:8080/rest/node/to/create
PATCH Modify the triples associated with a resource with SPARQL-Update
Request Headers:
IF-MATCH
IF-UNMODIFIED-SINCE
CONTENT-LOCATION (Optional) A URI to a resource to use instead of the request body
Example (1):
curl -X PATCH -H "Content-Type: application/sparql-update" --data-binary "@body.rdf" "http://localhost:8080/rest/node/to/update" Request Body: PREFIX dc: <http://purl.org/dc/elements/1.1/> INSERT { <> dc:title "some-resource-title" . } WHERE { }
Response:
Status: 204 No Content
Example (2): Updating multiple containers with a single SPARQL Update
curl -X PATCH -H "Content-Type: application/sparql-update" --data-binary "@body.rdf" "http://localhost:8080/rest/node/to/update" Request Body: PREFIX dc: <http://purl.org/dc/elements/1.1/> INSERT { <> dc:title "some-resource-title" . <http://localhost:8080/rest/another/node/to/update> dc:title "some-other-title" . } WHERE { }
Response:
Status: 204 No Content
Status:
204 No Content
412 Precondition Failed
DELETE Delete a resource
Example:
curl -X DELETE "http://localhost:8080/rest/resource/to/delete"
Response:
Status: 204 No Content
Delete requests create "tombstone" resources which need to be removed before you can reuse a URI.
Example:
curl -X GET "http://localhost:8080/rest/some/deleted/resource"
Status: 410 Gone Link: <http://localhost:8080/rest/some/deleted/resource/fcr:tombstone>; rel="hasTombstone" Body: Discovered tombstone resource at /some/deleted/resource {jcr:primaryType=fedora:Tombstone, jcr:created=2014-11-20T16:04:21.131Z, jcr:createdBy=bypassAdmin}
curl -X DELETE "http://localhost:8080/rest/some/deleted/resource/fcr:tombstone"
Status: 204 No Content
Create a new node and reuse the deleted URL
curl -X PUT "http://localhost:8080/rest/some/deleted/resource"
Status: 201 Created
Status:
204 No Content
404 Not Found
HEAD Retrieve the resource headers
Example:
curl -i -X HEAD "http://localhost:8080/rest/resource/to/head"
Response:
Status: 200 OK ETag: "bbdd92e395800153a686773f773bcad80a51f47b" Last-Modified: Wed, 28 May 2014 18:31:36 GMT Last-Modified: Thu, 20 Nov 2014 15:44:32 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" Accept-Patch: application/sparql-update Accept-Post: text/turtle,text/rdf+n3,text/n3,application/rdf+xml,application/n-triples,multipart/form-data,application/sparql-update Allow: MOVE,COPY,DELETE,POST,HEAD,GET,PUT,PATCH,OPTIONS
Status:
200 OK
404 Not Found
OPTIONS Outputs information about the supported HTTP methods, etc.
Example:
curl -i -X OPTIONS "http://localhost:8080/rest/node/to/options"
Response:
Status: 200 OK Accept-Patch: application/sparql-update Allow: MOVE,COPY,DELETE,POST,HEAD,GET,PUT,PATCH,OPTIONS Accept-Post: text/turtle,text/rdf+n3,application/n3,text/n3,application/rdf+xml,application/n-triples,multipart/form-data,application/sparql-update
Status:
200 OK
MOVE Move a resource (and its subtree) to a new location
Note: A federated resource can be moved within the federation, but not from the federation to the internal repository (or vice versa)
Example (1):
curl -X MOVE -H "Destination: http://localhost:8080/rest/new/path/to/resource" "http://localhost:8080/rest/path/to/resource"
Response:
Status: 201 Created Headers: Location: http://localhost:8080/rest/new/path/to/resource
Example (2):
curl -X MOVE "http://localhost:8080/rest/path/to/resource"
Response:
Status: 502 Bad Gateway
Status:
201 Created
409 Source path doesn't exist
412 Destination path already exists
502 Destination URI isn't a valid resource path
COPY Copy a resource (and its subtree) to a new location
Example:
curl -X COPY -H "Destination: http://localhost:8080/rest/new/path/to/resource" "http://localhost:8080/rest/path/to/resource"
Response:
Status: 201 Created Headers: Location: http://localhost:8080/rest/new/path/to/resource
Status:
201 Created
409 Source path doesn't exists
412 Destination path already exists
502 Destination URI isn't a valid resource path