@prefix reo:     <https://w3id.org/reo/> .
@prefix reot:    <https://w3id.org/reo/type/> .
@prefix crm:     <http://www.cidoc-crm.org/cidoc-crm/> .
@prefix lrmoo:   <http://iflastandards.info/ns/lrm/lrmoo/> .
@prefix owl:     <http://www.w3.org/2002/07/owl#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix skos:    <http://www.w3.org/2004/02/skos/core#> .
@prefix vann:    <http://purl.org/vocab/vann/> .

<https://w3id.org/reo/>
    a owl:Ontology ;
    dcterms:title "Roll Edition Ontology"@en ;
    dcterms:description """A small extension of CIDOC CRM and LRMoo for digital editions of piano rolls. It adds the symbols a reproducing piano reads from a roll (notes and expression commands), the relations between such symbols that an editor states, and the edits by which one version of a roll becomes another. Everything else (physical copies and their holes, recording processes, versions, editorial beliefs) is expressed with CIDOC CRM, LRMoo and CRMinf directly. The closed value lists of the format are the types at https://w3id.org/reo/type/."""@en ;
    dcterms:creator "Niels Pfeffer" ;
    dcterms:created "2026-09-04"^^xsd:date ;
    dcterms:license <https://creativecommons.org/licenses/by/4.0/> ;
    owl:versionInfo "1.0-draft" ;
    vann:preferredNamespacePrefix "reo" ;
    vann:preferredNamespaceUri "https://w3id.org/reo/" ;
    dcterms:hasPart <https://w3id.org/reo/type/> ;
    rdfs:seeAlso <https://github.com/pfefferniels/linked-rolls> ,
                 <https://pfefferniels.github.io/linked-rolls/> ;
    dcterms:references <http://www.cidoc-crm.org/cidoc-crm/7.1.3/> ,
                       <http://iflastandards.info/ns/lrm/lrmoo/> .


#################################################################
# Classes
#################################################################

