Skip to main content

RAiD JSON Transformer — Semantics Reference

The RAiD JSON file transformer exports plans and their descriptions to JSON files conforming to the RAiD metadata schema v1.6.x.

At export time the transformer walks the plan and every description attached to it. For each RAiD output field, it looks up the first field whose semantic tag matches the expected value and writes that field's value to the JSON. Enum values are validated against the RAiD controlled vocabularies; unknown values are logged and skipped.

This page lists every RAiD JSON output field the transformer can populate and the semantic you must assign to the backing blueprint or description-template field to populate it.

How the transformer resolves fields

The transformer uses the same two-tier pattern as the RDA JSON transformer:

  • Plan blueprint fields seed the top-level singletons: raid.identifier, raid.date, and raid.access.
  • Description template fields contribute entries to every repeatable section — raid.title[], raid.description[], raid.contributor[], raid.organisation[], raid.relatedObject[], raid.alternateIdentifier[], raid.alternateUrl[], raid.relatedRaid[]and can override the same identifier / date / access singletons that the blueprint seeded. Because each description runs the singleton pass, the last description processed wins for singleton overrides.

A field-set item produces an RAiD array entry only when at least one of its semantics yields a non-blank value. Enum-valued fields validated via fromValue(...) drop silently on invalid input; unparseable dates are validated against yyyy, yyyy-MM, or yyyy-MM-dd.

Defaults not driven by semantics

These fields are always populated regardless of blueprint or template configuration:

