Request URI: /fcr:transform/{program}
Methods: GET, POST
Request Headers:
Example:
@prefix fedora : <http://fedora.info/definitions/v4/repository#>
id = . :: xsd:string ;
title = dc:title :: xsd:string;
uuid = fedora:uuid :: xsd:string ;
curl "http://localhost:8080/rest/49/3d/24/41/493d2441-0541-41c7-a23b-09d1f17d4a0f/fcr:transform/default"
Response:
Status: 200 OK
Headers:
Content-Type: application/json
Transfer-Encoding: chunked
Server: Jetty(8.1.11.v20130520)
Body:
[{"id":["http://localhost:8080/rest/49/3d/24/41/493d2441-0541-41c7-a23b-09d1f17d4a0f"],"title":[],"uuid":["07630a24-5a0b-4ba7-80ab-0691f68667ce"]}]
Status:
200 OK: if the transform is applied successfully
400 Bad Request: if the program doesn't exist
404 Not Found: if the resource doesn't exist
To reference a stored "program" in the GET form of the fcr:transform service, the LDPath transformation directive must be stored at the following path:
http://localhost:8080/rest/fedora:system/fedora:transform/fedora:ldpath/<program-name>/<resource-type>
Where <program-name> can be any name, and <resource-type> is the type of Fedora resource on which the transform will be applied:
- "fedora:Container"
- "fedora:nonRdfSourceDescription"
- "fedora:Resource"
Example:
- Store a new program.
curl -i -X PUT -H "Content-Type: application/rdf+ldpath" --data-binary "@post.txt" http://localhost:8080/rest/fedora:system/fedora:transform/fedora:ldpath/newprogram/fedora:Container
Response
Status 201 Created
Headers:
Content-Type: text/plain
http://localhost:8080/rest/fedora:system/fedora:transform/fedora:ldpath/newprogram/fedora:Container
2. Get a resource transformed with the stored transform
curl -i http://localhost:8080/rest/pid5/fcr:transform/newprogram
Response
Status 200 OK
Header:
Server: Apache-Coyote/1.1
Content-Type: application/json
Body:
[{"id":["http://localhost:8080/rest/pid5"],"title":["some-resource-title"],"description":[],"uuid":["caa7bc6c-b80b-4e30-8ec1-15e90937e3be"]}]
POST get a resource transformed with the supplied transform
Output formats: application/json,text/tab-separated-values,text/csv,text/sse,text/plain,application/sparql-results+json,application/sparql-results+xml,application/sparql-results+bio,text/turtle,text/rdf+n3,application/N-triples,application/rdf_xml
Example:
curl -X POST -H "Content-Type: application/rdf+ldpath" --data-binary "@post.txt" "http://localhost:8080/rest/49/3d/24/41/493d2441-0541-41c7-a23b-09d1f17d4a0f/fcr:transform"
Body:
@prefix fcrepo : <http://fedora.info/definitions/v4/repository#>
id = . :: xsd:string ;
title = dc:title :: xsd:string;
uuid = fcrepo:uuid :: xsd:string ;
Response:
Status: 200 OK
Headers:
Content-Type: application/json
Transfer-Encoding: chunked
Server: Jetty(8.1.11.v20130520)
Body:
[{"id":["http://localhost:8080/rest/49/3d/24/41/493d2441-0541-41c7-a23b-09d1f17d4a0f"],"title":[],"uuid":["07630a24-5a0b-4ba7-80ab-0691f68667ce"]}]
Status:
200 OK: if the transform is applied successfully
400 Bad Request: if there was an error parsing or processing the transform
404 Not Found: if the resources doesn't exist
2 Comments
Mohamed Mohideen Abdul Rasheed
Are all LDPath selectors supported as of 4.5.1? Or do we need
for full support?I tried using the LDPath TEST syntax to select RDF objects described by predicate pcdm:hasMember and is of type pcdm:File but it did not work.
In the transformation response json,
has_member
has the correct value, but thehas_member_pcdm_file
and thehas_member_pcdm_file
are empty.Am I missing something here?
Andrew Woods
Mohamed Mohideen Abdul Rasheed, Indeed, you will need to wait for the completion of , which will be available soon.
I suspect you will be delighted to see the functionality it offers.
Regarding your example LDPath program, everything should work except
has_member_pcdm_file.
The LDPath syntax for
[^^xsdtype]
appears to mean exactly that: xsd types. The following program works for all defined fields: