The text_term table

Each unique (language, text) string exactly once, across every publisher. Prose is stored here and referenced, not repeated per factor.

Fields#

field type required example meaning
id uuid yes The row's own identifier. Consumers address a factor by its slug, not by this.
lang text yes BCP-47: 'fr','en','es',...
text text yes The string itself.
text_md5 text yes Uniqueness is on the DIGEST, not the string: a btree index row caps at ~2704 bytes, and the descriptive prose the fit-judgement axes carry (an EN 15804 technologicalApplicability runs to several KB) exceeds it. Generated in the database so the digest can never disagree with the text. md5, not sha256, because a generated expression must be IMMUTABLE and the text->bytea conversion sha256 needs (convert_to) is only STABLE. This is identity, not security: the loader keys its in-memory index on the string itself, so md5 only has to be collision-free over publisher prose.

Referenced by#

emission_factor_text.term_id, text_correction.new_term_id, text_correction.previous_term_id, text_translation.source_term_id, text_translation.term_id, vocab_text.term_id.