RAiD JSON fieldSource
title[0].textPlan label. The transformer always prepends a primary title entry.
title[0].type.idHardcoded Primary (https://vocabulary.raid.org/title.type.id/380).
title[0].type.schemaUriHardcoded schema URI (https://vocabulary.raid.org/title.type.schema/376).
title[0].startDatePlan createdAt (yyyy-MM-dd).
title[0].endDatePlan finalizedAt (yyyy-MM-dd), emitted only if the plan is finalized.
date.startDatePlan updatedAt; overridden by blueprint / description semantics below.
date.endDatePlan updatedAt; overridden by blueprint / description semantics below.

Additional titles produced from description templates are appended after this primary title.

raid.identifier — plan blueprint

RAiD JSON fieldSemanticNotes
identifier.idraid.identifier.id
identifier.schemaUriraid.identifier.schemaUrihttps://metadata.raid.org/en/v1.6.3/core/identifier.html#identifier-id-schemauri.
identifier.registrationAgency.idraid.identifier.registrationAgency.id
identifier.registrationAgency.schemaUriraid.identifier.registrationAgency.schemaUrihttps://metadata.raid.org/en/v1.6.3/core/identifier.html#identifier-registrationagencyid-schemauri.
identifier.owner.idraid.identifier.owner.id
identifier.owner.schemaUriraid.identifier.owner.schemaUrihttps://metadata.raid.org/en/v1.6.3/core/identifier.html#identifier-owner-schemauri.
identifier.owner.servicePointraid.identifier.owner.servicePoint
identifier.licenseraid.identifier.licensehttps://metadata.raid.org/en/v1.6.3/core/identifier.html#identifier-license.
identifier.versionraid.identifier.version

These same semantics, if present on description-template fields, override the blueprint values.

raid.date — plan blueprint

RAiD JSON fieldSemanticNotes
date.startDateraid.date.startDateFalls back to the plan's updatedAt. Valid formats: yyyy, yyyy-MM, yyyy-MM-dd.
date.endDateraid.date.endDateSame as above.

Overridden by description-template fields with the same semantics.

raid.access — plan blueprint

RAiD JSON fieldSemanticNotes
access.type.idraid.access.type.idhttps://metadata.raid.org/en/v1.6.3/core/access.html#access-type-id.
access.type.schemaUriraid.access.type.schemaUrihttps://metadata.raid.org/en/v1.6.3/core/access.html#access-type-schemauri.
access.embargoExpiryraid.access.embargoExpiryAt the blueprint level the value must match yyyy-MM-dd exactly; at the description level the more permissive yyyy, yyyy-MM, yyyy-MM-dd set applies.
access.statement.textraid.access.statement.text
access.statement.language.idraid.access.statement.language.idhttps://metadata.raid.org/en/v1.6.3/core/access.html#access-statement-language-id.
access.statement.language.schemaUriraid.access.statement.language.schemaUrihttps://metadata.raid.org/en/v1.6.3/core/access.html#access-statement-language-schemauri.

Also override-able by description-template fields.

raid.title[] — description template (field set)

One entry per field-set item.

RAiD JSON fieldSemanticNotes
title[].textraid.title.text
title[].type.idraid.title.type.idhttps://metadata.raid.org/en/v1.6.3/core/titles.html#title-type-id.
title[].type.schemaUriraid.title.type.schemaUrihttps://metadata.raid.org/en/v1.6.3/core/titles.html#title-type-schemauri.
title[].language.idraid.title.language.idhttps://metadata.raid.org/en/v1.6.3/core/titles.html#title-language-id.
title[].language.schemaUriraid.title.language.schemaUrihttps://metadata.raid.org/en/v1.6.3/core/titles.html#title-language-schemauri.
title[].startDateraid.title.startDateDate format as above.
title[].endDateraid.title.endDateDate format as above.

raid.description[] — description template (field set)

RAiD JSON fieldSemanticNotes
description[].textraid.description.text
description[].type.idraid.description.type.idhttps://metadata.raid.org/en/v1.6.3/core/descriptions.html#description-type-id.
description[].type.schemaUriraid.description.type.schemaUrihttps://metadata.raid.org/en/v1.6.3/core/descriptions.html#description-type-schemauri.
description[].language.idraid.description.language.idEhttps://metadata.raid.org/en/v1.6.3/core/descriptions.html#description-language-id.
description[].language.schemaUriraid.description.language.schemaUrihttps://metadata.raid.org/en/v1.6.3/core/descriptions.html#description-language-schemauri.

raid.contributor[] — description template (field set)

The transformer emits each contributor's position[] and role[] as a single-element array — only one position and one role per contributor are populated by the current code.

RAiD JSON fieldSemanticNotes
contributor[].idraid.contributor.id
contributor[].position[0].idraid.contributor.position.idhttps://metadata.raid.org/en/v1.6.3/core/contributors.html#contributor-position-id.
contributor[].position[0].schemaUriraid.contributor.position.schemaUrihttps://metadata.raid.org/en/v1.6.3/core/contributors.html#contributor-position-schemauri.
contributor[].position[0].startDateraid.contributor.position.startDate
contributor[].position[0].endDateraid.contributor.position.endDate
contributor[].leaderraid.contributor.leaderSet to Yes only for the literal Yes value or true (case-insensitive); otherwise left null.
contributor[].contactraid.contributor.contactSame Yes/true rule.
contributor[].role[0].idraid.contributor.role.idhttps://metadata.raid.org/en/v1.6.3/core/contributors.html#contributor-role-id.
contributor[].role[0].schemaUriraid.contributor.role.schemaUrihttps://metadata.raid.org/en/v1.6.3/core/contributors.html#contributor-role-schemauri.
note

raid.contributor.schemaUri is recognised when scanning for contributor field sets but is not written to any output field — it exists as a grouping hint only.

raid.organisation[] — description template (field set)

One role object per organisation (single-element role[]).

RAiD JSON fieldSemanticNotes
organisation[].idraid.organisation.id
organisation[].schemaUriraid.organisation.schemaUrihttps://metadata.raid.org/en/v1.6.3/core/organisations.html#organisation-schemauri.
organisation[].role[0].idraid.organisation.role.idhttps://metadata.raid.org/en/v1.6.3/core/organisations.html#organisation-role-id.
organisation[].role[0].schemaUriraid.organisation.role.schemaUrihttps://metadata.raid.org/en/v1.6.3/core/organisations.html#organisation-role-schemauri.
organisation[].role[0].startDateraid.organisation.role.startDate
organisation[].role[0].endDateraid.organisation.role.endDate

raid.relatedObject[] — description template (field set)

RAiD JSON fieldSemanticNotes
relatedObject[].idraid.relatedObject.id
relatedObject[].schemaUriraid.relatedObject.schemaUrihttps://metadata.raid.org/en/v1.6.3/core/relatedObjects.html#relatedobject-schemauri.
relatedObject[].type.idraid.relatedObject.type.idhttps://metadata.raid.org/en/v1.6.3/core/relatedObjects.html#relatedobject-type-id.
relatedObject[].type.schemaUriraid.relatedObject.type.schemaUrihttps://metadata.raid.org/en/v1.6.3/core/relatedObjects.html#relatedobject-type-schemauri.
relatedObject[].category.idraid.relatedObject.category.idhttps://metadata.raid.org/en/v1.6.3/core/relatedObjects.html#relatedobject-category-id.
relatedObject[].category.schemaUriraid.relatedObject.category.schemaUrihttps://metadata.raid.org/en/v1.6.3/core/relatedObjects.html#relatedobject-category-id.

raid.alternateIdentifier[] — description template (field set)

RAiD JSON fieldSemanticNotes
alternateIdentifier[].idraid.alternateIdentifier.id
alternateIdentifier[].typeraid.alternateIdentifier.typeFree-form string, no enum validation.

raid.alternateUrl[] — description template (field set)

RAiD JSON fieldSemanticNotes
alternateUrl[].urlraid.alternateUrl.urlParsed via URI.create; invalid URIs are skipped with a warning.

raid.relatedRaid[] — description template (field set)

RAiD JSON fieldSemanticNotes
relatedRaid[].idraid.relatedRaid.id
relatedRaid[].type.idraid.relatedRaid.type.idhttps://metadata.raid.org/en/v1.6.3/core/relatedRaids.html#relatedraid-type-id.
relatedRaid[].type.schemaUriraid.relatedRaid.type.schemaUrihttps://metadata.raid.org/en/v1.6.3/core/relatedRaids.html#relatedraid-type-schemauri.

Import (RAiD → plan)

On import, the transformer writes back to plan blueprint values using the same identifier / date / access semantics listed above. It also sets plan.accessType to Public when access.type.id equals OpenAccess, otherwise Restricted. Description-level import is not implemented.