reo:Command
    a owl:Class ;
    rdfs:subClassOf crm:E90_Symbolic_Object ;
    rdfs:label "Command"@en ;
    rdfs:comment """This class comprises the symbols a reproducing piano reads from a roll: the notes it sounds and the functions it operates. A command is what a chain of holes means once it is read against a tracker bar. The chain itself is an instance of reo:HoleChain, borne by a copy of the roll (P56 bears feature) and carrying the command (P128 carries). One command may be carried by chains on several copies of the same roll. A version of the roll, an instance of F2 Expression, is composed of its commands (P106 is composed of). The measured position of a command is that of the chains carrying it; the properties aligned with, before, after and paired with let an editor state where that measurement should give way. The name comes from the mechanism: a perforation is a thing in the paper of one copy, while an instance of this class is what the machine is told to do."""@en ;
    skos:example "the first note of Grünfeld's Träumerei on the Welte-Mignon roll WM 225, recorded in Wien in 1905"@en ,
                 "the sustain pedal command that opens the same roll"@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:Note
    a owl:Class ;
    rdfs:subClassOf reo:Command ;
    rdfs:label "Note"@en ;
    rdfs:comment """This class comprises the commands that sound a pitch. The pitch is stated as a MIDI note number (pitch). Its duration follows from the extent of the carrying chain along the roll and is not stated separately."""@en ;
    skos:example "the note c′ (MIDI 60) with which Grünfeld's Träumerei begins on WM 225"@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:Expression
    a owl:Class ;
    rdfs:subClassOf reo:Command ;
    rdfs:label "Expression"@en ;
    rdfs:comment """This class comprises the commands that act on the reproducing mechanism rather than sound a note: dynamic commands such as crescendo, forzando and mezzoforte, the pedals, and motor functions such as rewind. The kind of command is given by P2 has type with one of the expression types at https://w3id.org/reo/type/; the half of the keyboard it acts on by scope. The name follows the vocabulary of the reproducing piano, where these are the expression perforations read by the expression box. It is unrelated to F2 Expression in LRMoo, which is the class of the roll's versions."""@en ;
    skos:example "a 'slow crescendo off' on a Welte-Mignon T-100 roll, aligned with the note it belongs to"@en ,
                 "the 'forzando on' and 'forzando off' pair that accents a single chord"@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:RollCopy
    a owl:Class ;
    rdfs:subClassOf lrmoo:F5_Item, crm:E22_Human-Made_Object ;
    rdfs:label "Roll Copy"@en ;
    rdfs:comment """This class comprises the surviving physical copies of a roll. A copy is an instance of F5 Item, being an exemplar in which a version of the roll was published, and an instance of E22 Human-Made Object, being a made thing that bears features: P56 bears feature takes an E19 Physical Object, which F5 Item alone is not. Both statements hold of every copy and no class of CIDOC CRM or LRMoo makes them together, which is why this class is declared."""@en ;
    skos:example "the copy of WM 225 held at Stanford, read from the scan of its paper"@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:HoleChain
    a owl:Class ;
    rdfs:subClassOf crm:E25_Human-Made_Feature ;
    rdfs:label "Hole Chain"@en ;
    rdfs:comment """This class comprises the chains of holes punched in the paper of a roll, which is what a reproducing piano reads. The perforator cuts a held note or function as a row of punches along the roll with bridges of paper left between them, so that most perforations are chains of several holes; a perforation without a bridge is a chain of one. The holes are parts of the chain (P46 is composed of) and are not stated one by one. How far apart they lie is stated of the perforator that cut them by reo:chainPitch. A chain is a human-made feature of the paper: the scope note of E25 Human-Made Feature states that it includes "the information encoding features on mechanical or digital carriers". What a chain means once it is read against a tracker bar is a command in the sense of reo:Command, which the chain carries (P128 carries). Whether its rows align with those of the neighbouring tracks tells how the perforator was driven, which is stated of the perforator by reo:drive."""@en ;
    skos:example "the chain of holes carrying the first note of Grünfeld's Träumerei on the Stanford copy of WM 225"@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:Writing
    a owl:Class ;
    rdfs:subClassOf crm:E25_Human-Made_Feature ;
    rdfs:label "Writing"@en ;
    rdfs:comment """This class comprises the features of a roll that carry text: a printed title, a stamped catalogue number, a date written by hand. What the text says is given by P128 carries, how the writing was made by reo:technique and what it was made with by reo:medium. A writing is a feature of the paper it stands on, which may be the roll itself or a patch glued onto it; the label as a piece of paper is an instance of reo:Patch, and the print on it a writing the label bears."""@en ;
    skos:example "the pencilled '225. Fritz. 18. Jan 09.' on the Stanford copy of WM 225"@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:Mark
    a owl:Class ;
    rdfs:subClassOf crm:E25_Human-Made_Feature ;
    rdfs:label "Mark"@en ;
    rdfs:comment """This class comprises the features drawn on a roll that carry no text: a circle around a perforation, a stroke, a cross. What a mark was meant to say is a reading of it, an instance of I16 Meaning Comprehension in CRMinf, and no property of the feature; its shape is therefore not stated as a type. How it was drawn is given by reo:technique and what it was drawn with by reo:medium."""@en ;
    skos:example "a pencil circle around a group of perforations, read as an instruction to punch"@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:Patch
    a owl:Class ;
    rdfs:subClassOf crm:E22_Human-Made_Object ;
    rdfs:label "Patch"@en ;
    rdfs:comment """This class comprises the pieces of paper and tape glued onto a roll: a label naming the roll, a strip covering perforations, a piece reinforcing a tear. What a patch was glued on for is the purpose of the act that glued it on (P21 had general purpose) and no property of the patch, so that a label and a correction are instances of one class. A patch is an object and not a feature: it was "a separate identifiable whole prior to" the act of gluing, as the scope note of E79 Part Addition requires of what is added, where a hole or a pencil line comes into being in the act that makes it. What it is made of is given by P45 consists of, and it may bear features of its own (P56 bears feature)."""@en ;
    skos:example "the printed label glued to the leader of the Stanford copy of WM 225"@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:Edit
    a owl:Class ;
    rdfs:subClassOf crm:E7_Activity ;
    rdfs:label "Edit"@en ;
    rdfs:comment """This class comprises the single changes by which one version of a roll is turned into another: adding symbols, removing them, or both, which amounts to replacing. The creation of the new version, an instance of F28 Expression Creation, consists of its edits (P9 consists of). The reason is given by P17 was motivated by, and it says what kind of change the edit is: one motivated by the technical change the vocabulary publishes changes only how the performance is carried, which the procedure of the creation explains; every other motivation, the generic musical change or a reason of the editor's, makes it a musical change. An edit without a motivation states the text of a version that derives from none. The shape of a change is read off what it adds and removes rather than stated. Uncertainty about an edit, for instance whether a pencil mark on a copy was meant as an instruction to punch, is expressed with CRMinf on the statement, not by a property of this class."""@en ;
    skos:example "the prolongation of a crescendo command between versions A and B of WM 225, motivated by 'Verlängerter Bereich ohne Verschiebung'"@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .


#################################################################
# Properties of commands
#################################################################

