# 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](../context/scienting-1.jsonld), published at `https://scient.ing/ns/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 Lode 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 `urn:scienting:layer:/`, 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`: | Property | Holds | | --- | --- | | `@context` | `["http://www.w3.org/ns/anno.jsonld", "https://scient.ing/ns/scienting/1.jsonld"]`. | | `id` | `urn:scienting:annotation:/` ([4.6](04-identity.md#46-record-ids)). | | `type`, `layer` | `Annotation`, and the layer's ID. | | `motivation` | A W3C motivation: `commenting`, `describing`, `linking`, `questioning`, `assessing`, `replying` and the others. | | `creator`, `created`, `modified` | An agent `{id, type, name}`, with `type` `Person` or `Software`, and times. | | `body` | One body ([18.4](#184-bodies)). | | `target` | A `SpecificResource` whose `source` is `urn:scienting:doc:/` 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. | | `status` | `proposed`, `confirmed`, `rejected` or `withdrawn`. A model's annotation is `proposed` until a person confirms it. | | `receipt` | For a confirmed annotation, the receipt that covers it. | 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", , ]`. Replies are annotations that target annotations, so discussions are threads anchored to sentences. ## 18.4 Bodies | `kind` | W3C type | Adds | Says | | --- | --- | --- | --- | | `gloss` | `TextualBody` | `audience` | An explanation at `novice`, `student` or `expert` level. | | `claim-link` | `SpecificResource` | `source` (`lode:`), `pin`, `role` | That the span `states`, `uses` or `disputes` a Lode claim. | | `symbol` | `SpecificResource` | `source`, `pin`, `symbol` | That this occurrence of a symbol is a Lode symbol claim. | | `comment` | `TextualBody` | | A remark, opinion or interpretation. | | `caveat` | `TextualBody` | | A warning a reader should see. | | `question` | `TextualBody` | `for` | A question for a `reader`, a `group` or the `authors`. | | `exercise` | `TextualBody` | `exercise` | A task with a key and a rule ([19](19-exercises.md)). | | `citation-context` | `TextualBody` | `reference`, `verdict`, `reason` | Why a sentence cites a reference, and whether it supports it. | | `prerequisite` | `SpecificResource` | `source` | What to read or know first. | | `crosslink` | `SpecificResource` | `source`, `selector` | That the span corresponds to a span in another document. | | `translation` | `TextualBody` | `language` | The span in another language. | | `generated` | `TextualBody` | `generator` | Text a model wrote about the span; never mistaken for source. | 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: figure descriptions and drafted alt text are `generated` annotations. `fixtures/records/layer/` holds a layer with one annotation of each common kind and the receipt that confirms some of them.