{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://paperspec.scient.ing/schemas/annotation.schema.json", "title": "Annotation", "description": "One line of annotations.jsonl in scienting-layer/1: a W3C Web Annotation; spec/18-layers.md.", "type": "object", "properties": { "@context": { "type": "array", "items": { "type": "string", "minLength": 1 }, "minItems": 2 }, "id": { "type": "string", "pattern": "^tag:scient\\.ing,2026:annotation:[a-z0-9][a-z0-9._-]*/[a-hjkmnp-tv-z][0-9a-hjkmnp-tv-z]{6,25}$" }, "type": { "const": "Annotation" }, "layer": { "type": "string", "pattern": "^tag:scient\\.ing,2026:layer:[a-z0-9][a-z0-9._-]*/[a-hjkmnp-tv-z][0-9a-hjkmnp-tv-z]{6,25}$" }, "motivation": { "enum": [ "commenting", "describing", "linking", "questioning", "assessing", "tagging", "classifying", "identifying", "editing", "highlighting", "bookmarking", "replying", "moderating" ] }, "creator": { "$ref": "common.schema.json#/$defs/agent" }, "created": { "$ref": "common.schema.json#/$defs/time" }, "modified": { "$ref": "common.schema.json#/$defs/time" }, "body": { "oneOf": [ { "type": "object", "properties": { "type": { "const": "TextualBody" }, "value": { "type": "string", "minLength": 1 }, "format": { "enum": [ "text/plain", "text/markdown" ] }, "language": { "$ref": "common.schema.json#/$defs/language" }, "kind": { "const": "gloss" }, "audience": { "enum": [ "novice", "student", "expert" ] } }, "required": [ "type", "kind", "value", "audience" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "SpecificResource" }, "source": { "type": "string", "minLength": 1 }, "kind": { "const": "claim-link" }, "pin": { "type": "string", "minLength": 1 }, "role": { "enum": [ "states", "uses", "disputes" ] } }, "required": [ "type", "kind", "source", "role" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "SpecificResource" }, "source": { "type": "string", "minLength": 1 }, "kind": { "const": "symbol" }, "pin": { "type": "string", "minLength": 1 }, "symbol": { "type": "string", "minLength": 1 } }, "required": [ "type", "kind", "source" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "TextualBody" }, "value": { "type": "string", "minLength": 1 }, "format": { "enum": [ "text/plain", "text/markdown" ] }, "language": { "$ref": "common.schema.json#/$defs/language" }, "kind": { "const": "comment" } }, "required": [ "type", "kind", "value" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "TextualBody" }, "value": { "type": "string", "minLength": 1 }, "format": { "enum": [ "text/plain", "text/markdown" ] }, "language": { "$ref": "common.schema.json#/$defs/language" }, "kind": { "const": "caveat" } }, "required": [ "type", "kind", "value" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "TextualBody" }, "value": { "type": "string", "minLength": 1 }, "format": { "enum": [ "text/plain", "text/markdown" ] }, "language": { "$ref": "common.schema.json#/$defs/language" }, "kind": { "const": "question" }, "for": { "enum": [ "reader", "group", "authors" ] } }, "required": [ "type", "kind", "value" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "TextualBody" }, "value": { "type": "string", "minLength": 1 }, "format": { "enum": [ "text/plain", "text/markdown" ] }, "language": { "$ref": "common.schema.json#/$defs/language" }, "kind": { "const": "exercise" }, "exercise": { "$ref": "exercise.schema.json" } }, "required": [ "type", "kind", "value", "exercise" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "TextualBody" }, "value": { "type": "string", "minLength": 1 }, "format": { "enum": [ "text/plain", "text/markdown" ] }, "language": { "$ref": "common.schema.json#/$defs/language" }, "kind": { "const": "citation-context" }, "reference": { "$ref": "common.schema.json#/$defs/nodeId" }, "verdict": { "enum": [ "supports", "partly", "does-not", "cannot-tell" ] }, "reason": { "enum": [ "method", "value", "background", "contrast", "other" ] } }, "required": [ "type", "kind", "value", "reference" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "SpecificResource" }, "source": { "type": "string", "minLength": 1 }, "kind": { "const": "prerequisite" } }, "required": [ "type", "kind", "source" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "SpecificResource" }, "source": { "type": "string", "minLength": 1 }, "kind": { "const": "crosslink" }, "selector": { "type": "array", "items": { "type": "object", "properties": { "type": { "const": "AnchorSelector" }, "anchor": { "$ref": "anchor.schema.json" } }, "required": [ "type", "anchor" ], "additionalProperties": false }, "minItems": 1 } }, "required": [ "type", "kind", "source", "selector" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "TextualBody" }, "value": { "type": "string", "minLength": 1 }, "format": { "enum": [ "text/plain", "text/markdown" ] }, "language": { "$ref": "common.schema.json#/$defs/language" }, "kind": { "const": "translation" } }, "required": [ "type", "kind", "value", "language" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "TextualBody" }, "value": { "type": "string", "minLength": 1 }, "format": { "enum": [ "text/plain", "text/markdown" ] }, "language": { "$ref": "common.schema.json#/$defs/language" }, "kind": { "const": "description" }, "role": { "enum": [ "alt", "long" ] } }, "required": [ "type", "kind", "value", "role" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "TextualBody" }, "value": { "type": "string", "minLength": 1 }, "format": { "enum": [ "text/plain", "text/markdown" ] }, "language": { "$ref": "common.schema.json#/$defs/language" }, "kind": { "const": "generated" }, "generator": { "type": "object", "properties": { "model": { "$ref": "common.schema.json#/$defs/model" }, "run": { "type": "string", "minLength": 1 } }, "required": [ "model", "run" ], "additionalProperties": false } }, "required": [ "type", "kind", "value", "generator" ], "additionalProperties": false } ] }, "target": { "oneOf": [ { "oneOf": [ { "type": "object", "properties": { "type": { "const": "SpecificResource" }, "source": { "type": "string", "pattern": "^tag:scient\\.ing,2026:doc:[a-z0-9][a-z0-9._-]*/[a-z][a-z0-9]*-[0-9a-hjkmnp-tv-z]{4,51}(\\.[a-z0-9][a-z0-9-]*)*$" }, "selector": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "const": "AnchorSelector" }, "anchor": { "$ref": "anchor.schema.json" } }, "required": [ "type", "anchor" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "TextQuoteSelector" }, "exact": { "type": "string", "minLength": 1 }, "prefix": { "type": "string" }, "suffix": { "type": "string" } }, "required": [ "type", "exact" ], "additionalProperties": false } ] }, "minItems": 1 } }, "required": [ "type", "source", "selector" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "SpecificResource" }, "source": { "type": "string", "pattern": "^tag:scient\\.ing,2026:annotation:[a-z0-9][a-z0-9._-]*/[a-hjkmnp-tv-z][0-9a-hjkmnp-tv-z]{6,25}$" } }, "required": [ "type", "source" ], "additionalProperties": false } ] }, { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "const": "SpecificResource" }, "source": { "type": "string", "pattern": "^tag:scient\\.ing,2026:doc:[a-z0-9][a-z0-9._-]*/[a-z][a-z0-9]*-[0-9a-hjkmnp-tv-z]{4,51}(\\.[a-z0-9][a-z0-9-]*)*$" }, "selector": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "const": "AnchorSelector" }, "anchor": { "$ref": "anchor.schema.json" } }, "required": [ "type", "anchor" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "TextQuoteSelector" }, "exact": { "type": "string", "minLength": 1 }, "prefix": { "type": "string" }, "suffix": { "type": "string" } }, "required": [ "type", "exact" ], "additionalProperties": false } ] }, "minItems": 1 } }, "required": [ "type", "source", "selector" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "SpecificResource" }, "source": { "type": "string", "pattern": "^tag:scient\\.ing,2026:annotation:[a-z0-9][a-z0-9._-]*/[a-hjkmnp-tv-z][0-9a-hjkmnp-tv-z]{6,25}$" } }, "required": [ "type", "source" ], "additionalProperties": false } ] }, "minItems": 1 } ] }, "status": { "enum": [ "proposed", "confirmed", "rejected", "withdrawn" ] }, "receipt": { "$ref": "common.schema.json#/$defs/recordId" }, "rights_use": { "type": "string", "minLength": 1 } }, "required": [ "@context", "id", "type", "layer", "motivation", "creator", "created", "body", "target", "status" ], "additionalProperties": false, "allOf": [ { "if": { "properties": { "status": { "const": "confirmed" } } }, "then": { "required": [ "receipt" ] } } ] }