reo:alignedWith
    a owl:ObjectProperty ;
    rdfs:domain reo:Command ;
    rdfs:range reo:Command ;
    rdfs:label "aligned with"@en ;
    rdfs:comment """This property associates a command with another command whose onset it takes when the roll is performed. It records the editorial statement that the measured offset between the two is not meant: a 'crescendo off' falls on the note it belongs to. The property is not symmetric. The aligned command follows, the one it is aligned with keeps its measured place."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:before
    a owl:ObjectProperty ;
    rdfs:domain reo:Command ;
    rdfs:range reo:Command ;
    rdfs:label "before"@en ;
    rdfs:comment """This property associates a command with another command whose onset it precedes when the roll is performed, without saying by how much. It records the editorial statement that the order of the two is meant even where the copies disagree on it: a 'crescendo off' ends before the note it leads to begins. The property is not symmetric. A command the measurement already has before its reference keeps its place; one it does not is put before the reference as far as the copies that agree with the statement put it."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:after
    a owl:ObjectProperty ;
    rdfs:domain reo:Command ;
    rdfs:range reo:Command ;
    rdfs:label "after"@en ;
    rdfs:comment """This property associates a command with another command whose onset it follows when the roll is performed, without saying by how much: the counterpart of before. A command is placed by one of aligned with, before and after at most."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:pairedWith
    a owl:ObjectProperty , owl:SymmetricProperty ;
    rdfs:domain reo:Command ;
    rdfs:range reo:Command ;
    rdfs:label "paired with"@en ;
    rdfs:comment """This property associates two commands whose distance from one another is fixed: whatever displaces the one displaces the other, as a 'forzando on' belongs with its 'forzando off'. Any two commands may be paired. The property is symmetric and is stated on one side only. A command belongs to at most one pair, and the members of a pair are not themselves placed relative to anything, whether aligned with it, before it or after it."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:pitch
    a owl:DatatypeProperty ;
    rdfs:domain reo:Note ;
    rdfs:range xsd:integer ;
    rdfs:label "pitch"@en ;
    rdfs:comment """This property states the pitch of a note as a MIDI note number, 60 for middle C. It is a shortcut of the path P43 has dimension, E54 Dimension typed 'pitch', P90 has value."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:scope
    a owl:ObjectProperty ;
    rdfs:subPropertyOf crm:P2_has_type ;
    rdfs:domain reo:Expression ;
    rdfs:range crm:E55_Type ;
    rdfs:label "scope"@en ;
    rdfs:comment """This property states which half of the keyboard an expression command acts on. On rolls for the Welte-Mignon and most other reproducing systems the expression is split at a fixed point into a bass and a treble half, each with its own set of commands. The values are the types bass and treble at https://w3id.org/reo/type/."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .


#################################################################
# Properties of features
#################################################################

reo:technique
    a owl:ObjectProperty ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( reo:Writing reo:Mark ) ] ;
    rdfs:range crm:E55_Type ;
    rdfs:label "technique"@en ;
    rdfs:comment """This property states how a writing or a mark was put on the paper: printed, written by hand or stamped. The values are the types print, handwriting and stamp at https://w3id.org/reo/type/. It is a shortcut of the path P108i was produced by, E12 Production, P32 used general technique. It is stated on the feature rather than on the act, because the act is often not one the edition holds: the print on a label glued onto a roll was made in a printing shop, and what the edition records of that label is the gluing. What kind of feature it is, its class says."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:medium
    a owl:ObjectProperty ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( reo:Writing reo:Mark ) ] ;
    rdfs:range crm:E55_Type ;
    rdfs:label "medium"@en ;
    rdfs:comment """This property states what a writing or a mark was put on the paper with: ink, a pencil or a crayon. The values are the types ink, pencil and crayon at https://w3id.org/reo/type/. It is a shortcut of the path P108i was produced by, E12 Production, P125 used object of type, which is how the CRM names a kind of thing used where the thing itself is not identified, and no copy of a roll lets that pencil be identified. P32 used general technique, in which reo:technique ends, is itself a subproperty of P125 used object of type, so the two paths differ in their last step alone. The two are stated apart because they vary apart: a date may be handwritten in pencil, and a stamp leaves its ink as much as a pen does."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .


