Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Information on how to change and test the xslt that is used when sending metadata to DataCite as part of the DOI registration

...

Configuration File:[dspace]/config/dspace.cfg
Property:
identifier.doi.user
Example Value:
identifier.doi.user = user123
Informational Note:Username to login into the API of the DOI registration agency. You'll get it from your DOI registration agency.
Property:
identifier.doi.password
Example Value:
identifier.doi.password = top-secret
Informational Note:Password to login into the API of the DOI registration agency. You'll get it from your DOI registration agency.
Property:
identifier.doi.prefix
Example Value:
identifier.doi.prefix = 10.5072
Informational Note:The prefix you got from the DOI registration agency. All your DOIs start with this prefix, followed by a slash and a suffix generated from DSpace. The prefix can be compared with a namespace within the DOI system.
Property:
identifier.doi.namespaceseparator
Example Value:
identifier.doi.namespaceseparator = dspace-
Informational Note:This property is optional. If you want to use the same DOI prefix in several DSpace installations or with other tools that generate and register DOIs it is necessary to use a namespace separator. All the DOIs that DSpace generates will start with the DOI prefix, followed by a slash, the namespace separator and some number generated by DSpace. For example, if your prefix is 10.5072 and you want all DOIs generated by DSpace to look like 10.5072/dspace-1023 you have to set this as in the example value above.
Property:identifier.doi.resolver
Example Value:identifier.doi.resolver = https://doi.org
Informational Note: URL for the DOI resolver. This will be the stem for generated DOIs.   This property is optional, and defaults to the example value above.
Property:

crosswalk.dissemination.DataCite.publisher

Example Value:crosswalk.dissemination.DataCite.publisher = My University Press
Informational Note:The name of the entity which published the itempublishing institution or publisher.
Property:crosswalk.dissemination.DataCite.hostingInstitution
Example Value:crosswalk.dissemination.DataCite.hostingInstitution = My University
Informational Note:The name of the entity organization/institution which hosts this instance of the object.  If not configured, it will default to the value of crosswalk.dissemination.DataCite.publisher.
Property: crosswalk.dissemination.DataCite.dataManager
Example Value:crosswalk.dissemination.DataCite.dataManager = My University Department of Geology
Informational Note:If not configured, it will default to the value of crosswalk.dissemination.DataCite.publisher.

...

To reserve or register a DOI, DataCite requires that metadata be supplied which describe the object that the DOI addresses. The file [dspace]/config/crosswalks/DIM2DataCite.xsl controls the conversion of metadata from the DSpace internal format into the DataCite format. You have to If you are running a version of DSpace earlier than 6.0, you have to add your DOI prefix, namespace separator and the name of your institution to this file:

...

Just change the value in the variable named "publisher".

If you are running DSpace 6.0 or later, then these should instead be configured using the crosswalk.dissemination.DataCite.* properties in local.cfg.  You should not need to edit DIM2DataCite.xsl.

If you want to know more about the DataCite Schema, have a look at the documentation. If you change this file in a way that is not compatible with the DataCite schema, you won't be able to reserve and register DOIs anymore. Do not change anything if you're not sure what you're doing.

Identifier Service

...

To get the XML on which the XSLT processor will start, use the following command:

Code Block
languagebash
[dspace]/

...

After removing the comment signs the file should look something like this (I removed the comments to make the listing shorter):

...

bin/dspace dsrun org.dspace.content.crosswalk.XSLTDisseminationCrosswalk dim 123456789/3

To get the XML that will be send to DataCite replace 'dim' with 'DataCite'. If the DOI is not stored in the metadata, DSpace will add it automatically as identifier. So don't worry if the XML produced by this command does not contain the DOI. Once the DOI is stored in the metadata, it should also be contained in the XML.

Identifier Service

The Identifier Service manages the generation, reservation and registration of identifiers within DSpace. You can configure it using the config file located in [dspace]

...

/config/spring/api/identifier-service.xml. In the file you should already find the code to configure DSpace to register DOIs. Just read the comments and remove the comment signs around the two appropriate beans.

After removing the comment signs the file should look something like this (I removed the comments to make the listing shorter):

Code Block
title\[dspace\]/config/spring/api/identifier-service.xml
<!--
<!--
    Copyright (c) 2002-2010, DuraSpace.  All rights reserved
    LicensedCopyright under (c) 2002-2010, DuraSpace.  All rights reserved
    Licensed under the DuraSpace License.

    A copy of the DuraSpace License has been included in this
    distribution and is available at: http://www.dspace.org/license
-->

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <bean id="org.dspace.identifier.service.IdentifierService"
          class="org.dspace.identifier.IdentifierServiceImpl"
          autowire="byType"
          scope="singleton"/>

    <bean id="org.dspace.identifier.DOIIdentifierProvider"
        class="org.dspace.identifier.DOIIdentifierProvider"
        scope="singleton">
        <property name="configurationService"
            ref="org.dspace.services.ConfigurationService" />
        <property name="DOIConnector"
            ref="org.dspace.identifier.doi.DOIConnector" />
    </bean>

    <bean id="org.dspace.identifier.doi.DOIConnector"
        class="org.dspace.identifier.doi.DataCiteConnector"
        scope="singleton">
        <property name='DATACITE_SCHEME' value='https'/>
        <property name='DATACITE_HOST' value='mds.test.datacite.org'/>
        <property name='DATACITE_DOI_PATH' value='/doi/' />
        <property name='DATACITE_METADATA_PATH' value='/metadata/' />
        <property name='disseminationCrosswalkName' value="DataCite" />
    </bean>
