Bug #5513


add support for DOI identifiers from EZID

Added by Matt Jones over 12 years ago. Updated about 11 years ago.

Target version:
Start date:
Due date:
% Done:


Estimated time:


DOI identifiers can be created through the EZID service run by the California Digital Library. See:

We should support the assignment of DOI identifiers for objects stored in Metacat. The current changes supporting arbitrary identifier formats in Metacat for the DataONE release should be sufficient for actually tracking the identifiers. But we also need to be able to register the identifiers with a DOI service when they are created locally. To do this, we need to decide on the appropriate model for how Metacat interacts with this service -- e.g., should we support automatic creation of DOIs for all objects as they are created? Or should we force people to use 'reserveIdentifier() with a DOI to create a DOI that they can then use to create their object. Another issue is whether we should create DOIs for all existing objects in the KNB or not.

Related issues

Blocked by Morpho - Bug #5799: publish using DOI featureNewJing Tao01/22/2013

Actions #1

Updated by Matt Jones over 12 years ago

I've managed to get UCSB to agree to pay for an EZID account from CDL that we'll be able to use to programatically assign DOIs in DataCite. I'll be getting account details soon.

Actions #2

Updated by Matt Jones over 12 years ago

I created a new library called 'ezid' in its own project that can be used to access the EZID REST services from within Java client applications. This allows for simple method calls such as login(), createIdentifier(), mintIdentifier(), and setMetadata() to be used in applications. This is working with the EZID "apitest" testing account. We need to wait for our account to be created to make further progress on this task. Next steps are to include the built jar library in Metacat, and then use it within Metacat to create identifiers at the appropriate places.

The SVN URL for the new library is:
Actions #3

Updated by Matt Jones over 12 years ago

Decisions from our (M Jones, Leinfleder, C Jones) recent discussion about incorporation of DOI identifier services into Metacat for the 2.0.0 release.

-- For content present on upgrade to 2.0.0
-- Content originating on replicating nodes: do nothing, those nodes set GUIDs & LocalId
-- Content originating on this Metacat
-- if (EZID is configured)
-- assign new DOI & register it, associate with LocalID
-- update all sytem metadata and access tables
-- otherwise, GUID = LocalId

-- For new content after upgrade
-- From DataONE service API (create, update)
-- Do nothing except generate shadow LocalID (DataONE uses GUIDs, clients should provide the right one, including DOIs)
-- From Metacat servlet API
-- if (EZID is configured)
-- reserve GUID, assign GUID on insert() & update() & upload() (but not replicate), register it with EZID
-- otherwise, GUID = LocalId

Actions #4

Updated by ben leinfelder about 11 years ago

We still haven't done everything in that "decision" list -- should also revisit it.

Actions #5

Updated by ben leinfelder about 11 years ago

Current status (3/13/2013):
-DOIs are minted using configured account/shoulder using MN.generateIdentifier(). EZID has these marked as "reserved"
-DOI registration is updated when object is inserted or updated, e.g., MN.create()/MN.update()

No DOIs are generated when legacy Metacat API is used for insert/update.

TODO: determine rules for including Title and Creator and where to get those values from:
-creator as SystemMetadata.rightsHolder?
-harvest Title from EML when available?

Actions #6

Updated by ben leinfelder about 11 years ago

Now using Title from EML (dataset/title element) for those objects.
Looking up full name from CN using the SM.rightsHolder subject as the Creator.

Actions #7

Updated by Redmine Admin about 11 years ago

Original Bugzilla ID was 5513


Also available in: Atom PDF