Hi Jordan,

I move this to dspace-devel as it may be of interest for other developers as 
well.

> -----Original Message-----
> From: jordan.pisc...@gmail.com [mailto:jordan.pisc...@gmail.com] On
> Behalf Of Jordan Pišcanc
> Sent: Wednesday, May 21, 2014 10:36 AM
> To: Becker, Pascal-Nicolas
> Subject: Re: Dspace DOI-Datacite: what about already published ITEM?
> 
> 2014-05-20 18:49 GMT+02:00 Becker, Pascal-Nicolas <p.becker@tu-
> berlin.de>:
> > Hi Jordan,
> > just a short answer as I'm quite in a hurry.
> 
> Hei..don't worry. I'm also in the same situation :( Thank you anyway for the
> answer! :)
> 
> 
> > Please take a look at the Identifier Service
> > (org.dspace.identifier.IdentifierService in dspace-api, [1]). It manages 
> > when
> > a DOI should be generated, reserved and registered. Currently a DOI gets
> >generate for every new Item that gets archived.
> OK: I will look deeper in the IdentifierService
> 
> > Currently there is no code that makes it possible to select whether an Item
> > should get a DOI or not or which DOI-Prefix should be used. It is a great 
> > idea
> > to enhance the IdentifierService as there are >much features I misses as
> > well, g.e. it should be possible to specify an existing DOI instead of 
> > always
> > creating a new one automatically.
> 
> > For another feature I already created a ticket [2], but I did not had the 
> > time
> > to do anything to change it. Please notice that I have a PR waiting to 
> > change
> > the IdentifierService slightly [3].
> OK: I will look the tickets...
> 
> 
> > Currently there is no possibly to generate, reserve and register DOIs for
> > existing Items. But it shouldn't be too hard to extend the DOI-Organiser to 
> > do
> > it.
> I have understand that ..but let me say that I have some strange behaviour
> and in your DOI table some ITEM were marked to be UPDATED but before no
> DOI was Reserverd or Registerd.
> 
> So one first question is:
> You store the DOI data in the DOI table or there are other tables od the DB
> involved?!

Reserving a DOI at DataCite is the same as updating: both methods send the 
Metadata of an Item. In the DataCite API there is absolutely no difference 
between an update and a reservation. Inside the DOI table we have 9 different 
states for DOIs. All states are defined as static final Integer in 
org.dspace.identifier.DOIidentifierProvider. To make it simpler for the most 
users we show only the actions (update, reserve, registration) that follows 
from the state of a DOI in the DOI-Organiser. The states encodes the necessary 
action and the following state after the method was performed. When a new Item 
gets archived the Identifier Service triggers the reservation and registration 
of the DOI. Then DSpace fires an update event. If I remember correctly the DOI 
should then get the state 7 "update before registration" in the DOI table. We 
did it this way, cause we wanted to implement the API of an IdentifierProvider 
correctly. If the IdentifierService gets changed in a way that it reserves a 
DOI whenever a new Item is created and register it when the Item gets archived, 
then an Item could change between reservation and registration and an update 
would get necessary before the DOI gets registered. I know that it looks a 
little bit confusing when the doi-organiser marks a DOI for an update that 
should be reserved, but that’s the reason behind it.

