Skip to main content

Biological Ion Ontology

Chemical Foundations of Life
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 15 October 2026
Audio Overview
FLOW ALGEBRA
Biological Ion Ontology — Chemical Foundations of Life
Version: 1.0 | Date: 2026-10-15 | Locale: en-GB
Authors: Mark Higgins — Sky (Recursive AI)
Source: https://kirethresearch.org/booksai-core/entity-graph/biological-entities/chemical-foundations-of-life/biological-ion-ontology.html
Status: Companion formalisation; typed declarative specification, not a verified executable runtime.

1. ONTOLOGY IDENTITY
ontology BiologicalIonOntology {
  namespace: kireth:biological_entities:chemical_foundations:biological_ion
  parent: ChemicalFoundationsOfLife
  root_entity: BiologicalIon
  purpose: represent ions, charge, biological compartments, transport, gradients and evidence-grounded physiological functions
}

2. ENTITY TYPES
entity ChemicalSpecies { id: URI; name: String; formula: String? }
entity Ion extends ChemicalSpecies { charge_number: Integer; oxidation_state: Integer?; isotope: String? }
entity BiologicalIon extends Ion { biological_context: ContextID; compartment: CompartmentID? }
entity Cation extends Ion { invariant: charge_number > 0 }
entity Anion extends Ion { invariant: charge_number < 0 }
entity Electrolyte { id: URI; dissolved_species: Set<IonID> }
entity Compartment { id: URI; name: String; organism: OrganismID? }
entity Membrane { id: URI; separates: Pair<CompartmentID,CompartmentID> }
entity TransportProtein { id: URI; mechanism: Enum[channel,carrier,pump,exchanger] }
entity IonGradient { ion: IonID; from: CompartmentID; to: CompartmentID; concentration_difference: Quantity?; electrical_potential: Quantity? }
entity BiologicalProcess { id: URI; name: String }
entity Measurement { value: Decimal; unit: UnitID; uncertainty: Decimal?; conditions: ContextID }
entity Evidence { id: URI; source: URI; method: String?; timestamp: DateTime? }

3. EXEMPLAR INSTANCES
ion SodiumIon { formula: "Na+"; charge_number: +1; category: Cation }
ion PotassiumIon { formula: "K+"; charge_number: +1; category: Cation }
ion CalciumIon { formula: "Ca2+"; charge_number: +2; category: Cation }
ion MagnesiumIon { formula: "Mg2+"; charge_number: +2; category: Cation }
ion ChlorideIon { formula: "Cl-"; charge_number: -1; category: Anion }
ion BicarbonateIon { formula: "HCO3-"; charge_number: -1; category: Anion }
ion HydrogenIon { formula: "H+"; charge_number: +1; category: Cation }
ion PhosphateSpecies { formula: "H2PO4- / HPO4^2-"; note: "Distinct protonation states; do not collapse into one ion" }

4. TYPED RELATIONSHIPS
relation located_in(BiologicalIon, Compartment)
relation participates_in(BiologicalIon, BiologicalProcess)
relation transported_by(BiologicalIon, TransportProtein)
relation crosses(BiologicalIon, Membrane)
relation forms_gradient(Ion, IonGradient)
relation influences(IonGradient, BiologicalProcess)
relation binds_to(Ion, ChemicalSpecies)
relation measured_by(BiologicalIon, Measurement)
relation supported_by(Assertion, Evidence)
relation derived_from(Assertion, Assertion)
relation equivalent_to(Entity, Entity, Context)
relation distinct_from(Entity, Entity)

5. CORE FORMAL CONSTRAINTS
constraint IonCharge: Ion.charge_number != 0
constraint CationCharge: forall x:Cation, x.charge_number > 0
constraint AnionCharge: forall x:Anion, x.charge_number < 0
constraint GradientEndpoints: forall g:IonGradient, g.from != g.to
constraint MembraneCrossing: crosses(i,m) requires located_in(i, compartment_adjacent_to(m)) or explicit transport_event
constraint MeasurementContext: concentration claims require units, sample compartment and conditions
constraint Electroneutrality: bulk_solution sum_i(z_i * c_i) approximately 0 within measurement tolerance; not a claim of zero local charge at membranes
constraint MassBalance: for closed_system S, delta_amount(i,S) = production(i) - consumption(i) + influx(i) - efflux(i)
constraint DistinctSpeciation: differing charge states must retain separate entity identities

6. INFERENCE RULES
rule classify_cation:
  WHEN Ion(x) AND charge_number(x) > 0
  THEN type(x, Cation)
rule classify_anion:
  WHEN Ion(x) AND charge_number(x) < 0
  THEN type(x, Anion)
rule membrane_gradient:
  WHEN Ion(i) AND Compartment(a) AND Compartment(b) AND separates(m,a,b)
       AND measured_concentration(i,a,ca) AND measured_concentration(i,b,cb)
       AND ca != cb
  THEN candidate_concentration_gradient(i,a,b)
  NOTE: do not infer net flux direction without permeability, membrane voltage and coupling context