reo:side
    a owl:ObjectProperty ;
    rdfs:subPropertyOf crm:P2_has_type ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( reo:Writing reo:Mark reo:Patch ) ] ;
    rdfs:range crm:E55_Type ;
    rdfs:label "side"@en ;
    rdfs:comment """This property states which face of the paper a feature lies on: the types recto and verso at https://w3id.org/reo/type/. A chain of holes takes no side, going through the paper and lying on both faces at once, which is why the domain names the three kinds that sit on one. Recto is the face that meets the tracker bar as the roll plays."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:rotation
    a owl:ObjectProperty ;
    rdfs:subPropertyOf crm:P43_has_dimension ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( reo:Writing reo:Patch ) ] ;
    rdfs:range crm:E54_Dimension ;
    rdfs:label "rotation"@en ;
    rdfs:comment """This property states how far a writing or a patch stands askew on the paper, as a dimension in degrees (P90 has value, P91 has unit with the type deg). The angle is measured on the roll's own two axes, the one along the paper and the one across it, and not on any drawing of the roll: at zero a writing reads across the roll, from the bass side towards the treble, and a patch stands square to it, and the angle turns that reading direction towards the end of the roll, so that a right angle leaves a writing reading along the roll from its beginning towards its end. Seen with the beginning of the roll to the left and the bass side below, that is clockwise. Stating the angle on the roll's axes rather than on a face means that a writing on the verso takes the same frame as one on the recto. It is a subproperty of P43 has dimension rather than that property itself, so that an angle is told apart from the horizontal and vertical extents, which are dimensions of the same feature. A mark takes no rotation: the angle of a stroke is its shape, and what a mark's shape means is a reading of it rather than a property of it."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .


#################################################################
# Properties of edits
#################################################################

reo:added
    a owl:ObjectProperty ;
    rdfs:domain reo:Edit ;
    rdfs:range crm:E90_Symbolic_Object ;
    rdfs:label "added"@en ;
    rdfs:comment """This property associates an edit with a symbol it adds to the version being created: a command, or a text written onto the roll. What an edit adds is found only in its version and in those derived from it, so every feature carrying it was made after the edit: the edit ends before or with the end of the act that made the feature (P184). The axiom below states this, so that a version need not be dated where the acts that made its features are. The chain ends at the act that made the feature rather than at the production of the copy, since a copy altered by hand may bear features younger than itself. A copy that states it carries a version without its features being read is left out, because that statement rests on a belief which the entailment would drop."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:removed
    a owl:ObjectProperty ;
    rdfs:domain reo:Edit ;
    rdfs:range crm:E90_Symbolic_Object ;
    rdfs:label "removed"@en ;
    rdfs:comment """This property associates an edit with a symbol of the version it is based on that is absent from the version being created."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .


#################################################################
# Properties of copies
#################################################################

reo:capture
    a owl:ObjectProperty ;
    rdfs:subPropertyOf crm:P16i_was_used_for ;
    rdfs:domain lrmoo:F5_Item ;
    rdfs:range crm:E7_Activity ;
    rdfs:label "capture"@en ;
    rdfs:comment """This property associates a copy of a roll with the activity by which its features became the data of an edition. What the features were read from is given by P2 has type with one of the types roll, scan, analysis, reading, emulation and recording at https://w3id.org/reo/type/, the file the activity produced by L11 had output, the machine it ran on by L12 happened on device, the software it ran by L23 used software or firmware, and the instrument a recorded copy was played on by P16 used specific object. Where the activity is a digitisation it is also an instance of D2 Digitization Process, and where it derives one file from another, of D3 Formal Derivation; neither covers all six kinds, so the range is left at E7 Activity and the kind is stated as a type. This property concerns the provenance of the data and not the state of the paper, which is a condition of the copy (P44 has condition). What is not known about the capture is left unstated."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .


#################################################################
# Properties of acts
#################################################################

reo:produced
    a owl:ObjectProperty ;
    rdfs:subPropertyOf crm:P108_has_produced ;
    rdfs:domain crm:E12_Production ;
    rdfs:range crm:E25_Human-Made_Feature ;
    rdfs:label "produced"@en ;
    rdfs:comment """This property associates an act that made features on a roll with a feature it made: the punching of a copy with a chain of holes, a later alteration with a writing or a mark. Its range is what sets it apart from P108 has produced, which also runs from the production of a copy to the copy itself, since R28 produced is a subproperty of it (LRMoo 1.0, p. 44). A feature produced by an act that modified a copy, or by the production of a copy, is borne by that copy; the axioms below state this, so the edition does not."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .


#################################################################
# Entailments
#
# What the edition leaves to a reasoner. Each chain is within
# OWL 2 RL. The chains on time order events and compare no dates:
# which of the dates they relate an event to bounds it closest is
# for a query to pick.
#################################################################

crm:P56_bears_feature
    owl:propertyChainAxiom ( crm:P31i_was_modified_by reo:produced ) ,
                           ( lrmoo:R28i_was_produced_by reo:produced ) .

crm:P46_is_composed_of
    owl:propertyChainAxiom ( crm:P31i_was_modified_by crm:P111_added ) .

crm:P184_ends_before_or_with_the_end_of
    owl:propertyChainAxiom ( reo:added
                             crm:P128i_is_carried_by
                             [ owl:inverseOf reo:produced ] ) .

