DataCite Metadata Schema 4.7

DataCite Crosswalk Guide

How DataCite metadata terms line up with Schema.org, Dublin Core, DCAT and Wikidata, and how to read, use and improve the mapping files. No prior linked-data knowledge needed; every technical word is explained in the glossary.

253DataCite 4.7 terms
4target vocabularies
239mapping rows
1,012recorded outcomes (253 terms × 4)

The big picture

Repositories describe the same research outputs in different vocabularies. DataCite says creator, Schema.org says creator too, Dublin Core says dcterms:creator, and Wikidata uses numbered items. A crosswalk is a dictionary between them. Each entry is a mapping: "DataCite title is close to Dublin Core title".

A useful crosswalk gets three things right.

ContentEach entry says something true about the two terms.
FormatThe dictionary is written in a standard form that software can read.
PublishingEvery term, and the dictionary itself, has a permanent web address.

The four target vocabularies cover different needs: Schema.org for search engines, Dublin Core (DCTERMS) for libraries and repositories, DCAT for data catalogues, and Wikidata for the shared knowledge graph.

Reading a mapping

Every mapping is a triple: three parts that read like a sentence.

Subject (DataCite)datacite-vocab:relationType/IsPartOf
Predicate (how close)skos:closeMatch
Object (the other vocabulary)dcterms:isPartOf

The names are short forms called CURIEs. The prefix before the colon stands for the start of a web address, so dcterms:isPartOf means http://purl.org/dc/terms/isPartOf. Each mapping file lists its prefixes at the top.

One row of a mapping file

The mapping files use SSSOM, a standard spreadsheet format. This is the row above, column by column.

ColumnValueWhat it tells you
subject_iddatacite-vocab:relationType/IsPartOfThe DataCite term
predicate_idskos:closeMatchHow close the meanings are
object_iddcterms:isPartOfThe term in the other vocabulary
mapping_justificationsemapv:ManualMappingCurationA person decided this by reading both definitions
subject_label, object_labelIsPartOf, isPartOfReadable names for display
object_source_version2020-01-20Which release of the other vocabulary was checked
author_id, reviewer_idorcid:0000-0003-1378-5495Who wrote and who checked the mapping
commentCorresponding relationship with the same direction…The reasoning, and any conditions

Link strength

The predicate in the middle of each triple is the most important judgement in a mapping. It comes from SKOS, a W3C standard for vocabularies.

exactMatchInterchangeable everywhere. This crosswalk never uses it (see below).
closeMatchNearly the same meaning. creator → schema:creator
broadMatchTheir term is wider than DataCite's. title → schema:name, because a name can belong to anything.
narrowMatchTheir term is narrower. size → schema:contentSize, which only means file size.
relatedMatchConnected, but not the same kind of thing. publicationYear → dcterms:issued: a year versus a full date.

Why no exactMatch

exactMatch is transitive: if creatorName exactly equals schema:name, and title exactly equals schema:name, software concludes that a person's name and a document's title are the same thing.

What the crosswalk does instead

It uses the weakest link that is still true. creatorName and title both get broadMatch to schema:name, which says each is a kind of name without making them equal to each other.

Link strengths in each mapping file

Bars share one scale, so their lengths compare directly.

closeMatchbroadMatchnarrowMatchrelatedMatch

Direction matters

DataCite relations are written from the point of view of the record you are describing. Other vocabularies sometimes point the other way. That is an inverse relation, and mapping it naively writes the fact backwards.

Opposite direction

"My dataset IsCitedBy that paper." Schema.org's citation points from the paper to the dataset. A direct mapping would state that the dataset cites the paper, so this pair is handled only by a conversion rule that flips the two ends.

Same direction

Dublin Core has matching pairs such as isPartOf and hasPart. "A IsPartOf B" becomes "A dcterms:isPartOf B", so these are mapped directly.

The automatic checks reject known wrong-direction pairs, such as Reviews → schema:reviews or IsCitedBy → dcterms:references.

Mappings and recipes

Two different statements are easy to confuse.

Correspondence

"These two terms mean similar things." This goes in the SSSOM mapping files.

Conversion rule

"When you translate a record, put this value there, under these conditions." This goes in the conversion/ recipes.

Example: DataCite's publicationYear holds just a year, such as 2024. Dublin Core's issued can hold a full date. The mapping file records that they are related. The recipe adds the instruction a converter needs: never invent a month or a day.

Every term has an outcome

The coverage register records one outcome for each of the 253 DataCite terms, per vocabulary. Nothing is silently left out.

mappedrecipe onlyno equivalentout of scope

"Recipe only" covers terms such as identifier-scheme values and geographic coordinates, which are carried along inside a converted record rather than matched to a single term. Wikidata is mostly out of scope because its mappings align concepts like "dataset" or "book", not record fields.

The files

Everything lives in the mappings/ folder of the toolkit. Use the file that fits your tool.

