Skip to main content
Version: 2.x (upcoming)

Zenodo deposit semantics reference

The Zenodo deposit plugin mints DOIs for plans on Zenodo (InvenioRDM v12). It builds the record metadata from the plan, the organisation's Zenodo settings, and the answers in the plan blueprint and the plan's assets, finding each answer by its semantic. To populate a Zenodo metadata field, assign the semantic listed below to the input that holds the value. Users see the resulting metadata in the review before publishing and can change it there.

How the plugin resolves fields​

Every semantic on this page works on plan blueprint inputs and on asset template inputs alike. The two exceptions are the contributor name and license link semantics, which go on fields of a reference type (see License and Contributors).

The plugin reads the blueprint's answers first, then the answers of each of the plan's assets:

  • Fields that take several values (subjects, languages, references, additional titles, related and alternate identifiers, dates, and programming languages) collect every answer from both, including every repeat of a repeatable field set. Subjects, languages, and references that differ only in case are added once.
  • Fields that take one value (publication date, community, publishing information, conference, repository URL, and development status) use the first answer found, so a blueprint answer wins over an asset answer.

Which answers count​

Input typeValue read
Free Text, Text Area, Rich Text AreaThe text, unless blank.
NumberThe number.
Boolean Decision, Checkboxtrue or false.
Date PickerThe date as yyyy-MM-dd.
Dataset Identifier, ValidatorThe identifier.
TagsEach tag as a separate value. For an additional title or a related identifier, the tags are joined with , .
Select, Radio BoxThe value of each chosen option, or its label when the option has no value. Semantics with fixed values, such as the additional title type, match on this value.
Reference TypesThe identifier of each chosen reference, not its label.

Upload, Internal Plans, and Internal Assets inputs and the blueprint's system fields (such as the plan's title or description) are not read, even when they carry a semantic.

Values that are always set​

Zenodo fieldSource
metadata.titlePlan title.
metadata.descriptionPlan description; empty when the plan has none.
metadata.versionPlan version.
metadata.publication_dateToday, unless zenodo.publication_date gives a date.
metadata.publisherThe organisation's Publisher setting, else the installation's publisher.
metadata.resource_type.idThe organisation's Resource type setting, else the installation's resource type (publication-datamanagementplan by default).
metadata.copyrightThe organisation's Copyright setting; left out when empty.
metadata.creators[]Plan members, as described in Creators.
access.recordAlways public.
access.filespublic for a public plan, restricted otherwise.

When the plan is public and the organisation's Link the public plan page setting is Yes (the default), the plugin also adds a related identifier pointing to the plan's public page in OpenCDMP, with relation type isidenticalto and scheme url. With No, the record does not link to the plan.

Creators​

Plan members become metadata.creators[], each member once, as the organisation's Authors from plan members setting decides:

SettingCreators
Every member (default)Every plan member, whatever their role.
Owners and editorsMembers with the Owner or Editor role.
Owners onlyMembers with the Owner role.
None (users must add the creators in the review)No plan member.

Each creator is a person with the member's full name as the family name, an empty given name, and the role projectmember. The creator's affiliations are the plan's organisation references; when the plan has none, the organisation's Affiliation setting is used, else the installation's affiliation.

No semantic adds creators. With None, the record has only the creators users add in the review, and Zenodo does not publish a record without creators.

Top-level metadata​

Zenodo fieldSemanticNotes
metadata.publication_datezenodo.publication_dateAccepts yyyy-MM-dd, yyyy/MM/dd, or an ISO date-time such as 2024-01-01T00:00:00Z, and is sent as yyyy-MM-dd. The first valid answer wins; other values are ignored. Falls back to today.
metadata.subjects[].subjectzenodo.subjectOne subject per answer.
metadata.languages[].idzenodo.languageA lowercase three-letter ISO 639 code, such as eng; other values are dropped. Without a valid answer, the organisation's Default language setting is used, if set.
metadata.references[].referencezenodo.referenceOne reference per answer.

Communities​

Zenodo fieldSemanticNotes
Community slugzenodo.communityThe first answer wins. Falls back to the organisation's Community setting, then to the installation's community.

After a new record is published, the plugin submits it to this community, to the organisation's Additional communities, and to any communities users add in the review. A new version of an existing record is not submitted again.

Additional titles​

Put the three semantics on inputs of the same field set, in a blueprint or an asset template. Each answer of the field set (each repeat, when the field set is repeatable) becomes one metadata.additional_titles[] entry. An answer without a title is skipped.

Zenodo fieldSemanticNotes
metadata.additional_titles[].titlezenodo.additional_title.titleRequired for the entry.
metadata.additional_titles[].type.idzenodo.additional_title.typealternative-title, subtitle, translated-title, or other. Any other value gives other, and so does an empty answer or a field set without a type input.
metadata.additional_titles[].lang.idzenodo.additional_title.languageA lowercase three-letter ISO 639 code; other values are dropped.

Each answer of an input that carries one of these semantics, in a blueprint or an asset template, becomes one metadata.related_identifiers[] entry. The relation type is the last part of the semantic, in lowercase. To set the scheme, add one of the scheme semantics to the same input; without one, the scheme is other. Empty answers are skipped.

