Wiki
Atomic Fedora model with METS disseminator
From TARDIS
There are two broad approaches to modelling complex objects in Fedora: one is to use a compound object model, where several related domain objects are represented using different datastreams in a single Fedora object; the other is to use an atomic model, where each domain object is represented as a separate Fedora object and these are linked using RELS-EXT datastreams.
Contents |
[edit] Compound object example
An example of a compound object can be seen at http://arrow.monash.edu.au/hdl/1959.1/5863. Note that there are several datastreams with a XTAL_DATASET_ prefix to represent the datasets of the experiment; these are mapped to separate descriptive elements in the oai_ds datastream instantiating http://tardis.edu.au/datasets.xsd. The oai_ds is used to "navigate" the components of the compound object.
[edit] Atomic model example
The diagram below shows an atomic model representing a similar Experiment related to two Dataset objects. The MODS datastream on the Experiment object includes general information such as the title of the experiment and its authors. For datasets, the MODS datastream currently only includes a title; there is also a TARDIS datastream that instantiates http://tardis.edu.au/datasets.xsd for a single dataset.
The rel:hasConstituent and rel:isConstituentOf properties are taken from the standard Fedora RELS-EXT ontology. Other properties are introduced for asserting the relationship between a dataset object and its datastreams (see tardis:hasDatasetFile and tardis:hasAncillaryFile). The following listing shows the RELS-EXT datastream for a dataset.
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rel="info:fedora/fedora-system:def/relations-external#"
xmlns:tardis="http://tardis.edu.au/terms#">
<rdf:Description rdf:about="info:fedora/tardis:2">
<rel:isConstituentOf rdf:resource="info:fedora/tardis:1"/>
<tardis:hasDatasetFile rdf:resource="info:fedora/tardis:2/de.tar.bz.0"/>
<tardis:hasDatasetFile rdf:resource="info:fedora/tardis:2/de.tar.bz.1"/>
</rdf:Description>
</rdf:RDF>
[edit] METS disseminator
On the TARDIS2 page there is an example METS encoding for experiments (also called 'investigations'). This encoding captures an Experiment and all of its Datasets, including descriptive metadata, dataset file locations, and a Structure Map denoting the object hierarchy. This METS encoding can be generated by a Fedora disseminator on the Experiment object in the atomic object model. The XSLT stylesheet linked below implements this by extracting relationship information from the RELS-EXT datastreams and bringing together the other datastreams and file locations to form a METS document.
Download the stylesheet: Fedora-mets-xsl.xsl
The disseminator uses the Saxon stylesheet-processing servlet packaged with Fedora, with the Saxon library it uses upgraded to a later version capable of handling XSLT 2.0. The stylesheet takes the DC datastream of the Experiment as its input, simply using this to obtain the PID for the object and subsequently obtaining object datastreams by using the fn:document($url) function with constructed REST addressed such as http://localhost:8080/fedora/get/tardis:2/MODS.
Note that this stylesheet is only a prototype and needs refinements such as not hardcoding http://localhost:8080/fedora as the server URI.
[edit] Trying this example
The only files necessary for trying this example are the Fedora objects themselves. These are available in Fedora-mets-xsl.tar.gz and can be imported using the Fedora Administrator utility (they are in FOXML archive format). Given that I have modified the Saxon servlet to use a later version of its library - which actually involved some bytecode hacking due to changed package names - it might not be so easy for others to try this. Looking at the Fedora objects in Fedora Administrator, though, will probably be informative in itself.

