{
    "$ref": "#/definitions/Edition",
    "$schema": "http://json-schema.org/draft-07/schema#",
    "definitions": {
        "ActorAssignment": {
            "$ref": "#/definitions/ObjectAssumption%3CPerson%3E",
            "description": "An actor assignment associates a person with an action. It is an object assumption so that the attribution can be annotated with a belief about its certainty."
        },
        "Agent": {
            "description": "A person or a group: a pianist, an editor, a publisher, a manufacturer, a library.",
            "properties": {
                "name": {
                    "description": "The name, e.g. \"Grünfeld, Alfred\", \"Wien\", \"M. Welte & Söhne\".",
                    "type": "string",
                    "ontology": "rdfs:label"
                },
                "role": {
                    "$ref": "#/definitions/AgentRole",
                    "description": "The role of the agent in the context of the edition.",
                    "ontology": "crm:P2 has type"
                },
                "sameAs": {
                    "description": "Authority records for the same thing: GND, Wikidata, geonames or similar.",
                    "examples": [
                        "https://d-nb.info/gnd/116888652"
                    ],
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "ontology": "owl:sameAs"
                },
                "@id": {
                    "description": "A unique identifier for this object.",
                    "type": "string"
                }
            },
            "required": [
                "name",
                "sameAs"
            ],
            "type": "object",
            "ontology": "crm:E39 Actor"
        },
        "AgentRole": {
            "anyOf": [
                {
                    "$ref": "#/definitions/EditorialRole"
                },
                {
                    "const": "pianist",
                    "type": "string"
                },
                {
                    "const": "publisher",
                    "type": "string"
                }
            ],
            "description": "The role an agent plays in the context of the edition."
        },
        "Alignment": {
            "description": "How the copy's own places are carried onto the edition's axis, which is the millimetres of its reference copy (`Edition.referenceCopy`):\n\n    x_axis = (x + shift.horizontal) · scale     track_axis = track + shift.vertical\n\nIt is found, not given: `alignCopy` matches the copy's notes with the reference copy's and records what it found, and can find it again. The document holds the copy's features and tears at its own places, as they were read, and this beside them; `importJsonLd` puts them onto the axis and `asJsonLd` takes them back, so that within the library every place along the roll is a place on the axis.\n\nWhat the scale is put down to, the paper or the speed the copy was cut for, is worked out from all the alignments together (`paperOf`). Not exported to RDF.",
            "properties": {
                "against": {
                    "description": "The copy it was found against, by id: the edition's reference copy at the time. Left out by alignments recorded before this was.",
                    "type": "string"
                },
                "foundBy": {
                    "description": "The software that found it, and when.",
                    "properties": {
                        "date": {
                            "description": "The day it was found.",
                            "format": "date",
                            "type": "string"
                        },
                        "software": {
                            "description": "The name of the method.",
                            "type": "string"
                        },
                        "version": {
                            "description": "Its revision (`ALIGNMENT_METHOD`).",
                            "type": "string"
                        }
                    },
                    "required": [
                        "software",
                        "version",
                        "date"
                    ],
                    "type": "object"
                },
                "matched": {
                    "description": "How many notes of the copy found their counterpart on the reference copy.",
                    "type": "number"
                },
                "residual": {
                    "$ref": "#/definitions/Millimeters",
                    "description": "How far the counterparts still lie apart, as a root mean square in millimetres of the axis."
                },
                "scale": {
                    "description": "Own millimetres to the axis's, applied after the shift.",
                    "type": "number"
                },
                "scaleError": {
                    "description": "The standard error of the scale: the residual over the spread of the matched notes along the roll, as for a line of least squares.",
                    "type": "number"
                },
                "shift": {
                    "$ref": "#/definitions/Shift",
                    "description": "Applied before the scale."
                }
            },
            "required": [
                "shift",
                "scale"
            ],
            "type": "object"
        },
        "AnyArgumentation": {
            "anyOf": [
                {
                    "$ref": "#/definitions/MeaningComprehension"
                },
                {
                    "$ref": "#/definitions/Inference"
                },
                {
                    "$ref": "#/definitions/BeliefAdoption"
                },
                {
                    "$ref": "#/definitions/Measurement"
                },
                {
                    "$ref": "#/definitions/Argumentation"
                }
            ],
            "description": "An argumentation can be either a plain argumentation, a meaning comprehension, an inference, a belief adoption or a measurement."
        },
        "AnyFeature": {
            "anyOf": [
                {
                    "$ref": "#/definitions/HoleChain"
                },
                {
                    "$ref": "#/definitions/Writing"
                },
                {
                    "$ref": "#/definitions/Mark"
                }
            ],
            "description": "The features proper: a chain of holes, a writing and a mark are all human-made features, and each of them is borne by whatever it sits on. A patch is an object glued onto the paper and stands apart from them."
        },
        "AnySymbol": {
            "anyOf": [
                {
                    "$ref": "#/definitions/Note"
                },
                {
                    "$ref": "#/definitions/Expression"
                },
                {
                    "$ref": "#/definitions/Text"
                }
            ],
            "description": "A symbol can be either a note, an expression, or a text. Notes and expressions are commands; texts are carried by writings."
        },
        "Argumentation": {
            "description": "An argumentation provides reasons for a belief and may be associated with a person carrying out that argumentation.",
            "properties": {
                "actor": {
                    "$ref": "#/definitions/Person",
                    "description": "The person who carried out this activity.",
                    "ontology": "crm:P14 carried out by"
                },
                "note": {
                    "description": "A free-text note providing additional context.",
                    "type": "string",
                    "ontology": "crm:P3 has note"
                },
                "@type": {
                    "const": "simpleArgumentation",
                    "type": "string",
                    "description": "The type discriminator for this object.",
                    "ontology": "rdf:type"
                }
            },
            "required": [
                "@type"
            ],
            "type": "object",
            "ontology": "crminf:I1 Argumentation"
        },
        "Belief": {
            "description": "A belief is a temporal object and associates a proposition (i.e. a statement) with a certainty. It comes into existence through argumentations (reasons).",
            "properties": {
                "certainty": {
                    "$ref": "#/definitions/Certainty",
                    "description": "The level of certainty associated with this belief.",
                    "ontology": "crminf:J5 holds to be"
                },
                "reasons": {
                    "description": "The argumentations providing reasons for this belief.",
                    "items": {
                        "$ref": "#/definitions/AnyArgumentation"
                    },
                    "type": "array",
                    "ontology": "crminf:J2i was concluded by"
                },
                "@id": {
                    "description": "A unique identifier for this object.",
                    "type": "string"
                },
                "@type": {
                    "const": "belief",
                    "type": "string",
                    "description": "The type discriminator for this object.",
                    "ontology": "rdf:type"
                }
            },
            "required": [
                "certainty",
                "@id",
                "reasons",
                "@type"
            ],
            "type": "object",
            "ontology": "crminf:I2 Belief"
        },
        "BeliefAdoption": {
            "description": "A belief adoption takes over someone else's belief without checking it: knowledge through private communication, from the secondary literature, or from another edition. Like every reason, it concludes the belief it is a reason of, which is the edition's own and holds of the edition's statement what the adopted belief held. An inference that relies on it names that belief among its premises.\n\nThe editor's own beliefs need no adoption, wherever they are published: an inference names them directly (see `Inference`).",
            "properties": {
                "actor": {
                    "$ref": "#/definitions/Person",
                    "description": "The person who carried out this activity.",
                    "ontology": "crm:P14 carried out by"
                },
                "adopted": {
                    "description": "The beliefs this adoption takes over, by IRI, where they are published with one. They are someone else's, and stay theirs: what the edition holds is the belief the adoption concludes.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "ontology": "crminf:J6 adopted"
                },
                "note": {
                    "description": "A note describing the source of the adopted belief, e.g. a bibliographic reference or personal communication. Where the belief is adopted by its IRI, the note says in which state it was taken over, since a belief published elsewhere may move after the edition has taken it.",
                    "type": "string",
                    "ontology": "crm:P3 has note"
                },
                "@type": {
                    "const": "beliefAdoption",
                    "type": "string",
                    "description": "The type discriminator for this object.",
                    "ontology": "rdf:type"
                }
            },
            "required": [
                "note",
                "@type"
            ],
            "type": "object",
            "ontology": "crminf:I7 Belief Adoption"
        },
        "Certainty": {
            "description": "Certainty levels for beliefs, ranging from 'true' to 'false' and some values in between.",
            "enum": [
                "true",
                "likely",
                "possible",
                "unlikely",
                "false"
            ],
            "type": "string"
        },
        "Concept": {
            "anyOf": [
                {
                    "properties": {
                        "name": {
                            "description": "The name, e.g. \"Grünfeld, Alfred\", \"Wien\", \"M. Welte & Söhne\".",
                            "type": "string",
                            "ontology": "rdfs:label"
                        },
                        "sameAs": {
                            "description": "Authority records for the same thing: GND, Wikidata, geonames or similar.",
                            "examples": [
                                "https://d-nb.info/gnd/116888652"
                            ],
                            "items": {
                                "type": "string"
                            },
                            "type": "array",
                            "ontology": "owl:sameAs"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "@id"
                    ],
                    "type": "object"
                },
                {
                    "properties": {
                        "name": {
                            "description": "The name, e.g. \"Grünfeld, Alfred\", \"Wien\", \"M. Welte & Söhne\".",
                            "type": "string",
                            "ontology": "rdfs:label"
                        },
                        "sameAs": {
                            "description": "Authority records for the same thing: GND, Wikidata, geonames or similar.",
                            "examples": [
                                "https://d-nb.info/gnd/116888652"
                            ],
                            "items": {
                                "type": "string"
                            },
                            "type": "array",
                            "ontology": "owl:sameAs"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "name",
                        "sameAs"
                    ],
                    "type": "object"
                }
            ],
            "description": "A term from a vocabulary, such as a roll system, a procedure or a kind of paper.\n\nA term the type vocabulary declares is named by its IRI, and what it is called stands in the vocabulary rather than in the edition, so it needs no name of its own; `nameOf` reads one either way. A term the vocabulary does not have is given by name, which is then all there is to go on.",
            "ontology": "crm:E55 Type"
        },
        "DateAssignment": {
            "anyOf": [
                {
                    "properties": {
                        "@annotation": {
                            "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                            "properties": {
                                "belief": {
                                    "$ref": "#/definitions/Belief",
                                    "description": "The belief held about the annotated statement.",
                                    "ontology": "crminf:J4i is subject of"
                                },
                                "@id": {
                                    "description": "A unique identifier for this object.",
                                    "type": "string"
                                }
                            },
                            "required": [
                                "belief",
                                "@id"
                            ],
                            "type": "object"
                        },
                        "within": {
                            "description": "The day the event falls within.",
                            "format": "date",
                            "type": "string",
                            "ontology": "crm:P82 at some time within"
                        }
                    },
                    "required": [
                        "within"
                    ],
                    "type": "object"
                },
                {
                    "properties": {
                        "@annotation": {
                            "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                            "properties": {
                                "belief": {
                                    "$ref": "#/definitions/Belief",
                                    "description": "The belief held about the annotated statement.",
                                    "ontology": "crminf:J4i is subject of"
                                },
                                "@id": {
                                    "description": "A unique identifier for this object.",
                                    "type": "string"
                                }
                            },
                            "required": [
                                "belief",
                                "@id"
                            ],
                            "type": "object"
                        },
                        "after": {
                            "description": "The earliest day the event can have happened on: it did not happen before it.",
                            "format": "date",
                            "type": "string",
                            "ontology": "crm:P82a begin of the begin"
                        },
                        "before": {
                            "description": "The latest day the event can have happened on: it did not happen after it.",
                            "format": "date",
                            "type": "string",
                            "ontology": "crm:P82b end of the end"
                        }
                    },
                    "required": [
                        "after"
                    ],
                    "type": "object"
                },
                {
                    "properties": {
                        "@annotation": {
                            "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                            "properties": {
                                "belief": {
                                    "$ref": "#/definitions/Belief",
                                    "description": "The belief held about the annotated statement.",
                                    "ontology": "crminf:J4i is subject of"
                                },
                                "@id": {
                                    "description": "A unique identifier for this object.",
                                    "type": "string"
                                }
                            },
                            "required": [
                                "belief",
                                "@id"
                            ],
                            "type": "object"
                        },
                        "after": {
                            "description": "The earliest day the event can have happened on: it did not happen before it.",
                            "format": "date",
                            "type": "string",
                            "ontology": "crm:P82a begin of the begin"
                        },
                        "before": {
                            "description": "The latest day the event can have happened on: it did not happen after it.",
                            "format": "date",
                            "type": "string",
                            "ontology": "crm:P82b end of the end"
                        }
                    },
                    "required": [
                        "before"
                    ],
                    "type": "object"
                }
            ],
            "description": "When something happened, as far as the edition can state it, and as an assumption, so that a dating can carry the belief it rests on: the day it falls `within`, or the bounds it lies between. A bound nobody can give is left out, so `after` alone says \"not before\".",
            "ontology": "crm:E52 Time-Span"
        },
        "Derivation": {
            "description": "A derivation names the version another one was derived from, together with the tolerance the two were collated at. How precisely the copies put a symbol depends on what they are and on how their features were obtained, so the tolerance can differ from derivation to derivation.",
            "properties": {
                "@annotation": {
                    "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                    "properties": {
                        "belief": {
                            "$ref": "#/definitions/Belief",
                            "description": "The belief held about the annotated statement.",
                            "ontology": "crminf:J4i is subject of"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "belief",
                        "@id"
                    ],
                    "type": "object"
                },
                "collationTolerance": {
                    "$ref": "#/definitions/ObjectAssumption%3CCollationTolerance%3E",
                    "description": "The tolerance at which the derived version was collated against the one it is based on. A derivation written before the tolerance was held here states none. Not exported to RDF.\n\nIt is an object assumption, so that a tolerance calculated from the scatter of the readings can carry the inference it was drawn by. It is the one quantity in the edition that decides what counts as a reading at all, and a number arrived at by a method should say so."
                },
                "@id": {
                    "description": "A unique identifier for this object.",
                    "type": "string"
                }
            },
            "required": [
                "@id"
            ],
            "type": "object",
            "ontology": "lrmoo:R76 is derivative of"
        },
        "DriveId": {
            "description": "The IRI of a drive the type vocabulary declares.",
            "enum": [
                "https://w3id.org/reo/type/drive/ram-head",
                "https://w3id.org/reo/type/drive/asynchronous"
            ],
            "type": "string"
        },
        "Edit": {
            "description": "A set of edits transforms a version of a roll into another version. Edits insert or delete symbols, or both (= replace). What kind of change an edit is follows from its motivation (`kindOfChange`). If an edit is the interpretation of a metamark, such as a pencil mark, this should be made explicit using a meaning comprehension on the `@annotation` field. An edit states no date. That it ended no later than the act that made a feature carrying a symbol it inserts, a reasoner derives with the axioms of reo.ttl; which of those dates bounds it closest is for a query to pick.",
            "properties": {
                "@annotation": {
                    "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                    "properties": {
                        "belief": {
                            "$ref": "#/definitions/Belief",
                            "description": "The belief held about the annotated statement.",
                            "ontology": "crminf:J4i is subject of"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "belief",
                        "@id"
                    ],
                    "type": "object"
                },
                "delete": {
                    "description": "References (by `@id`) to the symbols to be deleted by this edit.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "ontology": "reo:removed"
                },
                "insert": {
                    "description": "The symbols to be inserted by this edit.",
                    "items": {
                        "$ref": "#/definitions/AnySymbol"
                    },
                    "type": "array",
                    "ontology": "reo:added"
                },
                "motivation": {
                    "description": "Why the edit was made: one of the edition's motivations, by id, or one the vocabulary publishes, by IRI (`musicalChange`, `technicalChange`). An edit of a version that derives from none states none.",
                    "type": "string",
                    "ontology": "crm:P17 was motivated by"
                },
                "@id": {
                    "description": "A unique identifier for this object.",
                    "type": "string"
                },
                "@type": {
                    "const": "edit",
                    "type": "string",
                    "description": "The type discriminator for this object.",
                    "ontology": "rdf:type"
                }
            },
            "required": [
                "@id",
                "@type"
            ],
            "type": "object",
            "ontology": "reo:Edit"
        },
        "Edition": {
            "description": "Describes the specific digital edition of a piano roll.",
            "properties": {
                "copies": {
                    "description": "The physical roll copies on which this edition is based.",
                    "items": {
                        "$ref": "#/definitions/RollCopy"
                    },
                    "type": "array",
                    "ontology": "reo:witness"
                },
                "creation": {
                    "$ref": "#/definitions/EditionCreation",
                    "description": "Information about the creation of this edition, including publisher and publication date.",
                    "ontology": "lrmoo:R17i was created by"
                },
                "license": {
                    "description": "The license under which the edition is published.",
                    "examples": [
                        "https://creativecommons.org/licenses/by/4.0/"
                    ],
                    "type": "string",
                    "ontology": "dcterms:license"
                },
                "motivations": {
                    "description": "The editor's motivations, each a reason for musical changes in words, stated once and named by the edits of any version (`Edit.motivation`). The motivations the vocabulary publishes are named by IRI and not stated here (`musicalChange`, `technicalChange`).",
                    "items": {
                        "$ref": "#/definitions/Motivation"
                    },
                    "type": "array"
                },
                "referenceCopy": {
                    "description": "The copy whose millimetres are the edition's axis, by id: every place the edition gives along the roll is a place on this copy's paper, counted from where its scan begins, and every other copy is aligned onto it. Choosing it is the one editorial decision the alignment leaves; a copy scanned whole and without tears serves best, since its places are what notes and readers cite. Left out, it is the first copy with features that is not aligned (`referenceCopyOf`).",
                    "type": "string",
                    "ontology": "reo:referenceCopy"
                },
                "roll": {
                    "$ref": "#/definitions/Roll",
                    "description": "The roll which is edited in this edition.",
                    "ontology": "lrmoo:R3i realises"
                },
                "title": {
                    "description": "The title of the edition.",
                    "examples": [
                        "Alfred Grünfeld spielt Robert Schumann, Träumerei"
                    ],
                    "type": "string",
                    "ontology": "dcterms:title"
                },
                "version": {
                    "description": "The version of the edition, which a citation names together with the publication date. The editor raises it for each release and sets the publication date with it, so that what a reader cited can be told from what has changed since. An edition published before this field existed states none.",
                    "examples": [
                        "1.0"
                    ],
                    "type": "string",
                    "ontology": "owl:versionInfo"
                },
                "versions": {
                    "description": "The different versions of the roll on which this edition is based.",
                    "items": {
                        "$ref": "#/definitions/Version"
                    },
                    "type": "array",
                    "ontology": "lrmoo:R75 incorporates"
                }
            },
            "required": [
                "creation",
                "title",
                "license",
                "roll",
                "copies",
                "versions"
            ],
            "type": "object",
            "ontology": "lrmoo:F2 Expression"
        },
        "EditionCreation": {
            "description": "This type describes the creation of an edition: the editors, publisher and publication date, the editorial principles the edition follows, and the programs it was made with.",
            "properties": {
                "editors": {
                    "description": "The persons who prepared the edition, each with the part they took in the editorial work. An edition written before this field existed carries none.",
                    "items": {
                        "$ref": "#/definitions/Editor"
                    },
                    "type": "array",
                    "ontology": "crm:P14 carried out by"
                },
                "principles": {
                    "description": "The editorial principles the edition follows, by IRI: the published rules its stemma and its edits rest on, whether the editor applied them or a program did, such as that the same addition at the same place is not made twice independently (`stemmaRules`, `editRules`). Adopting a proposal names those it follows. An edition that names none leaves it out.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "ontology": "crm:P33 used specific technique"
                },
                "publicationDate": {
                    "description": "The date on which the edition was published: where it states a version, the date of that version.",
                    "format": "date",
                    "type": "string",
                    "ontology": "dcterms:date"
                },
                "publisher": {
                    "$ref": "#/definitions/Person",
                    "description": "The person or institution responsible for publishing the edition.",
                    "ontology": "crm:P14 carried out by"
                },
                "software": {
                    "description": "The programs the edition was made with, each with its release: the release of this library that found its stemma and grouped its edits, which finds them again with the defaults it has. Adopting a proposal names it, and saving the edition does not, so that the release named is the one that found what the edition states.",
                    "items": {
                        "$ref": "#/definitions/Software"
                    },
                    "type": "array",
                    "ontology": "crm:P16 used specific object"
                }
            },
            "required": [
                "publisher",
                "publicationDate"
            ],
            "type": "object",
            "ontology": "lrmoo:F28 Expression Creation"
        },
        "Editor": {
            "description": "A person who took part in preparing the edition.",
            "properties": {
                "name": {
                    "description": "The name, e.g. \"Grünfeld, Alfred\", \"Wien\", \"M. Welte & Söhne\".",
                    "type": "string",
                    "ontology": "rdfs:label"
                },
                "role": {
                    "$ref": "#/definitions/EditorialRole",
                    "description": "The part this person took in the editorial work.",
                    "ontology": "crm:P2 has type"
                },
                "sameAs": {
                    "description": "Authority records for the same thing: GND, Wikidata, geonames or similar.",
                    "examples": [
                        "https://d-nb.info/gnd/116888652"
                    ],
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "ontology": "owl:sameAs"
                },
                "@id": {
                    "description": "A unique identifier for this object.",
                    "type": "string"
                }
            },
            "required": [
                "name",
                "role",
                "sameAs"
            ],
            "type": "object"
        },
        "EditorialRole": {
            "description": "The part an editor took in the editorial work.",
            "enum": [
                "editor",
                "transcription",
                "collation",
                "encoding",
                "commentary",
                "proofreading"
            ],
            "type": "string"
        },
        "Expression": {
            "description": "An expression symbol, representing a command that governs dynamics, pedaling, or mechanical functions of the reproducing piano rather than sounding a note. Each expression has a scope (bass or treble) and a specific expression type.",
            "properties": {
                "after": {
                    "$ref": "#/definitions/ReferenceAssumption",
                    "description": "A command whose onset this one follows when the roll is performed, the counterpart of `before`. This points to the command by its `@id`.",
                    "ontology": "reo:after"
                },
                "alignedWith": {
                    "$ref": "#/definitions/ReferenceAssumption",
                    "description": "In piano rolls, commands are often aligned with other commands, e.g. a \"crescendo off\" might be logically aligned to the start of a note. This points to the command by its `@id`.",
                    "ontology": "reo:alignedWith"
                },
                "before": {
                    "$ref": "#/definitions/ReferenceAssumption",
                    "description": "A command whose onset this one precedes when the roll is performed, without saying by how much: a \"crescendo off\" ends before the note it leads to begins, even where the copies disagree on it. Where the measurement has it so, nothing moves; where it does not, this one is placed before the reference as far as the copies that agree put it. This points to the command by its `@id`.",
                    "ontology": "reo:before"
                },
                "carriers": {
                    "description": "References to the physical features (e.g. chains of holes) on the roll copies that carry this symbol. Since the association might be debatable, it can be annotated. There might be e.g. doubts about the meaning and correct transcription of a feature on a physical roll. This points to a feature by its `@id`.",
                    "items": {
                        "$ref": "#/definitions/ReferenceAssumption"
                    },
                    "type": "array",
                    "ontology": "crm:P128i is carried by"
                },
                "expressionType": {
                    "description": "The kind of command, named as the reproducing system of the roll names it: \"SustainPedalOn\", \"ForzandoOff\" and so on for the Welte-Mignon T-100. The tracker bar of the system lists the values it reads.",
                    "type": "string",
                    "ontology": "crm:P2 has type"
                },
                "pairedWith": {
                    "$ref": "#/definitions/ReferenceAssumption",
                    "description": "The command this one forms a pair with, e.g. a \"forzando on\" with its \"forzando off\". Any two commands may be paired. The distance between the two is fixed: whatever displaces the one displaces the other. The relation is symmetric and is stated on one side only. This points to the command by its `@id`.",
                    "ontology": "reo:pairedWith"
                },
                "scope": {
                    "$ref": "#/definitions/ExpressionScope",
                    "description": "Whether this expression applies to the bass or treble register.",
                    "ontology": "reo:scope"
                },
                "@id": {
                    "description": "A unique identifier for this object.",
                    "type": "string"
                },
                "@type": {
                    "const": "expression",
                    "type": "string",
                    "description": "The type discriminator for this object.",
                    "ontology": "rdf:type"
                }
            },
            "required": [
                "carriers",
                "expressionType",
                "@id",
                "scope",
                "@type"
            ],
            "type": "object",
            "ontology": "reo:Expression"
        },
        "ExpressionScope": {
            "description": "The scope of an expression command, indicating whether it applies to the bass or treble register of the piano.",
            "enum": [
                "bass",
                "treble"
            ],
            "type": "string",
            "ontology": "reo:scope"
        },
        "FeatureSource": {
            "description": "The capture by which a copy's features became data: what they were read from, who read them, on what device, with what software and when. It states where the numbers of the edition come from and says nothing about the state of the paper, which is a condition.\n\nWhat is not known is left out. A reader is told about the gap by `reservationsAbout`, which works out what a copy cannot vouch for from what it states here.",
            "properties": {
                "actor": {
                    "$ref": "#/definitions/ActorAssignment",
                    "description": "Who carried out the capture.",
                    "ontology": "crm:P14 carried out by"
                },
                "date": {
                    "$ref": "#/definitions/DateAssignment",
                    "description": "When the capture took place.",
                    "ontology": "crm:P4 has time-span"
                },
                "device": {
                    "$ref": "#/definitions/Concept",
                    "description": "The make and model of the scanner, camera or player the capture ran on.",
                    "ontology": "crmdig:L12 happened on device"
                },
                "instrument": {
                    "$ref": "#/definitions/ObjectAssumption%3CInstrument%3E",
                    "description": "The instrument the copy was played on, where the capture is a recording of it.",
                    "ontology": "crm:P16 used specific object"
                },
                "kind": {
                    "$ref": "#/definitions/SourceKind",
                    "description": "What the features were read from.",
                    "ontology": "crm:P2 has type"
                },
                "note": {
                    "description": "A free-text note providing additional context.",
                    "type": "string",
                    "ontology": "crm:P3 has note"
                },
                "output": {
                    "description": "The file the capture produced, where it has an address.",
                    "type": "string",
                    "ontology": "crmdig:L11 had output"
                },
                "software": {
                    "description": "The software the capture ran, each with its version.",
                    "items": {
                        "$ref": "#/definitions/Software"
                    },
                    "type": "array",
                    "ontology": "crmdig:L23 used software or firmware"
                }
            },
            "required": [
                "kind"
            ],
            "type": "object",
            "ontology": "crm:E7 Activity"
        },
        "HoleChain": {
            "description": "A chain of holes punched along the roll, which the tracker bar reads as it passes. The perforator cuts a held note or function as a row of punches with bridges of paper left between them, so most perforations are chains; one without a bridge is a chain of a single hole. The holes are the chain's parts and are not stated one by one. A punched chain is a human-made feature: CRM counts \"the information encoding features on mechanical or digital carriers\" among the features purposely created by human activity.",
            "properties": {
                "condition": {
                    "$ref": "#/definitions/ObjectAssumption%3CConditionState%3C(%22partially-torn%22%7C%22missing-perforation%22)%3E%3E",
                    "description": "This can be used e.g. to indicate a perforation which is torn out or in any other way damaged.",
                    "ontology": "crm:P44 has condition"
                },
                "depiction": {
                    "description": "IIIF region pointing to a depiction of this feature in the scan.",
                    "type": "string",
                    "ontology": "crm:P138i has representation"
                },
                "horizontal": {
                    "$ref": "#/definitions/HorizontalSpan",
                    "description": "Horizontal span of the feature on the roll.",
                    "ontology": "crm:P43 has dimension"
                },
                "vertical": {
                    "$ref": "#/definitions/VerticalSpan",
                    "description": "Vertical span of the feature on the roll.",
                    "ontology": "crm:P43 has dimension"
                },
                "@id": {
                    "description": "A unique identifier for this object.",
                    "type": "string"
                },
                "@type": {
                    "const": "HoleChain",
                    "description": "The type discriminator for this object.",
                    "type": "string",
                    "ontology": "rdf:type"
                }
            },
            "required": [
                "horizontal",
                "@id",
                "@type",
                "vertical"
            ],
            "type": "object",
            "ontology": "reo:HoleChain"
        },
        "HorizontalSpan": {
            "description": "Describes the horizontal extent of a feature on the roll, measured in millimeters from the beginning of the roll. The `from` value is the start position and `to` is the end position.",
            "properties": {
                "from": {
                    "$ref": "#/definitions/Millimeters",
                    "description": "The start position of the feature in millimeters from the beginning of the roll.",
                    "ontology": "reo:from"
                },
                "to": {
                    "$ref": "#/definitions/Millimeters",
                    "description": "The end position of the feature in millimeters from the beginning of the roll.",
                    "ontology": "reo:to"
                },
                "unit": {
                    "const": "mm",
                    "description": "The unit of measurement for horizontal positions. Always 'mm' (millimeters).",
                    "type": "string",
                    "ontology": "crm:P91 has unit"
                }
            },
            "required": [
                "unit",
                "from",
                "to"
            ],
            "type": "object",
            "ontology": "crm:E54 Dimension"
        },
        "Inference": {
            "description": "An inference draws a conclusion from given premises.",
            "properties": {
                "actor": {
                    "$ref": "#/definitions/Person",
                    "description": "The person who carried out this activity.",
                    "ontology": "crm:P14 carried out by"
                },
                "applies": {
                    "description": "The rules the inference draws its conclusion by, by IRI: a regularity of how the rolls were edited, such as that the same addition at the same place is not made twice independently, a default, such as that copies were not made from two exemplars, or a method, such as how the tolerance of a collation is found. The rules are stated once where they are published, and each inference names those it follows, so that a reader can see what a conclusion rests on besides its premises, and which conclusions rest on a rule.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "ontology": "crminf:J3 applied"
                },
                "note": {
                    "description": "A free-text note providing additional context.",
                    "type": "string",
                    "ontology": "crm:P3 has note"
                },
                "premises": {
                    "description": "References (by `@id`) to the beliefs from which the conclusion is drawn.\n\nA belief the editor holds and publishes elsewhere under an IRI of its own, such as a bound from a catalogue of premises the editor keeps, is named by that IRI. Someone else's belief is not: it is adopted first, and the belief of the edition's own that the adoption concludes is named instead.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "ontology": "crminf:J1 used as premise"
                },
                "used": {
                    "description": "References (by `@id`) to what the inference worked on besides beliefs, such as the versions it compared, the analysis output it cites, or the document holding a premise named by IRI, in the state it was read in, since a belief published elsewhere may move after the edition has used it.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "ontology": "crm:P16 used specific object"
                },
                "@type": {
                    "const": "inference",
                    "type": "string",
                    "description": "The type discriminator for this object.",
                    "ontology": "rdf:type"
                }
            },
            "required": [
                "premises",
                "@type"
            ],
            "type": "object",
            "ontology": "crminf:I5 Inference Making"
        },
        "KeeperAssignment": {
            "$ref": "#/definitions/ObjectAssumption%3CAgent%3E",
            "description": "The keeper a copy is held by, as an object assumption, so that the statement can carry the belief it rests on and the reasons for it."
        },
        "Margins<\"mm\">": {
            "description": "The margins on the treble and bass sides of the roll, in the unit the scan was measured in.",
            "properties": {
                "bass": {
                    "$ref": "#/definitions/Quantity%3C%22mm%22%3E"
                },
                "treble": {
                    "$ref": "#/definitions/Quantity%3C%22mm%22%3E"
                },
                "unit": {
                    "const": "mm",
                    "type": "string"
                }
            },
            "required": [
                "treble",
                "bass",
                "unit"
            ],
            "type": "object"
        },
        "Margins<\"px\">": {
            "description": "The margins on the treble and bass sides of the roll, in the unit the scan was measured in.",
            "properties": {
                "bass": {
                    "$ref": "#/definitions/Quantity%3C%22px%22%3E"
                },
                "treble": {
                    "$ref": "#/definitions/Quantity%3C%22px%22%3E"
                },
                "unit": {
                    "const": "px",
                    "type": "string"
                }
            },
            "required": [
                "treble",
                "bass",
                "unit"
            ],
            "type": "object"
        },
        "Mark": {
            "description": "A visible mark on the roll, such as a pencil circle, an ink stroke, or other non-textual annotation. What a mark was meant to say is a reading of it (crminf:I16 Meaning Comprehension) rather than a property of the feature, so its shape is not stated here.",
            "properties": {
                "condition": {
                    "$ref": "#/definitions/ObjectAssumption%3CConditionState%3C(%22faded%22)%3E%3E",
                    "description": "This can be used e.g. to indicate a perforation which is torn out or in any other way damaged.",
                    "ontology": "crm:P44 has condition"
                },
                "depiction": {
                    "description": "IIIF region pointing to a depiction of this feature in the scan.",
                    "type": "string",
                    "ontology": "crm:P138i has representation"
                },
                "horizontal": {
                    "$ref": "#/definitions/HorizontalSpan",
                    "description": "Horizontal span of the feature on the roll.",
                    "ontology": "crm:P43 has dimension"
                },
                "medium": {
                    "$ref": "#/definitions/Medium",
                    "description": "What it was put on with, where it can be told. A date may be known to be handwritten where the pencil cannot be told from the ink, and a stamp leaves its ink as much as a pen does, which is why the two are stated apart.",
                    "ontology": "reo:medium"
                },
                "side": {
                    "description": "The face of the roll it lies on: the side that faces the reader as the roll plays, or the back of it.",
                    "enum": [
                        "recto",
                        "verso"
                    ],
                    "type": "string",
                    "ontology": "reo:side"
                },
                "technique": {
                    "$ref": "#/definitions/Technique",
                    "description": "How the trace was put on the paper.",
                    "ontology": "reo:technique"
                },
                "vertical": {
                    "$ref": "#/definitions/VerticalSpan",
                    "description": "Vertical span of the feature on the roll.",
                    "ontology": "crm:P43 has dimension"
                },
                "@id": {
                    "description": "A unique identifier for this object.",
                    "type": "string"
                },
                "@type": {
                    "const": "Mark",
                    "description": "The type discriminator for this object.",
                    "type": "string",
                    "ontology": "rdf:type"
                }
            },
            "required": [
                "horizontal",
                "@id",
                "@type",
                "vertical"
            ],
            "type": "object",
            "ontology": "reo:Mark"
        },
        "MeaningComprehension": {
            "description": "A meaning comprehension interprets or disambiguates the meaning of symbols or features. For example, interpreting a pencil mark as an instruction to add or remove a perforation or as the dating of the roll.",
            "properties": {
                "actor": {
                    "$ref": "#/definitions/Person",
                    "description": "The person who carried out this activity.",
                    "ontology": "crm:P14 carried out by"
                },
                "comprehends": {
                    "description": "References (by `@id`) to the symbols or features whose meaning is being interpreted.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "ontology": "crminf:J22 interpreted meaning of"
                },
                "note": {
                    "description": "A free-text note providing additional context.",
                    "type": "string",
                    "ontology": "crm:P3 has note"
                },
                "@type": {
                    "const": "meaningComprehension",
                    "type": "string",
                    "description": "The type discriminator for this object.",
                    "ontology": "rdf:type"
                }
            },
            "required": [
                "comprehends",
                "@type"
            ],
            "type": "object",
            "ontology": "crminf:I16 Meaning Comprehension"
        },
        "Measure<\"deg\">": {
            "description": "A value together with the unit it was measured in, as a record states it.",
            "properties": {
                "unit": {
                    "const": "deg",
                    "description": "The unit of measurement.",
                    "type": "string",
                    "ontology": "crm:P91 has unit"
                },
                "value": {
                    "$ref": "#/definitions/Quantity%3C%22deg%22%3E",
                    "description": "The measured value.",
                    "ontology": "crm:P90 has value"
                }
            },
            "required": [
                "value",
                "unit"
            ],
            "type": "object",
            "ontology": "crm:E54 Dimension"
        },
        "Measure<\"mm\">": {
            "description": "A value together with the unit it was measured in, as a record states it.",
            "properties": {
                "unit": {
                    "const": "mm",
                    "description": "The unit of measurement.",
                    "type": "string",
                    "ontology": "crm:P91 has unit"
                },
                "value": {
                    "$ref": "#/definitions/Quantity%3C%22mm%22%3E",
                    "description": "The measured value.",
                    "ontology": "crm:P90 has value"
                }
            },
            "required": [
                "value",
                "unit"
            ],
            "type": "object",
            "ontology": "crm:E54 Dimension"
        },
        "Measurement": {
            "description": "A measurement takes a value off an object by a stated procedure: the period the slot lengths of a copy keep, the median pitch of its held notes. It concludes the belief in that value by itself, with no premises. CRMinf counts observations, and a measurement is one, among the ways a belief comes about, so the value does not have to be passed off as an inference.\n\nA measurement a program took names the program and its version, so that the value can be taken again and a value taken by a program later found wanting can be told from the rest. Naming software makes it a digital measurement event in the sense of CRMdig.",
            "properties": {
                "actor": {
                    "$ref": "#/definitions/Person",
                    "description": "The person who carried out this activity.",
                    "ontology": "crm:P14 carried out by"
                },
                "date": {
                    "$ref": "#/definitions/TimeSpan",
                    "description": "When the measurement was taken. It is part of the reason and carries no belief of its own.",
                    "ontology": "crm:P4 has time-span"
                },
                "note": {
                    "description": "A free-text note providing additional context.",
                    "type": "string",
                    "ontology": "crm:P3 has note"
                },
                "procedure": {
                    "$ref": "#/definitions/Concept",
                    "description": "The method followed, where it has a name apart from the program that carries it out, such as a line of Theil and Sen through the matched notes of two copies.",
                    "ontology": "crm:P33 used specific technique"
                },
                "software": {
                    "description": "The programs that took the measurement, each with its version.",
                    "items": {
                        "$ref": "#/definitions/Software"
                    },
                    "type": "array",
                    "ontology": "crmdig:L23 used software or firmware"
                },
                "used": {
                    "description": "References (by `@id` or URL) to what the measurement was taken on or with, such as the scan, the analysis output or the script.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "ontology": "crm:P16 used specific object"
                },
                "@type": {
                    "const": "measurement",
                    "type": "string",
                    "description": "The type discriminator for this object.",
                    "ontology": "rdf:type"
                }
            },
            "required": [
                "@type"
            ],
            "type": "object",
            "ontology": "crmsci:S21 Measurement"
        },
        "Medium": {
            "description": "What a trace was put on with.",
            "enum": [
                "ink",
                "pencil",
                "crayon"
            ],
            "type": "string"
        },
        "Millimeters": {
            "$ref": "#/definitions/Quantity%3C%22mm%22%3E",
            "description": "A place along the roll, or any length on the paper."
        },
        "Modification": {
            "anyOf": [
                {
                    "properties": {
                        "actor": {
                            "$ref": "#/definitions/ActorAssignment",
                            "description": "Who carried out the modification.",
                            "ontology": "crm:P14 carried out by"
                        },
                        "added": {
                            "description": "The patches glued onto the copy, each with whatever it bears.",
                            "items": {
                                "$ref": "#/definitions/Patch"
                            },
                            "type": "array",
                            "ontology": "crm:P111 added"
                        },
                        "date": {
                            "$ref": "#/definitions/DateAssignment",
                            "description": "When the modification took place.",
                            "ontology": "crm:P4 has time-span"
                        },
                        "purpose": {
                            "$ref": "#/definitions/ModificationPurpose",
                            "ontology": "crm:P21 had general purpose"
                        },
                        "@type": {
                            "const": "Attachment",
                            "type": "string",
                            "description": "The type discriminator for this object.",
                            "ontology": "rdf:type"
                        },
                        "augmented": {
                            "type": "object",
                            "properties": {
                                "@id": {
                                    "type": "string"
                                }
                            },
                            "required": [
                                "@id"
                            ],
                            "description": "The copy the patches were glued onto. Derived on export.",
                            "ontology": "crm:P110 augmented"
                        }
                    },
                    "required": [
                        "added",
                        "@type"
                    ],
                    "type": "object"
                },
                {
                    "properties": {
                        "actor": {
                            "$ref": "#/definitions/ActorAssignment",
                            "description": "Who carried out the modification.",
                            "ontology": "crm:P14 carried out by"
                        },
                        "date": {
                            "$ref": "#/definitions/DateAssignment",
                            "description": "When the modification took place.",
                            "ontology": "crm:P4 has time-span"
                        },
                        "produced": {
                            "description": "The features the act brought into being: a date written on the paper, a circle in pencil, a hole punched by hand. Any kind of feature may come of a later act, as any kind may come of the punching.",
                            "items": {
                                "$ref": "#/definitions/AnyFeature"
                            },
                            "type": "array",
                            "ontology": "reo:produced"
                        },
                        "purpose": {
                            "$ref": "#/definitions/ModificationPurpose",
                            "ontology": "crm:P21 had general purpose"
                        },
                        "@type": {
                            "const": "Alteration",
                            "type": "string",
                            "description": "The type discriminator for this object.",
                            "ontology": "rdf:type"
                        }
                    },
                    "required": [
                        "produced",
                        "@type"
                    ],
                    "type": "object"
                },
                {
                    "properties": {
                        "actor": {
                            "$ref": "#/definitions/ActorAssignment",
                            "description": "Who carried out the modification.",
                            "ontology": "crm:P14 carried out by"
                        },
                        "date": {
                            "$ref": "#/definitions/DateAssignment",
                            "description": "When the modification took place.",
                            "ontology": "crm:P4 has time-span"
                        },
                        "purpose": {
                            "const": "delabeling",
                            "type": "string",
                            "ontology": "crm:P21 had general purpose"
                        },
                        "removed": {
                            "description": "What was taken off the copy, by id. It stood there before the act and is named rather than stated here. Removals are read from what they leave behind, such as a bright spot where a label sat.",
                            "items": {
                                "type": "string"
                            },
                            "type": "array",
                            "ontology": "crm:P113 removed"
                        },
                        "@type": {
                            "const": "Removal",
                            "type": "string",
                            "description": "The type discriminator for this object.",
                            "ontology": "rdf:type"
                        },
                        "diminished": {
                            "type": "object",
                            "properties": {
                                "@id": {
                                    "type": "string"
                                }
                            },
                            "required": [
                                "@id"
                            ],
                            "description": "The copy something was taken off. Derived on export.",
                            "ontology": "crm:P112 diminished"
                        }
                    },
                    "required": [
                        "removed",
                        "@type"
                    ],
                    "type": "object"
                }
            ],
            "description": "An identifiable act that changed the roll copy after it was punched. Three kinds of act are told apart, because the CRM tells them apart. E79 Part Addition asks that what is added be \"a separate identifiable whole prior to\" the act, which a label glued on is and a pencil line is not: drawing, writing and punching bring a feature into being and are productions.",
            "ontology": "crm:E79 Part Addition, crm:E80 Part Removal, crm:E12 Production"
        },
        "ModificationPurpose": {
            "description": "What a modification of a copy was for, as far as it can be told.",
            "enum": [
                "musical-improvement",
                "technical-improvement",
                "repair",
                "labeling",
                "control",
                "dating",
                "glossing"
            ],
            "type": "string"
        },
        "Motivation": {
            "description": "A reason for a musical change, in the editor's words. The edition states its motivations once (`Edition.motivations`), and an edit of any version names the one it was made for. Every change of a version that derives from another states a motivation: a program states whether it is musical or technical (`musicalChange`, `technicalChange`), and the editor puts a reason of their own in place of a musical one. Speculating about why a change was made is kept to the musical changes.",
            "properties": {
                "note": {
                    "description": "A free-text note providing additional context.",
                    "type": "string",
                    "ontology": "crm:P3 has note"
                },
                "@id": {
                    "description": "A unique identifier for this object.",
                    "type": "string"
                },
                "@type": {
                    "const": "motivation",
                    "description": "The type discriminator for this object.",
                    "type": "string",
                    "ontology": "rdf:type"
                }
            },
            "required": [
                "@id",
                "@type"
            ],
            "type": "object",
            "ontology": "crm:E33 Linguistic Object"
        },
        "NestedFeature": {
            "description": "A feature borne by another feature. It states no place of its own, the feature bearing it standing in one.",
            "anyOf": [
                {
                    "properties": {
                        "condition": {
                            "$ref": "#/definitions/ObjectAssumption%3CConditionState%3C(%22partially-torn%22%7C%22missing-perforation%22)%3E%3E",
                            "description": "This can be used e.g. to indicate a perforation which is torn out or in any other way damaged.",
                            "ontology": "crm:P44 has condition"
                        },
                        "depiction": {
                            "description": "IIIF region pointing to a depiction of this feature in the scan.",
                            "type": "string",
                            "ontology": "crm:P138i has representation"
                        },
                        "horizontal": {
                            "$ref": "#/definitions/HorizontalSpan",
                            "description": "Horizontal span of the feature on the roll. Left out by a feature a patch bears.",
                            "ontology": "crm:P43 has dimension"
                        },
                        "vertical": {
                            "$ref": "#/definitions/VerticalSpan",
                            "description": "Vertical span of the feature on the roll. Left out by a feature a patch bears.",
                            "ontology": "crm:P43 has dimension"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        },
                        "@type": {
                            "const": "HoleChain",
                            "description": "The type discriminator for this object.",
                            "type": "string",
                            "ontology": "rdf:type"
                        }
                    },
                    "required": [
                        "@id",
                        "@type"
                    ],
                    "type": "object"
                },
                {
                    "properties": {
                        "condition": {
                            "$ref": "#/definitions/ObjectAssumption%3CConditionState%3C(%22illegible%22)%3E%3E",
                            "description": "This can be used e.g. to indicate a perforation which is torn out or in any other way damaged.",
                            "ontology": "crm:P44 has condition"
                        },
                        "depiction": {
                            "description": "IIIF region pointing to a depiction of this feature in the scan.",
                            "type": "string",
                            "ontology": "crm:P138i has representation"
                        },
                        "horizontal": {
                            "$ref": "#/definitions/HorizontalSpan",
                            "description": "Horizontal span of the feature on the roll. Left out by a feature a patch bears.",
                            "ontology": "crm:P43 has dimension"
                        },
                        "medium": {
                            "$ref": "#/definitions/Medium",
                            "description": "What it was put on with, where it can be told. A date may be known to be handwritten where the pencil cannot be told from the ink, and a stamp leaves its ink as much as a pen does, which is why the two are stated apart.",
                            "ontology": "reo:medium"
                        },
                        "rotation": {
                            "$ref": "#/definitions/Measure%3C%22deg%22%3E",
                            "description": "How far the writing stands askew. At zero it reads across the roll, from the bass side towards the treble, and the angle turns that reading direction towards the end of the roll, so that a right angle leaves it reading along the roll. A stamp pressed crooked and a label written lengthwise are both stated here.",
                            "ontology": "reo:rotation"
                        },
                        "side": {
                            "description": "The face of the roll it lies on: the side that faces the reader as the roll plays, or the back of it.",
                            "enum": [
                                "recto",
                                "verso"
                            ],
                            "type": "string",
                            "ontology": "reo:side"
                        },
                        "technique": {
                            "$ref": "#/definitions/Technique",
                            "description": "A writing always states how it was put on the paper, which can be read off it where the medium cannot.",
                            "ontology": "reo:technique"
                        },
                        "transcription": {
                            "$ref": "#/definitions/ObjectAssumption%3CTranscription%3E",
                            "description": "A transcription of the text content of the writing. This is an object assumption so that the transcription can be annotated with a belief about its correctness.",
                            "ontology": "crm:P128 carries"
                        },
                        "vertical": {
                            "$ref": "#/definitions/VerticalSpan",
                            "description": "Vertical span of the feature on the roll. Left out by a feature a patch bears.",
                            "ontology": "crm:P43 has dimension"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        },
                        "@type": {
                            "const": "Writing",
                            "description": "The type discriminator for this object.",
                            "type": "string",
                            "ontology": "rdf:type"
                        }
                    },
                    "required": [
                        "@id",
                        "technique",
                        "transcription",
                        "@type"
                    ],
                    "type": "object"
                },
                {
                    "properties": {
                        "condition": {
                            "$ref": "#/definitions/ObjectAssumption%3CConditionState%3C(%22faded%22)%3E%3E",
                            "description": "This can be used e.g. to indicate a perforation which is torn out or in any other way damaged.",
                            "ontology": "crm:P44 has condition"
                        },
                        "depiction": {
                            "description": "IIIF region pointing to a depiction of this feature in the scan.",
                            "type": "string",
                            "ontology": "crm:P138i has representation"
                        },
                        "horizontal": {
                            "$ref": "#/definitions/HorizontalSpan",
                            "description": "Horizontal span of the feature on the roll. Left out by a feature a patch bears.",
                            "ontology": "crm:P43 has dimension"
                        },
                        "medium": {
                            "$ref": "#/definitions/Medium",
                            "description": "What it was put on with, where it can be told. A date may be known to be handwritten where the pencil cannot be told from the ink, and a stamp leaves its ink as much as a pen does, which is why the two are stated apart.",
                            "ontology": "reo:medium"
                        },
                        "side": {
                            "description": "The face of the roll it lies on: the side that faces the reader as the roll plays, or the back of it.",
                            "enum": [
                                "recto",
                                "verso"
                            ],
                            "type": "string",
                            "ontology": "reo:side"
                        },
                        "technique": {
                            "$ref": "#/definitions/Technique",
                            "description": "How the trace was put on the paper.",
                            "ontology": "reo:technique"
                        },
                        "vertical": {
                            "$ref": "#/definitions/VerticalSpan",
                            "description": "Vertical span of the feature on the roll. Left out by a feature a patch bears.",
                            "ontology": "crm:P43 has dimension"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        },
                        "@type": {
                            "const": "Mark",
                            "description": "The type discriminator for this object.",
                            "type": "string",
                            "ontology": "rdf:type"
                        }
                    },
                    "required": [
                        "@id",
                        "@type"
                    ],
                    "type": "object"
                },
                {
                    "properties": {
                        "condition": {
                            "$ref": "#/definitions/ObjectAssumption%3CConditionState%3C(%22detaching%22%7C%22ripped%22)%3E%3E",
                            "description": "This can be used e.g. to indicate a perforation which is torn out or in any other way damaged.",
                            "ontology": "crm:P44 has condition"
                        },
                        "depiction": {
                            "description": "IIIF region pointing to a depiction of this feature in the scan.",
                            "type": "string",
                            "ontology": "crm:P138i has representation"
                        },
                        "features": {
                            "description": "The features the patch itself carries. They need not be positioned explicitly.",
                            "items": {
                                "$ref": "#/definitions/NestedFeature"
                            },
                            "type": "array",
                            "ontology": "crm:P46 is composed of"
                        },
                        "horizontal": {
                            "$ref": "#/definitions/HorizontalSpan",
                            "description": "Horizontal span of the feature on the roll. Left out by a feature a patch bears.",
                            "ontology": "crm:P43 has dimension"
                        },
                        "material": {
                            "description": "What the patch is made of.",
                            "enum": [
                                "paper",
                                "tape"
                            ],
                            "type": "string",
                            "ontology": "crm:P45 consists of"
                        },
                        "rotation": {
                            "$ref": "#/definitions/Measure%3C%22deg%22%3E",
                            "description": "How far the patch was stuck on askew. At zero its edges stand square to the roll, and the angle turns them towards the end of it, as a writing's reading direction turns.",
                            "ontology": "reo:rotation"
                        },
                        "side": {
                            "description": "The face of the roll it lies on: the side that faces the reader as the roll plays, or the back of it.",
                            "enum": [
                                "recto",
                                "verso"
                            ],
                            "type": "string",
                            "ontology": "reo:side"
                        },
                        "vertical": {
                            "$ref": "#/definitions/VerticalSpan",
                            "description": "Vertical span of the feature on the roll. Left out by a feature a patch bears.",
                            "ontology": "crm:P43 has dimension"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        },
                        "@type": {
                            "const": "Patch",
                            "description": "The type discriminator for this object.",
                            "type": "string",
                            "ontology": "rdf:type"
                        }
                    },
                    "required": [
                        "@id",
                        "material",
                        "@type"
                    ],
                    "type": "object"
                }
            ]
        },
        "Note": {
            "description": "A note symbol, representing a single pitched musical event on the roll. The pitch is encoded via the tracker bar position (track number).",
            "properties": {
                "after": {
                    "$ref": "#/definitions/ReferenceAssumption",
                    "description": "A command whose onset this one follows when the roll is performed, the counterpart of `before`. This points to the command by its `@id`.",
                    "ontology": "reo:after"
                },
                "alignedWith": {
                    "$ref": "#/definitions/ReferenceAssumption",
                    "description": "In piano rolls, commands are often aligned with other commands, e.g. a \"crescendo off\" might be logically aligned to the start of a note. This points to the command by its `@id`.",
                    "ontology": "reo:alignedWith"
                },
                "before": {
                    "$ref": "#/definitions/ReferenceAssumption",
                    "description": "A command whose onset this one precedes when the roll is performed, without saying by how much: a \"crescendo off\" ends before the note it leads to begins, even where the copies disagree on it. Where the measurement has it so, nothing moves; where it does not, this one is placed before the reference as far as the copies that agree put it. This points to the command by its `@id`.",
                    "ontology": "reo:before"
                },
                "carriers": {
                    "description": "References to the physical features (e.g. chains of holes) on the roll copies that carry this symbol. Since the association might be debatable, it can be annotated. There might be e.g. doubts about the meaning and correct transcription of a feature on a physical roll. This points to a feature by its `@id`.",
                    "items": {
                        "$ref": "#/definitions/ReferenceAssumption"
                    },
                    "type": "array",
                    "ontology": "crm:P128i is carried by"
                },
                "pairedWith": {
                    "$ref": "#/definitions/ReferenceAssumption",
                    "description": "The command this one forms a pair with, e.g. a \"forzando on\" with its \"forzando off\". Any two commands may be paired. The distance between the two is fixed: whatever displaces the one displaces the other. The relation is symmetric and is stated on one side only. This points to the command by its `@id`.",
                    "ontology": "reo:pairedWith"
                },
                "pitch": {
                    "description": "The MIDI pitch number of the note (e.g. 60 for middle C).",
                    "type": "number",
                    "ontology": "reo:pitch"
                },
                "@id": {
                    "description": "A unique identifier for this object.",
                    "type": "string"
                },
                "@type": {
                    "const": "note",
                    "type": "string",
                    "description": "The type discriminator for this object.",
                    "ontology": "rdf:type"
                }
            },
            "required": [
                "carriers",
                "@id",
                "pitch",
                "@type"
            ],
            "type": "object",
            "ontology": "reo:Note"
        },
        "ObjectAssumption<(GeneralRollCondition|PaperStretch|Tear)>": {
            "anyOf": [
                {
                    "properties": {
                        "@annotation": {
                            "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                            "properties": {
                                "belief": {
                                    "$ref": "#/definitions/Belief",
                                    "description": "The belief held about the annotated statement.",
                                    "ontology": "crminf:J4i is subject of"
                                },
                                "@id": {
                                    "description": "A unique identifier for this object.",
                                    "type": "string"
                                }
                            },
                            "required": [
                                "belief",
                                "@id"
                            ],
                            "type": "object"
                        },
                        "conditionType": {
                            "const": "general",
                            "description": "The kind of condition, from the list the roll or the kind of feature allows.",
                            "type": "string",
                            "ontology": "crm:P2 has type"
                        },
                        "description": {
                            "description": "A free-text description of the condition, providing details beyond the type classification.",
                            "type": "string",
                            "ontology": "crm:P3 has note"
                        }
                    },
                    "required": [
                        "conditionType"
                    ],
                    "type": "object"
                },
                {
                    "properties": {
                        "@annotation": {
                            "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                            "properties": {
                                "belief": {
                                    "$ref": "#/definitions/Belief",
                                    "description": "The belief held about the annotated statement.",
                                    "ontology": "crminf:J4i is subject of"
                                },
                                "@id": {
                                    "description": "A unique identifier for this object.",
                                    "type": "string"
                                }
                            },
                            "required": [
                                "belief",
                                "@id"
                            ],
                            "type": "object"
                        },
                        "across": {
                            "$ref": "#/definitions/Strain",
                            "description": "The strain across the roll. Paper stretches more across than along, so this is no measure of the other.",
                            "ontology": "reo:strainAcross"
                        },
                        "along": {
                            "$ref": "#/definitions/Strain",
                            "description": "The strain along the roll, the direction the alignment measures.",
                            "ontology": "reo:strainAlong"
                        },
                        "conditionType": {
                            "const": "paper-stretch",
                            "description": "The kind of condition, from the list the roll or the kind of feature allows.",
                            "type": "string",
                            "ontology": "crm:P2 has type"
                        },
                        "description": {
                            "description": "A free-text description of the condition, providing details beyond the type classification.",
                            "type": "string",
                            "ontology": "crm:P3 has note"
                        }
                    },
                    "required": [
                        "conditionType"
                    ],
                    "type": "object"
                },
                {
                    "properties": {
                        "@annotation": {
                            "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                            "properties": {
                                "belief": {
                                    "$ref": "#/definitions/Belief",
                                    "description": "The belief held about the annotated statement.",
                                    "ontology": "crminf:J4i is subject of"
                                },
                                "@id": {
                                    "description": "A unique identifier for this object.",
                                    "type": "string"
                                }
                            },
                            "required": [
                                "belief",
                                "@id"
                            ],
                            "type": "object"
                        },
                        "conditionType": {
                            "const": "torn",
                            "description": "The kind of condition, from the list the roll or the kind of feature allows.",
                            "type": "string",
                            "ontology": "crm:P2 has type"
                        },
                        "depiction": {
                            "description": "IIIF region pointing to a depiction of the tear in the scan.",
                            "type": "string",
                            "ontology": "crm:P138i has representation"
                        },
                        "depth": {
                            "$ref": "#/definitions/Measure%3C%22mm%22%3E",
                            "description": "How far the tear reaches into the paper, taken across the roll from the edge it runs in from.",
                            "ontology": "reo:depth"
                        },
                        "description": {
                            "description": "A free-text description of the condition, providing details beyond the type classification.",
                            "type": "string",
                            "ontology": "crm:P3 has note"
                        },
                        "edge": {
                            "description": "The edge of the paper the tear runs in from, where it runs in from one.",
                            "enum": [
                                "bass",
                                "treble"
                            ],
                            "type": "string",
                            "ontology": "reo:edge"
                        },
                        "horizontal": {
                            "$ref": "#/definitions/HorizontalSpan",
                            "description": "Where along the roll the tear lies, measured as the copy's features are, so that it moves with them when the copy is aligned.",
                            "ontology": "reo:horizontal"
                        }
                    },
                    "required": [
                        "conditionType",
                        "horizontal"
                    ],
                    "type": "object"
                }
            ],
            "description": "An object assumption wraps a complex object with an optional annotation. Used for structured values (e.g. persons, conditions) whose properties may be uncertain."
        },
        "ObjectAssumption<(Measure<\"px\">|Measure<\"mm\">)>": {
            "anyOf": [
                {
                    "properties": {
                        "@annotation": {
                            "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                            "properties": {
                                "belief": {
                                    "$ref": "#/definitions/Belief",
                                    "description": "The belief held about the annotated statement.",
                                    "ontology": "crminf:J4i is subject of"
                                },
                                "@id": {
                                    "description": "A unique identifier for this object.",
                                    "type": "string"
                                }
                            },
                            "required": [
                                "belief",
                                "@id"
                            ],
                            "type": "object"
                        },
                        "unit": {
                            "const": "px",
                            "description": "The unit of measurement.",
                            "type": "string",
                            "ontology": "crm:P91 has unit"
                        },
                        "value": {
                            "$ref": "#/definitions/Quantity%3C%22px%22%3E",
                            "description": "The measured value.",
                            "ontology": "crm:P90 has value"
                        }
                    },
                    "required": [
                        "unit",
                        "value"
                    ],
                    "type": "object"
                },
                {
                    "properties": {
                        "@annotation": {
                            "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                            "properties": {
                                "belief": {
                                    "$ref": "#/definitions/Belief",
                                    "description": "The belief held about the annotated statement.",
                                    "ontology": "crminf:J4i is subject of"
                                },
                                "@id": {
                                    "description": "A unique identifier for this object.",
                                    "type": "string"
                                }
                            },
                            "required": [
                                "belief",
                                "@id"
                            ],
                            "type": "object"
                        },
                        "unit": {
                            "const": "mm",
                            "description": "The unit of measurement.",
                            "type": "string",
                            "ontology": "crm:P91 has unit"
                        },
                        "value": {
                            "$ref": "#/definitions/Quantity%3C%22mm%22%3E",
                            "description": "The measured value.",
                            "ontology": "crm:P90 has value"
                        }
                    },
                    "required": [
                        "unit",
                        "value"
                    ],
                    "type": "object"
                }
            ],
            "description": "An object assumption wraps a complex object with an optional annotation. Used for structured values (e.g. persons, conditions) whose properties may be uncertain."
        },
        "ObjectAssumption<Advance>": {
            "description": "An object assumption wraps a complex object with an optional annotation. Used for structured values (e.g. persons, conditions) whose properties may be uncertain.",
            "properties": {
                "@annotation": {
                    "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                    "properties": {
                        "belief": {
                            "$ref": "#/definitions/Belief",
                            "description": "The belief held about the annotated statement.",
                            "ontology": "crminf:J4i is subject of"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "belief",
                        "@id"
                    ],
                    "type": "object"
                },
                "n": {
                    "description": "How many slot lengths were folded.",
                    "type": "number",
                    "ontology": "reo:sampleSize"
                },
                "strength": {
                    "description": "How closely the lengths keep the period, from 0 where they scatter to 1 where every one falls on the comb: the mean resultant length of the lengths folded onto it. A period found weakly is the result of a search all the same; the belief it is stated with says how far it is held to be the machine's step.",
                    "type": "number",
                    "ontology": "reo:strength"
                },
                "unit": {
                    "const": "mm",
                    "description": "The unit of measurement.",
                    "type": "string",
                    "ontology": "crm:P91 has unit"
                },
                "value": {
                    "$ref": "#/definitions/Quantity%3C%22mm%22%3E",
                    "description": "The measured value.",
                    "ontology": "crm:P90 has value"
                }
            },
            "required": [
                "unit",
                "value"
            ],
            "type": "object"
        },
        "ObjectAssumption<Agent>": {
            "description": "An object assumption wraps a complex object with an optional annotation. Used for structured values (e.g. persons, conditions) whose properties may be uncertain.",
            "properties": {
                "@annotation": {
                    "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                    "properties": {
                        "belief": {
                            "$ref": "#/definitions/Belief",
                            "description": "The belief held about the annotated statement.",
                            "ontology": "crminf:J4i is subject of"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "belief",
                        "@id"
                    ],
                    "type": "object"
                },
                "name": {
                    "description": "The name, e.g. \"Grünfeld, Alfred\", \"Wien\", \"M. Welte & Söhne\".",
                    "type": "string",
                    "ontology": "rdfs:label"
                },
                "role": {
                    "$ref": "#/definitions/AgentRole",
                    "description": "The role of the agent in the context of the edition.",
                    "ontology": "crm:P2 has type"
                },
                "sameAs": {
                    "description": "Authority records for the same thing: GND, Wikidata, geonames or similar.",
                    "examples": [
                        "https://d-nb.info/gnd/116888652"
                    ],
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "ontology": "owl:sameAs"
                },
                "@id": {
                    "description": "A unique identifier for this object.",
                    "type": "string"
                }
            },
            "required": [
                "name",
                "sameAs"
            ],
            "type": "object"
        },
        "ObjectAssumption<ChainPitch>": {
            "description": "An object assumption wraps a complex object with an optional annotation. Used for structured values (e.g. persons, conditions) whose properties may be uncertain.",
            "properties": {
                "@annotation": {
                    "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                    "properties": {
                        "belief": {
                            "$ref": "#/definitions/Belief",
                            "description": "The belief held about the annotated statement.",
                            "ontology": "crminf:J4i is subject of"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "belief",
                        "@id"
                    ],
                    "type": "object"
                },
                "bridge": {
                    "$ref": "#/definitions/Millimeters",
                    "description": "The paper left standing between two slots of a chain. Slot and bridge are medians of their own and need not add up to the pitch.",
                    "ontology": "reo:bridge"
                },
                "n": {
                    "description": "How many pitches the median was taken over.",
                    "type": "number",
                    "ontology": "reo:sampleSize"
                },
                "slot": {
                    "$ref": "#/definitions/Millimeters",
                    "description": "The length along the roll of one slot of a chain.",
                    "ontology": "reo:slot"
                },
                "unit": {
                    "const": "mm",
                    "description": "The unit of measurement.",
                    "type": "string",
                    "ontology": "crm:P91 has unit"
                },
                "value": {
                    "$ref": "#/definitions/Quantity%3C%22mm%22%3E",
                    "description": "The measured value.",
                    "ontology": "crm:P90 has value"
                }
            },
            "required": [
                "unit",
                "value"
            ],
            "type": "object"
        },
        "ObjectAssumption<CollationTolerance>": {
            "description": "An object assumption wraps a complex object with an optional annotation. Used for structured values (e.g. persons, conditions) whose properties may be uncertain.",
            "properties": {
                "@annotation": {
                    "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                    "properties": {
                        "belief": {
                            "$ref": "#/definitions/Belief",
                            "description": "The belief held about the annotated statement.",
                            "ontology": "crminf:J4i is subject of"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "belief",
                        "@id"
                    ],
                    "type": "object"
                },
                "offsetEnd": {
                    "$ref": "#/definitions/Millimeters",
                    "description": "The same at the end of a feature, in the same direction."
                },
                "offsetStart": {
                    "$ref": "#/definitions/Millimeters",
                    "description": "How much later the derived version puts the start of a feature than the version it is read against, where the two differ systematically. Nothing where they do not.\n\nThe direction is the one a collation measures in, the child less the parent, and it is not symmetric: stored the other way round the window sits on the wrong side of the readings and merges what it should separate. A measurement taken over the parent's copies gives the negative of this, which is what `toleranceAcross` asks the side for."
                },
                "toleranceEnd": {
                    "$ref": "#/definitions/Millimeters",
                    "description": "How far they may lie apart at the end, measured from `offsetEnd`."
                },
                "toleranceStart": {
                    "$ref": "#/definitions/Millimeters",
                    "description": "How far the two readings may lie apart at the start of a feature, measured from `offsetStart`."
                }
            },
            "required": [
                "toleranceEnd",
                "toleranceStart"
            ],
            "type": "object"
        },
        "ObjectAssumption<Concept>": {
            "anyOf": [
                {
                    "properties": {
                        "@annotation": {
                            "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                            "properties": {
                                "belief": {
                                    "$ref": "#/definitions/Belief",
                                    "description": "The belief held about the annotated statement.",
                                    "ontology": "crminf:J4i is subject of"
                                },
                                "@id": {
                                    "description": "A unique identifier for this object.",
                                    "type": "string"
                                }
                            },
                            "required": [
                                "belief",
                                "@id"
                            ],
                            "type": "object"
                        },
                        "name": {
                            "description": "The name, e.g. \"Grünfeld, Alfred\", \"Wien\", \"M. Welte & Söhne\".",
                            "type": "string",
                            "ontology": "rdfs:label"
                        },
                        "sameAs": {
                            "description": "Authority records for the same thing: GND, Wikidata, geonames or similar.",
                            "examples": [
                                "https://d-nb.info/gnd/116888652"
                            ],
                            "items": {
                                "type": "string"
                            },
                            "type": "array",
                            "ontology": "owl:sameAs"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "@id"
                    ],
                    "type": "object"
                },
                {
                    "properties": {
                        "@annotation": {
                            "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                            "properties": {
                                "belief": {
                                    "$ref": "#/definitions/Belief",
                                    "description": "The belief held about the annotated statement.",
                                    "ontology": "crminf:J4i is subject of"
                                },
                                "@id": {
                                    "description": "A unique identifier for this object.",
                                    "type": "string"
                                }
                            },
                            "required": [
                                "belief",
                                "@id"
                            ],
                            "type": "object"
                        },
                        "name": {
                            "description": "The name, e.g. \"Grünfeld, Alfred\", \"Wien\", \"M. Welte & Söhne\".",
                            "type": "string",
                            "ontology": "rdfs:label"
                        },
                        "sameAs": {
                            "description": "Authority records for the same thing: GND, Wikidata, geonames or similar.",
                            "examples": [
                                "https://d-nb.info/gnd/116888652"
                            ],
                            "items": {
                                "type": "string"
                            },
                            "type": "array",
                            "ontology": "owl:sameAs"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "name",
                        "sameAs"
                    ],
                    "type": "object"
                }
            ],
            "description": "An object assumption wraps a complex object with an optional annotation. Used for structured values (e.g. persons, conditions) whose properties may be uncertain."
        },
        "ObjectAssumption<ConditionState<\"general\">>": {
            "description": "An object assumption wraps a complex object with an optional annotation. Used for structured values (e.g. persons, conditions) whose properties may be uncertain.",
            "properties": {
                "@annotation": {
                    "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                    "properties": {
                        "belief": {
                            "$ref": "#/definitions/Belief",
                            "description": "The belief held about the annotated statement.",
                            "ontology": "crminf:J4i is subject of"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "belief",
                        "@id"
                    ],
                    "type": "object"
                },
                "conditionType": {
                    "const": "general",
                    "description": "The kind of condition, from the list the roll or the kind of feature allows.",
                    "type": "string",
                    "ontology": "crm:P2 has type"
                },
                "description": {
                    "description": "A free-text description of the condition, providing details beyond the type classification.",
                    "type": "string",
                    "ontology": "crm:P3 has note"
                }
            },
            "required": [
                "conditionType"
            ],
            "type": "object"
        },
        "ObjectAssumption<ConditionState<(\"detaching\"|\"ripped\")>>": {
            "description": "An object assumption wraps a complex object with an optional annotation. Used for structured values (e.g. persons, conditions) whose properties may be uncertain.",
            "properties": {
                "@annotation": {
                    "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                    "properties": {
                        "belief": {
                            "$ref": "#/definitions/Belief",
                            "description": "The belief held about the annotated statement.",
                            "ontology": "crminf:J4i is subject of"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "belief",
                        "@id"
                    ],
                    "type": "object"
                },
                "conditionType": {
                    "description": "The kind of condition, from the list the roll or the kind of feature allows.",
                    "enum": [
                        "detaching",
                        "ripped"
                    ],
                    "type": "string",
                    "ontology": "crm:P2 has type"
                },
                "description": {
                    "description": "A free-text description of the condition, providing details beyond the type classification.",
                    "type": "string",
                    "ontology": "crm:P3 has note"
                }
            },
            "required": [
                "conditionType"
            ],
            "type": "object"
        },
        "ObjectAssumption<ConditionState<(\"faded\")>>": {
            "description": "An object assumption wraps a complex object with an optional annotation. Used for structured values (e.g. persons, conditions) whose properties may be uncertain.",
            "properties": {
                "@annotation": {
                    "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                    "properties": {
                        "belief": {
                            "$ref": "#/definitions/Belief",
                            "description": "The belief held about the annotated statement.",
                            "ontology": "crminf:J4i is subject of"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "belief",
                        "@id"
                    ],
                    "type": "object"
                },
                "conditionType": {
                    "const": "faded",
                    "description": "The kind of condition, from the list the roll or the kind of feature allows.",
                    "type": "string",
                    "ontology": "crm:P2 has type"
                },
                "description": {
                    "description": "A free-text description of the condition, providing details beyond the type classification.",
                    "type": "string",
                    "ontology": "crm:P3 has note"
                }
            },
            "required": [
                "conditionType"
            ],
            "type": "object"
        },
        "ObjectAssumption<ConditionState<(\"illegible\")>>": {
            "description": "An object assumption wraps a complex object with an optional annotation. Used for structured values (e.g. persons, conditions) whose properties may be uncertain.",
            "properties": {
                "@annotation": {
                    "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                    "properties": {
                        "belief": {
                            "$ref": "#/definitions/Belief",
                            "description": "The belief held about the annotated statement.",
                            "ontology": "crminf:J4i is subject of"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "belief",
                        "@id"
                    ],
                    "type": "object"
                },
                "conditionType": {
                    "const": "illegible",
                    "description": "The kind of condition, from the list the roll or the kind of feature allows.",
                    "type": "string",
                    "ontology": "crm:P2 has type"
                },
                "description": {
                    "description": "A free-text description of the condition, providing details beyond the type classification.",
                    "type": "string",
                    "ontology": "crm:P3 has note"
                }
            },
            "required": [
                "conditionType"
            ],
            "type": "object"
        },
        "ObjectAssumption<ConditionState<(\"partially-torn\"|\"missing-perforation\")>>": {
            "description": "An object assumption wraps a complex object with an optional annotation. Used for structured values (e.g. persons, conditions) whose properties may be uncertain.",
            "properties": {
                "@annotation": {
                    "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                    "properties": {
                        "belief": {
                            "$ref": "#/definitions/Belief",
                            "description": "The belief held about the annotated statement.",
                            "ontology": "crminf:J4i is subject of"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "belief",
                        "@id"
                    ],
                    "type": "object"
                },
                "conditionType": {
                    "description": "The kind of condition, from the list the roll or the kind of feature allows.",
                    "enum": [
                        "partially-torn",
                        "missing-perforation"
                    ],
                    "type": "string",
                    "ontology": "crm:P2 has type"
                },
                "description": {
                    "description": "A free-text description of the condition, providing details beyond the type classification.",
                    "type": "string",
                    "ontology": "crm:P3 has note"
                }
            },
            "required": [
                "conditionType"
            ],
            "type": "object"
        },
        "ObjectAssumption<Drive>": {
            "description": "An object assumption wraps a complex object with an optional annotation. Used for structured values (e.g. persons, conditions) whose properties may be uncertain.",
            "properties": {
                "@annotation": {
                    "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                    "properties": {
                        "belief": {
                            "$ref": "#/definitions/Belief",
                            "description": "The belief held about the annotated statement.",
                            "ontology": "crminf:J4i is subject of"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "belief",
                        "@id"
                    ],
                    "type": "object"
                },
                "@id": {
                    "$ref": "#/definitions/DriveId",
                    "description": "The IRI the type vocabulary gives the drive."
                }
            },
            "required": [
                "@id"
            ],
            "type": "object"
        },
        "ObjectAssumption<Instrument>": {
            "description": "An object assumption wraps a complex object with an optional annotation. Used for structured values (e.g. persons, conditions) whose properties may be uncertain.",
            "properties": {
                "@annotation": {
                    "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                    "properties": {
                        "belief": {
                            "$ref": "#/definitions/Belief",
                            "description": "The belief held about the annotated statement.",
                            "ontology": "crminf:J4i is subject of"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "belief",
                        "@id"
                    ],
                    "type": "object"
                },
                "condition": {
                    "$ref": "#/definitions/ObjectAssumption%3CConditionState%3C%22general%22%3E%3E",
                    "ontology": "crm:P44 has condition"
                },
                "name": {
                    "description": "The name, e.g. \"Grünfeld, Alfred\", \"Wien\", \"M. Welte & Söhne\".",
                    "type": "string",
                    "ontology": "rdfs:label"
                },
                "sameAs": {
                    "description": "Authority records for the same thing: GND, Wikidata, geonames or similar.",
                    "examples": [
                        "https://d-nb.info/gnd/116888652"
                    ],
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "ontology": "owl:sameAs"
                }
            },
            "required": [
                "name",
                "sameAs"
            ],
            "type": "object"
        },
        "ObjectAssumption<LengthRatio>": {
            "description": "An object assumption wraps a complex object with an optional annotation. Used for structured values (e.g. persons, conditions) whose properties may be uncertain.",
            "properties": {
                "@annotation": {
                    "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                    "properties": {
                        "belief": {
                            "$ref": "#/definitions/Belief",
                            "description": "The belief held about the annotated statement.",
                            "ontology": "crminf:J4i is subject of"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "belief",
                        "@id"
                    ],
                    "type": "object"
                },
                "uncertainty": {
                    "description": "The standard uncertainty of the value, one standard deviation.",
                    "type": "number",
                    "ontology": "reo:uncertainty"
                },
                "value": {
                    "type": "number",
                    "ontology": "crm:P90 has value"
                }
            },
            "required": [
                "value"
            ],
            "type": "object"
        },
        "ObjectAssumption<Measure<\"mm\">>": {
            "description": "An object assumption wraps a complex object with an optional annotation. Used for structured values (e.g. persons, conditions) whose properties may be uncertain.",
            "properties": {
                "@annotation": {
                    "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                    "properties": {
                        "belief": {
                            "$ref": "#/definitions/Belief",
                            "description": "The belief held about the annotated statement.",
                            "ontology": "crminf:J4i is subject of"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "belief",
                        "@id"
                    ],
                    "type": "object"
                },
                "unit": {
                    "const": "mm",
                    "description": "The unit of measurement.",
                    "type": "string",
                    "ontology": "crm:P91 has unit"
                },
                "value": {
                    "$ref": "#/definitions/Quantity%3C%22mm%22%3E",
                    "description": "The measured value.",
                    "ontology": "crm:P90 has value"
                }
            },
            "required": [
                "unit",
                "value"
            ],
            "type": "object"
        },
        "ObjectAssumption<Measure<\"px/in\">>": {
            "description": "An object assumption wraps a complex object with an optional annotation. Used for structured values (e.g. persons, conditions) whose properties may be uncertain.",
            "properties": {
                "@annotation": {
                    "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                    "properties": {
                        "belief": {
                            "$ref": "#/definitions/Belief",
                            "description": "The belief held about the annotated statement.",
                            "ontology": "crminf:J4i is subject of"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "belief",
                        "@id"
                    ],
                    "type": "object"
                },
                "unit": {
                    "const": "px/in",
                    "description": "The unit of measurement.",
                    "type": "string",
                    "ontology": "crm:P91 has unit"
                },
                "value": {
                    "$ref": "#/definitions/Quantity%3C%22px%2Fin%22%3E",
                    "description": "The measured value.",
                    "ontology": "crm:P90 has value"
                }
            },
            "required": [
                "unit",
                "value"
            ],
            "type": "object"
        },
        "ObjectAssumption<PaperSpeed>": {
            "anyOf": [
                {
                    "properties": {
                        "@annotation": {
                            "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                            "properties": {
                                "belief": {
                                    "$ref": "#/definitions/Belief",
                                    "description": "The belief held about the annotated statement.",
                                    "ontology": "crminf:J4i is subject of"
                                },
                                "@id": {
                                    "description": "A unique identifier for this object.",
                                    "type": "string"
                                }
                            },
                            "required": [
                                "belief",
                                "@id"
                            ],
                            "type": "object"
                        },
                        "unit": {
                            "const": "ft/min",
                            "description": "The unit of measurement.",
                            "type": "string",
                            "ontology": "crm:P91 has unit"
                        },
                        "value": {
                            "$ref": "#/definitions/Quantity%3C%22ft%2Fmin%22%3E",
                            "description": "The measured value.",
                            "ontology": "crm:P90 has value"
                        }
                    },
                    "required": [
                        "unit",
                        "value"
                    ],
                    "type": "object"
                },
                {
                    "properties": {
                        "@annotation": {
                            "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                            "properties": {
                                "belief": {
                                    "$ref": "#/definitions/Belief",
                                    "description": "The belief held about the annotated statement.",
                                    "ontology": "crminf:J4i is subject of"
                                },
                                "@id": {
                                    "description": "A unique identifier for this object.",
                                    "type": "string"
                                }
                            },
                            "required": [
                                "belief",
                                "@id"
                            ],
                            "type": "object"
                        },
                        "unit": {
                            "const": "m/min",
                            "description": "The unit of measurement.",
                            "type": "string",
                            "ontology": "crm:P91 has unit"
                        },
                        "value": {
                            "$ref": "#/definitions/Quantity%3C%22m%2Fmin%22%3E",
                            "description": "The measured value.",
                            "ontology": "crm:P90 has value"
                        }
                    },
                    "required": [
                        "unit",
                        "value"
                    ],
                    "type": "object"
                }
            ],
            "description": "An object assumption wraps a complex object with an optional annotation. Used for structured values (e.g. persons, conditions) whose properties may be uncertain."
        },
        "ObjectAssumption<Person>": {
            "description": "An object assumption wraps a complex object with an optional annotation. Used for structured values (e.g. persons, conditions) whose properties may be uncertain.",
            "properties": {
                "@annotation": {
                    "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                    "properties": {
                        "belief": {
                            "$ref": "#/definitions/Belief",
                            "description": "The belief held about the annotated statement.",
                            "ontology": "crminf:J4i is subject of"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "belief",
                        "@id"
                    ],
                    "type": "object"
                },
                "name": {
                    "description": "The name, e.g. \"Grünfeld, Alfred\", \"Wien\", \"M. Welte & Söhne\".",
                    "type": "string",
                    "ontology": "rdfs:label"
                },
                "role": {
                    "$ref": "#/definitions/AgentRole",
                    "description": "The role of the agent in the context of the edition.",
                    "ontology": "crm:P2 has type"
                },
                "sameAs": {
                    "description": "Authority records for the same thing: GND, Wikidata, geonames or similar.",
                    "examples": [
                        "https://d-nb.info/gnd/116888652"
                    ],
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "ontology": "owl:sameAs"
                },
                "@id": {
                    "description": "A unique identifier for this object.",
                    "type": "string"
                }
            },
            "required": [
                "name",
                "sameAs"
            ],
            "type": "object"
        },
        "ObjectAssumption<RollDimensions>": {
            "description": "An object assumption wraps a complex object with an optional annotation. Used for structured values (e.g. persons, conditions) whose properties may be uncertain.",
            "properties": {
                "@annotation": {
                    "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                    "properties": {
                        "belief": {
                            "$ref": "#/definitions/Belief",
                            "description": "The belief held about the annotated statement.",
                            "ontology": "crminf:J4i is subject of"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "belief",
                        "@id"
                    ],
                    "type": "object"
                },
                "height": {
                    "$ref": "#/definitions/Millimeters",
                    "description": "The total height (length) of the roll.",
                    "ontology": "reo:height"
                },
                "unit": {
                    "const": "mm",
                    "description": "The unit of measurement.",
                    "type": "string",
                    "ontology": "crm:P91 has unit"
                },
                "width": {
                    "$ref": "#/definitions/Millimeters",
                    "description": "The width of the roll.",
                    "ontology": "reo:width"
                }
            },
            "required": [
                "height",
                "unit",
                "width"
            ],
            "type": "object"
        },
        "ObjectAssumption<Transcription>": {
            "description": "An object assumption wraps a complex object with an optional annotation. Used for structured values (e.g. persons, conditions) whose properties may be uncertain.",
            "properties": {
                "@annotation": {
                    "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                    "properties": {
                        "belief": {
                            "$ref": "#/definitions/Belief",
                            "description": "The belief held about the annotated statement.",
                            "ontology": "crminf:J4i is subject of"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "belief",
                        "@id"
                    ],
                    "type": "object"
                },
                "text": {
                    "description": "The text content of the symbol.",
                    "type": "string",
                    "ontology": "crm:P190 has symbolic content"
                },
                "@id": {
                    "description": "A unique identifier for this object."
                },
                "@type": {
                    "const": "text",
                    "type": "string",
                    "description": "The type discriminator for this object.",
                    "ontology": "rdf:type"
                }
            },
            "required": [
                "@id",
                "text",
                "@type"
            ],
            "type": "object"
        },
        "Patch": {
            "description": "A piece of paper or tape glued onto the roll: a label naming it, a strip covering perforations, or a patch reinforcing a tear. A patch may itself carry other features, such as writings or holes.",
            "properties": {
                "condition": {
                    "$ref": "#/definitions/ObjectAssumption%3CConditionState%3C(%22detaching%22%7C%22ripped%22)%3E%3E",
                    "description": "This can be used e.g. to indicate a perforation which is torn out or in any other way damaged.",
                    "ontology": "crm:P44 has condition"
                },
                "depiction": {
                    "description": "IIIF region pointing to a depiction of this feature in the scan.",
                    "type": "string",
                    "ontology": "crm:P138i has representation"
                },
                "features": {
                    "description": "The features the patch itself carries. They need not be positioned explicitly.",
                    "items": {
                        "$ref": "#/definitions/NestedFeature"
                    },
                    "type": "array",
                    "ontology": "crm:P46 is composed of"
                },
                "horizontal": {
                    "$ref": "#/definitions/HorizontalSpan",
                    "description": "Horizontal span of the feature on the roll.",
                    "ontology": "crm:P43 has dimension"
                },
                "material": {
                    "description": "What the patch is made of.",
                    "enum": [
                        "paper",
                        "tape"
                    ],
                    "type": "string",
                    "ontology": "crm:P45 consists of"
                },
                "rotation": {
                    "$ref": "#/definitions/Measure%3C%22deg%22%3E",
                    "description": "How far the patch was stuck on askew. At zero its edges stand square to the roll, and the angle turns them towards the end of it, as a writing's reading direction turns.",
                    "ontology": "reo:rotation"
                },
                "side": {
                    "description": "The face of the roll it lies on: the side that faces the reader as the roll plays, or the back of it.",
                    "enum": [
                        "recto",
                        "verso"
                    ],
                    "type": "string",
                    "ontology": "reo:side"
                },
                "vertical": {
                    "$ref": "#/definitions/VerticalSpan",
                    "description": "Vertical span of the feature on the roll.",
                    "ontology": "crm:P43 has dimension"
                },
                "@id": {
                    "description": "A unique identifier for this object.",
                    "type": "string"
                },
                "@type": {
                    "const": "Patch",
                    "description": "The type discriminator for this object.",
                    "type": "string",
                    "ontology": "rdf:type"
                }
            },
            "required": [
                "horizontal",
                "@id",
                "material",
                "@type",
                "vertical"
            ],
            "type": "object",
            "ontology": "reo:Patch"
        },
        "Percent": {
            "$ref": "#/definitions/Quantity%3C%22percent%22%3E",
            "description": "A share of a length, such as how far the paper has stretched: dimensionless, in hundredths."
        },
        "Perforator": {
            "description": "The machine that punched the copy. It stands for this production alone. Whether it is the one another copy was punched on is left to a statement of identity made about it elsewhere, which its id allows.",
            "properties": {
                "condition": {
                    "$ref": "#/definitions/PerforatorSetting",
                    "ontology": "crm:P44 has condition"
                },
                "drive": {
                    "$ref": "#/definitions/ObjectAssumption%3CDrive%3E",
                    "description": "How its punches were driven, as the rows of its chains show it: in line across the tracks where one ram head drove them all, and staggered where each punch had a driver of its own. It is part of how the machine was built and so no part of its setting.",
                    "ontology": "reo:drive"
                },
                "@id": {
                    "description": "A unique identifier for this object.",
                    "type": "string"
                },
                "@type": {
                    "const": "Perforator",
                    "description": "The type discriminator for this object.",
                    "type": "string",
                    "ontology": "rdf:type"
                }
            },
            "required": [
                "@id",
                "@type"
            ],
            "type": "object",
            "ontology": "crm:E22 Human-Made Object"
        },
        "PerforatorSetting": {
            "description": "How the perforator was set when it punched the copy, as far as the perforations show it. No time is stated: how long a machine kept a setting is for a comparison across rolls to find out.",
            "properties": {
                "advance": {
                    "$ref": "#/definitions/ObjectAssumption%3CAdvance%3E",
                    "ontology": "reo:advance"
                },
                "chainPitch": {
                    "$ref": "#/definitions/ObjectAssumption%3CChainPitch%3E",
                    "ontology": "reo:chainPitch"
                },
                "conditionType": {
                    "const": "setting",
                    "description": "The kind of condition, from the list the roll or the kind of feature allows.",
                    "type": "string",
                    "ontology": "crm:P2 has type"
                },
                "description": {
                    "description": "A free-text description of the condition, providing details beyond the type classification.",
                    "type": "string",
                    "ontology": "crm:P3 has note"
                },
                "punchDiameter": {
                    "$ref": "#/definitions/ObjectAssumption%3CMeasure%3C%22mm%22%3E%3E",
                    "description": "The diameter of the round punch. Taken across the roll, it is the one value of the setting that neither the scale along the roll nor the shrinkage of the paper enters.",
                    "ontology": "reo:punchDiameter"
                }
            },
            "required": [
                "conditionType"
            ],
            "type": "object",
            "ontology": "crm:E3 Condition State"
        },
        "Person": {
            "$ref": "#/definitions/Agent",
            "description": "An agent that is a person."
        },
        "Pixels": {
            "$ref": "#/definitions/Quantity%3C%22px%22%3E",
            "description": "A place in a scan. Comparable within one scan only, since the resolution is the scan's."
        },
        "Place": {
            "description": "A place, e.g. a recording location, publishing location, etc.",
            "properties": {
                "name": {
                    "description": "The name, e.g. \"Grünfeld, Alfred\", \"Wien\", \"M. Welte & Söhne\".",
                    "type": "string",
                    "ontology": "rdfs:label"
                },
                "sameAs": {
                    "description": "Authority records for the same thing: GND, Wikidata, geonames or similar.",
                    "examples": [
                        "https://d-nb.info/gnd/116888652"
                    ],
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "ontology": "owl:sameAs"
                }
            },
            "required": [
                "name",
                "sameAs"
            ],
            "type": "object",
            "ontology": "crm:E53 Place"
        },
        "ProductionEvent": {
            "description": "Describes the production of a roll copy: the manufacturer, the paper used, the date, and the system and paper speed the copy was cut for.",
            "properties": {
                "company": {
                    "$ref": "#/definitions/ObjectAssumption%3CAgent%3E",
                    "description": "The company that produced the roll copy (e.g. \"M. Welte & Söhne\"). An object assumption, so that a company read off a box label or adopted from a letter can say where it comes from.",
                    "ontology": "crm:P14 carried out by"
                },
                "date": {
                    "$ref": "#/definitions/DateAssignment",
                    "description": "The date of production, if known.",
                    "ontology": "crm:P4 has time-span"
                },
                "paper": {
                    "$ref": "#/definitions/ObjectAssumption%3CConcept%3E",
                    "description": "The paper the roll copy was cut on. An object assumption, so that what the paper is taken to be can say how that was found and serve as a premise, e.g. of a dating.",
                    "ontology": "crm:P126 employed"
                },
                "perforator": {
                    "$ref": "#/definitions/Perforator",
                    "description": "The perforator the copy was punched on, with the drive and the setting its perforations show.",
                    "ontology": "crm:P16 used specific object"
                },
                "produced": {
                    "description": "The features the copy came from its punching with: the note and expression perforations, and now and then a mark the perforator left. A reading of a scan finds every chain of holes on the paper at once and states it here, and a feature an editor reads as the work of a later hand belongs in the act that made it, whichever kind of feature it is.",
                    "items": {
                        "$ref": "#/definitions/AnyFeature"
                    },
                    "type": "array",
                    "ontology": "reo:produced"
                },
                "speed": {
                    "$ref": "#/definitions/ObjectAssumption%3CPaperSpeed%3E",
                    "description": "The paper speed the copy was cut for, as the speed at the beginning of the roll: a tempo marking states it so, and the take-up spool accelerates from there. A performance of a version the copy bears witness to starts at it (`paperSpeedOf`). A copy cut from the same master for another speed comes out longer or shorter than the roll it is aligned with by the ratio of the speeds. The alignment measures that ratio far more closely than a label states a speed, so the speed is held against what the alignments give (`alignmentProblems`) rather than used to find it.",
                    "ontology": "reo:paperSpeed"
                },
                "system": {
                    "$ref": "#/definitions/Concept",
                    "description": "The reproducing system the copy was cut for. Left out, it is the roll's own; a Licensee re-cut of a T-100 roll names the Licensee here. A system the type vocabulary knows carries the IRI of its concept as `id`.",
                    "ontology": "crm:P32 used general technique"
                }
            },
            "type": "object",
            "ontology": "lrmoo:F32 Item Production Event"
        },
        "Quantity<\"deg\">": {
            "type": "number"
        },
        "Quantity<\"ft/min\">": {
            "type": "number"
        },
        "Quantity<\"m/min\">": {
            "type": "number"
        },
        "Quantity<\"mm\">": {
            "type": "number"
        },
        "Quantity<\"percent\">": {
            "type": "number"
        },
        "Quantity<\"px\">": {
            "type": "number"
        },
        "Quantity<\"px/in\">": {
            "type": "number"
        },
        "Quantity<\"track\">": {
            "type": "number"
        },
        "RecordingEvent": {
            "description": "Describes the event of recording and documents the persons involved in the process (e.g. pianist), the place, and the date of the recording.",
            "properties": {
                "created": {
                    "$ref": "#/definitions/Version",
                    "description": "The version of the roll which was created in the recording. Since it is usually not handed down, this is an optional property.",
                    "ontology": "lrmoo:R17 created"
                },
                "date": {
                    "$ref": "#/definitions/DateAssignment",
                    "description": "The recording date of the roll. This is a date assignment so that we can state e.g. the catalogue or the roll label which indicates the date of the recording.",
                    "ontology": "crm:P4 has time-span"
                },
                "place": {
                    "$ref": "#/definitions/Place",
                    "description": "The place where the recording took place.",
                    "ontology": "crm:P7 took place at"
                },
                "recorded": {
                    "description": "Documents the performance which was recorded.",
                    "properties": {
                        "pianist": {
                            "$ref": "#/definitions/Person",
                            "description": "The pianist who gave the recorded performance.",
                            "ontology": "crm:P14 carried out by"
                        },
                        "playing": {
                            "description": "This property should point to a standard URI, e.g. the GND.",
                            "type": "string",
                            "ontology": "lrmoo:R80 performed"
                        }
                    },
                    "required": [
                        "pianist",
                        "playing"
                    ],
                    "type": "object",
                    "ontology": "lrmoo:R81 recorded"
                }
            },
            "required": [
                "recorded",
                "place",
                "date"
            ],
            "type": "object",
            "ontology": "lrmoo:F28 Expression Creation"
        },
        "ReferenceAssumption": {
            "description": "A reference assumption wraps a reference (by `@id`) with an optional annotation. Used when pointing to another entity whose association may be uncertain.",
            "properties": {
                "@annotation": {
                    "description": "An optional annotation expressing a belief about this assumption. Uses the JSON-LD-star `@annotation` mechanism to attach epistemic metadata (certainty and reasons) to any triple.\n\nA statement that carries none is stated plainly, and what a program concluded is stated so too: an edition asserts its stemma and its edits, as a printed edition does, and its creation names the principles and the release they were found by (`EditionCreation`). A belief is kept for what the editor doubts.",
                    "properties": {
                        "belief": {
                            "$ref": "#/definitions/Belief",
                            "description": "The belief held about the annotated statement.",
                            "ontology": "crminf:J4i is subject of"
                        },
                        "@id": {
                            "description": "A unique identifier for this object.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "belief",
                        "@id"
                    ],
                    "type": "object"
                },
                "@id": {
                    "description": "A unique identifier for this object.",
                    "type": "string"
                }
            },
            "required": [
                "@id"
            ],
            "type": "object"
        },
        "Roll": {
            "description": "The abstract concept of a roll, identified by its catalogue number.",
            "properties": {
                "catalogueNumber": {
                    "description": "The catalogue number of the roll.",
                    "examples": [
                        "WM 225"
                    ],
                    "type": "string",
                    "ontology": "dcterms:identifier"
                },
                "recordingEvent": {
                    "$ref": "#/definitions/RecordingEvent",
                    "ontology": "lrmoo:R19i was realised through"
                }
            },
            "required": [
                "catalogueNumber",
                "recordingEvent"
            ],
            "type": "object",
            "ontology": "lrmoo:F1 Work"
        },
        "RollConditionAssignment": {
            "$ref": "#/definitions/ObjectAssumption%3C(GeneralRollCondition%7CPaperStretch%7CTear)%3E",
            "description": "An assignment of a condition (general, paper-stretch or a tear) to a roll copy, annotatable with a belief about its certainty."
        },
        "RollCopy": {
            "description": "A physical copy of a roll, held at a specific location. Each roll copy has its own measurements, conditions and modifications, and states its features in the act that brought each of them about. Multiple copies of the same roll may exist across different archives or collections.",
            "properties": {
                "carries": {
                    "description": "The versions this copy is held to carry, where its features are not read into symbols, as for a copy known only from a recording. Each statement carries the belief it rests on.",
                    "items": {
                        "$ref": "#/definitions/ReferenceAssumption"
                    },
                    "type": "array",
                    "ontology": "crm:P128 carries"
                },
                "conditions": {
                    "description": "Condition assessments of this roll copy (e.g. paper stretch, general wear, a tear). Each condition is an assumption annotatable with a belief.",
                    "items": {
                        "$ref": "#/definitions/RollConditionAssignment"
                    },
                    "type": "array",
                    "ontology": "crm:P44 has condition"
                },
                "keeper": {
                    "$ref": "#/definitions/KeeperAssignment",
                    "description": "The institution or person holding this copy. Left out where it is not known, as for a copy known only from a recording. An object assumption, so that a keeper read off a file header or adopted from a letter can say where it comes from. Who held the copy before is not stated here: P50 names the current keeper.",
                    "ontology": "crm:P50 has current keeper"
                },
                "measurements": {
                    "description": "Physical measurements of this roll copy: its dimensions, hole separation and margins, the resolution of its scan, and how it lies on the edition's axis. What the perforations tell about the machine that cut them is stated with the production.\n\nA value the edition exports is an object assumption, so that it can say what took it: a measurement naming the program and its version, the scan or analysis it was taken on, and the day.",
                    "properties": {
                        "alignment": {
                            "$ref": "#/definitions/Alignment",
                            "description": "How the copy's places are carried onto the edition's axis. Left out for the reference copy, whose places are the axis, and for a copy not aligned yet. Not exported to RDF."
                        },
                        "dimensions": {
                            "$ref": "#/definitions/ObjectAssumption%3CRollDimensions%3E",
                            "description": "The physical dimensions of the roll.",
                            "ontology": "reo:dimensions"
                        },
                        "holeSeparation": {
                            "$ref": "#/definitions/ObjectAssumption%3C(Measure%3C%22px%22%3E%7CMeasure%3C%22mm%22%3E)%3E",
                            "description": "The distance across the roll from the centre of one track to the next, the track pitch or Teilung, in the unit the scan was measured in. It is fixed by the tracker bar the roll was cut for, and is another thing than the chain pitch, which runs along the roll.",
                            "ontology": "reo:holeSeparation"
                        },
                        "margins": {
                            "anyOf": [
                                {
                                    "$ref": "#/definitions/Margins%3C%22px%22%3E"
                                },
                                {
                                    "$ref": "#/definitions/Margins%3C%22mm%22%3E"
                                }
                            ],
                            "description": "The margins on the treble and bass sides of the roll. Not exported to RDF."
                        },
                        "readerExtension": {
                            "description": "What a pneumatic reader added to this copy's chains of holes, where it was taken off again. Such a reader reports how long a valve stayed open, which exceeds the perforation that opened it, so its chains are overlong by a constant while its onsets agree. Nothing for a copy read by other means, whose chains are the punched ones themselves. Not exported to RDF.",
                            "properties": {
                                "leaving": {
                                    "description": "The chains it was not taken off, by `@id`, being no longer than it is. The constant reaches its limit there rather than the copy being wrong, and why they were left is for the edition to state about the features themselves; this only records that they stand as the reader gave them, so that putting the extension back does not lengthen a chain nothing was taken from.",
                                    "items": {
                                        "type": "string"
                                    },
                                    "type": "array"
                                },
                                "length": {
                                    "$ref": "#/definitions/Millimeters",
                                    "description": "How much longer the reading of a chain ran than the perforation that caused it."
                                }
                            },
                            "required": [
                                "length"
                            ],
                            "type": "object"
                        },
                        "scanResolution": {
                            "$ref": "#/definitions/ObjectAssumption%3CMeasure%3C%22px%2Fin%22%3E%3E",
                            "description": "The resolution this copy's scan was read at, along the roll. It is what the measurements given in pixels are to be read against, and what every conversion between a place in the scan and one on the paper goes through. A scanner may read across the roll at another resolution, which the analysis files do not state.",
                            "ontology": "reo:scanResolution"
                        },
                        "trackCalibration": {
                            "$ref": "#/definitions/TrackCalibration",
                            "description": "Relates this copy's scan to the tracker bar: how the scanning software's hole numbering was shifted onto the bar, and where the track grid sits in the image. Not exported to RDF."
                        }
                    },
                    "type": "object",
                    "ontology": "crm:P39i was measured by"
                },
                "modifications": {
                    "items": {
                        "$ref": "#/definitions/Modification"
                    },
                    "type": "array",
                    "ontology": "crm:P31i was modified by"
                },
                "production": {
                    "$ref": "#/definitions/ProductionEvent",
                    "description": "The production event that created this roll copy.",
                    "ontology": "lrmoo:R28i was produced by"
                },
                "readFrom": {
                    "$ref": "#/definitions/FeatureSource",
                    "description": "What this copy's features were read from. A copy that states no source is one whose features reached the edition by a way that was not written down.",
                    "ontology": "reo:capture"
                },
                "sameAs": {
                    "description": "The same copy as others name it: the record its keeper gives it, such as Stanford's PURL for a copy of the Condon collection. It names the copy as the GND names a pianist, and takes over nothing the record says about it; what the edition holds of the copy it states itself.",
                    "items": {
                        "type": "string"
                    },
                    "type": "array",
                    "ontology": "owl:sameAs"
                },
                "scan": {
                    "description": "The scan URL or IIIF URL of the roll.",
                    "type": "string",
                    "ontology": "crm:P138i has representation"
                },
                "siglum": {
                    "description": "A short siglum to identify the copy, e.g. \"St1\" or \"Wi1\": letters for the collection the copy was read in, and a number counting the copies of the roll held there. A copy without one is named by its keeper.",
                    "type": "string",
                    "ontology": "reo:siglum"
                },
                "@id": {
                    "description": "A unique identifier for this object.",
                    "type": "string"
                },
                "@type": {
                    "const": "RollCopy",
                    "description": "The type discriminator for this object.",
                    "type": "string",
                    "ontology": "rdf:type"
                }
            },
            "required": [
                "conditions",
                "@id",
                "measurements",
                "modifications",
                "@type"
            ],
            "type": "object",
            "ontology": "reo:RollCopy"
        },
        "Shift": {
            "description": "How far an alignment moves a copy's places before it scales them: along the roll, in the copy's own millimetres, and across it, in tracks.",
            "properties": {
                "horizontal": {
                    "$ref": "#/definitions/Millimeters",
                    "description": "Along the roll."
                },
                "vertical": {
                    "$ref": "#/definitions/Track",
                    "description": "Across the tracker bar."
                }
            },
            "required": [
                "horizontal",
                "vertical"
            ],
            "type": "object"
        },
        "Software": {
            "description": "Software that captured a copy or measured it: the transcriber that read a recording into notes, the emulator that wrote a MIDI file, the program that found the holes on a scan or aligned two copies. Or the software an edition was made with, such as the release of this library that found its stemma.",
            "properties": {
                "name": {
                    "type": "string",
                    "ontology": "rdfs:label"
                },
                "version": {
                    "description": "The release, the commit, or the model checkpoint of a transcriber.",
                    "type": "string",
                    "ontology": "owl:versionInfo"
                }
            },
            "required": [
                "name"
            ],
            "type": "object",
            "ontology": "crmdig:D14 Software"
        },
        "SourceKind": {
            "description": "A kind of source a copy's features can be read from, from the paper itself to a sound recording of the copy being played.",
            "enum": [
                "roll",
                "scan",
                "analysis",
                "reading",
                "emulation",
                "recording"
            ],
            "type": "string"
        },
        "Strain": {
            "description": "How far the paper has stretched, or shrunk where it is negative, since it was perforated, as a share of its length then: the strain ΔL / L. It is a ratio of two lengths and so has no unit of its own, and it is stated in per cent because what paper does is a matter of tenths of one. It is taken in one direction, along the roll or across it, since machine-made paper does not stretch the same way in both.",
            "properties": {
                "uncertainty": {
                    "$ref": "#/definitions/Percent",
                    "description": "The standard uncertainty of the value, one standard deviation. Left out where the measurement gave none, which leaves it no more precise than paper is known to vary.",
                    "ontology": "reo:uncertainty"
                },
                "unit": {
                    "const": "percent",
                    "description": "The unit of measurement.",
                    "type": "string",
                    "ontology": "crm:P91 has unit"
                },
                "value": {
                    "$ref": "#/definitions/Quantity%3C%22percent%22%3E",
                    "description": "The measured value.",
                    "ontology": "crm:P90 has value"
                }
            },
            "required": [
                "unit",
                "value"
            ],
            "type": "object",
            "ontology": "crm:E54 Dimension"
        },
        "Technique": {
            "description": "How a trace was put on the paper.",
            "enum": [
                "print",
                "handwriting",
                "stamp"
            ],
            "type": "string"
        },
        "Text": {
            "description": "A textual symbol, e.g. a label or annotation found on the roll.",
            "properties": {
                "carriers": {
                    "description": "References to the physical features (e.g. chains of holes) on the roll copies that carry this symbol. Since the association might be debatable, it can be annotated. There might be e.g. doubts about the meaning and correct transcription of a feature on a physical roll. This points to a feature by its `@id`.",
                    "items": {
                        "$ref": "#/definitions/ReferenceAssumption"
                    },
                    "type": "array",
                    "ontology": "crm:P128i is carried by"
                },
                "text": {
                    "description": "The text content of the symbol.",
                    "type": "string",
                    "ontology": "crm:P190 has symbolic content"
                },
                "@id": {
                    "description": "A unique identifier for this object.",
                    "type": "string"
                },
                "@type": {
                    "const": "text",
                    "type": "string",
                    "description": "The type discriminator for this object.",
                    "ontology": "rdf:type"
                }
            },
            "required": [
                "carriers",
                "@id",
                "text",
                "@type"
            ],
            "type": "object",
            "ontology": "crm:E33 Linguistic Object"
        },
        "TimeSpan": {
            "anyOf": [
                {
                    "properties": {
                        "within": {
                            "description": "The day the event falls within.",
                            "format": "date",
                            "type": "string",
                            "ontology": "crm:P82 at some time within"
                        }
                    },
                    "required": [
                        "within"
                    ],
                    "type": "object"
                },
                {
                    "properties": {
                        "after": {
                            "description": "The earliest day the event can have happened on: it did not happen before it.",
                            "format": "date",
                            "type": "string",
                            "ontology": "crm:P82a begin of the begin"
                        },
                        "before": {
                            "description": "The latest day the event can have happened on: it did not happen after it.",
                            "format": "date",
                            "type": "string",
                            "ontology": "crm:P82b end of the end"
                        }
                    },
                    "required": [
                        "after"
                    ],
                    "type": "object"
                },
                {
                    "properties": {
                        "after": {
                            "description": "The earliest day the event can have happened on: it did not happen before it.",
                            "format": "date",
                            "type": "string",
                            "ontology": "crm:P82a begin of the begin"
                        },
                        "before": {
                            "description": "The latest day the event can have happened on: it did not happen after it.",
                            "format": "date",
                            "type": "string",
                            "ontology": "crm:P82b end of the end"
                        }
                    },
                    "required": [
                        "before"
                    ],
                    "type": "object"
                }
            ],
            "description": "When something happened: the day it falls `within`, or the bounds it lies between. A bound nobody can give is left out, so `after` alone says \"not before\".",
            "ontology": "crm:E52 Time-Span"
        },
        "Track": {
            "$ref": "#/definitions/Quantity%3C%22track%22%3E",
            "description": "A position across the roll, numbered as the tracker bar does."
        },
        "TrackCalibration": {
            "description": "Relates a scan to the tracker bar it was read with.\n\nScanning software numbers the hole columns it finds by their position in the image, so its numbering is offset by however far the roll lay from the edge of the scanner bed. Calibrating means finding that offset, usually from a landmark such as the rewind perforation.\n\n    column      = offset + scannerTrack * separation     trackerBar  = scannerTrack + shift",
            "properties": {
                "offset": {
                    "$ref": "#/definitions/Pixels",
                    "description": "Image column of the scanning software's track 0."
                },
                "separation": {
                    "$ref": "#/definitions/Pixels",
                    "description": "Distance between the centres of adjacent tracks."
                },
                "shift": {
                    "$ref": "#/definitions/Track",
                    "description": "Added to the scanning software's numbering to reach the tracker bar."
                },
                "unit": {
                    "const": "px",
                    "type": "string"
                }
            },
            "required": [
                "unit",
                "offset",
                "separation",
                "shift"
            ],
            "type": "object"
        },
        "Version": {
            "description": "A version is defined by the sum of edits applied to the version it is based on. What it is called is not stored with it: `siglaOf` reads the sigla off the stemma, so that a label never outlives the arrangement it describes.",
            "properties": {
                "basedOn": {
                    "description": "The versions this one is held to derive from, each under the belief it rests on. The text is read against the principal one (`principalDerivationOf`); the others stand as hypotheses, such as a contamination. A version that names none represents the mother roll.",
                    "items": {
                        "$ref": "#/definitions/Derivation"
                    },
                    "type": "array",
                    "ontology": "lrmoo:R76 is derivative of"
                },
                "creation": {
                    "$ref": "#/definitions/VersionCreation",
                    "description": "The act that made this version, where it is known: who carried it out, when, and by what rule. The export states the act for every version, stating nothing of it where nothing is known, so that the axioms of reo.ttl can place it in time: it started after the recording and the creation of every version it derives from had started, and ended no later than the punching of any copy carrying a symbol it added. A date stated here stands beside those; which of them bounds the act closest is for a query to pick.",
                    "ontology": "lrmoo:R17i was created by"
                },
                "edits": {
                    "description": "The list of edits that, applied to the base version, produce this version. A hypothetical version whose changes nobody can state leaves it out; it then reads as the version it derives from.",
                    "items": {
                        "$ref": "#/definitions/Edit"
                    },
                    "type": "array",
                    "ontology": "reo:involvedEdit"
                },
                "system": {
                    "$ref": "#/definitions/Concept",
                    "description": "The reproducing system this version is coded for. One roll was often issued for several of them, and a version is a reading in one system's words: its expression types are that system's vocabulary and its notes sit on that bar's positions. A system the type vocabulary knows carries the IRI of its concept as `id`, from which the export takes the system's own context.",
                    "ontology": "crm:P2 has type"
                },
                "@id": {
                    "description": "A unique identifier for this object.",
                    "type": "string"
                }
            },
            "required": [
                "@id",
                "system"
            ],
            "type": "object",
            "ontology": "lrmoo:F2 Expression"
        },
        "VersionCreation": {
            "description": "How a version was made, where that is known and worth stating.\n\nA roll issued for another system was re-punched by an editor of the publisher's, and that was an editorial act rather than a conversion: Lawson names Kähle as the man who corrected second masters for the green system. The rule he worked by is the procedure named here, and the version's edits carry it out, so the mechanical part of a transfer is stated once instead of being spelled out per note.",
            "properties": {
                "actor": {
                    "$ref": "#/definitions/ActorAssignment",
                    "description": "Who carried the act out. An `ObjectAssumption`, so an attribution can carry the belief it rests on and the reasons for it.",
                    "ontology": "crm:P14 carried out by"
                },
                "date": {
                    "$ref": "#/definitions/DateAssignment",
                    "description": "When it took place.",
                    "ontology": "crm:P4 has time-span"
                },
                "lengthRatio": {
                    "$ref": "#/definitions/ObjectAssumption%3CLengthRatio%3E",
                    "description": "How long the act made the version's paper for a length of the paper of the version it derives from. A re-cut for a system whose paper runs slower comes out shorter by the ratio of the speeds, and the alignments of the copies measure that ratio more closely than any label states a speed (`lengthRatioOf`). It is stated where the edition holds to it, as a measurement naming the copies it used and the program that found it, so that it can serve as a premise. A speed follows from it only together with a premise about the speed of the other version.",
                    "ontology": "reo:lengthRatio"
                },
                "procedure": {
                    "$ref": "#/definitions/Concept",
                    "description": "The rule followed, as a term of the vocabulary: the notes stand at their pitch, the expression is re-spelled in the other system's words.",
                    "ontology": "crm:P33 used specific technique"
                }
            },
            "type": "object",
            "ontology": "lrmoo:F28 Expression Creation"
        },
        "VerticalSpan": {
            "description": "Describes the vertical extent of a feature on the roll, measured in track numbers. Track numbers correspond to positions on the tracker bar.",
            "properties": {
                "from": {
                    "$ref": "#/definitions/Track",
                    "description": "The start track number of the feature.",
                    "ontology": "reo:from"
                },
                "to": {
                    "$ref": "#/definitions/Track",
                    "description": "The end track number, if the feature spans multiple tracks. If omitted, the feature occupies a single track.",
                    "ontology": "reo:to"
                },
                "unit": {
                    "const": "track",
                    "description": "The unit of measurement for vertical positions.",
                    "type": "string",
                    "ontology": "crm:P91 has unit"
                }
            },
            "required": [
                "unit",
                "from"
            ],
            "type": "object",
            "ontology": "crm:E54 Dimension"
        },
        "Writing": {
            "description": "A piece of writing found on the roll, such as a label, catalogue number, or annotation. Writings state how they were made and a transcription of their content.",
            "properties": {
                "condition": {
                    "$ref": "#/definitions/ObjectAssumption%3CConditionState%3C(%22illegible%22)%3E%3E",
                    "description": "This can be used e.g. to indicate a perforation which is torn out or in any other way damaged.",
                    "ontology": "crm:P44 has condition"
                },
                "depiction": {
                    "description": "IIIF region pointing to a depiction of this feature in the scan.",
                    "type": "string",
                    "ontology": "crm:P138i has representation"
                },
                "horizontal": {
                    "$ref": "#/definitions/HorizontalSpan",
                    "description": "Horizontal span of the feature on the roll.",
                    "ontology": "crm:P43 has dimension"
                },
                "medium": {
                    "$ref": "#/definitions/Medium",
                    "description": "What it was put on with, where it can be told. A date may be known to be handwritten where the pencil cannot be told from the ink, and a stamp leaves its ink as much as a pen does, which is why the two are stated apart.",
                    "ontology": "reo:medium"
                },
                "rotation": {
                    "$ref": "#/definitions/Measure%3C%22deg%22%3E",
                    "description": "How far the writing stands askew. At zero it reads across the roll, from the bass side towards the treble, and the angle turns that reading direction towards the end of the roll, so that a right angle leaves it reading along the roll. A stamp pressed crooked and a label written lengthwise are both stated here.",
                    "ontology": "reo:rotation"
                },
                "side": {
                    "description": "The face of the roll it lies on: the side that faces the reader as the roll plays, or the back of it.",
                    "enum": [
                        "recto",
                        "verso"
                    ],
                    "type": "string",
                    "ontology": "reo:side"
                },
                "technique": {
                    "$ref": "#/definitions/Technique",
                    "description": "A writing always states how it was put on the paper, which can be read off it where the medium cannot.",
                    "ontology": "reo:technique"
                },
                "transcription": {
                    "$ref": "#/definitions/ObjectAssumption%3CTranscription%3E",
                    "description": "A transcription of the text content of the writing. This is an object assumption so that the transcription can be annotated with a belief about its correctness.",
                    "ontology": "crm:P128 carries"
                },
                "vertical": {
                    "$ref": "#/definitions/VerticalSpan",
                    "description": "Vertical span of the feature on the roll.",
                    "ontology": "crm:P43 has dimension"
                },
                "@id": {
                    "description": "A unique identifier for this object.",
                    "type": "string"
                },
                "@type": {
                    "const": "Writing",
                    "description": "The type discriminator for this object.",
                    "type": "string",
                    "ontology": "rdf:type"
                }
            },
            "required": [
                "horizontal",
                "@id",
                "technique",
                "transcription",
                "@type",
                "vertical"
            ],
            "type": "object",
            "ontology": "reo:Writing"
        }
    }
}