On a Reference Types input, the identifier is the reference's identifier. When the reference has a pid field and a pidTypeField field with an accepted PID type (such as doi, handle, orcid, or ROR), its PID is sent instead. References of the organisation and researcher reference types always send their identifier. An answer with several references still gives one related identifier.

Relation typeSemantic
iscitedbyzenodo.related_identifiers.isCitedBy
citeszenodo.related_identifiers.cites
issupplementtozenodo.related_identifiers.isSupplementTo
issupplementedbyzenodo.related_identifiers.isSupplementedBy
iscontinuedbyzenodo.related_identifiers.isContinuedBy
continueszenodo.related_identifiers.continues
isdescribedbyzenodo.related_identifiers.isDescribedBy
describeszenodo.related_identifiers.describes
hasmetadatazenodo.related_identifiers.hasMetadata
ismetadataforzenodo.related_identifiers.isMetadataFor
isnewversionofzenodo.related_identifiers.isNewVersionOf
ispreviousversionofzenodo.related_identifiers.isPreviousVersionOf
ispartofzenodo.related_identifiers.isPartOf
haspartzenodo.related_identifiers.hasPart
isreferencedbyzenodo.related_identifiers.isReferencedBy
referenceszenodo.related_identifiers.references
isdocumentedbyzenodo.related_identifiers.isDocumentedBy
documentszenodo.related_identifiers.documents
iscompiledbyzenodo.related_identifiers.isCompiledBy
compileszenodo.related_identifiers.compiles
isvariantformofzenodo.related_identifiers.isVariantFormOf
isoriginalformofzenodo.related_identifiers.isOriginalFormOf (zenodo.related_identifiers.isOriginalFormof also works)
isidenticaltozenodo.related_identifiers.isIdenticalTo
isalternateidentifierzenodo.related_identifiers.isAlternateIdentifier
isreviewedbyzenodo.related_identifiers.isReviewedBy
reviewszenodo.related_identifiers.reviews
isderivedfromzenodo.related_identifiers.isDerivedFrom
issourceofzenodo.related_identifiers.isSourceOf
requireszenodo.related_identifiers.requires
isrequiredbyzenodo.related_identifiers.isRequiredBy
isobsoletedbyzenodo.related_identifiers.isObsoletedBy
obsoleteszenodo.related_identifiers.obsoletes

Add one of these to the same input as the relation type semantic to set metadata.related_identifiers[].scheme:

SchemeSemantic
arkzenodo.related_identifiers.scheme.ark
arxivzenodo.related_identifiers.scheme.arxiv
adszenodo.related_identifiers.scheme.ads
crossreffunderidzenodo.related_identifiers.scheme.crossreffunderid
doizenodo.related_identifiers.scheme.doi
ean13zenodo.related_identifiers.scheme.ean13
eissnzenodo.related_identifiers.scheme.eissn
gridzenodo.related_identifiers.scheme.grid
handlezenodo.related_identifiers.scheme.handle
igsnzenodo.related_identifiers.scheme.igsn
isbnzenodo.related_identifiers.scheme.isbn
isnizenodo.related_identifiers.scheme.isni
issnzenodo.related_identifiers.scheme.issn
istczenodo.related_identifiers.scheme.istc
lissnzenodo.related_identifiers.scheme.lissn
lsidzenodo.related_identifiers.scheme.lsid
pmidzenodo.related_identifiers.scheme.pmid
purlzenodo.related_identifiers.scheme.purl
upczenodo.related_identifiers.scheme.upc
urlzenodo.related_identifiers.scheme.url
urnzenodo.related_identifiers.scheme.urn
w3idzenodo.related_identifiers.scheme.w3id
otherzenodo.related_identifiers.scheme.other

Alternate identifiers​

Each answer of an input that carries one of these semantics becomes one metadata.identifiers[] entry, with the answer as the identifier. The scheme is the last part of the semantic, in lowercase.

SchemeSemantic
arkzenodo.alternate-identifiers.scheme.ark (zenodo.alternate.scheme.ark also works)
arxivzenodo.alternate-identifiers.scheme.arxiv
adszenodo.alternate-identifiers.scheme.ads
crossreffunderidzenodo.alternate-identifiers.scheme.crossreffunderid
doizenodo.alternate-identifiers.scheme.doi
ean13zenodo.alternate-identifiers.scheme.ean13
eissnzenodo.alternate-identifiers.scheme.eissn
gridzenodo.alternate-identifiers.scheme.grid
handlezenodo.alternate-identifiers.scheme.handle
igsnzenodo.alternate-identifiers.scheme.igsn
isbnzenodo.alternate-identifiers.scheme.isbn
isnizenodo.alternate-identifiers.scheme.isni
issnzenodo.alternate-identifiers.scheme.issn
istczenodo.alternate-identifiers.scheme.istc
lissnzenodo.alternate-identifiers.scheme.lissn
lsidzenodo.alternate-identifiers.scheme.lsid
pmidzenodo.alternate-identifiers.scheme.pmid
purlzenodo.alternate-identifiers.scheme.purl
upczenodo.alternate-identifiers.scheme.upc
urlzenodo.alternate-identifiers.scheme.url
urnzenodo.alternate-identifiers.scheme.urn
w3idzenodo.alternate-identifiers.scheme.w3id
otherzenodo.alternate-identifiers.scheme.other

