Conventions
An identifier here is a name for a value this record already holds. One rule mints it from a string the store states, and it says nothing about a document beyond what the field it came from says. 103 identifiers stand over 132 tracked entries, in 5 namespaces.
Every identifier the tracked entries carry, with its bindings, is on topics.
The rule
Decompose the string, drop combining marks, lowercase it, replace every run
of characters outside a–z0–9 with a single hyphen,
and trim hyphens from both ends. Join the namespace to the result with a
full stop. That is the whole convention; it is one function,
normalise() in src/lib/taxonomy.ts, and every
identifier on this page comes through it.
The published grammar: ^(?:jurisdiction|authority|publisher|standards-body|topic)\.[a-z0-9]+(?:-[a-z0-9]+)*$
| namespace | source string | identifier |
|---|---|---|
| jurisdiction | International | jurisdiction.international |
| authority | European Commission | authority.european-commission |
| publisher | health.ec.europa.eu | publisher.health-ec-europa-eu |
| standards body | ISO/IEC | standards-body.iso-iec |
| topic | artificial intelligence | topic.artificial-intelligence |
A value that normalises to the empty string is withheld and the build refuses. An identifier naming nothing would be read as a member by every later reader, and withholding is the floor this record keeps: fix the writer, select different evidence, or withhold.
What an identifier is not
- Not a classification. The name is minted from a string a field already carries. Nothing here decides what a document is about.
- Not a statement that two entries share anything. Two rows carrying one identifier carry one string. Whether the documents behind them relate is a separate question this record answers only where a publisher answers it.
- Not a judgment about reach. No identifier states which products, systems or activities a document governs. Jurisdiction and authority are facts; anything a reader would act on is not this record’s to write.
- Never minted by hand. There is no list. Every identifier below exists because a row states the string it was minted from.
4 fields, kept apart
Before this scheme, authority carried regulators, legislators,
consensus-standards bodies and industry associations in one field, and the
publishing origin was readable only by parsing a URL. Each is separate now,
and each is absent where a row’s own data does not reach it.
| field | namespace | where the value comes from | rows | identifiers |
|---|---|---|---|---|
| jurisdiction | jurisdiction | the row's own closed enum value | 132 of 132 | 10 |
| authority | authority | the row's own string, normalised and never reconciled | 132 of 132 | 31 |
| publisher | publisher | the host of the URL the record answered at, falling back to the URL it asked for | 132 of 132 | 31 |
| standards body | standards-body | the authority of a row whose own class statement says consensus standard | 28 of 132 | 7 |
The publisher identifier names an origin, not a body
This record can observe which origin answered a request. It cannot observe
who published beyond the body a row already names, so the identifier is a
host — publisher.health-ec-europa-eu — and never a body’s name on a fact about DNS. Of
132 rows, 68 carry a resolved URL and the origin is
read from the address that answered; 64 carry none and the
origin is read from the address that was asked, which is testimony
rather than the record’s own URL. 0 of 132
declare an origin of their own.
That the two fields are distinct is measured, not asserted: 6 origins in this corpus serve more than one authority spelling, and 5 authority spellings are served from more than one origin.
The origins and authorities that cross
| origin | authority spellings it serves |
|---|---|
csrc.nist.gov | National Institute of Standards and Technology · US National Institute of Standards and Technology |
ispe.org | ISPE · International Society for Pharmaceutical Engineering |
www.cencenelec.eu | CEN/CENELEC · CEN/CENELEC JTC 21 |
www.ema.europa.eu | European Medicines Agency · European Medicines Agency and Pharmaceutical Inspection Co-operation Scheme · International Council for Harmonisation · US Food and Drug Administration and European Medicines Agency |
www.fda.gov | International Council for Harmonisation · US Food and Drug Administration |
www.iso.org | ISO · ISO/IEC |
| authority | origins it is served from |
|---|---|
| ASTM International | store.astm.org · www.astm.org |
| International Council for Harmonisation | ich.org · www.ema.europa.eu · www.fda.gov |
| US Food and Drug Administration | www.ecfr.gov · www.fda.gov |
| US National Institute of Standards and Technology | airc.nist.gov · csrc.nist.gov · nvlpubs.nist.gov · www.nist.gov |
| World Health Organization | iris.who.int · www.who.int |
The standards body, and the two ways it is absent
A row reaches a standards-body identifier when its own class
statement says consensus standard — a publisher’s
quoted words with a citation the row already carries. Everywhere else the
field is absent, and the absence is not one fact.
| state | rows | what it means |
|---|---|---|
| reached | 28 | the row’s own class statement says consensus standard, or the row declares a body with its evidence |
| states another class | 19 | a measurement. The publisher’s own words name a different class, so this row is not one |
| no class statement | 85 | the absence of a measurement. No class statement has been read from this row, which is not the same as reading one and finding it says something else |
The three close over 132 tracked entries and the page refuses to build if they do not. A partition with a hole in it is not a partition.
Folding, and the receipt that would show it
The one failure this scheme can have is two spellings becoming one name. Distinct source strings on the left, distinct identifiers on the right; equal on every line means the rule merged nothing, and the figures are re-derived on every build rather than recorded here once.
| namespace | distinct strings | distinct identifiers |
|---|---|---|
jurisdiction | 10 | 10 |
authority | 31 | 31 |
publisher | 31 | 31 |
standards-body | 7 | 7 |
topic | 24 | 24 |
Identifiers minted from more than one string: none.
Where vocabularies diverge, the values stay apart
Publishers do not share a vocabulary, and this record does not give them
one. 3 identifiers in this corpus carry the word
security in their key, and nothing merges them:
topic.cybersecurity · topic.information-security · topic.security. The fragmentation is in two voices and the counts say which:
3 of the 3 carry a binding a
publisher states in its own words with a citation, and
0 are minted only from this record’s own
vocabulary, which carries none. A synonym table would have hidden the
fragmentation; a single count would have hidden the split.
6 pairs of topic identifiers have one key contained in the other. The pairs are derived by rule and published for that reason: each one is a place where something could have been merged and was not.
The 6 pairs kept apart
topic.computer-software·topic.softwaretopic.cybersecurity·topic.securitytopic.good-manufacturing-practice·topic.manufacturingtopic.health-software·topic.softwaretopic.information-security·topic.securitytopic.medical-device·topic.medical-devices
The topic vocabulary
24 identifiers, minted from two fields in two different
voices. Stated is a publisher’s own word with a
citation, read from subject_as_stated.
Recorded is this record’s own vocabulary with
none, read from topics. The namespace is shared because they
are not two vocabularies; the binding carries the voice, because
that is where the difference lives.
88 bindings are in a publisher’s voice and 0 in this record’s. 66 of 132 rows carry at least one binding; 66 carry none, and that is a fact about those rows’ fields rather than about the documents behind them.
The order’s own example is topic.data-integrity: stated by a
publisher on 5 rows and recorded here on
0. Each count below counts rows whose own
field carries the string — never documents this record judges to
be about a thing.
| identifier | stated | recorded | rows |
|---|---|---|---|
topic.artificial-intelligence | 13 | 0 | 13 |
topic.software | 9 | 0 | 9 |
topic.medical-devices | 7 | 0 | 7 |
topic.security | 6 | 0 | 6 |
topic.computerised-systems | 5 | 0 | 5 |
topic.data-integrity | 5 | 0 | 5 |
topic.information-security | 5 | 0 | 5 |
topic.manufacturing | 5 | 0 | 5 |
topic.risk-management | 4 | 0 | 4 |
topic.cybersecurity | 3 | 0 | 3 |
topic.machine-learning | 3 | 0 | 3 |
topic.quality-management | 3 | 0 | 3 |
topic.trustworthiness | 3 | 0 | 3 |
topic.validation | 3 | 0 | 3 |
topic.clinical | 2 | 0 | 2 |
topic.electronic-records | 2 | 0 | 2 |
topic.electronic-signatures | 2 | 0 | 2 |
topic.good-manufacturing-practice | 2 | 0 | 2 |
topic.computer-software | 1 | 0 | 1 |
topic.data-quality | 1 | 0 | 1 |
topic.governance | 1 | 0 | 1 |
topic.health-software | 1 | 0 | 1 |
topic.in-vitro-diagnostic | 1 | 0 | 1 |
topic.medical-device | 1 | 0 | 1 |
The declaration channels
A row’s own field outranks anything derived from a neighbouring one, so three optional fields exist for what a derivation cannot reach. None is carried by any row today, and that zero is never-attempted: no row was offered one and declined it, and nothing failed — the channels are new.
| field | rows declaring it | what it declares |
|---|---|---|
publisher_origin | 0 of 132 | an origin that publishes the bytes where it is not the origin this record answered at |
standards_body | 0 of 132 | a consensus-standards body, with the quote and citation the schema demands |
topic_ids | 0 of 132 | a controlled identifier no string in the row would mint |
Each carries its own evidence in the schema rather than by convention:
standards_body is refused without a quote and a citation,
publisher_origin without a citation, and
topic_ids without an identifier this page’s grammar
accepts. A label with no source is forbidden by its shape, so the shape is
what refuses it.
The values themselves, one by one, are on Sources and Explore; the machine-readable surfaces are on Developers.
Last updated: