linked-rolls 0.62.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,7 +227,7 @@
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, or a belief published elsewhere under an IRI of its own, such as a premise from a catalogue of premises.",
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",
@@ -177,7 +235,7 @@
177
235
  "ontology": "crm:P14 carried out by"
178
236
  },
179
237
  "adopted": {
180
- "description": "The beliefs this adoption takes over, by IRI, where they are published with one. An inference that uses such a belief names it among its premises by the same IRI; the adoption says where it comes from.",
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.",
181
239
  "items": {
182
240
  "type": "string"
183
241
  },
@@ -568,6 +626,10 @@
568
626
  "type": "string",
569
627
  "ontology": "dcterms:license"
570
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
+ },
571
633
  "roll": {
572
634
  "$ref": "#/definitions/Roll",
573
635
  "description": "The roll which is edited in this edition.",
@@ -898,7 +960,7 @@
898
960
  "ontology": "crm:P3 has note"
899
961
  },
900
962
  "premises": {
901
- "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.",
902
964
  "items": {
903
965
  "type": "string"
904
966
  },
@@ -906,7 +968,7 @@
906
968
  "ontology": "crminf:J1 used as premise"
907
969
  },
908
970
  "used": {
909
- "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.",
910
972
  "items": {
911
973
  "type": "string"
912
974
  },
@@ -1687,7 +1749,7 @@
1687
1749
  "type": "object",
1688
1750
  "ontology": "reo:Note"
1689
1751
  },
1690
- "ObjectAssumption<(GeneralRollCondition|PaperStretch)>": {
1752
+ "ObjectAssumption<(GeneralRollCondition|PaperStretch|Tear)>": {
1691
1753
  "anyOf": [
1692
1754
  {
1693
1755
  "properties": {
@@ -1748,6 +1810,16 @@
1748
1810
  ],
1749
1811
  "type": "object"
1750
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
+ },
1751
1823
  "conditionType": {
1752
1824
  "const": "paper-stretch",
1753
1825
  "description": "The kind of condition, from the list the roll or the kind of feature allows.",
@@ -1758,16 +1830,73 @@
1758
1830
  "description": "A free-text description of the condition, providing details beyond the type classification.",
1759
1831
  "type": "string",
1760
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"
1761
1860
  },
1762
- "factor": {
1763
- "description": "The stretch factor, e.g. 1.02 means the paper has stretched by 2% compared to its original dimensions.",
1764
- "type": "number",
1765
- "ontology": "rdf:value"
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"
1871
+ },
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"
1766
1895
  }
1767
1896
  },
1768
1897
  "required": [
1769
1898
  "conditionType",
1770
- "factor"
1899
+ "horizontal"
1771
1900
  ],
1772
1901
  "type": "object"
1773
1902
  }
@@ -2751,6 +2880,10 @@
2751
2880
  "type": "object",
2752
2881
  "ontology": "reo:Patch"
2753
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
+ },
2754
2887
  "Perforator": {
2755
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.",
2756
2889
  "properties": {
@@ -2883,7 +3016,7 @@
2883
3016
  },
2884
3017
  "speed": {
2885
3018
  "$ref": "#/definitions/ObjectAssumption%3CPaperSpeed%3E",
2886
- "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.",
2887
3020
  "ontology": "reo:paperSpeed"
2888
3021
  },
2889
3022
  "system": {
@@ -2907,6 +3040,9 @@
2907
3040
  "Quantity<\"mm\">": {
2908
3041
  "type": "number"
2909
3042
  },
3043
+ "Quantity<\"percent\">": {
3044
+ "type": "number"
3045
+ },
2910
3046
  "Quantity<\"px\">": {
2911
3047
  "type": "number"
2912
3048
  },
@@ -3020,8 +3156,8 @@
3020
3156
  "ontology": "lrmoo:F1 Work"
3021
3157
  },
3022
3158
  "RollConditionAssignment": {
3023
- "$ref": "#/definitions/ObjectAssumption%3C(GeneralRollCondition%7CPaperStretch)%3E",
3024
- "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."
3025
3161
  },
3026
3162
  "RollCopy": {
3027
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.",
@@ -3035,7 +3171,7 @@
3035
3171
  "ontology": "crm:P128 carries"
3036
3172
  },
3037
3173
  "conditions": {
3038
- "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.",
3039
3175
  "items": {
3040
3176
  "$ref": "#/definitions/RollConditionAssignment"
3041
3177
  },
@@ -3048,8 +3184,12 @@
3048
3184
  "ontology": "crm:P50 has current keeper"
3049
3185
  },
3050
3186
  "measurements": {
3051
- "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.",
3052
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
+ },
3053
3193
  "dimensions": {
3054
3194
  "description": "The physical dimensions of the roll.",
3055
3195
  "properties": {
@@ -3149,19 +3289,11 @@
3149
3289
  ],
3150
3290
  "type": "object"
3151
3291
  },
3152
- "scale": {
3153
- "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.",
3154
- "type": "number"
3155
- },
3156
3292
  "scanResolution": {
3157
3293
  "$ref": "#/definitions/Measure%3C%22px%2Fin%22%3E",
3158
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.",
3159
3295
  "ontology": "reo:scanResolution"
3160
3296
  },
3161
- "shift": {
3162
- "$ref": "#/definitions/Shift",
3163
- "description": "The shift applied to align this copy with the others. Not exported to RDF."
3164
- },
3165
3297
  "trackCalibration": {
3166
3298
  "$ref": "#/definitions/TrackCalibration",
3167
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."
@@ -3227,7 +3359,7 @@
3227
3359
  "ontology": "reo:RollCopy"
3228
3360
  },
3229
3361
  "Shift": {
3230
- "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.",
3231
3363
  "properties": {
3232
3364
  "horizontal": {
3233
3365
  "$ref": "#/definitions/Millimeters",
@@ -3274,6 +3406,33 @@
3274
3406
  ],
3275
3407
  "type": "string"
3276
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
+ },
3277
3436
  "Technique": {
3278
3437
  "description": "How a trace was put on the paper.",
3279
3438
  "enum": [
@@ -106,6 +106,7 @@
106
106
  "@type": "xsd:date"
107
107
  },
108
108
  "collationTolerance": null,
109
+ "referenceCopy": null,
109
110
  "annotation": null,
110
111
  "roll": "lrmoo:R3i_realises",
111
112
  "catalogueNumber": "dcterms:identifier",
@@ -166,6 +167,7 @@
166
167
  "@context": {
167
168
  "shift": null,
168
169
  "scale": null,
170
+ "alignment": null,
169
171
  "readerExtension": null,
170
172
  "trackCalibration": null,
171
173
  "margins": null,
@@ -210,7 +212,37 @@
210
212
  "drive": "reo:drive",
211
213
  "company": "crm:P14_carried_out_by",
212
214
  "paper": "crm:P126_employed",
213
- "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
+ },
214
246
  "condition": "crm:P44_has_condition",
215
247
  "conditionType": {
216
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.62.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": {