feat: comment categories; emend, relink and resolve corrections

scienting-layer/1: an optional, fixed category on comment, caveat and
question bodies (comment, context, critique, question, correction,
feedback, resource).

Corrections: emend fixes the authors' own slip and keeps what was printed
(a run's printed), never lowering fidelity or a witness match; relink sets
or removes what a citation names; resolve sets a reference's resolution.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017R7sgDNvUGWY2zFPCq2JH6
This commit is contained in:
alexmandClaude committed 2026-10-17 06:17:10 -04:00
1 parent 4d59b29b63
commit 8b5ee87275
33 files changed
+726 -80

No files matched your search

+5 -5
View File
@@ -33,7 +33,7 @@ The repository's name, paperspec, is a separate matter.
## An example from the fixtures
[`fixtures/records/layer/annotations.jsonl`](../fixtures/records/layer/annotations.jsonl) holds nine annotations on the example paper `hale2026harmonic-damb`.
[`fixtures/records/layer/annotations.jsonl`](../fixtures/records/layer/annotations.jsonl) holds eleven annotations on the example paper `hale2026harmonic-damb`.
The first is a `gloss`, an explanation for a novice, of the phrase "bond force constant".
Shortened, it reads:
@@ -57,10 +57,10 @@ This context defines `kind`, `status`, `audience`, `AnchorSelector` and `anchor`
## What it defines
The file defines 23 terms.
Twenty-two map to IRIs under `https://paperspec.scient.ing/vocab#`: `format`, `kind`, `status`, `receipt`, `layer`, `audience`, `visibility`, `purpose`, `project`, `docs`, `pin`, `role`, `symbol`, `verdict`, `reason`, `reference`, `for`, `generator`, `exercise`, `anchor`, `rights_use` and the class `AnchorSelector`.
The file defines 24 terms.
Twenty-three map to IRIs under `https://paperspec.scient.ing/vocab#`: `format`, `kind`, `status`, `receipt`, `layer`, `audience`, `visibility`, `purpose`, `project`, `docs`, `pin`, `role`, `symbol`, `verdict`, `reason`, `reference`, `for`, `category`, `generator`, `exercise`, `anchor`, `rights_use` and the class `AnchorSelector`.
Three are renamed: `for` is `sct:questionFor`, `generator` is `sct:generatedBy`, and `rights_use` is `sct:rightsUse`.
The twenty-third, `total`, maps to `totalItems` in the ActivityStreams namespace.
The twenty-fourth, `total`, maps to `totalItems` in the ActivityStreams namespace.
Two terms carry a type rule.
A processor reads `layer` as an IRI, and it always reads `docs` as a set, so a one-element list stays a list.
@@ -88,7 +88,7 @@ Such a tool still reads the annotation's body and its `TextQuoteSelector`; the c
That is the repository's statement; no Web Annotation client has been tested against these files.
The fallback is not always there.
Three of the nine fixture annotations have only an `AnchorSelector` (the section-level question, the `generated` annotation on a figure and the exercise on a table), because the anchor points at a container and has no quote.
Three of the eleven fixture annotations have only an `AnchorSelector` (the section-level question, the `generated` annotation on a figure and the exercise on a table), because the anchor points at a container and has no quote.
## Using the context