Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clarify rules for files and sub-directories under storage root #476

Merged
merged 2 commits into from
Jun 2, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions draft/spec/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -967,9 +967,10 @@ <h2>Root Structure</h2>
<a href="#root-conformance-declaration">Root Conformance Declaration</a> identifying it as such.
</p>
<p>
An OCFL Storage Root MAY contain other files. These might include a human-readable copy of the OCFL
specification to make the storage root self-documenting, or files used by
<a href="#storage-root-extensions">storage root extensions</a>.
An OCFL Storage Root MAY contain other files as direct children. These might include a human-readable
copy of the OCFL specification to make the storage root self-documenting, or files used by
<a href="#storage-root-extensions">storage root extensions</a>. An OCFL validator
<span id="E087">MUST</span> ignore any files in the storage root it does not understand.
</p>
<p>
An OCFL Storage Root MAY contain a JSON file named <code>ocfl_layout.json</code> to describe the arrangement
Expand All @@ -989,8 +990,11 @@ <h2>Root Structure</h2>
</li>
</ul>
<p>
Sub-directories within an OCFL Storage Root <span id="E072">MUST NOT</span> contain files that are not part
of an OCFL Object. Empty directories <span id="E073">MUST NOT</span> appear within a storage root.
An OCFL Storage Root <span id="E088">MUST NOT</span> contain directories or sub-directories other than as
a directory hierarchy used to store OCFL Objects or for <a href="#storage-root-extensions">storage root
extensions</a>. The directory hierarchy used to store OCFL Objects <span id="E072">MUST NOT</span> contain
files that are not part of an OCFL Object. Empty directories <span id="E073">MUST NOT</span> appear under
a storage root.
</p>
<p>
Although implementations may require multiple OCFL Storage Roots&mdash;that is, several logical or
Expand Down Expand Up @@ -1061,10 +1065,6 @@ <h2>Storage Root Extensions</h2>
directory <span id="E086">MUST</span> conform to the same guidelines and limitations as those defined for
<a href="#object-extensions">object extensions</a>.
</p>
<p>
An OCFL validator <span id="E087">MUST</span> ignore any files in the storage root it does not understand.
Additional files <span id="E088">MUST NOT</span> appear in other directories under the storage root.
</p>
<blockquote class="informative">
<p>
Non-normative note: Storage extensions can be used to support additional features, such as providing
Expand Down
6 changes: 3 additions & 3 deletions validation/validation-codes.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,8 @@
| E069 | 'An OCFL Storage Root MUST contain a Root Conformance Declaration identifying it as such.' | https://ocfl.io/draft/spec/#E069
| E070 | 'If present, [the ocfl_layout.json document] MUST include the following two keys in the root JSON object: [key, description]' | https://ocfl.io/draft/spec/#E070
| E071 | 'The value of [the ocfl_layout.json key "key"] is not defined in the OCFL specification, but MUST correspond to a value given in an Extension.' | https://ocfl.io/draft/spec/#E071
| E072 | 'Sub-directories within an OCFL Storage Root MUST NOT contain files that are not part of an OCFL Object.' | https://ocfl.io/draft/spec/#E072
| E073 | 'Empty directories MUST NOT appear within a storage root.' | https://ocfl.io/draft/spec/#E073
| E072 | 'The directory hierarchy used to store OCFL Objects MUST NOT contain files that are not part of an OCFL Object.' | https://ocfl.io/draft/spec/#E072
| E073 | 'Empty directories MUST NOT appear under a storage root.' | https://ocfl.io/draft/spec/#E073
| E074 | 'Although implementations may require multiple OCFL Storage Roots - that is, several logical or physical volumes, or multiple "buckets" in an object store - each OCFL Storage Root MUST be independent.' | https://ocfl.io/draft/spec/#E074
| E075 | 'The OCFL version declaration MUST be formatted according to the NAMASTE specification.' | https://ocfl.io/draft/spec/#E075
| E076 | '[The OCFL version declaration] MUST be a file in the base directory of the OCFL Storage Root giving the OCFL version in the filename.' | https://ocfl.io/draft/spec/#E076
Expand All @@ -97,7 +97,7 @@
| E085 | 'Storage hierarchies MUST be terminated by OCFL Object Roots.' | https://ocfl.io/draft/spec/#E085
| E086 | 'The storage root extensions directory MUST conform to the same guidelines and limitations as those defined for object extensions.' | https://ocfl.io/draft/spec/#E086
| E087 | 'An OCFL validator MUST ignore any files in the storage root it does not understand.' | https://ocfl.io/draft/spec/#E087
| E088 | 'Additional files MUST NOT appear in other directories under the storage root.' | https://ocfl.io/draft/spec/#E088
| E088 | 'An OCFL Storage Root MUST NOT contain directories or sub-directories other than as a directory hierarchy used to store OCFL Objects or for storage root extensions.' | https://ocfl.io/draft/spec/#E088
| E089 | 'If the preservation of non-OCFL-compliant features is required then the content MUST be wrapped in a suitable disk or filesystem image format which OCFL can treat as a regular file.' | https://ocfl.io/draft/spec/#E089
| E090 | 'Hard and soft (symbolic) links are not portable and MUST NOT be used within OCFL Storage hierachies.' | https://ocfl.io/draft/spec/#E090
| E091 | 'Filesystems MUST preserve the case of OCFL filepaths and filenames.' | https://ocfl.io/draft/spec/#E091
Expand Down