DfR Data Model

The "Containable" and "Deliverable" sub-model in the DCS Data Model may help inform the relations between concepts for this development. University of Illinois (Allan Renear) has reviewed these sub-models and verified them using Descriptive Logic. For our purposes we can equate Deliverable Unit to Fedora Digital Object and DataStream to Fedora DataStream. The DCS code is manufacturing FDOs implementing parts of this model. (To Do: Describe the code). One key separation of concern recognized by Akubra and the DCS is isolating bytestream (blob) appropriate container object functionality (e.g. DuraCloud Objects, Akubra Objects, File in a File System) from more rich representations (Fedora Digital Objects) but storing those richer representations back as bytestream container objects. Based on the Illinois work, we are solid ground here in with regards to computer science.

In the "Containable Model" we find the "File Stream (File in a File System)" and "Web Stream" as specialized forms of DataStream. DuraCloud Objects (DCO) are also kinds of DataStreams in the model. A DataStream is a container for ByteStreams that can have metadata. The ByteStream is the content, and it is intrinsically immutable and stands-alone. A ByteStream can be uploaded into any container (e.g. File) and it is still the same ByteStream. Any attempt to modify it results in a new ByteStream (note the checksum changes because of this). More about the model later, since this is just an introduction, but the result is that an FDO can contain one or more DataStreams each having a loose association (uses) with a ByteStream. The ByteStream may also be contained other containers outside Fedora. It could be a chain of other DataStreams (containers). As long as there is a way to refer to the DataStream as a DeliverableResource you obtain a representation of it, and extract the ByteStream. If the ByteStream is external to the FDO (the usual case) you generally have to resolve it and request delivery of a representation from some service (e.g. Akubra, LLStore, DuraCloud) providing (1) a representation of its version of the DataStream (optional), or (2) the ByteStream (required). Since it is a loose association, remote containers can exist independently from FDOs and so can the ByteStreams.

  • No labels