DOI registration¶
Info
The DOI registration feature requires that you have a contract with DataCite. In addition, you will also need a DataCite test account to test the feature.
Configure¶
Enable DOI registration¶
You enable the DOI minting feature in your invenio.cfg
file:
DATACITE_ENABLED = True
Credentials and prefix¶
Before you continue, make sure you first have a DataCite test account.
You need to provide the account credentials and the DOI prefix for the DataCite repository account in your invenio.cfg
file:
DATACITE_USERNAME = "..." # Your username
DATACITE_PASSWORD = "..." # Your password
DATACITE_PREFIX = "10.1234" # Your prefix
Tip
Never commit or store credentials in a source code repository.
Mode: Test or production¶
InvenioRDM by default uses the DataCite Test Environment to avoid accidentally registering DOIs during test. In test mode InvenioRDM will use the following DataCite test systems:
- DOI Fabrica (https://doi.test.datacite.org).
- REST API (https://api.test.datacite.org).
To enable production mode, set the following configuration variable in invenio.cfg
:
DATACITE_TEST_MODE = False
In production mode, InvenioRDM will use the following DataCite systems:
- DOI Fabrica (https://doi.datacite.org).
- REST API (https://api.datacite.org).
Did you know?
You can write your own persistent identifier plugin in InvenioRDM to support other types of persistent identifiers.
Generated DOI¶
By default, InvenioRDM generates a DOI using the prefix and internal persistent
identifier. You can change the generated DOI string by editing your invenio.cfg
.
DATACITE_FORMAT = "{prefix}/inveniordm.{id}"
Tip
Before branding your DOIs, please read about Cool DOIs and why it might not be a good idea.
Parent or Concept DOIs¶
Introduced in InvenioRDM v12
By default InvenioRDM will create two DOIs when an initial record is published, and create one DOI each time a new version of the record is published. The first DOI is the version DOI, which represents the specific record that is published. The second DOI is the parent DOI, which represents the concept of the record and will always resolve to the latest version. This feature has been implemented in Zenodo for many years, and the concept DOI enables researchers to cite something that won't change when they make changes to their records.
The parent DOI is optional and can be disabled by setting the following in invenio.cfg:
RDM_PARENT_PERSISTENT_IDENTIFIERS={}
OAI-PMH¶
The OAI-PMH server's metadata format oai_datacite
that allows you to harvest record from InvenioRDM in DataCite XML needs to be configured with your DataCite data center symbol. This is only required if you want your records to be harvestable in DataCite XML format.
DATACITE_DATACENTER_SYMBOL = "CERN.INVENIORDM"
Versioning and externally managed DOI¶
By default, InvenioRDM allows versioning for any DOI type - internally or externally managed. Internally managed DOI is a DOI which is given thanks to InvenioRDM feature which allows us to configure the DOI registration on DataCite (check #Enable DOI registration). The external DOIs are not minted by our instance and in some cases repository manager decides to disallow versioning of records identified by external DOI. To disable versioning for external DOIs you need to set:
RDM_ALLOW_EXTERNAL_DOI_VERSIONING = False
Configuring DOI Behavior¶
You can change how DOIs work in InvenioRDM by adding modified configuration variables to invenio.cfg
. For example, if you want to make DOIs optional you can add the following block to invenio.cfg
RDM_PERSISTENT_IDENTIFIERS = {
# DOI automatically removed if DATACITE_ENABLED is False.
"doi": {
"providers": ["datacite", "external"],
"required": False,
"label": _("DOI"),
"validator": idutils.is_doi,
"normalizer": idutils.normalize_doi,
"is_enabled": providers.DataCitePIDProvider.is_enabled,
},
"oai": {
"providers": ["oai"],
"required": True,
"label": _("OAI"),
"is_enabled": providers.OAIPIDProvider.is_enabled,
},
}
Known issues¶
- Restricted records: Once a DOI is created, it cannot be fully removed from DataCite. Starting with v12, InvenioRDM will not register DOIs for restricted records. It will also hide a DOI from the DataCite Search if a record is changed from public to restricted. However that DOI will still resolve and metadata may be available to DataCite members.