# The creation of a version ended no later than the punching of any
# copy carrying a symbol one of its edits added, a copy being punched
# from a finished version. The chain passes from the act that made the
# carrying feature to the copy it produced and back, so that it takes
# the punching of a copy alone: an alteration by hand may be the
# editor's own work on the version and so part of its creation, which
# bounds the edit but not the creation.
crm:P184_ends_before_or_with_the_end_of
    owl:propertyChainAxiom ( lrmoo:R17_created
                             reo:involvedEdit
                             reo:added
                             crm:P128i_is_carried_by
                             [ owl:inverseOf reo:produced ]
                             lrmoo:R28_produced
                             lrmoo:R28i_was_produced_by ) .

# The recording of a roll started before the creation of any version
# of it: the recording only marks the performance on a roll, and the
# first version is made by perforating those marks afterwards. The
# first chain runs through the roll to each version an edition of it
# incorporates, and sets out from the performance recorded and back
# again, since a creation that recorded nothing may realise the roll
# as well: the creation of the edition does. The creation of a version
# started after that of the version it derives from, a version being
# made from its model; so the second. A derivation the edition doubts
# is quoted rather than stated and orders nothing. The version the
# recording itself created is the recording roll, which the stemma
# does not hold, so that no creation is ordered before itself.
# Starting before is transitive, so that the date of one creation
# reaches the creations of all the versions derived from it.
crm:P176_starts_before_the_start_of
    a owl:TransitiveProperty ;
    owl:propertyChainAxiom ( lrmoo:R81_recorded
                             lrmoo:R81i_is_recorded_in
                             lrmoo:R19_created_a_realisation_of
                             lrmoo:R3_is_realised_in
                             lrmoo:R75_incorporates
                             lrmoo:R17i_was_created_by ) ,
                           ( lrmoo:R17_created
                             lrmoo:R76i_has_derivative
                             lrmoo:R17i_was_created_by ) .


#################################################################
# Shortcuts
#
# Each of these stands for a path through CRM and LRMoo that the
# JSON-LD serialisation does not spell out.
#################################################################

reo:involvedEdit
    a owl:ObjectProperty ;
    rdfs:domain lrmoo:F2_Expression ;
    rdfs:range reo:Edit ;
    rdfs:label "involved edit"@en ;
    rdfs:comment """This property associates a version of a roll with an edit by which it was made from the version it is based on. It is a shortcut of the path R17i was created by, F28 Expression Creation, P9 consists of."""@en ;
    owl:propertyChainAxiom ( lrmoo:R17i_was_created_by crm:P9_consists_of ) ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:witness
    a owl:ObjectProperty ;
    rdfs:domain lrmoo:F2_Expression ;
    rdfs:range lrmoo:F5_Item ;
    rdfs:label "witness"@en ;
    rdfs:comment """This property associates a digital edition with a physical copy of the roll on which it is based. It is a shortcut of the path R17i was created by, F28 Expression Creation, P16 used specific object."""@en ;
    owl:propertyChainAxiom ( lrmoo:R17i_was_created_by crm:P16_used_specific_object ) ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:referenceCopy
    a owl:ObjectProperty ;
    rdfs:subPropertyOf reo:witness ;
    rdfs:domain lrmoo:F2_Expression ;
    rdfs:range lrmoo:F5_Item ;
    rdfs:label "reference copy"@en ;
    rdfs:comment """This property associates a digital edition with the copy whose paper it measures the roll by: the places the edition cites along the roll are places on this copy, counted from where its scan begins, and every other copy is aligned onto it. The places a copy's features state in the graph are its own, so none of them depends on which copy this is; the choice is an editorial one, and a copy scanned whole and without tears serves best. The reference copy is one of the copies the edition is based on, hence a subproperty of reo:witness."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:siglum
    a owl:DatatypeProperty ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( lrmoo:F2_Expression lrmoo:F5_Item ) ] ;
    rdfs:range xsd:string ;
    rdfs:label "siglum"@en ;
    rdfs:comment """This property states the short label by which an edition refers to a version of the roll, such as A, B1 or B2, or to a copy of it, such as W1. It is a shortcut of the path P1 is identified by, E42 Identifier typed 'siglum', P190 has symbolic content."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .


#################################################################
# Dimensions
#
# Intervals and measured quantities of the format, as
# specialisations of P43 has dimension, P40 observed dimension
# and P90 has value.
#################################################################