rule transport_participation:
  WHEN transports(t,i,a,b) AND TransportProtein(t)
  THEN participates_in(i, ion_transport) AND transported_by(i,t)
rule evidence_required:
  WHEN claim_has_biological_function(i,p)
  THEN require supported_by(claim, Evidence) AND require context(p)

7. QUANTITATIVE SEMANTICS
quantity Concentration { dimension: amount_of_substance / volume; preferred_unit: mol/L }
quantity ElectricPotential { dimension: voltage; preferred_unit: V }
quantity Temperature { dimension: thermodynamic_temperature; preferred_unit: K }
expression electrochemical_potential(i,side): mu_i = mu_i_standard + R*T*ln(activity_i) + z_i*F*psi
expression nernst_potential(i): E_i = (R*T/(z_i*F))*ln(activity_out/activity_in)
preconditions: z_i != 0; T > 0; activities > 0; chosen sign convention documented
note: activities are preferred to concentrations for non-ideal solutions

8. VALIDATION PIPELINE
flow ValidateBiologicalIon(input: BiologicalIonRecord) -> ValidationResult {
  stage schema_check: validate_required_fields(input)
  stage charge_check: validate_integer_charge_and_species(input)
  stage chemistry_check: validate_formula_and_protonation_state(input)
  stage compartment_check: validate_location_and_context(input)
  stage unit_check: validate_dimensions_and_units(input.measurements)
  stage biological_check: require_evidence_for_functional_claims(input)
  stage consistency_check: detect_contradictions_and_duplicate_ids(input)
  output: {status: valid|invalid|needs_review, issues: List<Issue>}
}

9. SEMANTIC EQUIVALENCE
SEMANTIC_EQUIVALENCE {
  canonical_identity: chemical_formula + charge_number + isotope_if_relevant
  aliases: ["sodium ion" <-> "Na+", "potassium ion" <-> "K+", "chloride ion" <-> "Cl-"]
  equivalence_requires: matching chemical species and charge state
  contextual_distinction: free_ion != bound_ion; total_calcium != ionised_calcium
  prohibited_merge: Na != Na+; H2PO4- != HPO4^2-
}

10. CONFIDENCE AND PROVENANCE
CONFIDENCE {
  score_range: [0.0,1.0]
  dimensions: [source_reliability, measurement_quality, contextual_fit, reproducibility, validation_status]
  aggregation: calibrated_model_required
  rule: no fabricated numeric confidence without evidence or calibration
}
PROVENANCE {
  record: [source_uri, assertion_id, author_or_instrument, method, timestamp, version, transformation_history]
  preserve: original_measurement_and_units
  update_policy: append_revision_and_retain_prior_assertions
}

11. GRAPH AND RECURSIVE REASONING
flow TraceIonRole(ion: IonID, max_depth: Integer) -> GraphSubgraph {
  require max_depth >= 0
  traverse: located_in | transported_by | forms_gradient | participates_in | supported_by
  visited: Set<EntityID>
  cycle_policy: stop_on_visited_node
  edge_policy: typed_and_evidence_tagged
  result: bounded_explanation_graph
}

12. FLOW_HASH
FLOW_HASH {
  canonicalise: stable_identifier_order + normalised_units + sorted_typed_edges + ontology_version
  algorithm: SHA-256
  digest_input: canonical_serialisation
  purpose: content_integrity_and_change_detection
  limitation: hash_does_not_prove_scientific_truth
}

13. UPDATE_MODEL
UPDATE_MODEL {
  on_new_evidence: revalidate_affected_claims
  on_changed_measurement: recompute_dependent_gradients
  on_changed_charge_or_species: reject_or_reclassify_and_reindex
  on_conflict: retain_competing_assertions_with_provenance
  on_revision: increment_version_and_recompute_flow_hash
}

14. AI_CONSUMPTION
AI_CONSUMPTION {
  representation: typed_entity_graph
  tasks: [entity_resolution, contextual_retrieval, dimensional_checking, explanation, constrained_inference]
  mandatory: preserve_units_charge_state_compartment_conditions_provenance
  distinguish: observed | inferred | hypothetical
  guardrails: no_unsupported_causal_claims; no_inference_from_correlation_alone
  output: [entities, typed_edges, evidence_links, validation_report, uncertainty]
}

15. WORKED REASONING EXAMPLE
input:
  species: K+
  compartments: intracellular, extracellular
  evidence: measured_activities_on_both_sides_of_membrane
  context: specified_temperature_and_membrane_potential
steps:
  1 identify K+ as monovalent cation
  2 validate distinct compartments and units
  3 represent concentration/activity gradient
  4 compute Nernst equilibrium potential only when required inputs exist
  5 compare with actual membrane potential before discussing electrochemical driving force
  6 attach provenance and uncertainty to each claim
output: evidence-linked, context-limited ion-gradient explanation

END FLOW ALGEBRA
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