Ontology mapping
- Primary identifier
-
CHEBI:91259 - Ontology label
- disodium hydrogenphosphate dodecahydrate
- kg-microbe node
CHEBI:91259
Physicochemical roles
- Role
- BUFFER
- Confidence
- 1.0
- Evidence
- Reference text
- CultureMech database (112 occurrences as 'Buffer')
- Reference type
- DATABASE_ENTRY
- Url
- https://github.com/CultureBotAI/CultureMech
- Excerpt
- Role: Buffer; Properties: Inorganic compound, Defined component, Simple component
- Curator note
- Widespread use in media formulations (112 occurrences). High confidence based on 'Defined component' property.
Synonyms (8)
| Synonym | Type | Source | Occurrences |
|---|---|---|---|
| Role: Buffer; Properties: Inorganic compound, Defined component, Simple component | RAW_TEXT | CultureMech | |
| Na2HPO4 . 12H2O | HYDRATE_FORM | kg_microbe | |
| Na2HPO4.12H2O | HYDRATE_FORM | kg_microbe | |
| Na2HPO4·12H2O | HYDRATE_FORM | kg_microbe | |
| Na2HPO4 × 12 H2O | HYDRATE_FORM | kg_microbe_via_hydration_routing | |
| disodium acid orthophosphate | RAW_TEXT | sssom_other_backfill | |
| disodium monohydrogen phosphate | RAW_TEXT | sssom_other_backfill | |
| disodium orthophosphate | RAW_TEXT | sssom_other_backfill |
Rejected enrichment labels (8)
Provenance-only candidates: these are not synonyms and do not resolve to this record.
| Rejected label | Disposition | Source | Occurrences |
|---|---|---|---|
| Na2HPO4 x 2 H2O | REJECTED_LABEL | kg_microbe | |
| Na2HPO4 x 2H2O | REJECTED_LABEL | kg_microbe | |
| Na2HPO4 x 3 H2O | REJECTED_LABEL | kg_microbe | |
| Na2HPO4 x 6 H2O | REJECTED_LABEL | kg_microbe | |
| Na2HPO4 x 7 H2O | REJECTED_LABEL | kg_microbe | |
| Na2HPO4 x H2O | REJECTED_LABEL | kg_microbe | |
| Na2HPO4 x2 H2O | REJECTED_LABEL | kg_microbe | |
| Na2HPO4.7H2O | REJECTED_LABEL | kg_microbe |
Chemical properties
- Cas rn
- 10039-32-4
- Data source
- CultureBotHT/compounds_to_cas.csv
- Retrieval date
- 2026-04-09T00:32:50.689620+00:00
- Molecular formula
- 12H2O.HO4P.2Na
- Inchi
- InChI=1S/2Na.H3O4P/c;;1-5(2,3)4/h;;(H3,1,2,3,4)/q2*+1;/p-2
- Smiles
- O=P([O-])([O-])O.[Na+].[Na+]
Evidence (5)
[HISTORICAL — superseded by the #321 re-grade below: this record is a hydrate of CHEBI:91259, not an exact match to it] Imported from CultureMech pipeline, quality=DIRECT_MATCH
Promoted off the anhydrous term CHEBI:34683, which was absorbing five distinct Na2HPO4 hydrates, to the specific term CHEBI:91259 ('disodium hydrogenphosphate dodecahydrate') — MAPPING_SEMANTICS §3 step 1. cas_rn '7782-85-6' -> '10039-32-4', taken from ChEBI's own xref on the specific term; the previous value was shared across the family and did not denote this hydrate (#334).
identifier CHEBI:91259 -> kgmicrobe.compound:na2hpo4_x_12_h2o; mapping_quality EXACT_MATCH -> NARROW_MATCH. The record is a hydrate of CHEBI:91259 ('disodium hydrogenphosphate dodecahydrate') and was sharing that term's identifier — the identity collapse MAPPING_SEMANTICS §3 forbids, which made a distinct substance indistinguishable from its anhydrous parent downstream. ChEBI has no term for this hydrate and the record carries no verified CAS, so steps 1 and 2 are unavailable and step 3 applies.
molecular_formula 'HO4P.2Na' -> '12H2O.HO4P.2Na'. The recorded value described the anhydrous salt while the label names a hydrate, understating the mass by 18 g/mol per water. Corrected because adopted verbatim from the mapped term CHEBI:91259 ('disodium hydrogenphosphate dodecahydrate'), which is the specific hydrate and already carries the water.
mapping_quality NARROW_MATCH -> CLOSE_MATCH, predicate skos:narrowMatch -> skos:closeMatch. narrowMatch asserts this record is *narrower in meaning* than CHEBI:91259 ('disodium hydrogenphosphate dodecahydrate') — a subsumption ChEBI itself denies: it files hydrates under CHEBI:35505 'hydrate', never under the anhydrous compound, which is not an ancestor even transitively. A hydrate is a distinct substance containing the anhydrous form, not a specialization of it. closeMatch claims similarity without subsumption. The ontology_id and the record's own identifier are unchanged.
Occurrence statistics
- Total occurrences
- 159
- Distinct media
- 159
Curation history
| Timestamp | Curator | Action | New status | Changes |
|---|---|---|---|---|
| 2026-03-09T06:54:18.022301+00:00 | import_from_culturemech | IMPORTED | MAPPED | Initial import from CultureMech pipeline |
| 2026-04-09T00:32:50.689620+00:00 | enrich_mim_cas_rn_batch | CAS_RN_ADDED | MAPPED | Added CAS-RN 7782-85-6 from CultureBotHT/compounds_to_cas.csv |
| 2026-04-18T00:00:00+00:00 | cbclaw_kg_microbe_sweep LLM | ADDED_SYNONYMS | MAPPED | Added 11 synonyms from kg-microbe P4.4 enrichment: Na2HPO4 . 12H2O, Na2HPO4 x 2 H2O, Na2HPO4 x 2H2O, Na2HPO4 x 3 H2O, Na2HPO4 x 6 H2O, ... (6 more) |
| 2026-04-19T06:30:07.230267+00:00 | audit_p44_hydration_routing | ADDED_SYNONYMS_VIA_HYDRATION_ROUTING | MAPPED | Added 1 synonyms re-routed from anhydrous/hydrate sibling records (Disodium_Phosphate.yaml, Disodium_Phosphate_2.yaml, Na2hpo4.yaml, ... (+6 more)): Na2HPO4 × 12 H2O |
| 2026-05-01T07:35:35.161710+00:00 | auto_classify_ingredient_type | AUTO_CLASSIFY_INGREDIENT_TYPE | set ingredient_type=SINGLE_INGREDIENT (CHEBI primary) | |
| 2026-05-01T08:08:31.227014+00:00 | auto_classify_ingredient_type | AUTO_BACKFILL_CHEBI_CHEMISTRY | molecular_formula=HO4P.2Na; inchi=InChI=1S/2Na.H3O4P/c;;1-5(2,3)4/h;;(H3,1,2,3,4)/q2; smiles=O=P([O-])([O-])O.[Na+].[Na+] | |
| 2026-05-02T03:12:16.964986+00:00 | auto_classify_ingredient_type | AUTO_CLASSIFY_INGREDIENT_TYPE | set ingredient_type=SINGLE_INGREDIENT (chemical structure populated (molecular_formula)) | |
| 2026-05-29T23:35:36.112147+00:00 | extract_roles_from_synonyms | ANNOTATED | Added media role: BUFFER (confidence: 1.00) | |
| 2026-06-09T05:23:46.806237+00:00 | correct_stale_ontology_labels.py | CORRECTED | ontology_label 'Na2HPO4 x 12 H2O' -> 'disodium hydrogenphosphate': synced to canonical CHEBI label (preferred_term 'Na2HPO4 x 12 H2O' unchanged). | |
| 2026-07-20T00:00:00+00:00 | migrate_media_roles_to_facets | ANNOTATED | Migrated legacy media_roles to role facets (#128): BUFFER -> physicochemical_roles.BUFFER | |
| 2026-08-13T00:00:00+00:00 | fix_hydrate_collapse | PROMOTED_TO_SPECIFIC_HYDRATE | identifier/ontology_id CHEBI:34683 -> CHEBI:91259 'disodium hydrogenphosphate dodecahydrate'; mapping_quality -> EXACT_MATCH; cas_rn '7782-85-6' -> '10039-32-4' (#321/#334). | |
| 2026-08-13T00:00:00+00:00 | mint_hydrate_registry_terms | MINTED_REGISTRY_FOR_HYDRATE | identifier CHEBI:91259 -> kgmicrobe.compound:na2hpo4_x_12_h2o; mapping_quality EXACT_MATCH -> NARROW_MATCH (#321/#334); §3 step 3. | |
| 2026-08-13T00:00:00+00:00 | add_water_of_hydration | ADDED_WATER_OF_HYDRATION | molecular_formula 'HO4P.2Na' -> '12H2O.HO4P.2Na' (#321); adopted verbatim from the mapped term CHEBI:91259 ('disodium hydrogenphosphate dodecahydrate'), which is the specific hydrate and already carries the water. | |
| 2026-08-13T00:00:00+00:00 | regrade_hydrate_to_close_match | REGRADED_HYDRATE_TO_CLOSE_MATCH | mapping_quality NARROW_MATCH -> CLOSE_MATCH (#342); a hydrate is not subsumed by its anhydrous form, and ChEBI does not model it as such. | |
| 2026-08-27T03:16:39.519461+00:00 | refresh_occurrence_statistics | CORRECTED | occurrence_statistics 50/112 -> 159/159 (media_count/total_occurrences), derived from distinct CultureMech recipe ids in the #337 occurrence table. The prior values came from the importer retired in #453, whose media_count counted a list truncated to 50 examples (#449). [source=ingredient_occurrences.tsv culturemech_rev=15a4da5c08 rows=194137 distinct_recipes=15257] | |
| 2026-08-29T03:56:37.918918+00:00 | hydrate_duplicate_merges | CORRECTED | identifier kgmicrobe.compound:na2hpo4_x_12_h2o -> CHEBI:91259; mapping_quality CLOSE_MATCH -> EXACT_MATCH. The record was already grounded to CHEBI:91259 (disodium hydrogenphosphate dodecahydrate) -- it IS that substance, so a registry mint and a close match both understated it. Every one of the 54 registry-identified records is graded non-exact, so the two move together: an exact grounding takes the ontology id, as MgSO4 x 7 H2O does (#334). | |
| 2026-09-02T22:41:49.137449+00:00 | claude_sssom_surface_form_backfill | ADDED_SYNONYMS | Recovered 3 surface form(s) that the published SSSOM `other` carried but no curated record did, so a rebuild would have dropped them from KGX: 'disodium acid orthophosphate'; 'disodium monohydrogen phosphate'; 'disodium orthophosphate'. Tokens already present on the kg-microbe ontology node were left out as redundant (#520). | |
| 2026-09-09T00:00:00+00:00 | fix_kg_microbe_node_id_drift | CORRECTED | kg_microbe_node_id CHEBI:34683 -> CHEBI:91259 (#554). The compatibility node id lagged a same-prefix identifier correction; the downstream node id must match the curated identifier unless a record intentionally crosses CURIE prefixes. | |
| 2026-09-12T00:00:00+00:00 | fix_malformed_hydrate_identities | REJECTED_MALFORMED_HYDRATE_ALIASES | MAPPED | Marked malformed hydrate alias(es) as REJECTED_LABEL so they remain on their own #344 local identities only: 'Na2HPO4 x 3 H2O', 'Na2HPO4 x 6 H2O'. |
| 2026-09-12T00:00:00+00:00 | reject_hidden_hydrate_synonym_collapses | REJECTED_HIDDEN_HYDRATE_SYNONYMS | MAPPED | Marked hidden hydrate synonym(s) as REJECTED_LABEL so this record no longer resolves sibling hydrate identities (#251): 'Na2HPO4 x 2 H2O', 'Na2HPO4 x 2H2O', 'Na2HPO4 x 7 H2O', 'Na2HPO4 x H2O', 'Na2HPO4 x2 H2O', 'Na2HPO4.7H2O'. |