Glossary Updates12 new terms added to the glossaries · October 2, 2026, 22:44 CEST
AI TechDocKnowledge

Glossary · Maps and linking

DITA subject scheme map

Also known as: subject scheme, subjectScheme, controlled values

In DITA, a subject scheme map is a specialized map that defines a hierarchy of subjects and binds them to attributes as their controlled values. It is used to validate metadata values, to build taxonomies and to extend filtering to whole branches of subjects.

  • DITA
  • Maps and linking
  • Conditional processing

In one sentence

A DITA subject scheme map defines controlled values and taxonomies for metadata attributes such as @platform or @audience.

Example

A subject scheme that defines the operating systems “linux” and “windows” and binds them to the @platform attribute, so no other value can be used.

How it applies

  • Technical documentation: Subject scheme maps control the values of metadata attributes. Instead of every writer inventing their own @audience or @product values, the scheme lists the allowed ones, and editors and processors can validate against it.
  • Taxonomies: Subjects are defined with <subjectdef> and nested to form a hierarchy; <enumerationdef> binds a subject to an attribute (<attributedef>) and optionally to an element (<elementdef>). Filtering on a parent subject also applies to its children — excluding “windows” excludes “windows-10” and “windows-11”.
  • Relationships: Subject schemes can declare relationship tables between subjects using elements such as <hasKind>, <hasPart>, <hasInstance>, <hasNarrower> and <hasRelated>.
  • AI and retrieval: A subject scheme is a controlled vocabulary and taxonomy maintained with the content. It maps naturally to SKOS or to an iiRDS extension and can be used as a filter vocabulary for retrieval.

Subject scheme map vs. map

A normal map organizes content for a deliverable. A subject scheme map organizes subjects — the values of metadata — and is never published as content itself.

In DITA markup

<subjectScheme>
  <subjectdef keys="os">
    <subjectdef keys="linux"/>
    <subjectdef keys="windows"/>
  </subjectdef>
  <enumerationdef>
    <attributedef name="platform"/>
    <subjectdef keyref="os"/>
  </enumerationdef>
</subjectScheme>