EXAMPLE: Collaboration of these three OCFL Extensions¶
This document describes a possible way to combine the three OCFL Extensions to achieve a way to prescribe the properties to be recorded and how to record them for each OCFL Object Version.
[storage_root]
├── 0=ocfl_1.0
├── ocfl_1.0.txt
├── ocfl_layout.json
├── object-version-properties.md
├── packaging-format-registry.md
├── property-registry.md
├── extensions
| ├── property-registry/
| | └── config.json
│ └── packaging-format-registry/
│ ├── config.json
| ├── packaging_format_inventory.json
| ├── packaging_format_inventory.json.sha512
│ └── packaging_formats
│ ├── 05b408a38e341de9bb4316aa812115ee
│ └── ... files describing the packaging_format ...
│ └── 76f773808534f2969d7a405b99e78b11
│ └── ... files describing the packaging_format ...
├── 0de
| └── 45c
| └── f24
| └── item1
│ └── 0=ocfl_object_1.0
│ ├── inventory.json
│ ├── inventory.json.sha512
| └── extensions
│ └── object-version-properties/
│ ├── object_version_properties.json
│ └── object_version_properties.json.sha512
└────────────────── v1/
├── inventory.json
├── inventory.json.sha512
└── content/
└── ... files ...
the config.json in the property-registry extension declares which storage-root extensions might be used in the object-version-properties.json in the object versions.
{
"archival-date" : {
"description" : "The date on which this Object Version has been archived in this repository"
"type" : "string",
"constraint": "a datetime in ISO 8601 YYYY-MM-DDTHH-mm-ss format",
"mandatory" : true
},
"deaccessioned" : {
"description" : "If given, this version of the object has been deaccessioned and should not be disseminated",
"type" : "object",
"constraint": "",
"mandatory" : false,
"properties" [{
"name" : "datetime",
"description" : "The date on which this object version has been deaccessioned",
"type" : "string",
"constraint": "a datetime in ISO 8601 YYYY-MM-DDTHH-mm-ss format",
"mandatory" : true
}, {
"name" : "reason",
"description": "The reason why this object version has been deaccessioned.",
"type" : "string",
"constraint" : "",
"mandatory": true
}]
},
"packaging-format" : {
"description" : "The packaging format of this Object Version",
"type" : "object",
"extension" : "packaging-format-registry",
"mandatory" : true,
"properties" : [{
"description" : "the packaging format used for this object version",
"type" : "string",
"constraint" : "a name/version pair defined in the packaging-format-registry.json",
"mandatory": true
}]
}
}
and two examples of different possible instantiations of object_version_properties.json
{
"v2": {
"archival-date" : "2020-09-28T16:22:44",
"packaging-format": "BagIt/v0.97"
},
"v1": {
"archival-date" : "2018-03-19T06:22:11",
"packaging-format": "BagIt/v0.97",
"deaccessioned": {
"datetime": "2020-09-28T13:55:00",
"reason": "Deaccessioned because dataset was deleted in Easy"
}
}
}
another example of object_version_properties.json
:
{
"v1": {
"archival-date" : "2002-07-12T15:14:33",
"packaging-format": "BagIt/v1.0"
}
}