Size: 10287
Comment:
|
Size: 2095
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
= DO NOT PANIC = | |
Line 2: | Line 3: |
In the following these shorthands will refer to the following namespaces * rdf - http://www.w3.org/1999/02/22-rdf-syntax-ns# * rdfs - http://www.w3.org/2000/01/rdf-schema# * owl - http://www.w3.org/2002/07/owl# * fedora-model - info:fedora/fedora-system:def/model# * doms-relations - http://doms.statsbiblioteket.dk/relations/default/0/1/# * doms - Standard prefix for PIDs. It is not a namespace = Extensions for Fedora = [[ImageLink(http://merkur/viewvc/trunk/docs/datamodel/fig/DOMSBaseCollection.png?root=doms&view=co,alt=DOMS base collection,width=1024)]] |
'''A definition: A datamodel describes the content of a collection. A content model describes the content of a data object. So, a data model is a set of content models, that together describe the collection.''' |
Line 21: | Line 7: |
The entire DOMS datamodel is, in its entirety, a complex system. For proper understanding, the various components have been detailed in seperate documents. Firstly, it consist of a number of extension to the Fedora system. Secondly, it consist of a number of predefined objects. These objects make use of the extensions to Fedora. Thirdly, it consist of a number of policies for how certain tasks are achived. And fourthly, it consist of a number of API interfaces. | |
Line 22: | Line 9: |
== DOMS Content Models == Fedora provides a repository for digital objects. All objects in the repository can, in principle, be unique, but Fedora provides a way of specifying that an object has a given type. Unfortunately, the type-definitions in Fedora, called Content Models, are rather simplistic by default. We use them as the basis of our type system, with certain enhancements. For our purposes, there are two kinds of digital objects in Fedora * Data objects * Content Model objects The Content Model object, as used in DOMS, describes the compulsary and legal content of an object of this type. It contains the information nessesary to verify if the given object is indeed of this type. For more detail on this, see FedoraOntology and FedoraTypeChecking A data object can specify the Content Model describing its contents, via a fedora-model:hasModel relation, and in DOMS we require it to be present. A data object will be said to "subcribe" to a Content Model. Content Model inheritance, as specified in FedoraOntology, will be used. === Inheritance === The special Content Model object "doms:!ContentModel_DOMS" is the root object. All Content Models must have an "doms-relations:extendsModel" relation to this object, possibly through a number of other Content Models. The complete description of a data object is defined as the set of the descriptions in the Content Model specified with "fedora-model:hasModel" and all Content Models that can be reached from this, by following "doms-relations:extendsModel" relations. A Content Model can "extend" more than one other Content Model. There is no overriding of Content Models, a subscribing object must be valid in regards to all the Content Models in the inheritance tree. |
Fedora and DOMS are big on namespaces. To ease writing the documentation, a namespace document, DomsNameSpaces, have been written. All namespaces should be defined there, and all shorthand refer to the namespaces defined therein. |
Line 41: | Line 12: |
== Fedora extensions == * FedoraOntology - Detailing the Ontology lanquage * FedoraTypeChecking - Detailing the extensions to the DS-COMPOSITE stream * FedoraViewBlobs - Detailing the View system, which allows you to view many objects as one * FedoraObjectTemplates - Detailing the prototype system for content models * FedoraLicensePolicies - Detailing the License system, and how it interacts with the Search system * FedoraTransactionsReplacement - Detailing the use of the STATE datastream to allow for some transaction-like processes |
|
Line 42: | Line 20: |
=== Schema Objects === | == Predefined objects == * DomsPredefinedObjects - The predefined content models and other objects in the doms system |
Line 44: | Line 23: |
Many of the schemas used in DOMS need to be referenced many times. To avoid duplication, we have made objects containing only schemas, subcribing to the Content Model "doms:ContentModel_Schema". The describing datastream in a schemabinding might contain the schema directly, or it might contain the URL to the datastream that does. Either way, it should be invisible to programs accessing the datastream through the API. | == Doms policies == * DomsFileHandling - Detailing how we expect to handle file objects in Fedora. * DomsCollections - Detailing the use of collection objects in DOMS * DomsAuditTrail - Detailing how DOMS logs changes and new versions |
Line 46: | Line 28: |
== DOMS Base Collection == Doms come shipped with a base collection of objects, representing the base types. The objects in the base collection will be detailed in the following. Shorthand: * myObject.myDatastream means the Datastream myDatastream in the Object myObject. * $variable introduces a variable. === ContentModel_DOMS === ContentModel_DOMS is the root of the content model inheritance tree. All content models derive from this model. As all data objects in DOMS must have a content model, all data objects must adhere to the restrictions defined in this content model. The following variables are used: * $Title: A human readable title * $PID: A generated PID for this object * $!ContentModel: The content model for this object, must derive from !ContentModel_DOMS * $Collection: The collection that this object belongs to. An object with a Content Model that derives from !ContentModel_Collection * $!LicenseObject: The License object that govern access to this object. An object with a Content Model that derives from !ContentModel_License Requirements for objects described by !ContentModel_DOMS * Datastreams * DC: Fedora required datastream with the [http://dublincore.org/schemas/xmls/qdc/dc.xsd Dublin Core schema]. * dc:title = $Title * RELS-EXT: Fedora controlled relations between objects. * oai:itemID = $PID (only required on harvested objects) * fedora-model:hasModel -> $!ContentModel * doms:hasLicense -> $LicenseObject * doms:isPartOfCollection -> $Collection * AUDIT: Fedoracontrolled audit trail * STATE: The state of the object, (Values = draft | intermediate | published) * POLICY Fedoracontrolled datastream describing the rights and restrictions on this object * !ContentLocation URL = $!LicenseObject.LICENCE === ContentModel_File === Extends ContentModel_DOMS In DOMS, we have found it beneficial to separate the abstract concept of "Image" or "Audio" from the concrete implementations such as "jpeg" and "mp3". The metadata about the image will be relevant no matter the manifestation of the image, and as such should not reside along with the technical metadata about the manifestation. To support this separation, we have introduced the concept of File objects. A File object is an object, that contain a link to the file (in Bitstorage), and the technical metadata about this file. Only File objects are allowed to reference a file in Bitstorage. File objects must all have a Content Model that extends !ContentModel_File. The following variables are used: * $OrigFile: An object with the Content Model that derives from !ContentModel_File; Requirements for objects described by !ContentModel_File * ObjectProperties * External Properties * http://doms.statsbiblioteket.dk/extproperties/#pronomID : The pronom ID of the file * Datastreams * RELS-EXT * (optional) doms:hasOriginal -> $OrigFile * CHARACTERISATION: The output of the characterisation tools. Schema attachment:Characterisation.xsd * CONTENTS: Datastream containing the file * !ContentLocation URL = The file in Bitstorage * ORIGIN: Metadata about the creation of the file, in the Premis [http://www.loc.gov/standards/premis/v1/Event-v1-1.xsd schema] The characterisation datastream could look like this. {{{ <?xml version="1.0" encoding="UTF-8"?> <char:characterisation xsi:schemaLocation="http://doms.statsbiblioteket.dk/types/characterisation/0/1/# http://developer.statsbiblioteket.dk/DOMS/types/characterisation/0/1/characterisation/characterisation-0-1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:char="http://developer.statsbiblioteket.dk/DOMS/types/characterisation/0/1/#" xmlns:jhove=""> <char:characterisationRun> <char:tool>JHove</char:tool> <char:output> <jhove:...> </jhove:...> </char:output> </char:characterisationRun> </char:characterisation> }}} === ContentModel_ImagePreservationFile === Extends ContentModel_File Requirements for objects described by !ContentModel_ImagePreservationFile * Datastreams * PRONOMID: must be "fmt/10" (tiff version 6) === ContentModel_TextPreservationFile === Extends ContentModel_File Requirements for objects described by !ContentModel_TextPreservationFile * Datastreams * PRONOMID: must be "x-fmt/16" (Utf8) or "fmt/95" (pdf-a) === ContentModel_VideoPreservationFile === Extends ContentModel_File Requirements for objects described by !ContentModel_VideoPreservationFile * Datastreams * PRONOMID: must be "x-fmt/385" (mpeg1) or "x-fmt/386" (mpeg2) === ContentModel_AudioPreservationFile === Extends ContentModel_File Requirements for objects described by !ContentModel_AudioPreservationFile * Datastreams * PRONOMID: must be "fmt/2" (Bwf version 1) or "fmt/6" (wav) === ContentModel_Image === Extends ContentModel_DOMS The following variables are used: * $ImageFile: An object with the Content Model !ContentModel_!ImagePreservationFile Requirements for objects described by !ContentModel_Image * Datastreams * RELS-EXT * doms:hasPreservationFile -> $ImageFile === ContentModel_Audio === Extends ContentModel_DOMS The following variables are used: * $AudioFile: An object with the Content Model !ContentModel_AudioPreservationFile; Requirements for objects described by !ContentModel_Audio * Datastreams * RELS-EXT: * doms:hasPreservationFile -> $AudioFile === ContentModel_Video === Extends ContentModel_DOMS The following variables are used: * $VideoFile: An object with the Content Model !ContentModel_VideoPreservationFile; Requirements for objects described by !ContentModel_Video * Datastreams * RELS-EXT: * doms:hasPreservationFile -> $VideoFile === ContentModel_Text === Extends ContentModel_DOMS The following variables are used: * $TextFile: An object with the Content Model !ContentModel_TextPreservationFile; Requirements for objects described by !ContentModel_Text * Datastreams * RELS-EXT: * doms:hasPreservationFile -> $TextFile === ContentModel_License === Extends ContentModel_DOMS Requirements for objects described by !ContentModel_License * Datastreams * LICENCE: XACML describing the license. [http://www.oasis-open.org/committees/download.php/915/cs-xacml-schema-policy-01.xsd Schema] * DC: The DC datastream (probably the description field) is used to describe the human readable version of the license === ContentModel_Schema === Extends ContentModel_DOMS Requirements for objects described by !ContentModel_Schema * Datastreams * SCHEMA: The xsd schema inlined. === ContentModel_Collection === Extends ContentModel_DOMS Requirements for objects described by !ContentModel_Collection: None == Technical Metadata == A file object should contain technical metadata. In this context it refers * A datastream with the output of the characterisation tools used on this file upon ingest, called CHARACTERISATION * A datastream with the metadata about the origins of the file, called Origin In addition, it must have a relation "hasOriginal" if it was migrated from another file that exists in DOMS. |
== API documentation == * Refer to the overall [Documentation] page |
DO NOT PANIC
A definition: A datamodel describes the content of a collection. A content model describes the content of a data object. So, a data model is a set of content models, that together describe the collection.
The DOMS datamodel describes how the Type system underlying DOMS is realised in Fedora 3. The figure above will serve as a guide through the following sections.
The entire DOMS datamodel is, in its entirety, a complex system. For proper understanding, the various components have been detailed in seperate documents. Firstly, it consist of a number of extension to the Fedora system. Secondly, it consist of a number of predefined objects. These objects make use of the extensions to Fedora. Thirdly, it consist of a number of policies for how certain tasks are achived. And fourthly, it consist of a number of API interfaces.
Fedora and DOMS are big on namespaces. To ease writing the documentation, a namespace document, DomsNameSpaces, have been written. All namespaces should be defined there, and all shorthand refer to the namespaces defined therein.
Fedora extensions
FedoraOntology - Detailing the Ontology lanquage
FedoraTypeChecking - Detailing the extensions to the DS-COMPOSITE stream
FedoraViewBlobs - Detailing the View system, which allows you to view many objects as one
FedoraObjectTemplates - Detailing the prototype system for content models
FedoraLicensePolicies - Detailing the License system, and how it interacts with the Search system
FedoraTransactionsReplacement - Detailing the use of the STATE datastream to allow for some transaction-like processes
Predefined objects
DomsPredefinedObjects - The predefined content models and other objects in the doms system
Doms policies
DomsFileHandling - Detailing how we expect to handle file objects in Fedora.
DomsCollections - Detailing the use of collection objects in DOMS
DomsAuditTrail - Detailing how DOMS logs changes and new versions
API documentation
- Refer to the overall [Documentation] page