CrossRef DOI Minting
Jump to navigation
Jump to search
Schema
Derived linkml Schema
id: https://w3id.org/linkml/examples/personinfo
name: doi_schema
prefixes:
linkml: https://w3id.org/linkml/
crossref: https://data.crossref.org/reports/help/schema_doc/5.3.1/crossref5_3_1_xsd.html#
imports:
- linkml:types
default_range: string
version: 5.3.1
classes:
Conference:
attributes:
papers:
multivalued: true
range: Paper
contributors:
multivalued: true
range: Contributor
proceeding:
required: true
any_of:
- range: Proceeding
- range: ProceedingInSeries
event:
required: true
range: Event
Event:
attributes:
name:
range: string
required: true
theme:
range: string
examples:
- value: "Knowledge: Creation, Organization and Use"
acronym:
range: string
sponsor:
range: string
number:
range: string
location:
range: string
date:
range: date
Proceeding:
attributes:
title:
required: true
range: string
subject:
range: string
publisher:
multivalued: true
required: true
range: Publisher
publication_date:
required: true
range: date
isbn:
range: string
archive_locations:
multivalued: true
range: string
doi:
language:
range: string
ProceedingInSeries:
is_a: Proceeding
attributes:
volume:
range: string
required: true
series:
range: Series
Publisher:
attributes:
name:
required: true
range: string
id:
identifier: true
place:
range: string
Series:
attributes:
contributors:
multivalued: true
range: Contributor
title:
required: true
range: string
abstract:
range: string
issn:
required: true
range:
coden:
range: string
number:
range: string
publisher:
range: Publisher
archive_locations:
multivalued: true
range: string
doi:
crossmark:
range: Crossmark
fund_ref_program:
accommodates_deposit_license_program:
Paper:
attributes:
contributors:
multivalued: true
range: Contributor
title:
publication_date:
range: date
pages:
range: string
doi:
required: true
range: string
abstract:
range: string
publisher:
range: Publisher
crossmark:
range: Crossmark
fund_ref_program:
accommodates_deposit_license_program:
accommodates_deposit_clincal_trials_program:
relationships:
scn_policy_refs:
multivalued: true
archive_locations:
multivalued: true
range: string
citations:
multivalued: true
range: Citation
Citation:
attributes:
issn:
journal_title:
author:
range: string
volume:
issue:
first_page:
elocation_id:
cYear:
doi:
isbn:
series_title:
volume_title:
edition_number:
component_number:
article_title:
std_designator:
standards_body:
unstructured_citation:
key:
required: true
Contributor:
attributes:
sequence:
required: true
range: SequenceTypes
role:
required: true
range: RoleTypes
name-style:
role: NameStyleTypes
language:
range: string
Person:
is_a: Contributor
attributes:
given_name:
range: string
pattern: "[^\\d\\?]*[^\\?\\s]+[^\\d]*"
surname:
required: true
range: string
suffix:
range: string
ORCID:
pattern: "https?://orcid.org/[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{3}[X0-9]{1}"
affiliations:
range: Institution
multivalued: true
alt_name:
Organization:
is_a: Contributor
attributes:
name:
range: string
Anonymous:
is_a: Contributor
attributes:
affiliations:
range: Institution
Institution:
attributes:
acronym:
range: string
examples:
- value: RWTH Aachen
name:
range: string
examples:
- value: Rheinisch-Westfälische Technische Hochschule Aachen
id:
identifier: true
examples:
- value: wd:Q273263
place:
range: string
examples:
- value: Aachen, NRW, Germany
department:
range: string
examples:
- value: i5
Crossmark:
attributes:
version:
policy:
domains:
enums:
SequenceTypes:
permissible_values:
first:
additional:
RoleTypes:
permissible_values:
author:
editor:
chair:
reviewer:
review-assistant:
stats-reviewer:
reviewer-external:
reader:
translator:
NameStyleTypes:
permissible_values:
western:
eastern:
islensk:
given-only:
webDeposit
- https://apps.crossref.org/webDeposit/
- The web form does not allow to add a proceeding in series
ConfIDent DOI Minting
- https://blogs.tib.eu/wp/tib/2022/10/20/how-to-mint-a-doi-for-academic-events-and-event-series/
- https://tibhannover.github.io/ConfIDent_schema/
Philip Strömert: ConfIDent DOI Minting Process
Script, mit dem man DOIs für Confident Events (nicht für Serien) automatisch über DataCite's API machen kann:
- es gibt bisher keine Möglichkeit das, leider nur als XML vollständig vorliegende, DataCite Schema automatisch in ein LinkML Schema umzuwandeln.
- Es einfach manuell in LinkML nachzubauen ist mMn Zeitverschwendung
- DataCite seitige Updates müssen manuel im linkml schema angepasst werden
- (ConfIDent WIKI) Schema vorliegenden Daten werden in ein DataCite konformes Datenschema gemappt mit dirty Workaround:
- in der Fabrica Umgebung nen Event-DOI Eintrag mit allen benötigten Metadatan gemacht und die als JSON Datei abgespeichert --> https://github.com/TIBHannover/ConfIDent_schema/blob/DOI_script/SMW2DOI/datacite_schema/dc_json.json
- diese JSON auf der Kommandozeile mit dem Tool xsdata (https://xsdata-pydantic.readthedocs.io) in Python (Pydantic) Datenklassen umgewandelt --> https://github.com/TIBHannover/ConfIDent_schema/blob/DOI_script/SMW2DOI/confident_dois.py#L69-L74
Benötigten Metadaten aller Events mit dieser Abfrage als JSON geladen.
Das Script macht dann folgendes:
- lädt die manuell heruntergeladene Confident JSON in einen Liste genannt "batch" --> Script#L45
- transformiert die in der Liste enthaltenen Event-Metadaten in zwei weitere Listen genannt "to_mint" & "to_update", deren Einträge DataCite Schema konforme Key:Value Paare (ditcionaries) für jeden Event sind. Alles Events die schon ne DOI haben kommen in "to_update", alle ohne DOI in "to_mint".
- kreiert für jeden Eventeintrag in der "to_mint" Liste eine DOI mit dem jeweils am Anfang angegebenen Status (default="draft") ODER updated die DOI-Metadata bei DataCite für jeden Eventeintrag in "to_update" mittels der DataCite JSON RESTful API und deren bereits existierender Python Library (https://pypi.org/project/datacite/)
Sollten "falsche" d.h. nicht DataCite Schema konforme Daten an deren API geschickt werden, würde diese meckern und gar nicht erst DOIs updaten oder minten. Ich fange solche Fehlermeldungen von der API nicht im Script ein, weil es quick und dirty sein sollte und weil durch die zuvor generierten Pydantic Datenklassen schon eine Validierung bzgl. des DataCite Schemas automatisch drin ist.