Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

For more information on OCFL, see the specification.

Table of Contents

General

In the examples below, it can be seen that OCFL objects created by Fedora consist of three types of files:

  1. The user's content files
  2. Fedora-specific RDF files containing user-properties related to the OCFL object and/or user's content files
  3. Fedora-specific JSON "header" files containing system system-properties related to the OCFL object and/or user's content files

The full contents and format of the JSON "header" files, and Fedora-specific RDF files are detailed later in this document. 

Atomic Resources

An atomic resource is either a single binary or a single container that maps to its own OCFL object. Below is a comparison between a plain OCFL representation of a single item object and Fedora's atomic resource representation.

...

Fedora stores system metadata about the binary (image.tiff) and the binary's description (currently, https://host/rest/image.tiff/fcr:metadata) in respective JSON files that contain elements such as the creation date and creator, as well as its interaction model (i.e. type), whether the object is an archival group, etc. Additionally, Fedora resources can optionally have their own ACLs, which if present also have their own JSON header file. The full contents and format of the JSON header file and ACLs are detailed later in this document

Naming conventions

  • The binary: the filename provided during ingest of the binary is retained in the OCFL persistence. ("image.tiff", in this example)
  • The binary's description: the filename is the name of the binary with the addition of the suffix, "~fcr-desc.nt". ("image.tiff~fcr-desc.nt", in this example)
  • The binary's ACL: the filename is the name of the binary with the addition of the suffix, "~fcr-acl.nt". ("image.tiff~fcr-acl.nt", in this example)
  • The binary's header file: the filename is always "fcr-root.json". This allows Fedora to find the header file without know if the resource is a binary, container or archival group.
  • The binary description's header file: the filename is always "fcr-root~fcr-desc.json".
  • The binary ACL's header file: the filename is always "fcr-root~fcr-acl.json".

...

No Format
[object root]
    ├── 0=ocfl_object_1.0
    ├── inventory.json
    ├── inventory.json.sha512
    └── v1/
        ├── inventory.json
        ├── inventory.json.sha512
        └── content/
            ├── .fcrepo/
            │   ├── fcr-root.json              <-- Required "header" file holding system metadata about the archival group.
            │   ├── fcr-root~fcr-acl.json      <-- Optional, only present if this Fedora resource has its own ACL.
            │   ├── image.tiff.json            <-- Required "header" file holding system metadata about the binary.
            │   ├── image.tiff~fcr-desc.json   <-- Required "header" file holding system metadata about the binary's description.
            │   ├── image.tiff~fcr-acl.json    <-- Optional, only present if this Fedora resource has its own ACL.
            │   └──├── foo/.json                   <-- Required "header" file holding system metadata <--about Requiredthe nested structurecontainer.
 within .fcrepo/ mirrors content structure
          ├── foo~fcr-acl.json        ├── foo.json  <-- Optional, only present if this Fedora resource has its own ACL.
  <-- Required "header" file holding system metadata about the nested container.
   └── foo/               ├── foo~fcr-acl.json       <-- Optional,Required onlynested presentstructure ifwithin this.fcrepo/ Fedoramirrors resource has its own ACL.content structure
            │       ├── bar.xml.json           <-- Required "header" file holding system metadata about the binary.
            │       ├── bar.xml~fcr-desc.json  <-- Required "header" file holding system metadata about the binary's description.
            │       └── bar.xml~fcr-acl.json   <-- Optional, only present if this Fedora resource has its own ACL.
            ├── fcr-container.nt               <-- Required file for holding user-properties describing the archival group container.
            ├── fcr-container~fcr-acl.nt       <-- Optional, only present if this Fedora resource has its own ACL.
            ├── image.tiff
            ├── image.tiff~fcr-desc.nt         <-- Required "binary description".
            ├── image.tiff~fcr-acl.nt          <-- Optional, only present if this Fedora resource has its own ACL.
            └── foo/
                ├── fcr-container.nt           <-- Required file for holding user-properties describing the archival part container.
                ├── fcr-container~fcr-acl.nt   <-- Optional, only present if this Fedora resource has its own ACL.
                ├── bar.xml
                ├── bar.xml~fcr-desc.nt        <-- Required "binary description".
                └── bar.xml~fcr-acl.nt         <-- Optional, only present if this Fedora resource has its own ACL.

...

  • The container user-properties: the filename is always "fcr-container.nt".
  • The container's ACL: the filename is always "fcr-container~fcr-acl.nt".
  • The container's header file: the filename is always "fcr-root.json". This allows Fedora to find the header file without know if the resource is a binary, container or archival group.
  • The container ACL's header file: the filename is always "fcr-root~fcr-acl.json".
  • The binary: the filename provided during ingest of the binary is retained in the OCFL persistence. ("image.tiff", in this example)
  • The binary's description: the filename is the name of the binary with the addition of the suffix, "~fcr-desc.nt". ("image.tiff~fcr-desc.nt", in this example)
  • The binary's ACL: the filename is the name of the binary with the addition of the suffix, "~fcr-acl.nt". ("image.tiff~fcr-acl.nt", in this example)
  • The binary's header file: the filename is always "fcr-root.json". This allows Fedora to find the header file without know if the resource is a binary, container or archival group.
  • The binary description's header file: the filename is always "fcr-root~fcr-desc.json".
  • The binary ACL's header file: the filename is always "fcr-root~fcr-acl.json".

Specification of Fedora-specific OCFL Files

Header Files

...

RDF Files

ACLs

Binary Descriptions

Container Descriptions


General

Every Fedora OCFL object contains a .fcrepo directory in its root. This directory contains JSON files, header files, that describe the resources contained in the OCFL object. The specifics of the contents of the header files is not discussed here, just their naming conventions. They contain information that enables Fedora to know how it is supposed to interact with a resource. Header files must be identifiable by Fedora without knowing anything about a resource other than its IDs.

...