RAiD JSON Transformer — Semantics Reference
The RAiD JSON file transformer exports plans to JSON files conforming to the RAiD metadata schema v1.6.x, and imports such files as new plans.
To populate a RAiD JSON field, assign the semantic listed below to a question of the plan blueprint or of an asset template. Values outside the RAiD vocabularies are dropped, and dates must be written as yyyy, yyyy-MM, or yyyy-MM-dd.
The transformer reads the blueprint's questions first, then the questions of each asset in the plan. Every semantic on this page works in both blueprints and asset templates.
- Single blocks (
identifier, date, and access): RAiD allows one of each. Every value takes the first answer found, so a blueprint answer wins over an asset's, and an earlier asset's over a later one. Within a repeating question, only the first answered item counts.
- Lists (
titles, descriptions, contributors, organisations, relatedObjects, alternateIdentifiers, alternateUrls, and relatedRaids): each answer to a question (each item of a repeating question) produces one entry, provided at least one of its values is valid. Blueprint entries come first, then those of each asset.
- Empty blocks are not written: a block or list without any valid value is left out of the file.
How an answer is read:
- Text inputs give their text, Yes/No and checkbox inputs
true or false, number inputs the number, and date inputs yyyy-MM-dd.
- Select and radio inputs give the value of the chosen option. To write a RAiD vocabulary value, use it as the option's value and give the option a readable label.
- Reference inputs give the picked reference's value, for example its ROR or ORCID address, for a key the input carries. A reference input can also take keys from its reference type: each such key gives the picked reference's ID, name, description, or the field the type assigns it.
- In a list, each picked reference produces its own entry, with the answer's other values copied into each: two organisations picked in one answer give two
organisations entries. Reference inputs that fill the same keys are alternatives; inputs that fill different keys are combined, one pick of each.
- Tags inputs give their first tag.
Values that are always set
| RAiD JSON field | Value |
|---|
titles[0].text | The plan title, as the primary title. Titles answered in the plan or its assets follow it. |
titles[0].type.id | https://vocabulary.raid.org/title.type.id/380 (Primary). |
titles[0].type.schemaUri | https://vocabulary.raid.org/title.type.schema/376. |
titles[0].startDate | The date the plan was created (yyyy-MM-dd). |
titles[0].endDate | The date the plan was finalized (yyyy-MM-dd), for a finalized plan. |
identifier
| RAiD JSON field | Semantic | Notes |
|---|
identifier.id | raid.identifier.id | |
identifier.schemaUri | raid.identifier.schemaUri | See identifier.schemaUri. |
identifier.registrationAgency.id | raid.identifier.registrationAgency.id | |
identifier.registrationAgency.schemaUri | raid.identifier.registrationAgency.schemaUri | See registrationAgency.schemaUri. |
identifier.owner.id | raid.identifier.owner.id | |
identifier.owner.schemaUri | raid.identifier.owner.schemaUri | See owner.schemaUri. |
identifier.owner.servicePoint | raid.identifier.owner.servicePoint | A whole number; other answers are dropped. |
identifier.license | raid.identifier.license | See identifier.license. |
identifier.version | raid.identifier.version | |
date
| RAiD JSON field | Semantic | Notes |
|---|
date.startDate | raid.date.startDate | Required by RAiD. Without an answer the block is left out, and the file does not validate against the RAiD schema. |
date.endDate | raid.date.endDate | |
access
| RAiD JSON field | Semantic | Notes |
|---|
access.type.id | raid.access.type.id | Required by RAiD. See access.type.id. |
access.type.schemaUri | raid.access.type.schemaUri | Required by RAiD. See access.type.schemaUri. |
access.embargoExpiry | raid.access.embargoExpiry | Required by RAiD for embargoed access. |
access.statement.text | raid.access.statement.text | Required by RAiD for embargoed access. |
access.statement.language.id | raid.access.statement.language.id | See statement language id. |
access.statement.language.schemaUri | raid.access.statement.language.schemaUri | See statement language schemaUri. |
titles[]
| RAiD JSON field | Semantic | Notes |
|---|
titles[].text | raid.title.text | |
titles[].type.id | raid.title.type.id | See title.type.id. |
titles[].type.schemaUri | raid.title.type.schemaUri | See title.type.schemaUri. |
titles[].language.id | raid.title.language.id | See title.language.id. |
titles[].language.schemaUri | raid.title.language.schemaUri | See title.language.schemaUri. |
titles[].startDate | raid.title.startDate | |
titles[].endDate | raid.title.endDate | |
descriptions[]
contributors[]
Each contributor gets at most one position and one role. RAiD requires a contributor's identifier and schema URI, and a position with its identifier, schema URI, and start date.
| RAiD JSON field | Semantic | Notes |
|---|
contributors[].id | raid.contributor.id | For example an ORCID address. |
contributors[].schemaUri | raid.contributor.schemaUri | See contributor.schemaUri. |
contributors[].position[0].id | raid.contributor.position.id | See position.id. |
contributors[].position[0].schemaUri | raid.contributor.position.schemaUri | See position.schemaUri. |
contributors[].position[0].startDate | raid.contributor.position.startDate | |
contributors[].position[0].endDate | raid.contributor.position.endDate | |
contributors[].leader | raid.contributor.leader | Set when the answer is Yes or true, in any case; other answers leave it out. |
contributors[].contact | raid.contributor.contact | Same rule as leader. |
contributors[].role[0].id | raid.contributor.role.id | See role.id. |
contributors[].role[0].schemaUri | raid.contributor.role.schemaUri | See role.schemaUri. |
organisations[]
Each organisation gets at most one role.
| RAiD JSON field | Semantic | Notes |
|---|
organisations[].id | raid.organisation.id | For example a ROR address. |
organisations[].schemaUri | raid.organisation.schemaUri | See organisation.schemaUri. |
organisations[].role[0].id | raid.organisation.role.id | See role.id. |
organisations[].role[0].schemaUri | raid.organisation.role.schemaUri | See role.schemaUri. |
organisations[].role[0].startDate | raid.organisation.role.startDate | |
organisations[].role[0].endDate | raid.organisation.role.endDate | |
Each related object gets at most one category.
| RAiD JSON field | Semantic | Notes |
|---|
relatedObjects[].id | raid.relatedObject.id | |
relatedObjects[].schemaUri | raid.relatedObject.schemaUri | See relatedObject.schemaUri. |
relatedObjects[].type.id | raid.relatedObject.type.id | See type.id. |
relatedObjects[].type.schemaUri | raid.relatedObject.type.schemaUri | See type.schemaUri. |
relatedObjects[].category[0].id | raid.relatedObject.category.id | See category.id. |
relatedObjects[].category[0].schemaUri | raid.relatedObject.category.schemaUri | See category.schemaUri. |
alternateIdentifiers[]
| RAiD JSON field | Semantic | Notes |
|---|
alternateIdentifiers[].id | raid.alternateIdentifier.id | |
alternateIdentifiers[].type | raid.alternateIdentifier.type | Free text. |
alternateUrls[]
| RAiD JSON field | Semantic | Notes |
|---|
alternateUrls[].url | raid.alternateUrl.url | Must be a valid URI; other answers are dropped. |
| RAiD JSON field | Semantic | Notes |
|---|
relatedRaids[].id | raid.relatedRaid.id | |
relatedRaids[].type.id | raid.relatedRaid.type.id | See relatedRaid.type.id. |
relatedRaids[].type.schemaUri | raid.relatedRaid.type.schemaUri | See relatedRaid.type.schemaUri. |
Import
Importing a RAiD JSON file creates a new plan:
- The plan's title is the file's primary title, or its first title when none is marked primary.
- The plan is public when
access.type.id is open access, and restricted otherwise.
- The
identifier, date, and access values are written to the blueprint questions carrying their semantics. The lists are not read back, and no assets are created.
- A reference input that takes
identifier, date, or access keys only through its reference type gets one reference made from the file: its ID from the type's Reference ID key, its name, description, and fields from the type's other keys. OpenCDMP links it to an existing reference of the type with the same ID, or adds it as a new reference.