Fedora stores all of the repository content in OCFL objects.
This content consists of three types of files:
- The user-content files (such as PDF, TIFF, TXT, MP4, etc.)
- RDF files containing user-properties related to the OCFL object and/or user's content files
- Fedora-specific JSON "header" files containing system-properties related to the OCFL object and/or user's content files
For each user-content and RDF user-properties file, Fedora needs to retain system metadata to have a full interpretation of the file. These "system metadata" files are call Fedora Header Files.
This document describes the format and elements contained within Fedora Header Files. The location and naming conventions for these header files is described in the Design - Fedora OCFL Object Structure wiki page.
General
All header files are serialized as JSON documents according to the following JSON Schema:
Property Descriptions
id
The Fedora resource's ID will typically be of the form: info:fedora/url/path/elements/to/resource
parent
The Fedora ID of the container resource in which this resource was created. If this resource is at the top of the repository, then the "parent" will be the repository root, "info:fedora".
stateToken
The Fedora-managed indication of change in a resource, like ETags. See: https://fedora.info/2018/11/22/spec/#state-tokens
interactionModel
The URI indication of the Fedora resource's type. See schema above for allowable values.
createdDate
The creation date of the Fedora resource, conforming to rfc3339.
createdBy
The String value of the client/user who created the Fedora resource.
lastModifiedDate
The last modified date of the Fedora resource, conforming to rfc3339.
lastModifiedBy
The String value of the client/user who last modified the Fedora resource.
archivalGroup
JSON boolean value (true
or false
) indicating whether the Fedora resource is an "archival group" container.
objectRoot
JSON boolean value (true
or false
) indicating whether the Fedora resource is a "object root" of the OCFL object. For example, a binary file associated with a binary Fedora resource will be the "object root"; whereas, the non-RDF description and ACL for that binary resource will have a value of false. An "archival group" resource is always an "object root"; whereas, its archival parts will have a value of false.
deleted
JSON boolean value (true
or false
) indicating whether the Fedora resource is marked as deleted.
mimeType
The String value indicating the Fedora resource's mime type. (only applies to Fedora resources with interaction model of: http://www.w3.org/ns/ldp#NonRDFSource)
filename
The String value indicating the Fedora resource's user-provided file name. (only applies to Fedora resources with interaction model of: http://www.w3.org/ns/ldp#NonRDFSource)
contentSize
The Long integer size in bytes of the Fedora resource. (only applies to Fedora resources with interaction model of: http://www.w3.org/ns/ldp#NonRDFSource)
digests
JSON array of user-provided fixity digest algorithm and values, each of the form: urn:<algorithm>:<digestValue>
, where "algorithm" can be any of the following: sha1, sha-256, sha-512, sha-512/256, or md5. (only applies to Fedora resources with interaction model of: http://www.w3.org/ns/ldp#NonRDFSource)
externalurl
The URL of an external resource to which a Fedora resource points. (only applies to Fedora resources with interaction model of: http://fedora.info/definitions/fcrepo#ExternalContent)
externalHandling
The handling directive for an external resource to which a Fedora resource points. Allowable values can be any of the following: copy, redirect, or proxy (only applies to Fedora resources with interaction model of: http://fedora.info/definitions/fcrepo#ExternalContent)
Examples
For reference, below are examples of header files associate with: user-content and RDF user-properties
Header File Example - User-Content
Header files associated with user-content files
{ "parent": "info:fedora", "id": "info:fedora/binary", "filename": "", "mimeType": "application/x-www-form-urlencoded", "interactionModel": "http://www.w3.org/ns/ldp#NonRDFSource", "lastModifiedDate": "2020-06-03T23:59:00.284677Z", "createdDate": "2020-06-03T23:59:00.284677Z", "stateToken": "5F789A9AAD061811FBB9BB0DE4B998C8", "contentSize": 9, "digests": [], "deleted": false, "archivalGroup": false, "objectRoot": true }
Header File Example - RDF User-Properties
Header files associated with RDF user-properties files
- Containers
{ "parent": "info:fedora", "id": "info:fedora/container", "interactionModel": "http://www.w3.org/ns/ldp#BasicContainer", "lastModifiedDate": "2020-06-03T23:58:03.148409Z", "createdDate": "2020-06-03T23:58:03.148409Z", "stateToken": "DCEF22546A9D93D0203E96D1682DF9F8", "deleted": false, "archivalGroup": false, "objectRoot": true }
- Binary descriptions
{ "parent": "info:fedora/binary", "id": "info:fedora/binary/fcr:metadata", "interactionModel": "http://fedora.info/definitions/v4/repository#NonRdfSourceDescription", "lastModifiedDate": "2020-06-03T23:59:00.280677Z", "createdDate": "2020-06-03T23:59:00.280677Z", "stateToken": "74A51841F559D31E3EBD40EFE2DE29E3", "deleted": false, "archivalGroup": false, "objectRoot": false }
- ACLs
{ "parent": "info:fedora/new", "id": "info:fedora/new/fcr:acl", "lastModifiedDate": "2020-06-05T01:15:29.406689Z", "deleted": false, "interactionModel": "http://fedora.info/definitions/v4/webac#Acl", "createdBy": "fedoraAdmin", "createdDate": "2020-06-05T01:15:29.406689Z", "lastModifiedBy": "fedoraAdmin", "stateToken": "FF048B326D1DED62BDCB84D38DC7CB41", "archivalGroup": false, "objectRoot": false }