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