reo:from
    a owl:DatatypeProperty ;
    rdfs:subPropertyOf crm:P90_has_value ;
    rdfs:domain crm:E54_Dimension ;
    rdfs:range xsd:decimal ;
    rdfs:label "from"@en ;
    rdfs:comment """This property states the lower bound of a dimension that is an interval, as the extent of a chain of holes along the roll (in millimetres from its beginning) or across it (in tracks of the tracker bar), or the speed at the beginning of a roll. The unit is given by P91 has unit."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:to
    a owl:DatatypeProperty ;
    rdfs:subPropertyOf crm:P90_has_value ;
    rdfs:domain crm:E54_Dimension ;
    rdfs:range xsd:decimal ;
    rdfs:label "to"@en ;
    rdfs:comment """This property states the upper bound of a dimension that is an interval. A chain that occupies a single track has no upper bound across the roll."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:tempo
    a owl:ObjectProperty ;
    rdfs:subPropertyOf crm:P43_has_dimension ;
    rdfs:domain lrmoo:F2_Expression ;
    rdfs:range crm:E54_Dimension ;
    rdfs:label "tempo"@en ;
    rdfs:comment """This property associated an edition with the speed at which it let the roll run, as an interval from the beginning of the roll (from) to its end (to). It is no longer used: one speed for the whole edition cannot hold where the roll was issued for several systems, whose papers run at different speeds. The speed a copy was cut for is stated with reo:paperSpeed, and the speed of a re-cut follows from that of its original and reo:lengthRatio."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> ;
    owl:deprecated true .

reo:paperSpeed
    a owl:ObjectProperty ;
    rdfs:domain lrmoo:F32_Item_Production_Event ;
    rdfs:range crm:E54_Dimension ;
    rdfs:label "paper speed"@en ;
    rdfs:comment """This property associates the production of a copy with the paper speed the copy was cut for, as its label, its catalogue or its format states it: a value (P90 has value) in the unit given by P91 has unit, as feet or metres per minute. It is the speed at the beginning of the roll, as a tempo marking gives it, from which the take-up spool accelerates, and a performance of a version the copy bears witness to starts at it. Rolls for the Green Welte and the Licensee were cut from the Welte-Mignon masters for slower paper speeds (Phillips 2016, pp. 121 and 123), so such a copy comes out shorter than the red roll of the same recording by the ratio of the speeds. An alignment of the two measures that ratio together with how far the paper of each has stretched, and measures it more closely than a label states a speed; this property states what the label or the catalogue says, which is held against the ratio rather than used to find it. What the alignments give is stated of the re-cut by reo:lengthRatio. CIDOC CRM gives an activity no dimension of its own, hence a property of this ontology."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:lengthRatio
    a owl:ObjectProperty ;
    rdfs:domain lrmoo:F28_Expression_Creation ;
    rdfs:range crm:E54_Dimension ;
    rdfs:label "length ratio"@en ;
    rdfs:comment """This property associates the creation of a version of a roll with how long it made the version's paper for a length of the paper of the version it derives from (R76 is derivative of): a ratio without a unit, stated with P90 has value and with reo:uncertainty where it is known how surely. A version re-cut for a system whose paper runs slower comes out shorter by the ratio of the paper speeds, as the Licensee and Green Welte re-cuts of the red Welte-Mignon rolls do, at about 0.77. The alignments of copies of the two versions measure that ratio, together with how far the paper of each copy has stretched, and more closely than a label states a speed; it is stated of the act that set it rather than of a copy, and the belief it is held with names the copies and the program that measured it. A paper speed follows from it only with a premise about the speed of the other version, which is why it is kept apart from reo:paperSpeed, the speed a label or catalogue states for a copy. CIDOC CRM gives an activity no dimension of its own, hence a property of this ontology."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:dimensions
    a owl:ObjectProperty ;
    rdfs:subPropertyOf crm:P40_observed_dimension ;
    rdfs:domain crm:E16_Measurement ;
    rdfs:range crm:E54_Dimension ;
    rdfs:label "dimensions"@en ;
    rdfs:comment """This property associates the measurement of a copy with its measured extent: the width across the roll (width) and the length along it (height), in the unit given by P91 has unit."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:width
    a owl:DatatypeProperty ;
    rdfs:subPropertyOf crm:P90_has_value ;
    rdfs:domain crm:E54_Dimension ;
    rdfs:range xsd:decimal ;
    rdfs:label "width"@en ;
    rdfs:comment "This property states the extent of a copy across the roll."@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:height
    a owl:DatatypeProperty ;
    rdfs:subPropertyOf crm:P90_has_value ;
    rdfs:domain crm:E54_Dimension ;
    rdfs:range xsd:decimal ;
    rdfs:label "height"@en ;
    rdfs:comment "This property states the extent of a copy along the roll, from its beginning to its end."@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:holeSeparation
    a owl:ObjectProperty ;
    rdfs:subPropertyOf crm:P40_observed_dimension ;
    rdfs:domain crm:E16_Measurement ;
    rdfs:range crm:E54_Dimension ;
    rdfs:label "hole separation"@en ;
    rdfs:comment """This property associates the measurement of a copy with the distance across the roll from the centre of one track to the next as found on it, the track pitch or Teilung, stated with P90 has value and P91 has unit. It is fixed by the tracker bar the roll was cut for, and is distinct from the chain pitch (chainPitch), which runs along the roll."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:scanResolution
    a owl:ObjectProperty ;
    rdfs:domain crm:E16_Measurement ;
    rdfs:range crm:E54_Dimension ;
    rdfs:label "scan resolution"@en ;
    rdfs:comment """This property associates the measurement of a copy with the resolution along the roll at which the scan it was taken from was read, stated with P90 has value and P91 has unit. It is what the measurements given in pixels are to be read against. The resolution is a property of the scan and not a dimension observed on the roll, which is why it is no subproperty of P40 observed dimension. A scanner may read across the roll at another resolution."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .


