Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Reworded Overview, added new image and options, and described the new delete cascade.

Table of Contents
maxLevel2

Overview

The Compound Solution pack module Pack 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 structuredefine Parent-Child relationships between Islandora objects. It can be used to allow easy navigation between "ordered sets" of objects that are related because they share a parent. "Parent" objects may have the Compound Object content model, or (optionally) any content model. "Child" objects may have any content model. The parent-child relationship is recorded as a (configurable) predicate in the RELS-EXT datastream of the child objects, along with an ordering which uses a predicate unique to the parent object.

Navigation is provided through one of two blocks which must be placed in a region under Structure > Blocks.

Objects can be added, removed, and reordered from the parent object's Manage > Compound tab.

Example use cases:

Parent object: Postcard Object (the compound object, using the Compound content model)

  • 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

...

Parent object: Slides of a presentation (PDF content model)

  • Child object: Video of the presentation (video content model)

Dependencies

This module requires the following modules/libraries:


This module has the following as optional requirements for certain features:

For Islandora Compound Object JAIL (Jquery Asynchronous Image Loader) Display:

  • JAIL library
    • If utilizing the lazy loading image ability of the solution pack, enable the "Islandora Compound Object JAIL Display" block and ensure the JAIL library is present within sites/all/libraries/JAIL.

Downloads

Release Notes and Downloads

Installation

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 Navigation between members of a compound object requires one of the following two blocks to be placed:

  • The first is the default "Islandora Compound Object Navigation" block. Go to admin/structure/block/manage/islandora_compound_object/compound_navigation/configure to find navigation controls and load all objects related to the parent compound. 
  • The second is the "Islandora Compound Object JAIL Display" block. Go to admin/structure/block/manage/islandora_compound_object/compound_jail_display/configure to use This uses 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 compounds with many children. 

If utilizing using the lazy loading image ability of the solution packoption, the JAIL library must be present within sites/all/libraries/JAIL, and the "Use alternative autoloading display for compounds" configuration toggle must be enabled.

Configuration

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).

  1. Only allow compound objects to have child objects associated with them.
    • Checked: you can only add child objects to Islandora objects with the "Compound Solution Pack" type. [With this option checked, whenever you delete a Compound Object, Islandora will not delete the child object(s). It only removes the relationship predicate from the child objects.]
    • Unchecked: all objects can have child objects. [Caution: If you uncheck this option,
Warning

If all objects can have child objects, then:

  • you run the risk of having orphan child objects if you ever delete a "parent" object that does not use the compoundCModel Content Model. This is because Islandora does not remove the relationship predicates from child objects if the parent wasn't a

...

  • "Compound Object."

...

  • Be careful with "Generate a thumbnail for compound objects with their first child" because it will replace the parent object's existing thumbnail when a child is added or re-ordered.
  1. Generate a thumbnail for compound objects from their first child.
    • Checked: A thumbnail will be generated and When the first child is added or changed through removal/reordering, the thumbnail of the first child will be attached to the compound object parent as a TN datastream. Note: this will overwrite an existing thumbnail, and will occur even if the parent is not a Compound CModel object.
    • Unchecked: No thumbnail is generated and a system default thumbnail will display.
  2. Hide child objects in RI results
    • Checked: Child objects will not be displayed in the Islandora browse. Only parent objects will display.
    • Unchecked: Child objects and parent objects will be displayed in the Islandora browse.
  3. Hide child objects in Solr results
    1. Checked: Child objects will not be displayed in Solr search results. Only parent objects will display.
    2. Unchecked: Child objects and parent objects will be displayed in the Islandora search.
  4. Solr Filter Query
    • This is the query that enables the "Hide child objects in Solr results" function. The default value is `-RELS_EXT_isConstituentOf_uri_mt:[* TO *]`
  5. Child relationship predicate
    • This is the statement in the RELS-EXT metadata that associates child objects with parent objects. The default value is `isConstituentOf`
  6. Use alternative, autoloading display for compounds?
    • Checked: Enables the The "Islandora Compound Object JAIL display" block will be populated (dependencies and blocks also need to be configured. See the documentation for "Installation" and "Display" for more information.)
    • Unchecked: The default display will be used"Islandora Compound Object Navigation" block will be populated (block also needs to be configured. See documentation for "installation" and "display" for more information.)
  7. Use Derivative hooks for parent thumbnail updates?
    • Checked: If the parent object is a Compound CModel, then changes to the TN of the first child will cause the TN of the parent to be updated. This is independent of the "Generate a thumbnail for compound objects from their first child" and will occur even if that option is turned off.
    • Unchecked: Changes to the first child of a Compound CModel object do not change the parent's TN.
  8. Display compound object parents in the breadcrumbs on children objects
    • Checked: The parent object will appear in the breadcrumb navigation.
    • Unchecked: The parent object will not appear in the breadcrumb navigation. If child objects are members of other collections, those paths will be shown in the breadcrumbs.
  9. Compound Member Query
    • SPARQL - Does a SPARQL query with filters. Generally faster than the default option.

Optionally, enable the JAIL compound block to utilize the lazy loading image ability as outlined below.


Image RemovedImage Added


Usage

...


  1. Create a

...

  1. designated Parent object

...

  1. Go
  2. Add existing children to parent collection.
  3. Click "Manage".
  4. Enable the "Compound Object" object under "Collection" tab, then click "Update Collection Policy".
  5. After adding compound objects to your Collection Policy, you will be able to click the "Overview" tab and "Add an Object".
  6. Select "Islandora Compound Object Content Model" then "Next".
  7. Select your metadata form, such as the "Compound Object MODS form", then "Next". [If prompted for a MARCXML file, choose that file if you have one. If you do not have one, just click "Next."]
  8. Fill in your metadata form then click "Next".
    • Compound objects do not have content datastreams. This process creates a "parent" compound object that child objects can be associated with. The content is attached to the child objects.
  9. After the compound object has been created, go to the parent under the parent object's "Manage" > "Compound" to associate objects with the parent compound objecttab.
    • Child objects must already exist in your repository before you can add them.
  10. Under the "Add Child Object" field, enter the PID for each object to be added to the compound object.
    • Child objects can only be added one at a time. The "Child Object Pid/Label" box has an autocomplete function that searches for objects by label or PID.
  11. 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 and if the child has no other parent compound or collection objects, will delete the child object from the repository.

Display

as well.

Warning
titleNew in 7.x-1.12

As of 7.x-1.12, deleting a parent compound object will also delete the child objects if they have no other parents (either compound parents or collection parents).

Display

If the parent object has the Compound content model, then its default view will present the "landing page" of its first child 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.

Block options

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.

Compound Object Solution Pack BlocksImage Modified

Theme

The "Islandora Compound Object Navigation" block can be themed. Use the hook: theme_islandora_compound_prev_next().

Correcting out-of-date child object relationships

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.

Content Models, Prescribed Datastreams and Forms

The Compound Solution Pack comes with the following Content Models:

  • Islandora Compound Object Content Model (islandora:compoundCModel)
  • Compound Collection (islandora:compound_collection)

A parent object created using the Compound Solution Pack's compoundCModel will have the following datastreams:

RELS-EXT

Default Fedora relationship metadata

MODSMODS record, created at time of ingest
DCDublin 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).

Sample RELS-EXT for Parent Object (Compound Object)

  
<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>

Sample RELS-EXT for Child Object (Large Image Object)

<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>

Troubleshooting/Issues

Having problems or solved a problem? Check out the Islandora google groups for a solution.