EPrints Technical Mailing List Archive

See the EPrints wiki for instructions on how to join this mailing list and related information.

Message: #00682


< Previous (by date) | Next (by date) > | < Previous (in thread) | Next (in thread) > | Messages - Most Recent First | Threads - Most Recent First

[EP-tech] Re: datacite, DOI


On Wed, 2012-06-06 at 12:07 +0200, raffaele messuti wrote:
> Dears,
> i'm thinking of an eprints plugin for automatic mint of DOI
> identifiers using the datacite provider.
> Datacite[1] offer (for his members) an http api[2] for generation of
> DOI identifiers.
> 
> The workflow has two steps:
> (a) generate the DOI for an URL[3]
> (b) send metadata[4] in xml[5] for the previously generated identifier
> 
> the (a) should be easy, with a synchronous call:
> i'm thinking to add a boolean and a text field to eprints.
> the boolean fields is showed somewhere in the workflow, if checked
> eprints_fields_automatic.pl will trigger the call to the api, and save
> the returned
> DOI. at this point the identifier is usable and resolvable
> (http://dx.doi.org/DOI)
> 
> this code is reusable:
> https://github.com/datacite/mds/blob/master/client/perl/mds-suite.pl
> 
> the (b) step, even if is not mandatory, will require to export the
> metadata in the datacite schema
> and store[4] for the identifier.
> This activity could slow the edit interface if made with a synchronous call,
> how do you suggest to do?
> 
> the Event plugin could be a solution?
> http://wiki.eprints.org/w/API:EPrints/Plugin/Event
> 
> Is yet developed something similar?
> 
> 
> [1] http://www.datacite.org
> [2] https://mds.datacite.org/static/apidoc
> [3] https://mds.datacite.org/static/apidoc#tocAnchor-14
> [4] https://mds.datacite.org/static/apidoc#tocAnchor-17
> [5] http://schema.datacite.org/

I suspect you only want to update the DOI metadata for live eprint items
and you may want to only create a DOI when the item goes live
(eprint_status_changed).

Either way, creating an event should be easy:

EPrints::DataObj::EventQueue->create_unique(
	$session,
	{
		pluginid => "Event::DataCite",
		action => "update_metadata",
		params => [$eprint->internal_uri],
	}
);

Then update_metadata() will be called on your Event::DataCite plugin by
the indexer process with the eprint object as its only argument.

-- 
All the best,
Tim

Attachment: signature.asc
Description: This is a digitally signed message part