#################################################################
# The perforator and its setting
#
# A copy's production used a perforator (P16 used specific object),
# whose setting at the time is its condition state (P44 has
# condition). CIDOC CRM gives a condition state no dimension of its
# own, hence the properties of this ontology.
#################################################################

reo:drive
    a owl:ObjectProperty ;
    rdfs:subPropertyOf crm:P2_has_type ;
    rdfs:domain crm:E22_Human-Made_Object ;
    rdfs:range crm:E55_Type ;
    rdfs:label "drive"@en ;
    rdfs:comment """This property states how the punches of the perforator that cut a copy were driven: all at once by one ram head, or each by a driver of its own. The first leaves the rows of a chain in line across the tracks and the second staggers them, which is how Phillips (2016, pp. 112 f.) tells the two apart. The values are the types under https://w3id.org/reo/type/drive/. The drive belongs to how the machine was built and is stated of the perforator itself, apart from its setting."""@en ;
    dcterms:bibliographicCitation "Phillips, Peter: Piano Rolls and Contemporary Player Pianos. The Catalogues, Technologies, Archiving and Accessibility. PhD thesis, Sydney Conservatorium of Music, University of Sydney, 2016." ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:punchDiameter
    a owl:ObjectProperty ;
    rdfs:domain crm:E3_Condition_State ;
    rdfs:range crm:E54_Dimension ;
    rdfs:label "punch diameter"@en ;
    rdfs:comment """This property associates the setting of the perforator that cut a copy with the diameter of its round punch, stated with P90 has value and P91 has unit. Taken across the roll, it is free of the scale along the roll and of the shrinkage of the paper."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:chainPitch
    a owl:ObjectProperty ;
    rdfs:domain crm:E3_Condition_State ;
    rdfs:range crm:E54_Dimension ;
    rdfs:label "chain pitch"@en ;
    rdfs:comment """This property associates the setting of the perforator that cut a copy with its chain pitch: the pitch in the engineering sense, the distance along the roll from one punch of a chain to the next, which is the slot one firing cut together with the bridge of paper left before the next. It is stated with P90 has value and P91 has unit, as the median over the chains of held notes, and may state the slot (slot) and the bridge (bridge) beside it. It runs along the roll and is distinct from the hole separation (holeSeparation), the distance across the roll from one track to the next."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:advance
    a owl:ObjectProperty ;
    rdfs:domain crm:E3_Condition_State ;
    rdfs:range crm:E54_Dimension ;
    rdfs:label "advance"@en ;
    rdfs:comment """This property associates the setting of the perforator that cut a copy with its advance: the step by which the machine moved the paper on, read as the period the lengths of the slots keep, since a slot is the punch together with a whole number of steps. It is stated with P90 has value and P91 has unit, and may state how closely the lengths keep the period (strength). Phillips (2016, p. 114) gives the smallest distance between punches on a Welte-Mignon roll as 0.0185 inches, 54 steps per inch."""@en ;
    dcterms:bibliographicCitation "Phillips, Peter: Piano Rolls and Contemporary Player Pianos. The Catalogues, Technologies, Archiving and Accessibility. PhD thesis, Sydney Conservatorium of Music, University of Sydney, 2016." ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:slot
    a owl:DatatypeProperty ;
    rdfs:domain crm:E54_Dimension ;
    rdfs:range xsd:decimal ;
    rdfs:label "slot"@en ;
    rdfs:comment "This property states, on a chain pitch, the length along the roll of one slot of a chain, in the unit of the dimension it is stated on."@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:bridge
    a owl:DatatypeProperty ;
    rdfs:domain crm:E54_Dimension ;
    rdfs:range xsd:decimal ;
    rdfs:label "bridge"@en ;
    rdfs:comment "This property states, on a chain pitch, the length along the roll of the paper left standing between two slots of a chain, in the unit of the dimension it is stated on."@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:sampleSize
    a owl:DatatypeProperty ;
    rdfs:domain crm:E54_Dimension ;
    rdfs:range xsd:nonNegativeInteger ;
    rdfs:label "sample size"@en ;
    rdfs:comment "This property states how many measurements the value of a dimension was taken from, as their median or as the period they keep."@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:strength
    a owl:DatatypeProperty ;
    rdfs:domain crm:E54_Dimension ;
    rdfs:range xsd:decimal ;
    rdfs:label "strength"@en ;
    rdfs:comment "This property states, on an advance, how closely the lengths of the slots keep the period stated: the mean resultant length of the lengths folded onto it, from 0 where they scatter to 1 where every one falls on the period."@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .


#################################################################
# The condition of a copy
#
# A condition state of a copy (P44 has condition) may hold for one
# stretch of the roll alone, as a tear does. CIDOC CRM gives a
# condition state no place of its own, hence the properties of this
# ontology.
#################################################################

reo:horizontal
    a owl:ObjectProperty ;
    rdfs:domain crm:E3_Condition_State ;
    rdfs:range crm:E54_Dimension ;
    rdfs:label "horizontal"@en ;
    rdfs:comment """This property associates a condition state of a copy with the stretch of the roll it holds for, as a dimension along the roll in millimetres from its beginning (reo:from, reo:to, P91 has unit). A tear is such a state: the paper is torn there and nowhere else. The stretch is measured as the extents of the copy's chains of holes are, so that the two stand in one frame and a tear can be set beside the perforations next to it. The extent of a chain is stated with P43 has dimension, which takes a thing and so no condition state, hence this property. The format gives both the one key."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:edge
    a owl:ObjectProperty ;
    rdfs:subPropertyOf crm:P2_has_type ;
    rdfs:domain crm:E3_Condition_State ;
    rdfs:range crm:E55_Type ;
    rdfs:label "edge"@en ;
    rdfs:comment """This property states which edge of the paper a tear runs in from: the types bass and treble at https://w3id.org/reo/type/, the bass edge being the one that passes the bass end of the tracker bar. A tear that runs in from no edge takes none."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:depth
    a owl:ObjectProperty ;
    rdfs:domain crm:E3_Condition_State ;
    rdfs:range crm:E54_Dimension ;
    rdfs:label "depth"@en ;
    rdfs:comment """This property associates a tear with how far it reaches into the paper, taken across the roll from the edge it runs in from (reo:edge) and stated with P90 has value and P91 has unit. It tells a tear that stays in the margin from one that reaches the perforations. The analyses Stanford made of its roll scans list an edge tear only once it is deeper than a tenth of an inch."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:strainAlong
    a owl:ObjectProperty ;
    rdfs:domain crm:E3_Condition_State ;
    rdfs:range crm:E54_Dimension ;
    rdfs:label "strain along the roll"@en ;
    rdfs:comment """This property associates the paper-stretch condition of a copy with how far its paper was measured to have stretched along the roll since it was perforated, or shrunk where the value is negative: the strain, a share of the length, stated with P90 has value and P91 has unit in per cent, and with reo:uncertainty where the measurement gives one. It is stated only where something was measured on the copy. What the alignments of several copies say about their paper is worked out from them rather than stated, since the scale of one alignment has three causes that it cannot tell apart: the paper of each of the two copies and the paper speed each was cut for."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:strainAcross
    a owl:ObjectProperty ;
    rdfs:domain crm:E3_Condition_State ;
    rdfs:range crm:E54_Dimension ;
    rdfs:label "strain across the roll"@en ;
    rdfs:comment """This property associates the paper-stretch condition of a copy with how far its paper was measured to have stretched across the roll, stated as reo:strainAlong is. Machine-made paper stretches more across than along, so the one is no measure of the other. The width of a roll is a poor measure of it, since the paper was slit to width with a tolerance of its own; the track pitch against that of the punch block is a better one."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .

reo:uncertainty
    a owl:DatatypeProperty ;
    rdfs:domain crm:E54_Dimension ;
    rdfs:label "uncertainty"@en ;
    rdfs:comment """This property associates a dimension with the standard uncertainty of its value (P90 has value): one standard deviation, in the unit of the value. CIDOC CRM states a dimension by a value and leaves how surely it is known unstated, hence this property."""@en ;
    rdfs:isDefinedBy <https://w3id.org/reo/> .