FileWhat it isWho it is for
datacite-schemaorg.sssom.tsv
datacite-dcterms.sssom.tsv
datacite-dcat.sssom.tsv
datacite-wikidata.sssom.tsv
The mapping sets, one per vocabulary. These are the source; everything else is generated from them.Mapping tools and anyone reviewing a mapping
jskos-mappings.jsonAll mappings in JSKOS, with labels, vocabularies, author, date and notes.Cocoda and jskos-server
SKOS_crosswalks.jsonldAll mappings as linked data, with a label for every term.Triple stores and RDF tools
conversion/*.jsonRecipes for translating real records.Developers writing converters
coverage/*.jsonThe outcome for every DataCite term.Anyone checking completeness
target-sources.jsonWhich release of each vocabulary was checked, with download addresses and fingerprints.Anyone checking provenance

Dublin Core terms that DCAT reuses, such as dcterms:title, appear in both the Dublin Core and DCAT files. In the combined JSKOS and SKOS files each mapping appears once, giving 225 unique mappings from 238 rows.

Permanent addresses

Every DataCite term has a permanent address under https://w3id.org/tib/datacite/. w3id holds no files. It forwards each request to wherever the files are hosted, currently GitHub Pages. If hosting ever moves, only the forwarding rules change and every published address keeps working.

Someone asks forhttps://w3id.org/tib/datacite/vocab/relationType/IsCitedBy
↓ w3id applies the namespace's forwarding rules
Program asks for Turtle…/vocab/relationType/IsCitedBy.ttl
Anything else…/vocab/relationType/IsCitedBy.jsonld
↓ served from tibhannover.github.io/datacite

Choosing a format by what the requester asks for is called content negotiation. JSON-LD is the default; a program can ask for Turtle by sending Accept: text/turtle. Both hold exactly the same information.

The mapping files have permanent addresses too, for example https://w3id.org/tib/datacite/mappings/datacite-schemaorg.sssom.tsv. That address is also each file's official name, its mapping_set_id.

If an address does not resolve yet. Turtle responses and the mappings/ addresses are being rolled out. Until then, use the JSON-LD address, or take the files directly from the toolkit repository.

Try it yourself:

curl -sL https://w3id.org/tib/datacite/vocab/relationType/IsCitedBy
curl -sL -H "Accept: text/turtle" https://w3id.org/tib/datacite/vocab/relationType/IsCitedBy

Using the mappings

In Cocoda

Cocoda is a web tool for browsing and reviewing mappings. Its server, jskos-server, imports jskos-mappings.json directly, because the file is a plain list of mappings and every mapping names its two vocabularies:

npm run import -- mappings https://w3id.org/tib/datacite/mappings/jskos-mappings.json

Vocabularies are identified by their BARTOC registry address, which is how Cocoda recognises them:

VocabularyBARTOC address
DataCite Metadata Schemahttp://bartoc.org/en/node/21149
Schema.orghttp://bartoc.org/en/node/18250
DCMI Metadata Terms (Dublin Core)http://bartoc.org/en/node/725
DCMI Type Vocabularyhttp://bartoc.org/en/node/17909
Data Catalog Vocabulary (DCAT)http://bartoc.org/en/node/1691
Wikidatahttp://bartoc.org/en/node/1940

With SSSOM tools

The SSSOM files work with sssom-py and other ontology-alignment tools. To check a file yourself:

pip install sssom==0.4.16 sssom-schema==1.0.0
sssom validate mappings/datacite-schemaorg.sssom.tsv

When converting records

  • Read the row comment and the matching recipe in conversion/ before transforming data.
  • Treat relatedMatch as "connected", never as permission to swap one term for the other.
  • Check the direction of relations. If a pair appears only in a recipe with the operation inverse, the two ends must be swapped.
  • Keep the original DataCite value when the target term is broader, so detail is not lost.

How quality is checked

Every change to the mapping files runs automatic checks on GitHub, a setup called CI. The checks fail unless all of the following hold.

  • Each SSSOM file passes the official SSSOM validator, including its rules for prefixes and short names.
  • Every DataCite term exists in the published DataCite 4.7 vocabulary.
  • Every target term exists, and is not deprecated, in the pinned release of its vocabulary.
  • Known wrong-direction and wrong-meaning pairs are refused.
  • The coverage register gives every DataCite term an outcome, and agrees with the mapping files.
  • The JSKOS and SKOS files contain exactly the same mappings as the SSSOM files, and the JSKOS file passes the official JSKOS validator.
  • The published copies of the mapping files match the originals.
What the checks cannot do. They confirm that the files are well formed, complete and consistent. They cannot confirm that a mapping is right. That judgement comes from people reading both definitions, which is why each row names its author and reviewer.

Changing a mapping

Found a mapping you disagree with? Edit the SSSOM file, never the generated files.

  1. Change the row in the right datacite-*.sssom.tsv file. Explain your reasoning in the comment column.
  2. If a term gains or loses its only mapping, update its outcome in coverage/.
  3. Regenerate the JSKOS and SKOS files: npm run build:mappings
  4. Refresh the published copy in production-namespace/: npm run build:production-namespace. The checks fail on an out-of-date copy.
  5. Run the checks: npm run check:mappings and npm run test:mappings
  6. Open a pull request on the toolkit repository so the change can be reviewed.

The checks need Python packages listed in rdf-build-scripts/requirements-mappings.txt, and npm install for the JSKOS validator.

Glossary