Dates​

Each answer of an input that carries one of these semantics becomes one metadata.dates[] entry. The date type is the last part of the semantic, in lowercase. Values must be yyyy-MM-dd or yyyy/MM/dd and are sent as yyyy-MM-dd; other values are dropped. A Date Picker input always gives a valid date.

Date typeSemantic
acceptedzenodo.date_type.accepted
availablezenodo.date_type.available
collectedzenodo.date_type.collected
copyrightedzenodo.date_type.copyrighted
createdzenodo.date_type.created
issuedzenodo.date_type.issued
otherzenodo.date_type.other
submittedzenodo.date_type.submitted
updatedzenodo.date_type.updated
validzenodo.date_type.valid
withdrawnzenodo.date_type.withdrawn

License​

Licenses come from the plan's license references, of the reference type set in the organisation's Licences setting. The plugin looks up each reference's identifier in Zenodo's license vocabulary and sends a match as metadata.rights[].id. When the lookup fails, it sends a custom license instead, with the reference's identifier as the title, its description as the description, and the link below. A plan without license references gets the organisation's Default licence setting, if set.

The only semantic goes on a field of the license reference type, not on a blueprint or template input:

Zenodo fieldSemanticNotes
metadata.rights[].linkzenodo.metadata.rights.linkUsed only for a custom license.

Contributors​

The plan's researcher references, of the reference type set in the organisation's Researchers setting, become metadata.contributors[] with the role researcher and the reference's label as the name. A researcher from ORCID also gets the ORCID iD as an identifier. No affiliation is sent.

Two semantics on fields of the researcher reference type set the name parts:

Zenodo fieldSemanticNotes
metadata.contributors[].person_or_org.family_namezenodo.metadata.contributors.person_or_org.family_nameFalls back to the reference's label.
metadata.contributors[].person_or_org.given_namezenodo.metadata.contributors.person_or_org.given_nameFalls back to empty.

Plan members become creators, not contributors; see Creators.

Funding​

Funders and grants come from the plan's funder and grant references, of the reference types set in the organisation's Funders and Grants settings. No semantic is involved.

  • A funder whose label matches one of the installation's known funders (such as the European Commission or the National Science Foundation) is looked up in Zenodo by its Crossref Funder ID and sent by its Zenodo id. Any other funder is sent by name.
  • A grant is sent by its title (the reference's label) only. The plugin does not look grants up in Zenodo; in the review, users can search Zenodo's awards and pick one instead.
  • The plan does not link grants to funders, so every grant goes with the first funder. Further funders are sent without a grant.

Custom fields — Publishing information​

Each field takes the first answer found. The journal and the imprint are sent only when at least one of their fields is answered.

Journal​

Zenodo fieldSemantic
custom_fields.journal:journal.titlezenodo.publishing_information.journal.title
custom_fields.journal:journal.issnzenodo.publishing_information.journal.issn
custom_fields.journal:journal.volumezenodo.publishing_information.journal.volume
custom_fields.journal:journal.issuezenodo.publishing_information.journal.issue
custom_fields.journal:journal.pageszenodo.publishing_information.journal.page_range_or_article_number

Imprint​

Zenodo fieldSemantic
custom_fields.imprint:imprint.titlezenodo.publishing_information.imprint.title
custom_fields.imprint:imprint.isbnzenodo.publishing_information.imprint.isbn
custom_fields.imprint:imprint.placezenodo.publishing_information.imprint.place
custom_fields.imprint:imprint.pageszenodo.publishing_information.imprint.pagination

Thesis​

Zenodo fieldSemantic
custom_fields.thesis:thesis.universityzenodo.publishing_information.thesis.university

Custom fields — Conference (meeting)​

Each field takes the first answer found. The conference is sent only when at least one of its fields is answered.

Zenodo fieldSemanticNotes
custom_fields.meeting:meeting.titlezenodo.conference.title
custom_fields.meeting:meeting.acronymzenodo.conference.acronym
custom_fields.meeting:meeting.placezenodo.conference.place
custom_fields.meeting:meeting.dateszenodo.conference.dates
custom_fields.meeting:meeting.urlzenodo.conference.websiteA full URL, such as https://example.org; other values are dropped.
custom_fields.meeting:meeting.sessionzenodo.conference.session
custom_fields.meeting:meeting.session_partzenodo.conference.part

Custom fields — Software / Code​

Zenodo fieldSemanticNotes
custom_fields.code:codeRepositoryzenodo.software.repository-urlThe first answer, if it is a full URL; otherwise nothing is sent.
custom_fields.code:programmingLanguage[].idzenodo.software.programming-languageOne entry per answer. Values must be Zenodo programming language ids, such as python, java, or r; others are dropped.
custom_fields.code:developmentStatus.idzenodo.software.development-statusThe first answer, if it is one of wip, unsupported, inactive, suspended, moved, concept, abandoned, or active; otherwise nothing is sent.