While the BagIt specification describes the general requirements for a valid bag, BagIt profiles describe the tags, manifests, and tag manifests required to make a valid bag for a specific organization or purpose.
DART uses BagIt profiles to produce bags that adhere to a profile, and to validate that bags do adhere to the profile.
DART BagIt Profiles
While the general specification for BagIt Profiles can be found on GitHub, DART's BagIt profiles differ from the published specification in the following ways:
DART profiles use camel case identifiers with no hyphens or periods in attribute names. For example, the
Allow-Fetch.txtin GitHub BagIt profiles is called
DART profiles include an
idattribute with a UUID. This is used internally, while externally the bagItProfileIdentifier URL is used externally.
DART profiles include the following additional boolean attributes:
allowMiscTopLevelFileswhich indicates whether files other than manifests and tag manifests are allowed in the bag's root directory.
allowMiscDirectorieswhich indicates whether directories other than /data and its children are allowed in the bag.
tarDirMustMatchNamewhich indicates whether the name of the unserialized bag must match the name of the serialized bag, minus the serialization extension. (That is, whether my_bag.tar must untar to my_bag, and my_bag.zip must unzip to my_bag.)
DART includes the attribute
baseProfileIdfor internal use, to know whether a user-created profile was based on an existing profile.
DART includes the
isBuiltInattribute to indicate that a profile was built in to the application (usually through a setup module or migration). These profiles cannot be deleted.
DART does not specify
DART BagIt profiles specify all tag requirements in a single list called
tagswhile the GitHub BagIt spec defines them as nested objects with arbitrary names. The single list of uniform objects in the DART model makes tag definitions easier to manipulate.
While tag definitions in the GitHub BagIt Profile spec include only the attributes
values, DART tag definitions include the following attributes:
id- A unique identifier in UUID format that DART uses internally. This allows users to edit tag definitions in the DART UI without the system losing track of which tag is being edited. The UUID is immutable while all other attributes are not.
tagFile- The name of the tag file that contains the tag. This is a path relative to the bag root. For example,
tagName- The name of the tag. For example,
required- A boolean indicating whether the tag is required.
values- An option list of legal values. If this list is present and a tag contains a value that's not in the list, the value and the bag are invalid.
defaultValue- A default value assigned by the user to the tag. DART's BagIt Profile editor allows users to specify default values to tags that will be consistent across bags. For example, users can define a default value to
Source-Organizationso they don't have to assign it repeatedly every time they create a new bag.
userValue- The value of a tag to be written into or read from a tag file. Users can specify a userValue that overrides the defaultValue when they create a bag. When reading a bag, DART assigns the actual value of a tag to what was read from the bag.
isBuiltIn- A boolean value indicating whether a tag definition is built in (as opposed to user-created). DART's BagIt Profile editor allows users to add custom tags to a published profile, such as the APTrust profile, while preventing them from deleting built-in tag definitions. Deleting a built-in tag definition such as
Source-Organizationwould lead to DART generating invalid bags.
help- Help text to describe the significance of the tag to the user. If present, the DART UI will display this message for the user's edification and delight.
DART includes the following built-in profiles. Note that the BagIt Profile editor allows you to clone and customize each of these, though customization is limited to adding tags and tag files, and setting default tag values.
APTrust - The standard APTrust BagIt profile.
BTR - The Beyond the Repository BagIt profile, which will be accepted by a number of distributed digital preservation repositories.
Empty Profile - A BagIt profile that defines the basic tags of the BagIt specification but does not require any of them. You can clone use this profile to create valid generic bags.
DART enables users to create new BagIt profiles from scratch, and to clone and modify existing profiles.