The Compound Solution pack module allows you to create what are called "compound objects." Compound objects function as "parent" objects that gather together one or more "child" objects. Child objects can be created with any other Islandora solution pack and have their own metadata. When you associate Islandora objects with a parent compound object, the parent-child relationship is recorded in the RELS-EXT structural metadata of the child objects (see bottom of page for sample RELS-EXT). Sequencing information can also be recorded in the RELS-EXT metadata so child objects can be displayed in their proper order. For example, a scanned postcard with a front and back view would have the following structure:
Parent object: Postcard Object (the compound object)
Child object: Scan of postcard front (large image object) - Order 1 of 2
Child object: Scan of postcard back (large image object) - Order 2 of 2
The "Compound" management tab allows for the addition, removal, and reordering of child objects from the parent compound object. Configuration options for the module are available through the Compound objects administrative menu (admin/islandora/solution_pack_config/compound_object)
This module requires the following modules/libraries:
This module has the following as optional requirements for certain features:
For Islandora Compound Object JAIL Display:
Install as usual, see this for further information.
Enable the Islandora compound object module (admin/modules). There are two block options for displaying compound objects within Islandora. Select one of the following:
If utilizing the lazy loading image ability of the solution pack, the JAIL library must be present within sites/all/libraries/JAIL.
Set the 'Child relationship predicate' and 'Solr filter query', as well as select options in Administration » Islandora » Solution pack configuration » Compound Object Solution Pack (admin/islandora/solution_pack_config/compound_object).
Optionally, enable the JAIL compound block to utilize the lazy loading image ability as outlined below.
To create a compound object:
Click "Save" when all the child objects are associated with the parent objects.
Once a child has been added to the compound, the view of the compound will use the metadata and thumbnail from the first object to render the main object view. To reorder objects, go to the parent object's Manage tab, select "Compound", and use the "Reorder" list. If you do reorder the child objects, be sure to click "Save changes" in the "Reorder" fieldset.
Child objects can be removed from parent objects from the parent object Manage >Compound tab. This removes the association from the RELS-EXT metadata but does not remove the child object from the repository.
The object view of a compound object is replaced by the view of its first child object. After a compound object is created, the "Islandora Compound Object Navigation" block must be activated and set in an appropriate region. When a user navigates to a compound object, this block will render a thumbnail view of all the additional objects linked via the compound object.
There are two block options for displaying compound objects within Islandora. The default "Islandora Compound Object Navigation" block will provide navigation controls and loading of all objects related to the parent compound. The other option "Islandora Compound Object JAIL Display," is a block utilizing the JAIL library which allows for "lazy loading" of images. This allows the block to load images only when they are being accessed, which will greatly increase performance on compound objects with many children. See the "Installation" section for more information about the two display options.
The "Islandora Compound Object Navigation" block can be themed. Use the hook: theme_islandora_compound_prev_next()
.
Previous versions of this module (Islandora 7.x-1.2 and earlier) had a different predicate in the RELS-EXT to associate child objects with parent objects. To update to the new compound object predicate, run the drush command `update_rels_predicate` from the command line. This will update the predicates of existing compound objects to `isConstituentOf`. This command accepts no arguments.
The Compound Solution Pack comes with the following Content Models:
A parent object created using the Compound Solution Pack's compoundCModel will have the following datastreams:
RELS-EXT | Default Fedora relationship metadata |
MODS | MODS record, created at time of ingest |
DC | Dublin Core record |
TN | Thumbnail image, created at time of ingest |
The Compound Solution Pack comes with the "Compound Object MODS form" for editing the MODS datastream (admin/islandora/xmlform).
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:fedora="info:fedora/fedora-system:def/relations-external#"
xmlns:fedora-model="info:fedora/fedora-system:def/model#" xmlns:islandora="http://islandora.ca/ontology/relsext#">
<rdf:Description rdf:about="info:fedora/islandora:3">
<fedora:isMemberOfCollection rdf:resource="info:fedora/islandora:compound_collection"></fedora:isMemberOfCollection>
<fedora-model:hasModel rdf:resource="info:fedora/islandora:compoundCModel"></fedora-model:hasModel>
</rdf:Description>
</rdf:RDF>
<rdf:RDF xmlns:fedora="info:fedora/fedora-system:def/relations-external#" xmlns:fedora-model="info:fedora/fedora-system:def/model#"
xmlns:islandora="http://islandora.ca/ontology/relsext#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about="info:fedora/islandora:2">
<fedora:isMemberOfCollection rdf:resource="info:fedora/islandora:sp_large_image_collection"></fedora:isMemberOfCollection>
<fedora-model:hasModel rdf:resource="info:fedora/islandora:sp_large_image_cmodel"></fedora-model:hasModel>
<fedora:isConstituentOf rdf:resource="info:fedora/islandora:3"></fedora:isConstituentOf>
<islandora:isSequenceNumberOfislandora_3>1</islandora:isSequenceNumberOfislandora_3>
</rdf:Description>
</rdf:RDF>
Having problems or solved a problem? Check out the Islandora google groups for a solution.