Skip to content

Instantly share code, notes, and snippets.

@mstroming
Last active December 15, 2015 18:29
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mstroming/153b46eb5b28045baf9c to your computer and use it in GitHub Desktop.
Save mstroming/153b46eb5b28045baf9c to your computer and use it in GitHub Desktop.
Northwestern's Digital Image Library (DIL) collection building features
Features of user-generated groups:
- Generate new group (defaults to private access)
- See list of groups you have edit permissions for
- Drag image from search results to the collection you want to add it to
- Drag a collection onto another collection, making it a subcollection
- Expand a collection to see it's subcollections
- View the content of the collection (images and subcollections)
- Reorder the items within a collection
- Export the collection to Powerpoint
Screenshots:
http://imgur.com/NSlEHxJ,5sarg7k#0
http://imgur.com/NSlEHxJ,5sarg7k#1
Techincal implementation overview:
It was decided to persit our collection information in Fedora because these collections are considered
intellectual arrangements. Since we started with this app back in the Hydrangea days, we utilized the
existing MODS Om terminologies to store collection information. It might not be the best choice,
but we haven't gotten to changing it yet.
Our DILCollection Active-Fedora model:
https://gist.github.com/mstroming/78a3e020310f4cb81550
We store the general information about the collection (it's title and not it's members) in this datastream.
This is a candidate for re-design.
It's OM terminology is here:
https://gist.github.com/mstroming/74ff24e02fc464620647
The MODS XML is here:
https://gist.github.com/mstroming/130188be38b2699b0423
When a member is added to a collection, we update the RELS-EXT in the collection and the member objects
(hasImage, hasSubcollection, isMemberOf relationships) and modify the MODS Collection Members datastream.
Example Fedora RELS-EXT RDF for a Collection that has a Subcollection, is a Subcollection and has an Image:
<rdf:RDF>
<rdf:Description rdf:about="info:fedora/inu:dil-local-6c39174b-2ad3-499c-a25a-414f89bcc426">
<nulib-rel:hasImage rdf:resource="info:fedora/inu:dil-6ef3b0ac-6083-4027-89a3-139322c1c2a4"/>
<nulib-rel:hasSubcollection rdf:resource="info:fedora/inu:dil-local-279d372a-8dba-439d-bf76-ba4ce3380507"/>
<fedora-model:hasModel rdf:resource="info:fedora/afmodel:DILCollection"/>
<fedora-relations-model:isMemberOf rdf:resource="info:fedora/inu:dil-local-3b90783a-3001-4fdf-bc59-dea1fe4885a5"/>
</rdf:Description>
</rdf:RDF>
We also upate the MODS Collection Member datastream which maintains the order and allows duplicates. The Fedora
RELS-EXT does not do either.
Information about the members of the collections is in the MODS Collection Members datastream.
The OM terminology is here:
https://gist.github.com/mstroming/74ff24e02fc464620647
The MODS Collection Member XML is here:
https://gist.github.com/mstroming/8b42d3d0139d26f3e274
The Export to Powerpoint drops an XML JMS message to a Apache ActiveMQ JMS listener, routed using Apache Camel.
The Powerpoint is generate using the Apache POI Java library.
The DILCollection controller code is here:
https://gist.github.com/mstroming/e7b8d061febf3f6e492a
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment