linked-rolls 0.61.0 → 0.63.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/schema.json CHANGED
@@ -58,6 +58,64 @@
58
58
  ],
59
59
  "description": "The role an agent plays in the context of the edition."
60
60
  },
61
+ "Alignment": {
62
+ "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.",
63
+ "properties": {
64
+ "against": {
65
+ "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.",
66
+ "type": "string"
67
+ },
68
+ "foundBy": {
69
+ "description": "The software that found it, and when.",
70
+ "properties": {
71
+ "date": {
72
+ "description": "The day it was found.",
73
+ "format": "date",
74
+ "type": "string"
75
+ },
76
+ "software": {
77
+ "description": "The name of the method.",
78
+ "type": "string"
79
+ },
80
+ "version": {
81
+ "description": "Its revision (`ALIGNMENT_METHOD`).",
82
+ "type": "string"
83
+ }
84
+ },
85
+ "required": [
86
+ "software",
87
+ "version",
88
+ "date"
89
+ ],
90
+ "type": "object"
91
+ },
92
+ "matched": {
93
+ "description": "How many notes of the copy found their counterpart on the reference copy.",
94
+ "type": "number"
95
+ },
96
+ "residual": {
97
+ "$ref": "#/definitions/Millimeters",
98
+ "description": "How far the counterparts still lie apart, as a root mean square in millimetres of the axis."
99
+ },
100
+ "scale": {
101
+ "description": "Own millimetres to the axis's, applied after the shift.",
102
+ "type": "number"
103
+ },
104
+ "scaleError": {
105
+ "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.",
106
+ "type": "number"
107
+ },
108
+ "shift": {
109
+ "$ref": "#/definitions/Shift",
110
+ "description": "Applied before the scale."
111
+ }
112
+ },
113
+ "required": [
114
+ "shift",
115
+ "scale"
116
+ ],
117
+ "type": "object"
118
+ },
61
119
  "AnyArgumentation": {
62
120
  "anyOf": [
63
121
  {
@@ -169,15 +227,23 @@
169
227
  "ontology": "crminf:I2 Belief"
170
228
  },
171
229
  "BeliefAdoption": {
172
- "description": "A belief adoption adopts someone else's belief. This type is used to indicate e.g. knowledge through private communication or from secondary literature.",
230
+ "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`).",
173
231
  "properties": {
174
232
  "actor": {
175
233
  "$ref": "#/definitions/Person",
176
234
  "description": "The person who carried out this activity.",
177
235
  "ontology": "crm:P14 carried out by"
178
236
  },
237
+ "adopted": {
238
+ "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.",
239
+ "items": {
240
+ "type": "string"
241
+ },
242
+ "type": "array",
243
+ "ontology": "crminf:J6 adopted"
244
+ },
179
245
  "note": {
180
- "description": "A note describing the source of the adopted belief, e.g. a bibliographic reference or personal communication.",
246
+ "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.",
181
247
  "type": "string",
182
248
  "ontology": "crm:P3 has note"
183
249
  },
@@ -560,6 +626,10 @@
560
626
  "type": "string",
561
627
  "ontology": "dcterms:license"
562
628
  },
629
+ "referenceCopy": {
630
+ "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`). Not exported to RDF.",
631
+ "type": "string"
632
+ },
563
633
  "roll": {
564
634
  "$ref": "#/definitions/Roll",
565
635
  "description": "The roll which is edited in this edition.",
@@ -890,7 +960,7 @@
890
960
  "ontology": "crm:P3 has note"
891
961
  },
892
962
  "premises": {
893
- "description": "References (by `@id`) to the beliefs from which the conclusion is drawn.",
963
+ "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.",
894
964
  "items": {
895
965
  "type": "string"
896
966
  },
@@ -898,7 +968,7 @@
898
968
  "ontology": "crminf:J1 used as premise"
899
969
  },
900
970
  "used": {
901
- "description": "References (by `@id`) to what the inference worked on besides beliefs, such as the versions it compared or the analysis output it cites.",
971
+ "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.",
902
972
  "items": {
903
973
  "type": "string"
904
974
  },
@@ -1679,7 +1749,7 @@
1679
1749
  "type": "object",
1680
1750
  "ontology": "reo:Note"
1681
1751
  },
1682
- "ObjectAssumption<(GeneralRollCondition|PaperStretch)>": {
1752
+ "ObjectAssumption<(GeneralRollCondition|PaperStretch|Tear)>": {
1683
1753
  "anyOf": [
1684
1754
  {
1685
1755
  "properties": {
@@ -1740,6 +1810,16 @@
1740
1810
  ],
1741
1811
  "type": "object"
1742
1812
  },
1813
+ "across": {
1814
+ "$ref": "#/definitions/Strain",
1815
+ "description": "The strain across the roll. Paper stretches more across than along, so this is no measure of the other.",
1816
+ "ontology": "reo:strainAcross"
1817
+ },
1818
+ "along": {
1819
+ "$ref": "#/definitions/Strain",
1820
+ "description": "The strain along the roll, the direction the alignment measures.",
1821
+ "ontology": "reo:strainAlong"
1822
+ },
1743
1823
  "conditionType": {
1744
1824
  "const": "paper-stretch",
1745
1825
  "description": "The kind of condition, from the list the roll or the kind of feature allows.",
@@ -1750,16 +1830,73 @@
1750
1830
  "description": "A free-text description of the condition, providing details beyond the type classification.",
1751
1831
  "type": "string",
1752
1832
  "ontology": "crm:P3 has note"
1833
+ }
1834
+ },
1835
+ "required": [
1836
+ "conditionType"
1837
+ ],
1838
+ "type": "object"
1839
+ },
1840
+ {
1841
+ "properties": {
1842
+ "@annotation": {
1843
+ "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.",
1844
+ "properties": {
1845
+ "belief": {
1846
+ "$ref": "#/definitions/Belief",
1847
+ "description": "The belief held about the annotated statement.",
1848
+ "ontology": "crminf:J4i is subject of"
1849
+ },
1850
+ "@id": {
1851
+ "description": "A unique identifier for this object.",
1852
+ "type": "string"
1853
+ }
1854
+ },
1855
+ "required": [
1856
+ "belief",
1857
+ "@id"
1858
+ ],
1859
+ "type": "object"
1860
+ },
1861
+ "conditionType": {
1862
+ "const": "torn",
1863
+ "description": "The kind of condition, from the list the roll or the kind of feature allows.",
1864
+ "type": "string",
1865
+ "ontology": "crm:P2 has type"
1866
+ },
1867
+ "depiction": {
1868
+ "description": "IIIF region pointing to a depiction of the tear in the scan.",
1869
+ "type": "string",
1870
+ "ontology": "crm:P138i has representation"
1753
1871
  },
1754
- "factor": {
1755
- "description": "The stretch factor, e.g. 1.02 means the paper has stretched by 2% compared to its original dimensions.",
1756
- "type": "number",
1757
- "ontology": "rdf:value"
1872
+ "depth": {
1873
+ "$ref": "#/definitions/Measure%3C%22mm%22%3E",
1874
+ "description": "How far the tear reaches into the paper, taken across the roll from the edge it runs in from.",
1875
+ "ontology": "reo:depth"
1876
+ },
1877
+ "description": {
1878
+ "description": "A free-text description of the condition, providing details beyond the type classification.",
1879
+ "type": "string",
1880
+ "ontology": "crm:P3 has note"
1881
+ },
1882
+ "edge": {
1883
+ "description": "The edge of the paper the tear runs in from, where it runs in from one.",
1884
+ "enum": [
1885
+ "bass",
1886
+ "treble"
1887
+ ],
1888
+ "type": "string",
1889
+ "ontology": "reo:edge"
1890
+ },
1891
+ "horizontal": {
1892
+ "$ref": "#/definitions/HorizontalSpan",
1893
+ "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.",
1894
+ "ontology": "reo:horizontal"
1758
1895
  }
1759
1896
  },
1760
1897
  "required": [
1761
1898
  "conditionType",
1762
- "factor"
1899
+ "horizontal"
1763
1900
  ],
1764
1901
  "type": "object"
1765
1902
  }
@@ -2743,6 +2880,10 @@
2743
2880
  "type": "object",
2744
2881
  "ontology": "reo:Patch"
2745
2882
  },
2883
+ "Percent": {
2884
+ "$ref": "#/definitions/Quantity%3C%22percent%22%3E",
2885
+ "description": "A share of a length, such as how far the paper has stretched: dimensionless, in hundredths."
2886
+ },
2746
2887
  "Perforator": {
2747
2888
  "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.",
2748
2889
  "properties": {
@@ -2875,7 +3016,7 @@
2875
3016
  },
2876
3017
  "speed": {
2877
3018
  "$ref": "#/definitions/ObjectAssumption%3CPaperSpeed%3E",
2878
- "description": "The paper speed the copy was cut for. 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, which is what the alignment then measures.",
3019
+ "description": "The paper speed the copy was cut for. 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.",
2879
3020
  "ontology": "reo:paperSpeed"
2880
3021
  },
2881
3022
  "system": {
@@ -2899,6 +3040,9 @@
2899
3040
  "Quantity<\"mm\">": {
2900
3041
  "type": "number"
2901
3042
  },
3043
+ "Quantity<\"percent\">": {
3044
+ "type": "number"
3045
+ },
2902
3046
  "Quantity<\"px\">": {
2903
3047
  "type": "number"
2904
3048
  },
@@ -3012,8 +3156,8 @@
3012
3156
  "ontology": "lrmoo:F1 Work"
3013
3157
  },
3014
3158
  "RollConditionAssignment": {
3015
- "$ref": "#/definitions/ObjectAssumption%3C(GeneralRollCondition%7CPaperStretch)%3E",
3016
- "description": "An assignment of a condition (general or paper-stretch) to a roll copy, annotatable with a belief about its certainty."
3159
+ "$ref": "#/definitions/ObjectAssumption%3C(GeneralRollCondition%7CPaperStretch%7CTear)%3E",
3160
+ "description": "An assignment of a condition (general, paper-stretch or a tear) to a roll copy, annotatable with a belief about its certainty."
3017
3161
  },
3018
3162
  "RollCopy": {
3019
3163
  "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.",
@@ -3027,7 +3171,7 @@
3027
3171
  "ontology": "crm:P128 carries"
3028
3172
  },
3029
3173
  "conditions": {
3030
- "description": "Condition assessments of this roll copy (e.g. paper stretch, general wear). Each condition is an assumption annotatable with a belief.",
3174
+ "description": "Condition assessments of this roll copy (e.g. paper stretch, general wear, a tear). Each condition is an assumption annotatable with a belief.",
3031
3175
  "items": {
3032
3176
  "$ref": "#/definitions/RollConditionAssignment"
3033
3177
  },
@@ -3040,8 +3184,12 @@
3040
3184
  "ontology": "crm:P50 has current keeper"
3041
3185
  },
3042
3186
  "measurements": {
3043
- "description": "Physical measurements of this roll copy, including dimensions, hole separation, margins, shift corrections, and information about the measuring software. What the perforations tell about the machine that cut them is stated with the production.",
3187
+ "description": "Physical measurements of this roll copy, including dimensions, hole separation, margins, the alignment onto the edition's axis, and information about the measuring software. What the perforations tell about the machine that cut them is stated with the production.",
3044
3188
  "properties": {
3189
+ "alignment": {
3190
+ "$ref": "#/definitions/Alignment",
3191
+ "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."
3192
+ },
3045
3193
  "dimensions": {
3046
3194
  "description": "The physical dimensions of the roll.",
3047
3195
  "properties": {
@@ -3141,19 +3289,11 @@
3141
3289
  ],
3142
3290
  "type": "object"
3143
3291
  },
3144
- "scale": {
3145
- "description": "The factor this copy's features were scaled by to align them with the others. What it is put down to is stated apart: a paper-stretch condition, or the speed the copy was cut for. Not exported to RDF.",
3146
- "type": "number"
3147
- },
3148
3292
  "scanResolution": {
3149
3293
  "$ref": "#/definitions/Measure%3C%22px%2Fin%22%3E",
3150
3294
  "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.",
3151
3295
  "ontology": "reo:scanResolution"
3152
3296
  },
3153
- "shift": {
3154
- "$ref": "#/definitions/Shift",
3155
- "description": "The shift applied to align this copy with the others. Not exported to RDF."
3156
- },
3157
3297
  "trackCalibration": {
3158
3298
  "$ref": "#/definitions/TrackCalibration",
3159
3299
  "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."
@@ -3179,6 +3319,14 @@
3179
3319
  "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.",
3180
3320
  "ontology": "reo:capture"
3181
3321
  },
3322
+ "sameAs": {
3323
+ "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.",
3324
+ "items": {
3325
+ "type": "string"
3326
+ },
3327
+ "type": "array",
3328
+ "ontology": "owl:sameAs"
3329
+ },
3182
3330
  "scan": {
3183
3331
  "description": "The scan URL or IIIF URL of the roll.",
3184
3332
  "type": "string",
@@ -3211,7 +3359,7 @@
3211
3359
  "ontology": "reo:RollCopy"
3212
3360
  },
3213
3361
  "Shift": {
3214
- "description": "A shift correction applied to a roll copy to align it with other copies. The shift is defined as horizontal (along the roll length, in mm) and vertical (across tracks).",
3362
+ "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.",
3215
3363
  "properties": {
3216
3364
  "horizontal": {
3217
3365
  "$ref": "#/definitions/Millimeters",
@@ -3258,6 +3406,33 @@
3258
3406
  ],
3259
3407
  "type": "string"
3260
3408
  },
3409
+ "Strain": {
3410
+ "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.",
3411
+ "properties": {
3412
+ "uncertainty": {
3413
+ "$ref": "#/definitions/Percent",
3414
+ "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.",
3415
+ "ontology": "reo:uncertainty"
3416
+ },
3417
+ "unit": {
3418
+ "const": "percent",
3419
+ "description": "The unit of measurement.",
3420
+ "type": "string",
3421
+ "ontology": "crm:P91 has unit"
3422
+ },
3423
+ "value": {
3424
+ "$ref": "#/definitions/Quantity%3C%22percent%22%3E",
3425
+ "description": "The measured value.",
3426
+ "ontology": "crm:P90 has value"
3427
+ }
3428
+ },
3429
+ "required": [
3430
+ "unit",
3431
+ "value"
3432
+ ],
3433
+ "type": "object",
3434
+ "ontology": "crm:E54 Dimension"
3435
+ },
3261
3436
  "Technique": {
3262
3437
  "description": "How a trace was put on the paper.",
3263
3438
  "enum": [
@@ -70,7 +70,13 @@
70
70
  },
71
71
  "beliefAdoption": {
72
72
  "@id": "crminf:I7_Belief_Adoption",
73
- "@context": { "note": "crm:P3_has_note" }
73
+ "@context": {
74
+ "note": "crm:P3_has_note",
75
+ "adopted": {
76
+ "@id": "crminf:J6_adopted",
77
+ "@type": "@id"
78
+ }
79
+ }
74
80
  },
75
81
  "meaningComprehension": {
76
82
  "@id": "crminf:I16_Meaning_Comprehension",
@@ -100,6 +106,7 @@
100
106
  "@type": "xsd:date"
101
107
  },
102
108
  "collationTolerance": null,
109
+ "referenceCopy": null,
103
110
  "annotation": null,
104
111
  "roll": "lrmoo:R3i_realises",
105
112
  "catalogueNumber": "dcterms:identifier",
@@ -160,6 +167,7 @@
160
167
  "@context": {
161
168
  "shift": null,
162
169
  "scale": null,
170
+ "alignment": null,
163
171
  "readerExtension": null,
164
172
  "trackCalibration": null,
165
173
  "margins": null,
@@ -204,7 +212,37 @@
204
212
  "drive": "reo:drive",
205
213
  "company": "crm:P14_carried_out_by",
206
214
  "paper": "crm:P126_employed",
207
- "conditions": "crm:P44_has_condition",
215
+ "conditions": {
216
+ "@id": "crm:P44_has_condition",
217
+ "@context": {
218
+ "horizontal": "reo:horizontal",
219
+ "edge": {
220
+ "@id": "reo:edge",
221
+ "@type": "@vocab",
222
+ "@context": { "@vocab": "https://w3id.org/reo/type/" }
223
+ },
224
+ "depth": {
225
+ "@id": "reo:depth",
226
+ "@context": {
227
+ "value": "crm:P90_has_value"
228
+ }
229
+ },
230
+ "along": {
231
+ "@id": "reo:strainAlong",
232
+ "@context": {
233
+ "value": "crm:P90_has_value",
234
+ "uncertainty": "reo:uncertainty"
235
+ }
236
+ },
237
+ "across": {
238
+ "@id": "reo:strainAcross",
239
+ "@context": {
240
+ "value": "crm:P90_has_value",
241
+ "uncertainty": "reo:uncertainty"
242
+ }
243
+ }
244
+ }
245
+ },
208
246
  "condition": "crm:P44_has_condition",
209
247
  "conditionType": {
210
248
  "@id": "crm:P2_has_type",
@@ -103,15 +103,16 @@ export type RollProperties = {
103
103
  tempo?: RollTempo;
104
104
  /**
105
105
  * Place on the edition's shared axis × this = millimetres of the version's
106
- * own paper. About 0.775 for a green issue of a red recording, 1 for a
107
- * version on the axis it was measured on, which is the default.
106
+ * own paper, unstretched. About 0.775 for a green issue of a red
107
+ * recording, and close to 1 for a version of the reference copy's own
108
+ * system, which is the default.
108
109
  *
109
110
  * Versions of several systems share one place axis, so a green version's
110
111
  * places are in red millimetres and would play about 29 % long if the
111
- * spool read them as green paper. The factor is the inverse of the scale
112
- * `alignCopy` recorded when it put the copy on the shared axis, taken from
113
- * the copies of the version's own system: red copies carry a green
114
- * version's notes too and say nothing about green paper.
112
+ * spool read them as green paper. The factor is what the alignments of
113
+ * all the copies give together for the paper of the version's system
114
+ * (`paperOf`): red copies carry a green version's notes too, but only
115
+ * the green copies' alignments say anything about green paper.
115
116
  *
116
117
  * It scales **places only**. Punch diameter, the chain gap and the tracker
117
118
  * bore are measured on the version's own paper already, and scaling them
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "linked-rolls",
3
- "version": "0.61.0",
3
+ "version": "0.63.0",
4
4
  "description": "Digital editions of piano rolls: import, collation, editorial assumptions, JSON-LD export, and emulation through a reproducing system",
5
5
  "license": "MIT",
6
6
  "repository": {