Skip to content

The vocabulary census misses most of the fleet's largest namespaces, not just TOGO #84

Description

@realmarcin

Scope corrected 2026-09-20. This was filed as "three prefixes are missing". An ignore-independent scan of every record in all nine measured corpora shows the omission is far wider: the census misses twelve of ProteinTraitsMech's namespaces, several larger than anything it does count.

What the census does not count

Structured CURIEs only (id:/list-item position), excluding each Mech's own minted ids and schema metamodel prefixes (biolink, rdfs, skos):

occurrences prefix Mech
617,470 CATH ProteinTraitsMech
446,166 CDD ProteinTraitsMech
336,591 PROSITE ProteinTraitsMech
152,324 ECOD ProteinTraitsMech
68,418 SCOP ProteinTraitsMech
44,728 IEDB ProteinTraitsMech
40,653 GOC ProteinTraitsMech
27,720 AlphaFoldDB ProteinTraitsMech
20,000 OrthoDB ProteinTraitsMech
17,835 SMART ProteinTraitsMech
15,541 PANTHER ProteinTraitsMech
14,863 pdb.ligand ProteinTraitsMech
3,611 UNII AntibioticMech
3,449 genbank NaturalProductMech
3,236 komodo.medium CultureMech
2,833 TOGO CultureMech
2,829 mediadive.medium CultureMech
2,058 pubchem.aid NaturalProductMech
1,732 reaxys AntibioticMech
1,232 pubchem NaturalProductMech
1,176 mediadive.solution CultureMech
1,062 patent AntibioticMech

Smaller: kegg.compound 862, wikipedia.en 738, kegg.drug 598, uniprot.location 583, MEDIADB 459, drugcentral 435, kgmicrobe.ingredient 366, kgmicrobe.compound 232, CCAP 76, cyanometdb 56, bergey 55, chembl 41, UO 17, lotus 9, RNAcentral 3, RCSB_PDB 3, CryoETDataPortal 2, HAO 2.

For scale: CATH alone is the fleet's fourth-largest namespace, behind only InterPro (1.56M), UniProt (770k) and PMID (658k). ProteinTraitsMech's card already names CATH, SCOPe, ECOD, PROSITE and CDD among its sources, so the page advertises groundings its own heatmap does not count.

Two genuine normalisation bugs

  • pubchem (lowercase, 1,232 in NaturalProductMech) is not folded into PubChem, although pubchem.compound is. The same registry is counted under one spelling and dropped under another.
  • RCSB_PDB is not folded into PDB.

Candidates for the same treatment: kegg.compound/kegg.drug → KEGG, mediadive.medium/.solution/.ingredient → MediaDive (only mediadive.compound is mapped today).

Why this is not a quick fix

The alternation P is a hand-maintained allowlist, so every omission is silent — nothing fails when a namespace is missed. Extending it is not mechanical, because it forces a definition the pipeline has never written down: what counts as a vocabulary?

  • Each Mech's own minted ids (proteintraitsmech: 91,559, CultureMech: 7,951, naturalproductmech: 6,604 …) are identity, not citation, and must stay out.
  • Schema metamodel prefixes (biolink 184,587, skos, rdfs) describe the model, not the records.
  • Cross-Mech references (MediaIngredientMech: 1,166 in CultureMech) are already the cross-reference list's job, not the heatmap's.
  • Registry identifiers (genbank, patent, reaxys, UNII) are not ontologies. The page's own note already hedges on this for IMG and BacDive.

Adding twelve columns also reshapes the heatmap: the vocabulary tile jumps, column ordering shifts, and ProteinTraitsMech's row would dominate the scale even more than it already does.

Suggested approach

  1. Decide the inclusion rule and write it in roots.py beside CITATION, which already records one such decision.
  2. Derive the allowlist from each Mech's schema prefixes: block rather than hand-maintaining P, so a new namespace cannot be silently dropped again.
  3. Fix the two normalisation bugs regardless — they are wrong under any rule.
  4. Rerun prefix_census.pybuild_subsets.pybuild_data.pyassemble_page.py and look at the heatmap before committing.

Evidence produced by scanning all 448,844 records across the nine measured corpora (~4 min). Not fixed in #89: that branch refreshes the numbers within the current methodology, and this changes the methodology and the figure.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions