/spec/metadata/v2/) at a new URL, leaving this version permanently resolvable for files that reference it. The format is under active development and may gain further optional members within version 1; see §8. The CIDOC CRM crosswalk in §6 is a documented mapping intended to guide a future RDF/LIDO exporter; this version of MeshNotes emits the metadata as the JSON object described here and does not itself emit RDF.
This document specifies the metadata member that MeshNotes embeds in its annotation export (the AnnotationCollection defined by the MeshNotes Annotation Format Specification [ANN] §8) and that MeshNotes also reads and writes as a standalone metadata-report JSON file. The block records the structured meta- and paradata of a 3D documentation project: general project information, the object's archaeological context, capture and processing parameters, referencing, paradata (the reasoning behind the documentation), and legal information.
The block is organised into sections of fields. Every field has a stable identifier that is independent of its display label, so labels can be edited or translated without breaking the data; selected fields additionally carry an optional authority URI linking their free-text value to a controlled vocabulary. The whole block is, and remains, fully optional: any field may be empty, and an empty report is valid.
The design goal is that the metadata, while a plain JSON object, is cleanly mappable to CIDOC CRM and ingestible by infrastructure such as NFDI4Objects. §5 (subject kind) and §6 (the crosswalk) define that mapping. The mapping is documented here rather than serialised per-field in the export: an exported field carries only its identifier, label, value and optional URI; the CRM path for each identifier is given by this specification.
A metadata block conforms to this specification when:
sections array of the shape defined in §4;"dcterms:conformsTo": "https://meshnotes.org/spec/metadata/v1/";id and a value (possibly empty), as in §4;subjectKind is one of the values in §5;https://meshnotes.org/spec/metadata/v1/schema.json.No field is ever required to be non-empty. The schema validates the shape of what is present; it never requires any particular field to be filled. A consumer must ignore members it does not recognise rather than reject the block, and should preserve them on round-trip.
The key words must, must not, should, should not and may are used as defined in RFC 2119.
Within a MeshNotes export, this block is the value of the metadata member of the AnnotationCollection ([ANN] §8). It is self-describing through its own dcterms:conformsTo, independent of the collection's. The same block is also the content of the standalone metadata-report file (wrapped as { "generator", "type": "MetadataReport", "exported", "model", "metadata": { … } }). The two are byte-for-byte the same object, so a report can be round-tripped between the two carriers without loss.
| Member | Req. | Type | Description |
|---|---|---|---|
dcterms:conformsTo | must | IRI | This specification's URL. Identifies the metadata-format version. |
template | should | string | Identifier of the field template in use. This version defines one: "3d-documentation". |
subjectKind | may | string | The nature of the documented subject, which fixes its CIDOC CRM root class; see §5. Defaults to "mixed" (the E24 umbrella) when absent. |
sections | must | array | The report sections; see §4.1. |
| Member | Req. | Type | Description |
|---|---|---|---|
id | must | string | Stable section identifier (e.g. object_context). Never changes. |
title | should | string | Display name of the section (e.g. "Object Context"). Editable/translatable. |
fields | must | array | Template fields; see §4.2. |
customFields | may | array | User-added fields; see §4.3. |
This version defines seven sections: general, object_context, capture, reference, processing, paradata, legal.
| Member | Req. | Type | Description |
|---|---|---|---|
id | must | string | Stable field identifier, unique within its section (e.g. dating_period). This is the machine name; it never changes and is the key for the CRM crosswalk in §6. The same id (e.g. additional_notes) may recur in different sections. |
label | should | string | Display name (e.g. "Dating / Period"). Editable/translatable; carries no identity. |
value | must | string | The field value. May be the empty string. |
uri | may | IRI | An authority reference for the value, drawn from the controlled vocabulary appropriate to the field (see §6 / §7). Present only when supplied; omitted (not emptied) otherwise. |
User-added fields have no stable identifier; their label is their identity.
| Member | Req. | Type | Description |
|---|---|---|---|
label | must | string | The user-given field name. |
value | must | string | The field value. May be empty. |
uri | may | IRI | Optional authority reference. |
"metadata": {
"dcterms:conformsTo": "https://meshnotes.org/spec/metadata/v1/",
"template": "3d-documentation",
"subjectKind": "object",
"sections": [
{
"id": "object_context",
"title": "Object Context",
"fields": [
{ "id": "object_type", "label": "Object Type / Classification",
"value": "skyphos", "uri": "http://vocab.getty.edu/aat/300043171" },
{ "id": "dating_period", "label": "Dating / Period",
"value": "Augustan", "uri": "http://n2t.net/ark:/99152/p0qhb66kmtr" },
{ "id": "additional_notes", "label": "Additional Notes", "value": "" }
],
"customFields": [
{ "label": "Ware", "value": "Eastern Sigillata A" }
]
}
]
}
A 3D model may document a movable artefact, a fixed architectural feature, a whole building, an excavation site or city, or a tract of landscape. These are not the same kind of entity in CIDOC CRM, and forcing them all to a single class would mis-state most of them. The subjectKind member therefore declares what is being documented, and that single choice fixes the CRM root class of the subject. It does not change which fields exist or which are shown — every field remains available and optional for every kind. Only the class of the root node onto which the §6 properties hang is substituted.
subjectKind | CIDOC CRM root class | Typical use |
|---|---|---|
object | E22 Human-Made Object | A movable artefact: vessel, coin, statue, tool. |
feature | E25 Human-Made Feature | An immovable installation: wall, mosaic floor, relief, rock-cut tomb. |
building | E25 Human-Made Feature | A standing building or monument. |
site | E27 Site | An excavation area, ruin complex, or (part of) an ancient city. |
landscape | E26 Physical Feature | A natural feature or tract of landscape. |
mixed (default) | E24 Physical Human-Made Thing | Mixed or unspecified subjects; the safe umbrella that is never mis-asserted. |
Because the §6 field properties are defined on common CRM ancestors (E18 Physical Thing, E24 Physical Human-Made Thing), they apply unchanged whether the root is an E22 artefact, an E25 feature or an E27 site. Only the root class differs. One consequence: for an E27 Site the find_spot field (§6, P53) is conceptually redundant, since the site is its place; a CRM exporter may omit the P53 assertion in that case rather than create a place distinct from the site.
This section maps each template field, by its stable id, to a CIDOC CRM property path rooted at the subject (the class chosen in §5, generically “subject” below) or at one of the events that produced or processed it. The mapping is based on CIDOC CRM 7.1.3; the digitization tier additionally uses CRMdig classes. Where a field is genuinely free reasoning or administrative text, it maps to P3 has note; any field not listed below, and any custom field, defaults to P3 has note (typed by the field label).
Properties of the subject itself.
Field id | CIDOC CRM path | LIDO element | Vocabulary |
|---|---|---|---|
object | subject → P1 is identified by → E41 Appellation | titleSet / appellation | — |
object_type | subject → P2 has type → E55 Type | objectWorkType | Getty AAT |
material | subject → P45 consists of → E57 Material | materialsTech | Getty AAT |
dimensions | subject → P43 has dimension → E54 Dimension | objectMeasurements | — |
inventory_number | subject → P1 is identified by → E42 Identifier | repositoryWorkID | — |
current_location | subject → P55 has current location → E53 Place | repositoryLocation | GND / Wikidata |
find_spot | subject → P53 has former or current location → E53 Place | eventPlace (finding) | gazetteer |
dating_period | subject → P108i was produced by → E12 Production → P4 has time-span → E52 Time-Span | eventDate / periodName | PeriodO |
conservation_state | subject → P44 has condition → E3 Condition State | — | — |
copyright | subject → P104 is subject to → E30 Right | rightsType | — |
Dating is modelled through the production event (P108i → E12 → P4 → E52), not attached directly to the object, because in CIDOC CRM time-spans belong to events. A PeriodO URI on dating_period identifies the period concept that the time-span instantiates.
The capture and processing of the model are modelled as events that produced the 3D model as a CRMdig D9 Data Object: a digitization event (capture) and a processing event. These fields describe those events. They use CRM-base properties (P14, P16, P32, P4, P7), which apply to CRMdig D-classes by inheritance; the precise CRMdig L-properties (e.g. for “used software”) follow CRMdig v5.0 and are left to the exporter where a base property does not suffice.
Field id | Event | CIDOC CRM / CRMdig path |
|---|---|---|
documentation_method | digitization | event → P32 used general technique → E55 Type |
registration_method | digitization | event → P32 used general technique → E55 Type |
capture_operator | digitization | event → P14 carried out by → E21 Person |
instrument | digitization | event → P16 used specific object → D8 Digital Device |
fieldwork_timeline | digitization | event → P4 has time-span → E52 Time-Span |
location | digitization | event → P7 took place at → E53 Place |
processing_operator | processing | event → P14 carried out by → E21 Person |
software | processing | event → used software → D14 Software |
model_details | — | P3 has note (on the D9 Data Object) |
project_lead | project | activity → P14 carried out by → E21 Person |
Person fields (capture_operator, processing_operator, project_lead) are free text that may name several people; this version does not attach ORCID identifiers to them in the metadata block. Authorship of annotations carries ORCID separately ([ANN] §6.1). The fine capture parameters (lens, iso, aperture, focal_length, filter, color_card, scan_resolution, working_distance, calibration, number_of_captures) are deliberately mapped at note level (P3) on the digitization event rather than given a property each, to avoid over-modelling.
The following fields map to P3 has note (typed by the field label), on the subject or the relevant event. They record free reasoning or administrative text for which a more specific CRM property would over-state structure in version 1:
project_title, project_description, documentation_purpose, excavation_reference, referenced_by, image_preprocessing, versions, algorithm_parameters, workflow_description, postprocessing_information, quality_summary, lighting_conditions, technical_notes, funding, acknowledgments, every additional_notes, and all Paradata fields (method_rationale, sources_consulted, interpretive_decisions, known_limitations, uncertainty_notes).
Two of these are flagged for future, more expressive modelling rather than P3 in a later version: stratigraphic_context is a target for CRMarchaeo (stratigraphic units), and the Paradata fields are targets for CRMinf (belief and argumentation). Until then they are honest free-text notes.
Five fields accept an optional uri linking their value to a controlled vocabulary. The vocabulary is a recommendation, not a constraint: any resolvable URI is accepted, and the field stays usable with no URI at all.
Field id | Recommended vocabulary | Examples |
|---|---|---|
object_type | Getty AAT | http://vocab.getty.edu/aat/… |
material | Getty AAT | http://vocab.getty.edu/aat/… |
dating_period | PeriodO | http://n2t.net/ark:/99152/p0… |
find_spot | Gazetteer | iDAI.gazetteer, Pleiades, GeoNames |
location | Gazetteer | iDAI.gazetteer, Pleiades, GeoNames |
The format is deliberately open. A conforming consumer must ignore members it does not recognise rather than reject the block, and should preserve them on round-trip. Within version 1, MeshNotes may add further optional members (new fields, new section members, new field descriptors such as uri) without a version bump; it will not change the meaning of an existing field id, remove a field id, or make any field required to be non-empty within version 1. The JSON Schema (§10) is correspondingly lenient: it validates the shape of known members and permits additional properties.
Field and section identifiers, once published, keep their meaning permanently. This specification and its JSON Schema are versioned and frozen: a breaking change — renaming or removing an identifier, or changing a field's CRM mapping in an incompatible way — is published at a new version path (/spec/metadata/v2/), and this version remains resolvable indefinitely so that files referencing it continue to validate.
A metadata block can be validated structurally against the JSON Schema at https://meshnotes.org/spec/metadata/v1/schema.json (JSON Schema draft 2020-12). The schema checks the block structure (sections, fields, custom fields), the subjectKind enumeration and the conformance target, applies a light pattern check to uri values, and otherwise permits additional properties. It never requires any field value to be non-empty.