paperspec0.1.0

18. Layers and annotations

Everything people and models add to a document is an annotation, and annotations are grouped in layers. scienting-layer/1 is the W3C Web Annotation Data Model with the anchor as a selector, so any Web Annotation tool can read it. The JSON-LD context is context/scienting-1.jsonld, published at https://paperspec.scient.ing/context/scienting-1.jsonld.

18.1 One rule decides what is a claim and what is a layer#

If a statement is true independently of this paper, it belongs in a claim store as a claim, where it is checked and leveled. If it is about reading this paper, it belongs in a layer, where it is attributed and signed but not checked.

18.2 The layer#

A layer is a folder with layer.json and annotations.jsonl. layer.json is an AnnotationCollection with the two contexts, format, an id of the form tag:scient.ing,2026:layer:<store>/<record id>, a label, a purpose, an audience (novice, student, expert or mixed), a visibility (private, team or public), a license (CC BY 4.0 by default when public), its creator, created, its project, the docs it annotates and its total. A reader turns layers on and off, and the audience dial picks the level of glosses.

18.3 The annotation#

Each line of annotations.jsonl is a W3C Annotation:

PropertyHolds
@context["http://www.w3.org/ns/anno.jsonld", "https://paperspec.scient.ing/context/scienting-1.jsonld"].
idtag:scient.ing,2026:annotation:<store>/<record id> (4.6).
type, layerAnnotation, and the layer's ID.
motivationA W3C motivation: commenting, describing, linking, questioning, assessing, replying and the others.
creator, created, modifiedAn agent {id, type, name}, with type Person or Software, and times.
bodyOne body (18.4).
targetA SpecificResource whose source is tag:scient.ing,2026:doc:<store>/<key> and whose selector lists an AnchorSelector holding a scienting-anchor/1, optionally followed by a W3C TextQuoteSelector for tools that do not know ours; or, for a reply, a SpecificResource whose source is another annotation.
statusproposed, confirmed, rejected or withdrawn. A model's annotation is proposed until a person confirms it.
receiptFor a confirmed annotation, the receipt that covers it.

The TextQuoteSelector, when present, repeats the anchor quote's exact, prefix and suffix, with an empty string for a prefix or suffix the quote lacks. It is present only when the anchor's quote is plain text; an anchor whose quote is hashed or keyed (6.3) has none, so the fallback never shows text the anchor withholds.

An annotation's content hash is SHA-256 of the canonical JSON of the annotation without status, receipt and modified. A confirmed annotation is covered by its confirmer's receipt, which lists ["annotation", <record id>, <content hash>]. Replies are annotations that target annotations, so discussions are threads anchored to sentences.

18.4 Bodies#

kindW3C typeAddsSays
glossTextualBodyaudienceAn explanation at novice, student or expert level.
claim-linkSpecificResourcesource (lode:<tag>), pin, roleThat the span states, uses or disputes a claim.
symbolSpecificResourcesource, pin, symbolThat this occurrence of a symbol is a symbol claim.
commentTextualBodyA remark, opinion or interpretation.
caveatTextualBodyA warning a reader should see.
questionTextualBodyforA question for a reader, a group or the authors.
exerciseTextualBodyexerciseA task with a key and a rule (19).
citation-contextTextualBodyreference, verdict, reasonWhy a sentence cites a reference, and whether it supports it.
prerequisiteSpecificResourcesourceWhat to read or know first.
crosslinkSpecificResourcesource, selectorThat the span corresponds to a span in another document.
translationTextualBodylanguageThe span in another language.
descriptionTextualBodyroleA description of a figure, panel or table for readers who cannot see it: alt, a short text equivalent, or long, a full description.
generatedTextualBodygeneratorText a model wrote about the span; never mistaken for source. generator is {model, run} as a correction's model author is (11.2).

A textual body has a value, and optionally a format (text/plain or text/markdown) and a language. Nothing a model writes is ever stored as source text. A model may propose a description, and like any annotation it stays proposed until a person confirms it; an accessible export uses confirmed descriptions only, and a figure with none has no description. Other text a model writes about a span, such as a summary, is a generated annotation, which names its generator. fixtures/records/layer/ holds a layer with one annotation of each common kind and the receipt that confirms some of them.

Source: spec/18-layers.md · raw