-
Notifications
You must be signed in to change notification settings - Fork 4
Creating a container
curl -X POST -u username:password "https://services.phaidra-sandbox.univie.ac.at/api/container/create" -F "metadata=@cont_metadata.json"
{"alerts":[],"pid":"o:1","status":200}Container metadata example: cont_metadata.json
{
"metadata": {
"json-ld": {
"dcterms:type": [
{
"@type": "skos:Concept",
"skos:exactMatch": [
"https://pid.phaidra.org/vocabulary/8MY0-BQDQ"
],
"skos:prefLabel": [
{
"@language": "eng",
"@value": "container"
}
]
}
],
"edm:hasType": [
{
"@type": "skos:Concept",
"skos:prefLabel": [
{
"@value": "interview",
"@language": "eng"
}
],
"skos:exactMatch": [
"https://pid.phaidra.org/vocabulary/8KGA-CH97"
]
}
],
"dce:title": [
{
"@type": "bf:Title",
"bf:mainTitle": [
{
"@value": "test container",
"@language": "eng"
}
]
}
]
}
}
}Container metadata should be interpreted as parent metadata record for the members, ie. all container metadata apply for members too unless re-defined on member level.
Creating a member (see Creating a simple object)
curl -X POST -u username:password "https://services.phaidra-sandbox.univie.ac.at/api/document/create" -F "metadata=@foo_metadata.json" -F "file=@test.wav" -F "mimetype=audio/wav"
{"alerts":[],"pid":"o:2","status":200}Member metadata example: foo_metadata.json
{
"metadata": {
"json-ld": {
"dcterms:type": [
{
"@type": "skos:Concept",
"skos:exactMatch": [
"https://pid.phaidra.org/vocabulary/8YB5-1M0J"
],
"skos:prefLabel": [
{
"@language": "eng",
"@value": "sound"
}
]
}
],
"dce:title": [
{
"@type": "bf:Title",
"bf:mainTitle": [
{
"@value": "My title",
"@language": "eng"
}
]
}
],
"schema:duration": [
"PT1M30S"
],
"ebucore:filename": [
"interview.wav"
],
"ebucore:hasMimeType": [
"audio/wav"
],
"edm:rights": [
"http://rightsstatements.org/vocab/InC/1.0/"
]
}
}
}curl -X POST -u username:password "https://services.phaidra-sandbox.univie.ac.at/api/object/o:1/relationship/add" -F "predicate=http://pcdm.org/models#hasMember" -F "object=info:fedora/o:2"
{"alerts":[{"msg":"true","type":"success"}],"status":200}curl -X POST -u username:password "https://services.phaidra-sandbox.univie.ac.at/api/container/create" -F "metadata=@cont_metadata.json" -F "member_foo=@test.wav" -F "member_bar=@test1.wav"In this case, the metadata do not have the structure metadata->json-ld->{predicates}
but
metadata->json-ld->container->{predicates}
metadata->json-ld->member_foo->{predicates}
metadata->json-ld->member_bar->{predicaes}
etc.
Example:
{
"metadata": {
"json-ld": {
"container": {
"dcterms:type": [
{
"@type": "skos:Concept",
"skos:exactMatch": [
"https://pid.phaidra.org/vocabulary/8MY0-BQDQ"
],
"skos:prefLabel": [
{
"@language": "eng",
"@value": "container"
}
]
}
],
"edm:hasType": [
{
"@type": "skos:Concept",
"skos:prefLabel": [
{
"@value": "interview",
"@language": "eng"
}
],
"skos:exactMatch": [
"https://pid.phaidra.org/vocabulary/8KGA-CH97"
]
}
],
"dce:title": [
{
"@type": "bf:Title",
"bf:mainTitle": [
{
"@value": "test container",
"@language": "eng"
}
]
}
]
},
"member_foo": {
"dcterms:type": [
{
"@type": "skos:Concept",
"skos:exactMatch": [
"https://pid.phaidra.org/vocabulary/8YB5-1M0J"
],
"skos:prefLabel": [
{
"@language": "eng",
"@value": "sound"
}
]
}
],
"dce:title": [
{
"@type": "bf:Title",
"bf:mainTitle": [
{
"@value": "My title",
"@language": "eng"
}
]
}
],
"schema:duration": [
"PT1M30S"
],
"ebucore:filename": [
"test.wav"
],
"ebucore:hasMimeType": [
"audio/wav"
],
"edm:rights": [
"http://rightsstatements.org/vocab/InC/1.0/"
]
},
"member_bar": {
"dcterms:type": [
{
"@type": "skos:Concept",
"skos:exactMatch": [
"https://pid.phaidra.org/vocabulary/8YB5-1M0J"
],
"skos:prefLabel": [
{
"@language": "eng",
"@value": "sound"
}
]
}
],
"dce:title": [
{
"@type": "bf:Title",
"bf:mainTitle": [
{
"@value": "track 2",
"@language": "deu"
}
]
}
],
"schema:duration": [
"PT1M30S"
],
"ebucore:filename": [
"test2.wav"
],
"ebucore:hasMimeType": [
"audio/wav"
],
"edm:rights": [
"http://rightsstatements.org/vocab/InC/1.0/"
]
}
}
}
}You can add "relationships" to "metadata" where you can define a specific relationship between the member (referred to as member_<key>) and the container (referred to as container), eg
"relationships": [
{
"s": "member_foo",
"p": "http://phaidra.org/XML/V1.0/relations#isThumbnailFor",
"o": "container"
}
]The http://pcdm.org/models#hasMember relationship is added automatically for members.