377 lines
6.3 KiB
JSON
377 lines
6.3 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://scient.ing/ns/schemas/correction.schema.json",
|
|
"title": "Correction",
|
|
"description": "scienting-correction/1: a line of corrections.jsonl, or a proposal; spec/11-corrections.md.",
|
|
"type": "object",
|
|
"properties": {
|
|
"format": {
|
|
"const": "scienting-correction/1"
|
|
},
|
|
"index": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"id": {
|
|
"$ref": "common.schema.json#/$defs/recordId"
|
|
},
|
|
"op": {
|
|
"enum": [
|
|
"replace",
|
|
"insert",
|
|
"delete",
|
|
"split",
|
|
"merge",
|
|
"move",
|
|
"reclassify",
|
|
"relabel",
|
|
"set"
|
|
]
|
|
},
|
|
"target": {
|
|
"$ref": "common.schema.json#/$defs/nodeId"
|
|
},
|
|
"find": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"replace": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"$ref": "runs.schema.json"
|
|
}
|
|
]
|
|
},
|
|
"run": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"offset": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"text": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"parent": {
|
|
"$ref": "common.schema.json#/$defs/nodeId"
|
|
},
|
|
"node": {
|
|
"type": "object",
|
|
"description": "A node subtree to insert: kind, label, attrs, content and children; equation runs name a child by position."
|
|
},
|
|
"with": {
|
|
"$ref": "common.schema.json#/$defs/nodeId"
|
|
},
|
|
"joiner": {
|
|
"type": "string"
|
|
},
|
|
"kind": {
|
|
"$ref": "common.schema.json#/$defs/nodeKind"
|
|
},
|
|
"label": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"attr": {
|
|
"enum": [
|
|
"level",
|
|
"columns",
|
|
"column",
|
|
"rowspan",
|
|
"colspan",
|
|
"role",
|
|
"header_path",
|
|
"ordered",
|
|
"marker",
|
|
"variant"
|
|
]
|
|
},
|
|
"value": {},
|
|
"evidence": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "common.schema.json#/$defs/evidence"
|
|
},
|
|
"minItems": 1
|
|
},
|
|
"author": {
|
|
"$ref": "common.schema.json#/$defs/author"
|
|
},
|
|
"reason": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"at": {
|
|
"$ref": "common.schema.json#/$defs/time"
|
|
},
|
|
"before": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "common.schema.json#/$defs/hash"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"path": {
|
|
"anyOf": [
|
|
{
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "common.schema.json#/$defs/nodeId"
|
|
}
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"to_path": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "common.schema.json#/$defs/nodeId"
|
|
}
|
|
},
|
|
"touched": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "common.schema.json#/$defs/nodeId"
|
|
},
|
|
"uniqueItems": true
|
|
},
|
|
"created": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "common.schema.json#/$defs/nodeId"
|
|
},
|
|
"minItems": 1
|
|
},
|
|
"retired": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "common.schema.json#/$defs/nodeId"
|
|
},
|
|
"minItems": 1
|
|
},
|
|
"from": {},
|
|
"status": {
|
|
"enum": [
|
|
"proposed"
|
|
]
|
|
},
|
|
"after": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "common.schema.json#/$defs/hash"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"place_after": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "common.schema.json#/$defs/nodeId"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"format",
|
|
"op",
|
|
"evidence",
|
|
"author",
|
|
"reason",
|
|
"at"
|
|
],
|
|
"additionalProperties": false,
|
|
"allOf": [
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"op": {
|
|
"const": "replace"
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"required": [
|
|
"target",
|
|
"find",
|
|
"replace"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"op": {
|
|
"const": "delete"
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"required": [
|
|
"target"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"op": {
|
|
"const": "split"
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"required": [
|
|
"target",
|
|
"offset"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"op": {
|
|
"const": "merge"
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"required": [
|
|
"target",
|
|
"with"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"op": {
|
|
"const": "move"
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"required": [
|
|
"target",
|
|
"parent"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"op": {
|
|
"const": "reclassify"
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"required": [
|
|
"target",
|
|
"kind"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"op": {
|
|
"const": "relabel"
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"required": [
|
|
"target",
|
|
"label"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"op": {
|
|
"const": "set"
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"required": [
|
|
"target",
|
|
"attr",
|
|
"value"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"op": {
|
|
"const": "insert"
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"oneOf": [
|
|
{
|
|
"required": [
|
|
"parent",
|
|
"node"
|
|
]
|
|
},
|
|
{
|
|
"required": [
|
|
"target",
|
|
"run",
|
|
"offset",
|
|
"text"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"required": [
|
|
"index"
|
|
]
|
|
},
|
|
"then": {
|
|
"required": [
|
|
"id",
|
|
"before",
|
|
"after",
|
|
"path",
|
|
"touched"
|
|
]
|
|
},
|
|
"else": {
|
|
"required": [
|
|
"status"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|