</beans>

...

Please pay attention to configure the property DATACITE_HOST. Per default it is set to the DataCite test server. To reserve real DOIs you will have to change it to mds.datacite.org. Ask your registration agency if you're not sure about the correct address.

Sending metadata updates to DataCite

DSpace should send updates to DataCite whenever the metadata of an item changes. To do so, you have to change the dspacemust enable the DOIConsumer in your dspace.cfg (or local.cfg again. You should remove the comments in front of the two following properties or add them to the dspacelocal.cfg:

Code Block
title\[dspace\]/config/dspace.cfg
event.consumer.doi.class = org.dspace.identifier.doi.DOIConsumer
event.consumer.doi.filters = Item+Modify_Metadata

...

When using DSpace's support for the DataCite API probably not all information would be restored when using the AIP Backup and Restore (see DS-1836 https://github.com/DSpace/DSpace/issues/5203). The DOIs included in metadata of Items will be restored, but DSpace won't update the metadata of those items at DataCite anymore. You can even get problems when minting new DOIs after you restored older once using AIP.

...

Currently, the EZIDIdentifierProvider has a known issue where it stores its DOIs in the dc.identifier field, instead of using the dc.identifier.uri field (which is the one used by DataCite DOIs and Handles).  See DS-2199 for more details. This https://github.com/DSpace/DSpace/pull/1006 for more details. This will be corrected in a future version of DSpace.

...

If you want DSpace to support other registration agencies, you just have to write a Java class that implements the interface DOIConnector ([dspace-source]/dspace-api/src/main/java/org/dspace/identifier/doi/DOIConnector.java). You might use the DataCiteConnector ([dspace-source]/dspace-api/src/main/java/org/dspace/identifier/doi/DataCiteConnector.java) as an example. After developing your own DOIConnector, you configure DSpace as if you were using the DataCite API directly. Just use your DOIConnector when configuring the IdentifierService instead of the DataCiteConnector.own DOIConnector, you configure DSpace as if you were using the DataCite API directly. Just use your DOIConnector when configuring the IdentifierService instead of the DataCiteConnector.

Configuring pre-registration of Identifiers

Why mint in submission?

Users often want to see what DOI they will  get so they can alter their PDF, coverpage, other metadata, and so on.

This feature should ensure that users can see their future DOI, and if necessary, a warning that if certain conditions are not met, the DOI will not be registered after approval.

Keeping a DOI in pending status does use up an integer from the total DOI namespace, but it also ensures that the submitter, reviewers, administrators etc know what the DOI will be if it is ever registered in the future.

If this is really not desired, eg. there are many item types which should never get a DOI, then there is a way to configure a filter that avoids minting a new PENDING DOI at all unless conditions are met in submission.

Enable the Identifiers step

See Submission User Interface#Configuringthe%22Identifiers%22step

Configure filters and behaviour

To enable this feature and configure the exact way it works, edit the ${dspace.dir}/dspace/modules/identifiers.cfg  configuration file

Property:

identifiers.submission.register

Example Value:

true

Informational Note:

Enable this feature. Default: false.

Handles will be registered at time of submission.

DOIs (if item filters evaluate to true) will be minted in a "pending" state for items, to be registered or queued for registration at archival.

Property:

identifiers.submission.filter.install

Example Value:

doi-filter

Informational Note:

Bean ID of a logical item filter (see config/modules/spring/api/item-filters.xml ) that will be used to evaluate whether a DOI should be queued  for registration when this item is installed (archived) in DSpace. This filter will be applied whether or not a "pending" DOI is already minted for the item.

(If a filter is absent or null, an item will always be evaluated as 'true')

Property:

identifiers.submission.filter.workspace

Example Value:

always_true_filter

Informational note

Bean ID of a logical item filter (see config/modules/spring/api/item-filters.xml ) that will be used to evaluate whether a DOI should be minted as "pending" for registration when this item is first submitted as a workspace item in DSpace.

Depending on the value of identifiers.submission.strip_pending_during_submission this filter will be checked whenever the workspace item changes, to see if it now qualifies for a DOI.

Default: always_true_filter

(If a filter is absent or null, an item will always be evaluated as 'true')

Property:

identifiers.submission.strip_pending_during_submission

Example Value:

true

Informational Note:

If, during workspace item changes, the workspace filter no longer evaluates to true, should any DOIs be stripped? (moved to MINTED or DELETED status)

This is useful in situations where the submitter needs real-time feedback as to whether their item qualifies for a DOI.

Property:

identifiers.item-status.register-doi

Example Value:

false

Informational Note:

Allow administrators to queue DOIs for registration in the Item Status page.

Default: false.

Important: This configuration property must  be set, even if it matches the default, as it is exposed as a REST configuration property to the frontend.

Administrator registration

If an item does not have a DOI at all, or if an item has a MINTED or PENDING DOI, a user with ADMIN rights over the item may queue the DOI registration from the Item Status page. No filters will be applied to this action. This requires identifiers.item-status.register-doi  to be true  in identifiers configuration (see above)