Skip to content
Please note that GitHub no longer supports your web browser.

We recommend upgrading to the latest Google Chrome or Firefox.

Learn more
Permalink
Browse files

Incorporate the changes of #21 into respec.

  • Loading branch information
ruebot committed Dec 12, 2019
1 parent a30a5b8 commit 35a634657f2dc965e009c7d3eabc27af96b2c2d5
Showing with 107 additions and 49 deletions.
  1. +107 −49 index.html
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html>
<head>
<title>BagIt Profiles Specification 1.2.0</title>
<title>BagIt Profiles Specification 1.3.0</title>
<meta charset='utf-8'>
<script src='https://www.w3.org/Tools/respec/respec-w3c' async class='remove'></script>
<script class='remove'>
@@ -24,8 +24,8 @@
key: "Previous version",
data: [
{
value: "1.1.0",
href: "https://github.com/bagit-profiles/bagit-profiles/tree/abaedfc3cec2bfaf20cd19d96893085a83ca6f3d"
value: "1.2.0",
href: "https://github.com/bagit-profiles/bagit-profiles-specification/commit/c5ecfa8afe0e3de11eccb68f3f1e9d56197a1578"
}
]
},{
@@ -92,15 +92,15 @@ <h2>Workflow</h2>
</section>
<section id='sotd'>
<p>
Current version: 1.2.0 (2018-12-03).
Current version: 1.3.0 (2019-12-12).
</p>
</section>
<section id="conformance">
</section>
<section id="implementation-details">
<h2>Implementation Details</h2>
<p>
Bags complying to a BagIt Profile MUST contain the tag `BagIt-Profile-Identifier` in their `bag-info.txt`, which value is the URI of the JSON file containing the Profile it conforms to. This tag MAY be repeated if the bag conforms to multiple Profiles. The URI that identifies the Profile SHOULD be versioned, e.g. `http://example.com/bagitprofiles/profile-bar-v0.1.json`.
Bags complying to a BagIt Profile MUST contain the tag `BagIt-Profile-Identifier` in their `bag-info.txt`, which value is the URI of the JSON file containing the BagIt Profile it conforms to. This tag MAY be repeated if the Bag conforms to multiple BagIt Profiles. The URI that identifies the BagIt Profile SHOULD be versioned, e.g. `http://example.com/bagitprofiles/profile-bar-v0.1.json`.
</p>
<p>
Resolving the URI with `Accept: application/json` SHOULD provide a BagIt Profile as JSON according to this specification.
@@ -110,75 +110,133 @@ <h2>Implementation Details</h2>
<ol>
<li>
`BagIt-Profile-Info`:
<p>
A list of tags that describes the Profile itself. The following tags are required in this section: "`Source-Organization`", "`External-Description`", "`Version`", and "`BagIt-Profile-Identifier`". Starting with version [`v1.2.0`],
`BagIt-Profile-Version` is also required.
</p>
<p>
The `Source-Organization` and `External-Description` tags are taken from the reserved tags defined in [[!RFC8493]] <a href="https://tools.ietf.org/html/rfc8493#section-2.2.2">section 2.2.2</a>.
</p>
<p>
The value of "`Version`" contains the version of the Profile; the value of "`BagIt-Profile-Identifier`" is the URI where the Profile file is available, and will have the same value as the "`BagIt-Profile-Identifier`" tag in `bag-info.txt`.
</p>
<p>
The value of `BagIt-Profile-Version` contains the version of this specification that the BagIt Profile conforms to. Since the tag was introduced after version [`v1.1.0`], any profile not explicitly defining `BagIt-Profile-Version` should be treated as conforming to version [`1.1.0`] of this specification.
</p>
<p>
Inclusion of "`Contact-Name`," "`Contact-Phone`" and "`Contact-Email`," as defined in [[RFC8493]] <a href="https://tools.ietf.org/html/rfc8493#section-2.2.2">section 2.2.2</a>, OPTIONAL but is encouraged.
</p>
</li>
<p>
A list of tags that describes the Profile itself. The following tags are required in this section: "`Source-Organization`", "`External-Description`", "`Version`", and "`BagIt-Profile-Identifier`". The first two of these tags are taken from the reserved tags defined in [[!RFC8493]]. The value of "`Version`" contains the version of the Profile; the value of "`BagIt-Profile-Identifier`" is the URI where the Profile file is available, and will have the same value as the "`BagIt-Profile-Identifier`" tag in `bag-info.txt`. Inclusion of "`Contact-Name`," "`Contact-Phone`" and "`Contact-Email`," as defined in [[RFC8493]] <a href="https://tools.ietf.org/html/rfc8493#section-2.2.2">section 2.2.2</a>, OPTIONAL but is encouraged.
</p>
<li>
`Bag-Info`:
<p>
Specifies which tags are required, etc. in `bag-info.txt`. Each tag definition takes four optional parameters:
</p>
<ol>
<li>
"required" is true or false (default false) and indicates whether or not this tag is required.
</li>
<li>
"values" is a list of acceptable values. If empty, any value is accepted.
</li>
<li>
"repeatable" is true or false (default true) and indicates whether or not this tag can be repeated in `bag-info.txt`.
</li>
<li>
"description" is a string providing notes or description related to this tag.
</li>
</ol>
<p>
Implementers may define in the `Bag-Info` section of their BagIt Profile whatever tags their application requires, i.e., tags defined here are not limited to the 'reserved metadata element names' identified in [[!RFC8493]] <a href="https://tools.ietf.org/html/rfc8493#section-2.2.2">section 2.2.2</a>.
</p>
<p>
The tag `BagIt-Profile-Identifier` is always required, but SHOULD NOT be listed under `Bag-Info` in the Profile.
</p>
</li>
<p>
Specifies which tags are required, etc. in `bag-info.txt`. Each tag definition takes three optional parameters:
<ol>
<li>
"required" is true or false (default false) and indicates whether or not this tag is required.
</li>
<li>
"values" is a list of acceptable values. If empty, any value is accepted.
</li>
<li>
"repeatable" is true or false (default true) and indicates whether or not this tag can be repeated in `bag-info.txt`.
</li>
</ol>
</p>
<p>
Implementers may define in the Bag-Info section of their Profile whatever tags their application requires, i.e., tags defined here are not limited to the 'reserved metadata element names' identified in [[!RFC8493]].
</p>
<p>
The tag `BagIt-Profile-Identifier` is always required, but SHOULD NOT be listed under `Bag-Info` in the Profile.
</p>
<li>
`Manifests-Required`: LIST
<p>
Each manifest type in LIST is required. The list contains the type of manifest (not the complete filename), e.g. `["sha1", "md5"]`.
</p>
</li>
<li>
`Manifests-Allowed`: LIST
<p>
If specified, only the manifest types in LIST are permitted. The list contains the type of manifest (not the complete filename), e.g. `["sha1", "md5"]`.
</p>
<p>
When specified along with `Manifests-Required`, `Manifests-Allowed` must include at least all of the manifest types listed in `Manifests-Required`.
</p>
<p>
If not specified, all manifest types are permitted.
</p>
</li>
<p>
Each manifest type in LIST is required. The list contains the type of manifest (not the complete filename), e.g. `["sha1", "md5"]`.
</p>
<li>
`Allow-Fetch.txt`: `true`|`false`
<p>
A fetch.txt file is allowed within the bag. Default: `true`
</p>
</li>
<p>
A fetch.txt file is allowed within the bag. Default: `true`
</p>
<li>
`Serialization`: `forbidden`|`required`|`optional`
<p>
Allow, forbid or require serialization of Bags. Default is `optional`.
</p>
</li>
<p>
Allow, forbid or require serialization of Bags. Default is `optional`.
</p>
<li>
`Accept-Serialization`: LIST
<p>
A list of MIME types acceptable as serialized formats. E.g. "application/zip". If serialization has a value of required or optional, at least one value is needed. If serialization is forbidden, this has no meaning.
</p>
</li>
<p>
A list of MIME types acceptable as serialized formats. E.g. "application/zip". If serialization has a value of required or optional, at least one value is needed. If serialization is forbidden, this has no meaning.
</p>
<li>
`Accept-BagIt-Version`: LIST
<p>
A list of BagIt version numbers that will be accepted. At least one version is required.
</p>
</li>
<p>
A list of BagIt version numbers that will be accepted. At least one version is required.
</p>
<li>
`Tag-Manifests-Required`: LIST
<p>
Each tag manifest type in LIST is required. The list contains the type of manifest (not the complete filename), e.g. `["sha1", "md5"]`.
</p>
</li>
<li>
`Tag-Manifests-Allowed`: LIST
<p>
If specified, only the tag manifest types in LIST are permitted. The list contains the type of manifest (not the complete filename), e.g. `["sha1", "md5"]`.
</p>
<p>
When specified along with `Tag-Manifests-Required`, `Tag-Manifests-Allowed` must include at least all of the tag manifest types listed in `Tag-Manifests-Required`.
</p>
<p>
If not specified, all tag manifest types are permitted.
</p>
</li>
<p>
Each tag manifest type in LIST is required. The list contains the type of manifest (not the complete filename), e.g. `["sha1", "md5"]`.
</p>
<li>
`Tag-Files-Required`: LIST
<p>
A list of a tag files that must be included in a conformant Bag. Entries are full path names relative to the Bag base directory. As per [[RFC8493]] <a href="https://tools.ietf.org/html/rfc8493#section-2.2.4">section 2.2.4</a>, these tag files need not be listed in tag manifiest files. `Tag-Files-Required` SHOULD NOT include `bag-info.txt` (which is always required), nor any required manifest files, which instead are required by `Manifests-Required` and `Tag-Manifests-Required`.
</p>
<p>
Every file in `Tag-Files-Required` must also be present in `Tag-Files-Allowed`.
</p>
</li>
<li>
`Tag-Files-Allowed`: LIST
<p>
A list of tag files that MAY be included in a conformant Bag. Entries are either full path names relative to the bag base directory or path name patterns in which asterisks can represent zero or more characters (c.f. [glob(7)](http://man7.org/linux/man-pages/man7/glob.7.html)).

This comment has been minimized.

Copy link
@kba

kba Dec 17, 2019

Contributor

I think this should be <a href="http://man7.org/linux/man-pages/man7/glob.7.html">glob(7)</a>

This comment has been minimized.

Copy link
@ruebot

ruebot Dec 17, 2019

Author Member

Good catch @kba, thanks!!

</p>
<p>
If `Tag-Files-Allowed` is not provided, its value is assumed to be `['*']`, i.e. all tag files are allowed.
</p>
<p>
As per the As per [[RFC8493]] <a href="https://tools.ietf.org/html/rfc8493#section-2">section 2</a>, these tag files need not be listed in tag manifest files. `Tag-Files-Required` SHOULD NOT include `bag-info.txt` (which is always required), nor any required manifest files, which instead are required by `Manifests-Required` and `Tag-Manifests-Required`.

This comment has been minimized.

Copy link
@tdilauro

tdilauro Dec 18, 2019

Member

"As per the" at beginning of sentence is extraneous.

This comment has been minimized.

Copy link
@ruebot

ruebot Dec 18, 2019

Author Member

😆 good catch!

</p>
<p>
At least all the tag files listed in `Tag-Files-Required` must be in included in `Tag-Files-Allowed`.
</p>
</li>
<p>
A list of a tag files that must be included in a conformant Bag. Entries are full path names relative to the Bag base directory. As per [[RFC8493]] <a href="https://tools.ietf.org/html/rfc8493#section-2.2.4">section 2.2.4</a>, these tag files need not be listed in tag manifiest files. `Tag-Files-Required` SHOULD NOT include `bag-info.txt` (which is always required), nor any required manifest files, which instead are required by `Manifests-Required` and `Tag-Manifests-Required`.
</p>
</ol>
</section>
</section>

0 comments on commit 35a6346

Please sign in to comment.
You can’t perform that action at this time.