What does PCDM bring to the table for Hydra adopters?
PCDM provides a consistent baseline for modeling data: specifically files, works (objects), and collections. The intent is to make it easier to share code between Hydra applications that may have very different content types, as long as PCDM is used as the data model foundation.
Is there a plan to have a reference implementation of a Hydra head implementing PCDM?
Sufia will be the best example of what a newly installed Hydra application that implements PCDM will look like. Note that the Sufia code in Github is not a working Hydra application itself, but more of an application generator. So you will have to follow the installation instructions on Sufia's homepage to get a working Hydra application to use as a reference implementation.
If you are looking for a reference implementation as code that you can browse in Github (or elsewhere), there is nothing like that to date. Any such implementation is likely to come from a partner organization who has adopted a version of Hydra that uses PCDM. Use the Hydra community's communication channels to stay up to date on the progress of partner organizations.
How would I refactor my existing Hydra models to use PCDM?
This answer is likely to be different for nearly every Hydra application. Since there were hardly any guidelines for modeling data in Hydra applications prior to PCDM, each institution's implementation varies from the next, often in incompatible ways. (Note that this is the very problem PCDM trying to solve).
If you currently have a Sufia implementation, and wish to upgrade to a version using PCDM, the Sufia team does plan to have an upgrade guide.
If you wish to adapt an existing Hydra head that is not Sufia, then a basic outline of the refactoring process may look something like this:
- Identify the behaviors of your exsiting models, and match them to behaviors offered by PCDM classes and modules. This will involve becoming familiar with how PCDM components are organized, and how they fit together.
- Replace your existing model behaviors with those offered by PCDM. This will generally involve removing your own code, and including (or extending) the PCDM module (or class) that is appropriate to fulfill the behavior.
- For features that depend on your model behaviors, make any necessary adjustments to ensure those features still work using PCDM.
Note that without good test coverage already in place for your app, a successful refactor could prove to be extremely challenging.
Will it be possible to keep my existing Hydra head up to date without implementing PCDM?
Yes. PCDM will not be required by the core Hydra gems, and you can continue to maintain a Hydra head without implementing PCDM.
However, there is currently a lot of energy going into the PCDM-based stack, and at this time, it appears that new features that involve interacting with the data model layer will be written assuming a PCDM foundation. If you choose to implement (or maintain) a Hydra head with a non-PCDM-based data model layer, it may be very difficult to incorporate new features that come out of community efforts.
Is there a tutorial for PCDM or Hydra Works?
There is Dive into Hydra-Works tutorial which takes you through the basics of building models with Hydra-Works which is an extension of PCDM. There is also the Dive into Curation Concerns tutorial that walks through adding a field to a stock Curation Concerns app.
PCDM is implemented in Hydra as a new stack of gems:
- ActiveFedora: still the foundation of the Hydra stack
- Hydra::PCDM: adds basic PCDM models usable in any Ruby application
- Hydra::Works: adds a toolkit of repository functionality, such as performing file characterization and generating derivatives
- CurationConcerns: a Rails engine that provides a basic working application
- Sufia 7: now built on top of CurationConcerns, provides social features, self-deposit and proxy-deposit workflows
NOTE: The documents linked to below are working documents, subject to change at any time.
CurationEngine & CurationConcerns: Breaking up Sufia, Worthwhile, Hydra::Works, etc. – An outline of the process of implementing PCDM in Hydra, and breaking up existing functionality across new gems.
Code Shredding: Sufia and Hydra-Works – A spreadsheet that describes where existing code will be refactored to, and which modules it will be mixed in to (i.e. with Ruby's
Sufia - Worthwhile Alignment Factors – Spreadsheet that lists features from Sufia and Worthwhile, with suggestions and discussion on where the functionality should be implemented in the new Hydra gems.
Hydra::Works PCDM Diagram – Boxes and arrows showing how PCDM defines relationships between models in Hydra::Works.
Hydra::PCDM Files in the RDF graph – Boxes and arrows showing how files are modeled with PCDM, including which RDF types and properties are used.
CurationConcerns in Worthwhile and in Hydra::CurationConcerns - Slides explaining how CurationConcerns work in Worthwhile, and how we might like them to work in Hydra::CurationConcerns.
Sufia Wiki Home – Where to find the latest activity re: Sufia sprints
Hydra Works (github repo) – Code for the hydra-works gem.
Hydra PCDM (github repo) – Code for the hydra-pcdm gem.
Technical Metadata Application Profile – A draft baseline application profile for technical metadata properties attached to binary objects in a repository.
hydra-pesketti – Figure which depicts the dependency relationships of the Hydra PCDM family of gems.