Skip to content

Terminology fields

A term entry is a record with ten fields. A term page carries it in its metadata, and a manifest entry holds the same record. Every reader produces it from a body construct too. The fields sit at the root of the page, flat. They are the built-in manni:terminology:1.0.0 vocabulary.

type:Means
termThe file is one entry. Its record is the file’s metadata.
term-setThe file holds many entries, in its body. Required for a Markdown or MDX definition list and an HTML <dl>, which do not say what they are.

A DITA <glossentry> or <glossgroup>, a DocBook <glossary>, an AsciiDoc [glossary] list and a .. glossary:: directive are read without type: term-set, because each construct declares itself. type, id and language belong to the manni:core vocabulary, and a term page uses them as any page does.

docs/terms/progressive-lens.md
---
type: term
id: progressive-lens
label: progressive lens
alt-labels: [PAL, graduated lens]
hidden-labels: [no-line bifocal]
broader: [corrective lens]
abstract: Lenses that correct presbyopia without a visible line.
definition: >-
Corrective lenses whose optical power increases continuously from the top of
the lens to the bottom, correcting presbyopia without the visible boundary a
bifocal carries.
---
FieldTypeRequiredSKOSWhat it holds
labelstringyesskos:prefLabelThe one preferred name.
definitionstringyes, unless see is setskos:definitionWhat the term means, in full.
abstractstringnononeThe short form, one sentence, for a hover card or a tooltip.
alt-labelsstring or listnoskos:altLabelOther admitted names, such as synonyms, abbreviations and spelling variants.
hidden-labelsstring or listnoskos:hiddenLabelNames the term must not go by, such as deprecated spellings, obsolete forms and misspellings.
broaderstring or listnoskos:broaderLabels or ids of the parent terms.
narrowerstring or listnoskos:narrowerLabels or ids of the child terms.
related-termsstring or listnoskos:relatedLabels or ids of associated terms.
seestringnononeThe label or id of the entry this one redirects to.
scope-notestringnoskos:scopeNoteHow far the term reaches in this set, and where it stops.

A list field takes one string or a list. Readers trim each value and drop empty ones, so " bifocal " and bifocal are the same label. A page with type: term and no label is skipped, with a notice on stderr:

manni: no-label.md:1: skipped a page entry with no term.

A one-value field (definition, abstract, see, scope-note) takes text. Given a list or a mapping, the reader leaves that field out, reads the rest of the entry, and says so on stderr:

manni: varifocal.md:5: ignored see on "varifocal": a see holds one value, not a list.

There is no status field. The field a name sits in says how it may be used:

FieldStatusWhere the status shows
labelpreferredTBX preferredTerm-admn-sts. The casing rules of the Vale style.
alt-labelsadmittedTBX admittedTerm-admn-sts. The casing rules, and the first-use rule for an all-caps acronym.
hidden-labelsdeprecatedTBX deprecatedTerm-admn-sts. Terms.Deprecated in the Vale style, which swaps the name for the label.

An entry with see points a reader at the entry that defines the term. It names the term, and carries no definition:

type: term
id: varifocal
label: varifocal
see: progressive-lens

see resolves against labels and ids, ignoring case. An entry with both see and a definition is the see-not-empty finding. A see that names nothing is dangling-reference.

An entry’s id is, in order:

  1. the record’s own id;
  2. the construct’s identifier: <dt id> or <dfn id> in HTML, xml:id on a DocBook <glossentry>, @id on a DITA topic;
  3. the slug of the preferred label, so progressive lens is progressive-lens.

The id is what manni term get and a manifest key name, and what a render into one file per entry names each file after.

manni term check checks the set. The shape of one page is a schema’s job. That schema is the built-in manni:terminology:1.0.0, and manni meta validate -s takes its id. It requires label on a type: term page, and a definition or a see. check does not report a page that has neither, so the schema is what catches it:

Terminal window
$ manni meta validate --no-config -s manni:terminology:1.0.0 term-without-definition-or-see.md
✗ term-without-definition-or-see.md
(root) must have required property 'definition' (line 1) [manni:terminology:1.0.0]
(root) must have required property 'see' (line 1) [manni:terminology:1.0.0]
(root) must match a schema in anyOf (line 1) [manni:terminology:1.0.0]
(root) must match "then" schema (line 1) [manni:terminology:1.0.0]
1 file checked, 0 passed, 1 failed, 4 errors