linked-rolls 0.52.0 → 0.53.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/Emulation.js +6 -5
- package/lib/Perforator.d.ts +89 -0
- package/lib/Perforator.js +1 -0
- package/lib/RollCopy.d.ts +18 -9
- package/lib/RollCopy.js +6 -1
- package/lib/importJsonLd.js +2 -2
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/migrate.d.ts +2 -0
- package/lib/migrate.js +34 -1
- package/lib/readers/stanfordAton.js +14 -4
- package/lib/schema.json +211 -7
- package/lib/spec/context.json +13 -1
- package/package.json +1 -1
package/lib/Emulation.js
CHANGED
|
@@ -2,15 +2,16 @@ import { MIDIControlEvents } from "midifile-ts";
|
|
|
2
2
|
import { idOf } from "./Assumption.js";
|
|
3
3
|
import { isCommand, pairsAmong, placementsOf } from "./Symbol.js";
|
|
4
4
|
import { add, mean, mm, seconds, subtract } from "./Quantity.js";
|
|
5
|
+
import { punchDiameterOf } from "./RollCopy.js";
|
|
5
6
|
/** The punch diameter the edition's copies report, where any of them does. */
|
|
6
|
-
const
|
|
7
|
+
const meanPunchDiameterOf = (view) => {
|
|
7
8
|
const measured = view.edition.copies
|
|
8
|
-
.map(
|
|
9
|
-
.filter(
|
|
9
|
+
.map(punchDiameterOf)
|
|
10
|
+
.filter(value => value !== undefined);
|
|
10
11
|
return measured.length > 0 ? mean(measured) : undefined;
|
|
11
12
|
};
|
|
12
13
|
const propertiesOf = (view, version) => ({
|
|
13
|
-
punchDiameter:
|
|
14
|
+
punchDiameter: meanPunchDiameterOf(view),
|
|
14
15
|
tempo: view.edition.tempoAdjustment,
|
|
15
16
|
toOwnPaper: view.toOwnPaperOf(version)
|
|
16
17
|
});
|
|
@@ -141,7 +142,7 @@ export class Emulation {
|
|
|
141
142
|
* diameter, or a millimetre, where no copy agrees with a statement.
|
|
142
143
|
*/
|
|
143
144
|
applyConstraints(view) {
|
|
144
|
-
const gap =
|
|
145
|
+
const gap = meanPunchDiameterOf(view) ?? mm(1);
|
|
145
146
|
const offsets = (follower, reference) => offsetsBetween(view, follower, reference);
|
|
146
147
|
displacementsOf(this.negotiatedEvents, offsets, gap).forEach((distance, event) => {
|
|
147
148
|
event.horizontal.from = add(event.horizontal.from, distance);
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { ObjectAssumption } from "./Assumption.js";
|
|
2
|
+
import { ConditionState } from "./ConditionState.js";
|
|
3
|
+
import { Measure, Millimeters } from "./Quantity.js";
|
|
4
|
+
import { WithId } from "./utils.js";
|
|
5
|
+
/**
|
|
6
|
+
* The pitch in the engineering sense: the distance along the roll from
|
|
7
|
+
* one punch of a chain to the next, which is the slot one firing cut
|
|
8
|
+
* together with the bridge of paper left before the next. It is taken
|
|
9
|
+
* on held notes, whose chains repeat it, as the median over them. It
|
|
10
|
+
* runs along the roll, and is another thing than the hole separation,
|
|
11
|
+
* which is the distance across the roll from one track to the next.
|
|
12
|
+
* @see crm:E54 Dimension
|
|
13
|
+
*/
|
|
14
|
+
export interface ChainPitch extends Measure<'mm'> {
|
|
15
|
+
/**
|
|
16
|
+
* The length along the roll of one slot of a chain.
|
|
17
|
+
* @see reo:slot
|
|
18
|
+
*/
|
|
19
|
+
slot?: Millimeters;
|
|
20
|
+
/**
|
|
21
|
+
* The paper left standing between two slots of a chain. Slot and
|
|
22
|
+
* bridge are medians of their own and need not add up to the pitch.
|
|
23
|
+
* @see reo:bridge
|
|
24
|
+
*/
|
|
25
|
+
bridge?: Millimeters;
|
|
26
|
+
/**
|
|
27
|
+
* How many pitches the median was taken over.
|
|
28
|
+
* @see reo:sampleSize
|
|
29
|
+
*/
|
|
30
|
+
n?: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* The step by which the perforator moved the paper on, read as the
|
|
34
|
+
* period the lengths of the slots keep: a slot is the punch together
|
|
35
|
+
* with a whole number of steps, so its lengths fall on a comb of this
|
|
36
|
+
* spacing.
|
|
37
|
+
* @see crm:E54 Dimension
|
|
38
|
+
*/
|
|
39
|
+
export interface Advance extends Measure<'mm'> {
|
|
40
|
+
/**
|
|
41
|
+
* How closely the lengths keep the period, from 0 where they scatter
|
|
42
|
+
* to 1 where every one falls on the comb: the mean resultant length
|
|
43
|
+
* of the lengths folded onto it. A period found weakly is the result
|
|
44
|
+
* of a search all the same; the belief it is stated with says how far
|
|
45
|
+
* it is held to be the machine's step.
|
|
46
|
+
* @see reo:strength
|
|
47
|
+
*/
|
|
48
|
+
strength?: number;
|
|
49
|
+
/**
|
|
50
|
+
* How many slot lengths were folded.
|
|
51
|
+
* @see reo:sampleSize
|
|
52
|
+
*/
|
|
53
|
+
n?: number;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* How the perforator was set when it punched the copy, as far as the
|
|
57
|
+
* perforations show it. No time is stated: how long a machine kept a
|
|
58
|
+
* setting is for a comparison across rolls to find out.
|
|
59
|
+
* @see crm:E3 Condition State
|
|
60
|
+
*/
|
|
61
|
+
export interface PerforatorSetting extends ConditionState<'setting'> {
|
|
62
|
+
/**
|
|
63
|
+
* The diameter of the round punch. Taken across the roll, it is the
|
|
64
|
+
* one value of the setting that neither the scale along the roll nor
|
|
65
|
+
* the shrinkage of the paper enters.
|
|
66
|
+
* @see reo:punchDiameter
|
|
67
|
+
*/
|
|
68
|
+
punchDiameter?: ObjectAssumption<Measure<'mm'>>;
|
|
69
|
+
/**
|
|
70
|
+
* @see reo:chainPitch
|
|
71
|
+
*/
|
|
72
|
+
chainPitch?: ObjectAssumption<ChainPitch>;
|
|
73
|
+
/**
|
|
74
|
+
* @see reo:advance
|
|
75
|
+
*/
|
|
76
|
+
advance?: ObjectAssumption<Advance>;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* The machine that punched the copy. It stands for this production
|
|
80
|
+
* alone. Whether it is the one another copy was punched on is left to a
|
|
81
|
+
* statement of identity made about it elsewhere, which its id allows.
|
|
82
|
+
* @see crm:E22 Human-Made Object
|
|
83
|
+
*/
|
|
84
|
+
export interface Perforator extends WithId {
|
|
85
|
+
/**
|
|
86
|
+
* @see crm:P44 has condition
|
|
87
|
+
*/
|
|
88
|
+
condition?: PerforatorSetting;
|
|
89
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/lib/RollCopy.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { WithId, WithType } from "./utils.js";
|
|
|
8
8
|
import { Agent, Concept } from "./Agent.js";
|
|
9
9
|
import { FeatureSource } from "./FeatureSource.js";
|
|
10
10
|
import { Measure, Millimeters, Quantity, Track } from "./Quantity.js";
|
|
11
|
+
import { Perforator } from "./Perforator.js";
|
|
11
12
|
/**
|
|
12
13
|
* This condition state is used to describe the roll's
|
|
13
14
|
* paper shrinkage or stretching. It might be calculated
|
|
@@ -114,6 +115,12 @@ export interface ProductionEvent {
|
|
|
114
115
|
* @see reo:paperSpeed
|
|
115
116
|
*/
|
|
116
117
|
speed?: ObjectAssumption<PaperSpeed>;
|
|
118
|
+
/**
|
|
119
|
+
* The perforator the copy was punched on, with the setting its
|
|
120
|
+
* perforations show.
|
|
121
|
+
* @see crm:P16 used specific object
|
|
122
|
+
*/
|
|
123
|
+
perforator?: Perforator;
|
|
117
124
|
/**
|
|
118
125
|
* The features the copy came from its punching with: the note and
|
|
119
126
|
* expression perforations, and now and then a mark the perforator
|
|
@@ -204,8 +211,10 @@ export interface RollCopy extends WithType<'RollCopy'>, WithId {
|
|
|
204
211
|
ops: Array<'shifted' | 'stretched' | 'shortened'>;
|
|
205
212
|
/**
|
|
206
213
|
* Physical measurements of this roll copy, including
|
|
207
|
-
* dimensions,
|
|
208
|
-
*
|
|
214
|
+
* dimensions, hole separation, margins, shift corrections,
|
|
215
|
+
* and information about the measuring software. What the
|
|
216
|
+
* perforations tell about the machine that cut them is stated
|
|
217
|
+
* with the production.
|
|
209
218
|
* @see crm:P39i was measured by
|
|
210
219
|
*/
|
|
211
220
|
measurements: Partial<{
|
|
@@ -231,13 +240,11 @@ export interface RollCopy extends WithType<'RollCopy'>, WithId {
|
|
|
231
240
|
unit: 'mm';
|
|
232
241
|
};
|
|
233
242
|
/**
|
|
234
|
-
* The
|
|
235
|
-
*
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
* The distance between adjacent tracker bar holes, in the
|
|
240
|
-
* unit the scan was measured in.
|
|
243
|
+
* The distance across the roll from the centre of one track to
|
|
244
|
+
* the next, the track pitch or Teilung, in the unit the scan was
|
|
245
|
+
* measured in. It is fixed by the tracker bar the roll was cut
|
|
246
|
+
* for, and is another thing than the chain pitch, which runs
|
|
247
|
+
* along the roll.
|
|
241
248
|
* @see reo:holeSeparation
|
|
242
249
|
*/
|
|
243
250
|
holeSeparation: Measure<'px'> | Measure<'mm'>;
|
|
@@ -400,6 +407,8 @@ export declare const isPaperStretch: (condition: RollConditionAssignment) => boo
|
|
|
400
407
|
* before the systems were told apart; `reservationsAbout` says so.
|
|
401
408
|
*/
|
|
402
409
|
export declare const barOf: (copy: Pick<RollCopy, 'production'>) => TrackerBar;
|
|
410
|
+
/** The diameter of the punch the copy was cut with, where the edition holds it true or likely. */
|
|
411
|
+
export declare const punchDiameterOf: (copy: Pick<RollCopy, 'production'>) => Millimeters | undefined;
|
|
403
412
|
/**
|
|
404
413
|
* Reads the features of a copy as the tracker bar would read them.
|
|
405
414
|
* Holes on a position the bar does not read carry no symbol and are
|
package/lib/RollCopy.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { v4 } from "uuid";
|
|
2
2
|
import { welteT100 } from "./systems/welteT100/bar.js";
|
|
3
3
|
import { trackerBarOf } from "./systems/index.js";
|
|
4
|
-
import { assignReference } from "./Assumption.js";
|
|
4
|
+
import { assignReference, certaintyOf, isAsserted } from "./Assumption.js";
|
|
5
5
|
import { px, track } from "./Quantity.js";
|
|
6
6
|
export const rollConditions = [
|
|
7
7
|
'general',
|
|
@@ -47,6 +47,11 @@ export const isPaperStretch = (condition) => condition.conditionType === 'paper-
|
|
|
47
47
|
* before the systems were told apart; `reservationsAbout` says so.
|
|
48
48
|
*/
|
|
49
49
|
export const barOf = (copy) => trackerBarOf(copy.production?.system) ?? welteT100;
|
|
50
|
+
/** The diameter of the punch the copy was cut with, where the edition holds it true or likely. */
|
|
51
|
+
export const punchDiameterOf = (copy) => {
|
|
52
|
+
const diameter = copy.production?.perforator?.condition?.punchDiameter;
|
|
53
|
+
return diameter && isAsserted(certaintyOf(diameter)) ? diameter.value : undefined;
|
|
54
|
+
};
|
|
50
55
|
/**
|
|
51
56
|
* Reads the features of a copy as the tracker bar would read them.
|
|
52
57
|
* Holes on a position the bar does not read carry no symbol and are
|
package/lib/importJsonLd.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { derivedKeys } from "./asJsonLd.js";
|
|
2
|
-
import { migrate } from "./migrate.js";
|
|
2
|
+
import { migrate, plainCopyId } from "./migrate.js";
|
|
3
3
|
import { isDateString } from "./utils.js";
|
|
4
4
|
export const importDate = (str) => {
|
|
5
5
|
const [y, m, d] = str.split('-').map(s => parseInt(s, 10));
|
|
@@ -49,7 +49,7 @@ const withPlainCopyIds = (json) => ({
|
|
|
49
49
|
...json,
|
|
50
50
|
copies: (json.copies ?? []).map((copy) => ({
|
|
51
51
|
...copy,
|
|
52
|
-
'@id': typeof copy['@id'] === 'string' ? copy['@id']
|
|
52
|
+
'@id': typeof copy['@id'] === 'string' ? plainCopyId(copy['@id']) : copy['@id']
|
|
53
53
|
}))
|
|
54
54
|
});
|
|
55
55
|
export const importJsonLd = (json) => {
|
package/lib/index.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export * from './systems/welteT98/bar.js';
|
|
|
16
16
|
export * from './systems/index.js';
|
|
17
17
|
export * from './ReproducingSystem.js';
|
|
18
18
|
export * from './FeatureSource.js';
|
|
19
|
+
export * from './Perforator.js';
|
|
19
20
|
export * from './RollCopy.js';
|
|
20
21
|
export * from './procedures.js';
|
|
21
22
|
export * from './vocabulary.js';
|
package/lib/index.js
CHANGED
|
@@ -16,6 +16,7 @@ export * from './systems/welteT98/bar.js';
|
|
|
16
16
|
export * from './systems/index.js';
|
|
17
17
|
export * from './ReproducingSystem.js';
|
|
18
18
|
export * from './FeatureSource.js';
|
|
19
|
+
export * from './Perforator.js';
|
|
19
20
|
export * from './RollCopy.js';
|
|
20
21
|
export * from './procedures.js';
|
|
21
22
|
export * from './vocabulary.js';
|
package/lib/migrate.d.ts
CHANGED
|
@@ -11,5 +11,7 @@
|
|
|
11
11
|
* had renamed before.
|
|
12
12
|
*/
|
|
13
13
|
type Json = any;
|
|
14
|
+
/** A copy's id without the `copy/` that documents of earlier releases put before it. */
|
|
15
|
+
export declare const plainCopyId: (id: string) => string;
|
|
14
16
|
export declare const migrate: (edition: Json) => Json;
|
|
15
17
|
export {};
|
package/lib/migrate.js
CHANGED
|
@@ -117,6 +117,39 @@ const withScale = (node) => {
|
|
|
117
117
|
const factor = (node.conditions ?? []).find(isPaperStretch)?.factor;
|
|
118
118
|
return factor === undefined ? node : { ...node, measurements: { ...node.measurements, scale: factor } };
|
|
119
119
|
};
|
|
120
|
+
/** A copy's id without the `copy/` that documents of earlier releases put before it. */
|
|
121
|
+
export const plainCopyId = (id) => id.replace(/^copy\//, '');
|
|
122
|
+
/**
|
|
123
|
+
* The punch diameter was a measurement of the copy before it was stated
|
|
124
|
+
* as the setting of the perforator that cut it. A diameter of -1 stood
|
|
125
|
+
* for one nobody had measured and is left out. The perforator is named
|
|
126
|
+
* after the copy, so that a file migrated twice names it the same way.
|
|
127
|
+
*/
|
|
128
|
+
const withPerforator = (node) => {
|
|
129
|
+
const diameter = node.measurements?.punchDiameter;
|
|
130
|
+
if (diameter === undefined)
|
|
131
|
+
return node;
|
|
132
|
+
const { punchDiameter: _moved, ...measurements } = node.measurements;
|
|
133
|
+
if (!(diameter?.value > 0))
|
|
134
|
+
return { ...node, measurements };
|
|
135
|
+
const perforator = node.production?.perforator ?? { '@id': `perforator_${plainCopyId(node['@id'])}` };
|
|
136
|
+
return {
|
|
137
|
+
...node,
|
|
138
|
+
measurements,
|
|
139
|
+
production: {
|
|
140
|
+
...node.production,
|
|
141
|
+
perforator: {
|
|
142
|
+
...perforator,
|
|
143
|
+
condition: {
|
|
144
|
+
'@type': 'ConditionState',
|
|
145
|
+
conditionType: 'setting',
|
|
146
|
+
...perforator.condition,
|
|
147
|
+
punchDiameter: diameter
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
};
|
|
120
153
|
/** A derivation written as a single one, before a version could name several. */
|
|
121
154
|
const isSingleDerivation = (basedOn) => basedOn !== null && typeof basedOn === 'object' && !Array.isArray(basedOn);
|
|
122
155
|
const withDerivationList = (node) => isSingleDerivation(node.basedOn) ? { ...node, basedOn: [node.basedOn] } : node;
|
|
@@ -233,7 +266,7 @@ const withTimeSpanDates = (node) => {
|
|
|
233
266
|
return { ...rest, within };
|
|
234
267
|
};
|
|
235
268
|
const migrateNode = (node) => [withRenamedKeys, withTypology, withoutVersionType, withoutVersionSiglum, withLowerCaseTerms, withSplitMethod, withReferences, withKeeper, withoutEmptyKeeper,
|
|
236
|
-
withProductionNodes, withScale, withDerivationList, withReadingKind, withTimeSpanDates, withoutFeatureKind,
|
|
269
|
+
withPerforator, withProductionNodes, withScale, withDerivationList, withReadingKind, withTimeSpanDates, withoutFeatureKind,
|
|
237
270
|
withBorneFeaturesNamed, withFeaturesInActs]
|
|
238
271
|
.reduce((result, step) => step(result), node);
|
|
239
272
|
/** The items each walked, or the very same list where the walk changed none. */
|
|
@@ -157,7 +157,20 @@ export function readFromStanfordAton(atonString, { trackShift, system = welteT10
|
|
|
157
157
|
id: v4(),
|
|
158
158
|
ops: [],
|
|
159
159
|
conditions: [],
|
|
160
|
-
production: {
|
|
160
|
+
production: {
|
|
161
|
+
system: systemOf(system),
|
|
162
|
+
...(punchDiameter !== undefined && {
|
|
163
|
+
perforator: {
|
|
164
|
+
id: `perforator_${v4()}`,
|
|
165
|
+
condition: {
|
|
166
|
+
type: 'ConditionState',
|
|
167
|
+
conditionType: 'setting',
|
|
168
|
+
punchDiameter: { value: punchDiameter, unit: 'mm' }
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}),
|
|
172
|
+
produced: features
|
|
173
|
+
},
|
|
161
174
|
modifications: [],
|
|
162
175
|
...((scan ?? stanford) && { scan: scan ?? stanford?.scan }),
|
|
163
176
|
measurements: {
|
|
@@ -166,9 +179,6 @@ export function readFromStanfordAton(atonString, { trackShift, system = welteT10
|
|
|
166
179
|
height: inMillimeters(readPx(json.ROLLINFO.IMAGE_LENGTH), dpi),
|
|
167
180
|
unit: 'mm'
|
|
168
181
|
},
|
|
169
|
-
...(punchDiameter !== undefined && {
|
|
170
|
-
punchDiameter: { value: punchDiameter, unit: 'mm' }
|
|
171
|
-
}),
|
|
172
182
|
holeSeparation: {
|
|
173
183
|
value: separation,
|
|
174
184
|
unit: 'px'
|
package/lib/schema.json
CHANGED
|
@@ -1854,6 +1854,56 @@
|
|
|
1854
1854
|
],
|
|
1855
1855
|
"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."
|
|
1856
1856
|
},
|
|
1857
|
+
"ObjectAssumption<Advance>": {
|
|
1858
|
+
"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.",
|
|
1859
|
+
"properties": {
|
|
1860
|
+
"@annotation": {
|
|
1861
|
+
"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.",
|
|
1862
|
+
"properties": {
|
|
1863
|
+
"belief": {
|
|
1864
|
+
"$ref": "#/definitions/Belief",
|
|
1865
|
+
"description": "The belief held about the annotated statement.",
|
|
1866
|
+
"ontology": "crminf:J4i is subject of"
|
|
1867
|
+
},
|
|
1868
|
+
"@id": {
|
|
1869
|
+
"description": "A unique identifier for this object.",
|
|
1870
|
+
"type": "string"
|
|
1871
|
+
}
|
|
1872
|
+
},
|
|
1873
|
+
"required": [
|
|
1874
|
+
"belief",
|
|
1875
|
+
"@id"
|
|
1876
|
+
],
|
|
1877
|
+
"type": "object"
|
|
1878
|
+
},
|
|
1879
|
+
"n": {
|
|
1880
|
+
"description": "How many slot lengths were folded.",
|
|
1881
|
+
"type": "number",
|
|
1882
|
+
"ontology": "reo:sampleSize"
|
|
1883
|
+
},
|
|
1884
|
+
"strength": {
|
|
1885
|
+
"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.",
|
|
1886
|
+
"type": "number",
|
|
1887
|
+
"ontology": "reo:strength"
|
|
1888
|
+
},
|
|
1889
|
+
"unit": {
|
|
1890
|
+
"const": "mm",
|
|
1891
|
+
"description": "The unit of measurement.",
|
|
1892
|
+
"type": "string",
|
|
1893
|
+
"ontology": "crm:P91 has unit"
|
|
1894
|
+
},
|
|
1895
|
+
"value": {
|
|
1896
|
+
"$ref": "#/definitions/Quantity%3C%22mm%22%3E",
|
|
1897
|
+
"description": "The measured value.",
|
|
1898
|
+
"ontology": "crm:P90 has value"
|
|
1899
|
+
}
|
|
1900
|
+
},
|
|
1901
|
+
"required": [
|
|
1902
|
+
"unit",
|
|
1903
|
+
"value"
|
|
1904
|
+
],
|
|
1905
|
+
"type": "object"
|
|
1906
|
+
},
|
|
1857
1907
|
"ObjectAssumption<Agent>": {
|
|
1858
1908
|
"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.",
|
|
1859
1909
|
"properties": {
|
|
@@ -1908,6 +1958,61 @@
|
|
|
1908
1958
|
],
|
|
1909
1959
|
"type": "object"
|
|
1910
1960
|
},
|
|
1961
|
+
"ObjectAssumption<ChainPitch>": {
|
|
1962
|
+
"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.",
|
|
1963
|
+
"properties": {
|
|
1964
|
+
"@annotation": {
|
|
1965
|
+
"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.",
|
|
1966
|
+
"properties": {
|
|
1967
|
+
"belief": {
|
|
1968
|
+
"$ref": "#/definitions/Belief",
|
|
1969
|
+
"description": "The belief held about the annotated statement.",
|
|
1970
|
+
"ontology": "crminf:J4i is subject of"
|
|
1971
|
+
},
|
|
1972
|
+
"@id": {
|
|
1973
|
+
"description": "A unique identifier for this object.",
|
|
1974
|
+
"type": "string"
|
|
1975
|
+
}
|
|
1976
|
+
},
|
|
1977
|
+
"required": [
|
|
1978
|
+
"belief",
|
|
1979
|
+
"@id"
|
|
1980
|
+
],
|
|
1981
|
+
"type": "object"
|
|
1982
|
+
},
|
|
1983
|
+
"bridge": {
|
|
1984
|
+
"$ref": "#/definitions/Millimeters",
|
|
1985
|
+
"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.",
|
|
1986
|
+
"ontology": "reo:bridge"
|
|
1987
|
+
},
|
|
1988
|
+
"n": {
|
|
1989
|
+
"description": "How many pitches the median was taken over.",
|
|
1990
|
+
"type": "number",
|
|
1991
|
+
"ontology": "reo:sampleSize"
|
|
1992
|
+
},
|
|
1993
|
+
"slot": {
|
|
1994
|
+
"$ref": "#/definitions/Millimeters",
|
|
1995
|
+
"description": "The length along the roll of one slot of a chain.",
|
|
1996
|
+
"ontology": "reo:slot"
|
|
1997
|
+
},
|
|
1998
|
+
"unit": {
|
|
1999
|
+
"const": "mm",
|
|
2000
|
+
"description": "The unit of measurement.",
|
|
2001
|
+
"type": "string",
|
|
2002
|
+
"ontology": "crm:P91 has unit"
|
|
2003
|
+
},
|
|
2004
|
+
"value": {
|
|
2005
|
+
"$ref": "#/definitions/Quantity%3C%22mm%22%3E",
|
|
2006
|
+
"description": "The measured value.",
|
|
2007
|
+
"ontology": "crm:P90 has value"
|
|
2008
|
+
}
|
|
2009
|
+
},
|
|
2010
|
+
"required": [
|
|
2011
|
+
"unit",
|
|
2012
|
+
"value"
|
|
2013
|
+
],
|
|
2014
|
+
"type": "object"
|
|
2015
|
+
},
|
|
1911
2016
|
"ObjectAssumption<CollationTolerance>": {
|
|
1912
2017
|
"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.",
|
|
1913
2018
|
"properties": {
|
|
@@ -2238,6 +2343,46 @@
|
|
|
2238
2343
|
],
|
|
2239
2344
|
"type": "object"
|
|
2240
2345
|
},
|
|
2346
|
+
"ObjectAssumption<Measure<\"mm\">>": {
|
|
2347
|
+
"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.",
|
|
2348
|
+
"properties": {
|
|
2349
|
+
"@annotation": {
|
|
2350
|
+
"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.",
|
|
2351
|
+
"properties": {
|
|
2352
|
+
"belief": {
|
|
2353
|
+
"$ref": "#/definitions/Belief",
|
|
2354
|
+
"description": "The belief held about the annotated statement.",
|
|
2355
|
+
"ontology": "crminf:J4i is subject of"
|
|
2356
|
+
},
|
|
2357
|
+
"@id": {
|
|
2358
|
+
"description": "A unique identifier for this object.",
|
|
2359
|
+
"type": "string"
|
|
2360
|
+
}
|
|
2361
|
+
},
|
|
2362
|
+
"required": [
|
|
2363
|
+
"belief",
|
|
2364
|
+
"@id"
|
|
2365
|
+
],
|
|
2366
|
+
"type": "object"
|
|
2367
|
+
},
|
|
2368
|
+
"unit": {
|
|
2369
|
+
"const": "mm",
|
|
2370
|
+
"description": "The unit of measurement.",
|
|
2371
|
+
"type": "string",
|
|
2372
|
+
"ontology": "crm:P91 has unit"
|
|
2373
|
+
},
|
|
2374
|
+
"value": {
|
|
2375
|
+
"$ref": "#/definitions/Quantity%3C%22mm%22%3E",
|
|
2376
|
+
"description": "The measured value.",
|
|
2377
|
+
"ontology": "crm:P90 has value"
|
|
2378
|
+
}
|
|
2379
|
+
},
|
|
2380
|
+
"required": [
|
|
2381
|
+
"unit",
|
|
2382
|
+
"value"
|
|
2383
|
+
],
|
|
2384
|
+
"type": "object"
|
|
2385
|
+
},
|
|
2241
2386
|
"ObjectAssumption<PaperSpeed>": {
|
|
2242
2387
|
"anyOf": [
|
|
2243
2388
|
{
|
|
@@ -2514,6 +2659,65 @@
|
|
|
2514
2659
|
],
|
|
2515
2660
|
"type": "object"
|
|
2516
2661
|
},
|
|
2662
|
+
"Perforator": {
|
|
2663
|
+
"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.",
|
|
2664
|
+
"properties": {
|
|
2665
|
+
"condition": {
|
|
2666
|
+
"$ref": "#/definitions/PerforatorSetting",
|
|
2667
|
+
"ontology": "crm:P44 has condition"
|
|
2668
|
+
},
|
|
2669
|
+
"@id": {
|
|
2670
|
+
"description": "A unique identifier for this object.",
|
|
2671
|
+
"type": "string"
|
|
2672
|
+
}
|
|
2673
|
+
},
|
|
2674
|
+
"required": [
|
|
2675
|
+
"@id"
|
|
2676
|
+
],
|
|
2677
|
+
"type": "object",
|
|
2678
|
+
"ontology": "crm:E22 Human-Made Object"
|
|
2679
|
+
},
|
|
2680
|
+
"PerforatorSetting": {
|
|
2681
|
+
"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.",
|
|
2682
|
+
"properties": {
|
|
2683
|
+
"advance": {
|
|
2684
|
+
"$ref": "#/definitions/ObjectAssumption%3CAdvance%3E",
|
|
2685
|
+
"ontology": "reo:advance"
|
|
2686
|
+
},
|
|
2687
|
+
"chainPitch": {
|
|
2688
|
+
"$ref": "#/definitions/ObjectAssumption%3CChainPitch%3E",
|
|
2689
|
+
"ontology": "reo:chainPitch"
|
|
2690
|
+
},
|
|
2691
|
+
"conditionType": {
|
|
2692
|
+
"const": "setting",
|
|
2693
|
+
"description": "The kind of condition, from the list the roll or the kind of feature allows.",
|
|
2694
|
+
"type": "string",
|
|
2695
|
+
"ontology": "crm:P2 has type"
|
|
2696
|
+
},
|
|
2697
|
+
"description": {
|
|
2698
|
+
"description": "A free-text description of the condition, providing details beyond the type classification.",
|
|
2699
|
+
"type": "string",
|
|
2700
|
+
"ontology": "crm:P3 has note"
|
|
2701
|
+
},
|
|
2702
|
+
"punchDiameter": {
|
|
2703
|
+
"$ref": "#/definitions/ObjectAssumption%3CMeasure%3C%22mm%22%3E%3E",
|
|
2704
|
+
"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.",
|
|
2705
|
+
"ontology": "reo:punchDiameter"
|
|
2706
|
+
},
|
|
2707
|
+
"@type": {
|
|
2708
|
+
"const": "ConditionState",
|
|
2709
|
+
"description": "The type discriminator for this object.",
|
|
2710
|
+
"type": "string",
|
|
2711
|
+
"ontology": "rdf:type"
|
|
2712
|
+
}
|
|
2713
|
+
},
|
|
2714
|
+
"required": [
|
|
2715
|
+
"conditionType",
|
|
2716
|
+
"@type"
|
|
2717
|
+
],
|
|
2718
|
+
"type": "object",
|
|
2719
|
+
"ontology": "crm:E3 Condition State"
|
|
2720
|
+
},
|
|
2517
2721
|
"Person": {
|
|
2518
2722
|
"$ref": "#/definitions/Agent",
|
|
2519
2723
|
"description": "An agent that is a person."
|
|
@@ -2567,6 +2771,11 @@
|
|
|
2567
2771
|
"description": "The paper the roll copy was cut on.",
|
|
2568
2772
|
"ontology": "crm:P126 employed"
|
|
2569
2773
|
},
|
|
2774
|
+
"perforator": {
|
|
2775
|
+
"$ref": "#/definitions/Perforator",
|
|
2776
|
+
"description": "The perforator the copy was punched on, with the setting its perforations show.",
|
|
2777
|
+
"ontology": "crm:P16 used specific object"
|
|
2778
|
+
},
|
|
2570
2779
|
"produced": {
|
|
2571
2780
|
"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 hole 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.",
|
|
2572
2781
|
"items": {
|
|
@@ -2742,7 +2951,7 @@
|
|
|
2742
2951
|
"ontology": "crm:P50 has current keeper"
|
|
2743
2952
|
},
|
|
2744
2953
|
"measurements": {
|
|
2745
|
-
"description": "Physical measurements of this roll copy, including dimensions,
|
|
2954
|
+
"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.",
|
|
2746
2955
|
"properties": {
|
|
2747
2956
|
"dimensions": {
|
|
2748
2957
|
"description": "The physical dimensions of the roll.",
|
|
@@ -2781,7 +2990,7 @@
|
|
|
2781
2990
|
"$ref": "#/definitions/Measure%3C%22mm%22%3E"
|
|
2782
2991
|
}
|
|
2783
2992
|
],
|
|
2784
|
-
"description": "The distance
|
|
2993
|
+
"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.",
|
|
2785
2994
|
"ontology": "reo:holeSeparation"
|
|
2786
2995
|
},
|
|
2787
2996
|
"margins": {
|
|
@@ -2823,11 +3032,6 @@
|
|
|
2823
3032
|
"type": "object",
|
|
2824
3033
|
"ontology": "crmdig:L23 used software or firmware"
|
|
2825
3034
|
},
|
|
2826
|
-
"punchDiameter": {
|
|
2827
|
-
"$ref": "#/definitions/Measure%3C%22mm%22%3E",
|
|
2828
|
-
"description": "The average diameter of punched holes.",
|
|
2829
|
-
"ontology": "reo:punchDiameter"
|
|
2830
|
-
},
|
|
2831
3035
|
"readerExtension": {
|
|
2832
3036
|
"description": "What a pneumatic reader added to this copy's 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 holes are overlong by a constant while its onsets agree. Nothing for a copy read by other means, whose holes are the punched slots themselves. Not exported to RDF.",
|
|
2833
3037
|
"properties": {
|
package/lib/spec/context.json
CHANGED
|
@@ -157,7 +157,6 @@
|
|
|
157
157
|
"dimensions": "reo:dimensions",
|
|
158
158
|
"width": "reo:width",
|
|
159
159
|
"height": "reo:height",
|
|
160
|
-
"punchDiameter": "reo:punchDiameter",
|
|
161
160
|
"holeSeparation": "reo:holeSeparation",
|
|
162
161
|
"scanResolution": "reo:scanResolution",
|
|
163
162
|
"value": "crm:P90_has_value",
|
|
@@ -177,6 +176,19 @@
|
|
|
177
176
|
"speed": {
|
|
178
177
|
"@id": "reo:paperSpeed",
|
|
179
178
|
"@context": { "value": "crm:P90_has_value" }
|
|
179
|
+
},
|
|
180
|
+
"perforator": {
|
|
181
|
+
"@id": "crm:P16_used_specific_object",
|
|
182
|
+
"@context": {
|
|
183
|
+
"punchDiameter": "reo:punchDiameter",
|
|
184
|
+
"chainPitch": "reo:chainPitch",
|
|
185
|
+
"advance": "reo:advance",
|
|
186
|
+
"slot": "reo:slot",
|
|
187
|
+
"bridge": "reo:bridge",
|
|
188
|
+
"n": "reo:sampleSize",
|
|
189
|
+
"strength": "reo:strength",
|
|
190
|
+
"value": "crm:P90_has_value"
|
|
191
|
+
}
|
|
180
192
|
}
|
|
181
193
|
}
|
|
182
194
|
},
|
package/package.json
CHANGED