> If I have to "restart" with the DOI registration i have to DELETE the rows in 
> the
> table directyl in the DB? I know this is a "dirty" method.. but only to
> understand..
If a DOI gets registered it is stored in the DOI table and as metadata in the 
Item. As a DOI is a persistent Identifier, it should never be deleted. 
Nevertheless if something went wrong and you have to keep the Items and remove 
or change the DOIs you have to remove the DOIs from the DOI table and out of 
the metadata (currently it is stored as dc.identifier.uri in the form 
http://dx.doi.org/<doi>). If you only used a wrong prefix, it might be a better 
idea to change the DOIs in the DOI table and in the metadata an set their 
states to 1 "to be registered". If a DOI is marked for registration but not 
reserved, the DOI-Organiser should reserve it automatically.

> And let me say that a "quick&dirty" method for registering new DOI for
> already archived ITEMS could be INSERTING "manualy" in the DOI table the
> "desired" DOI with status=1 ?!
> Then invoke the DOI-organiser ?!
I would add a method to the DOI-Organiser that takes a handle or the ID of an 
Item. This method loads the specified Item and checks whether a DOI is reserved 
for this item already (to do so you can use the method lookup or look in the 
doi table, which actually is the same). If there is no DOI, it would call the 
methods mint, reserve and register (of cause all methods are in the 
DOIIdentifierProvider) and print the DOI that was reserved. These methods 
generates a DOI and marks it for reservation and registration. It's up to you 
if the method starts the registration and reservation directly or if you have 
to start the doi-identifier again. Another idea would be that the method is 
capable of handling multiple handles/item ids at once, not only one. If you 
implement such a method, it would be great, if you would contribute it to 
DSpace (make a ticket in jira and a pull request on github).

It's been some time, since I wrote or read the DOI-Code. So all this is on 
behalf, that I remember correctly. Please take a look into the code yourself, 
backup your data and think about testing your changes in a test installation.

Regards,
  Pascal

> > Sorry, that I don't have the time to give you more information quite now.
> Please don't hesitate to contact me again, if you have further
> ideas/questions or maybe a solution to one of the open toppics.
> Don't worry!
> It's nice to have this first contact with you Thanks Jordan
> > [1] 
> > https://wiki.duraspace.org/display/DSDOC4x/Item+Level+Versioning#ItemLevelVersioning-IdentifierService
> > [2] https://jira.duraspace.org/browse/DS-1705
> > [3] https://jira.duraspace.org/browse/DS-1990 and
> > https://github.com/DSpace/DSpace/pull/537
> >
> >
> >> -----Original Message-----
> >> From: jordan.pisc...@gmail.com [mailto:jordan.pisc...@gmail.com] On
> >> Behalf Of Jordan Pišcanc
> >> Sent: Tuesday, May 20, 2014 4:54 PM
> >> To: Becker, Pascal-Nicolas
> >> Subject: Dspace DOI-Datacite: what about already published ITEM?
> >>
> >> Guten Tag Pascal!
> >>
> >> I'm the the IT-Manager/Developer of our IR
> >> http://www.openstarts.units.it
> >>
> >> First I have to thank you for this great contribution to the Dspace code.
> >> In fact this is very usefull also for our Repository.
> >>
> >> I'm testing your DOI code on my Test Dspace4.1
> >> (http://dspace.sba.units.it)
> >> installation and I have some questions.
> >>
> >> 1) It will be possible to "reserve/register" DOI only for some ITEMS
> >> in Dspace and not for all new published Items?
> >>
> >> 2) it will bi possible to have different NameSpaceSeparator for
> >> different ITEMS?
> >>
> >> I start analyzing your code to understand how to achive the 2
> >> questions
> >>
> >> My idea to achive them is:
> >> When I start submitting a new Item I could also enter my new DOI
> >> "prorposal" for example entering in the FORM: dc.identifier.doi =
> >> doi:10.5072/MYnewNamespace and then the DOIIdetifierProvider read
> the
> >> value from the metadata field (I use for this purpose a special
> >> metadata dc.identifier.doi ) instead of the values in the dspace.cfg
> >> And only for items that has a dc.identifier.doi = SOMETHING the
> >> request will be registered in the DOI database table?!
> >>
> >> Regarding the second question: in Italy we have a special National
> >> DOI role for assigning different DOI namespaceSeparator for different
> >> kind of digital material
> >>
> >> So for an Ejournal like
> >> http://dspace.sba.units.it/jspui/handle/10077/8348
> >> I have to register a DOI like:
> >> doi:10.5072/ISSN/xxx
> >>
> >> where the NameSpaceSeparator is the ISSN of the Ejournal and then an
> >> incremental number for the article :
> >> So in that case something like:
> >> doi:10.5072/1825-3997/123
> >>
> >> Instead for a Doctoral Thesis our National DOI rules say that
> >> something like this kind of DOI:
> >> doi:10.5072/UnivID/RepositiryName/ID
> >>
> >> has to be assigned.
> >>
> >> So for a specifica case:
> >> http://www.openstarts.units.it/dspace/handle/10077/9141
> >> I have to register something like:
> >> doi:10.5072/units/openstarts/123
> >>
> >> In this ITEM you see also our NBN number for which I developed the
> >> code and where I use the idea that I'm talking her to you.
> >> In fact also for NBN identifier I have to assign it only to certain
> >> items. So in my code I "tirgger" the request for a new NBN only if I
> >> find in the submission form a value for the metadata:
> >> dc.identifier.nbn
> >>
> >> One final question is:
> >> - How to "reserver/register" DOI for already archived ITEMS?
> >>
> >> I understand that you "trigger" the update process for DOI when
> >> Item+Modify_Metadata is fired by the event System
> >> And what about request a new DOI if a new metadata field like
> >> dc.identifier.doi = doi:10.5072/MYnewNamespace is added in the ITEM?
> >>
> >> Hope I've been clear enough
> >> Please let me know what you think about
> >>
> >>
> >> Viele danke
> >>
> >> Jordan PIŠČANC
> >> CenTraCon-SI
> >> www.openstarts.units.it
> >> thesis.units.it
> >> Via E. Weiss 21
> >> 34127 TRIESTE
> >> Email:pisc...@units.it
------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
Dspace-devel mailing list
Dspace-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dspace-devel

Reply via email to