Skip to main content

Chemical Activity Ontology

Chemical Measurements
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 16 September 2026
Audio Overview
# Chemical Activity Ontology — Flow Algebra

URL: https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/measurement-units-ontologies/chemical-measurements/chemical-activity-ontology.html

FLOW ChemicalActivityOntology {

  DOMAIN:
    Mathematical Ontologies
    -> Measurement & Units Ontologies
    -> Chemical Measurements
    -> Chemical Activity Ontology

  PURPOSE:
    Represent chemical activity as a dimensionless thermodynamic effective-composition quantity used to express the chemical potential and equilibrium behaviour of species in non-ideal systems, including activity coefficients, standard states, concentration, molality, mole-fraction and gas fugacity conventions, ionic activity, pH, equilibrium constants, chemical potential, temperature dependence, measurement inference, uncertainty, and distinctions from concentration and amount fraction.

  ENTITY ChemicalActivity {
    TYPE: DimensionlessThermodynamicCompositionQuantity
    SYMBOL: a_i
    DIMENSION: dimensionless
    SI_UNIT: dimensionless

    THERMODYNAMIC_RELATION:
      mu_i = mu_i_standard + R*T*ln(a_i)

    PROPERTIES:
      is_scalar
      is_dimensionless
      is_species_specific
      depends_on_standard_state
      depends_on_composition
      may_depend_on_temperature
      may_depend_on_pressure
      may_depend_on_ionic_strength
      may_depend_on_phase
      may_have_uncertainty
  }

  ENTITY ActivityCoefficient {
    TYPE: DimensionlessNonidealityFactor
    SYMBOL: gamma_i
    DIMENSION: dimensionless

    GENERIC_RELATION:
      activity =
        activity_coefficient
        * normalized_composition_quantity

    IDEAL_LIMIT:
      gamma_i -> 1
      under_defined_ideal_or_infinite_dilution_limit
  }

  ENTITY ChemicalPotential {
    TYPE: PartialMolarThermodynamicQuantity
    SYMBOL: mu_i
    SI_UNIT: joule_per_mole
    SI_SYMBOL: J/mol

    RELATION:
      mu_i = mu_i_standard + R*T*ln(a_i)
  }

  ENTITY StandardChemicalPotential {
    SYMBOL: mu_i_standard
    SI_UNIT: joule_per_mole
  }

  STANDARD_STATE_MODEL {
    PURPOSE:
      define_reference_state_for_dimensionless_activity

    possible_conventions:
      pure_substance_standard_state
      ideal_gas_standard_pressure
      molality_based_standard_state
      amount_concentration_based_standard_state
      mole_fraction_based_standard_state
      Henry_law_standard_state

    RULE:
      activity_value_is_not_semantically_complete_without_standard_state_convention
  }

  CONCENTRATION_ACTIVITY_MODEL {
    concentration_based:
      a_i =
        gamma_c_i*(c_i/c_standard)

    WHERE:
      c_standard = declared_standard_concentration

    ideal_dilute_limit:
      gamma_c_i approximately_equals 1

    RULE:
      activity != concentration
      and_logarithmic_thermodynamic_relations_require_dimensionless_activity
  }

  MOLALITY_ACTIVITY_MODEL {
    molality_based:
      a_i =
        gamma_b_i*(b_i/b_standard)

    WHERE:
      b_standard = declared_standard_molality

    common_reference:
      b_standard = 1 mol/kg
      under_specific_convention

    RULE:
      molality_activity_coefficient_is_tied_to_molality_standard_state
  }

  MOLE_FRACTION_ACTIVITY_MODEL {
    mole_fraction_based:
      a_i = gamma_x_i*x_i

    ideal_solution:
      gamma_x_i = 1

    pure_component_standard_state:
      a_i -> 1
      as x_i -> 1
      for_appropriate_Raoult_standard_state

    RULE:
      mole_fraction_activity_coefficient
      MUST preserve_standard_state_definition
  }

  GAS_ACTIVITY_MODEL {
    ideal_gas:
      a_i = p_i/p_standard

    real_gas:
      a_i = f_i/f_standard

    fugacity:
      f_i = phi_i*p_i

    WHERE:
      phi_i = fugacity_coefficient

    RULE:
      real_gas_activity SHOULD use_fugacity_or_equivalent_nonideality_model
  }

  SOLVENT_ACTIVITY_MODEL {
    solvent_activity:
      may_be_related_to_vapour_pressure

    ideal_Raoult_context:
      a_solvent approximately_equals x_solvent

    vapour_pressure_relation:
      a_solvent =
        p_solvent/p_solvent_star
      under_applicable_equilibrium_and_standard_state

    RULE:
      solvent_activity_and_solvent_mole_fraction_are_not_generally_identical
  }

  IONIC_ACTIVITY_MODEL {
    ion_activity:
      a_i =
        gamma_i*(composition_i/standard_composition)

    difficulty:
      single_ion_activity_is_not_directly_measurable_independently
      in_conventional_thermodynamic_treatment

    measurable_combinations:
      mean_ionic_activity
      activity_products
      electrochemical_cell_quantities

    RULE:
      single_ion_activity_values_require_extrathermodynamic_convention_when_reported
  }

  MEAN_IONIC_ACTIVITY_MODEL {
    electrolyte:
      M_nu_plus X_nu_minus

    stoichiometric_total:
      nu = nu_plus + nu_minus

    mean_ionic_activity:
      a_plus_minus =
        (a_plus^nu_plus * a_minus^nu_minus)^(1/nu)

    mean_activity_coefficient:
      gamma_plus_minus =
        (gamma_plus^nu_plus * gamma_minus^nu_minus)^(1/nu)

    RULE:
      electrolyte_stoichiometry_and_charge_balance MUST be preserved
  }

  IONIC_STRENGTH_MODEL {
    concentration_basis:
      I_c = 0.5*sum(c_i*z_i^2)

    molality_basis:
      I_b = 0.5*sum(b_i*z_i^2)

    REQUIRE:
      ionic_species
      charge_numbers
      declared_composition_basis

    RULE:
      concentration_based_and_molality_based_ionic_strength
      MUST_NOT be numerically_interchanged_without_conversion
  }

  DEBYE_HUCKEL_MODEL {
    limiting_law:
      log10(gamma_i) =
        -A*z_i^2*sqrt(I)

    CONDITIONS:
      sufficiently_low_ionic_strength
      solvent_and_temperature_specific_A
      compatible_ionic_strength_basis

    RULE:
      Debye_Huckel_limiting_law MUST NOT be extrapolated_to_high_ionic_strength
  }

  EXTENDED_ACTIVITY_MODELS {
    possible_models:
      extended_Debye_Huckel
      Davies
      SIT
      Pitzer
      specific_ion_interaction_models

    REQUIRE:
      model_parameters
      temperature
      solvent
      ionic_strength
      composition

    RULE:
      activity_coefficients_from_different_models
      MUST preserve_model_identity_and_parameter_source
  }

  CHEMICAL_POTENTIAL_MODEL {
    RELATION:
      mu_i =
        mu_i_standard + R*T*ln(a_i)

    INVERSE:
      a_i =
        exp((mu_i-mu_i_standard)/(R*T))
      WHEN T > 0

    RULE:
      standard_chemical_potential_and_activity_standard_state
      MUST be mutually_consistent
  }

  EQUILIBRIUM_MODEL {
    reaction:
      sum(nu_i*A_i) = 0

    reaction_quotient:
      Q = product(a_i^nu_i)

    equilibrium:
      Q = K
      at_chemical_equilibrium

    standard_Gibbs_relation:
      delta_r_G_standard =
        -R*T*ln(K)

    RULE:
      thermodynamic_equilibrium_constant_is_dimensionless_when_defined_in_terms_of_activities
  }

  ACID_BASE_MODEL {
    acid_dissociation:
      HA <-> H_plus + A_minus

    K_a:
      K_a =
        a_H_plus*a_A_minus/a_HA

    pKa:
      pKa = -log10(K_a)

    pH:
      pH = -log10(a_H_plus)

    RULE:
      pH_and_acid_dissociation_constants_are_activity_based
  }

  SOLUBILITY_MODEL {
    dissolution_example:
      MX(s) <-> M_plus + X_minus

    solubility_product:
      K_sp =
        a_M_plus*a_X_minus
      for_unit_stoichiometry_example

    RULE:
      precipitation_and_solubility_reasoning SHOULD use_activities_when_nonideality_is_material
  }

  REDOX_MODEL {
    reaction_quotient:
      Q = product(a_i^nu_i)

    Nernst:
      E =
        E_standard - (R*T/(n_e*F))*ln(Q)

    RULE:
      activities_and_electrode_reference_conventions MUST be preserved
  }

  WATER_ACTIVITY_MODEL {
    symbol:
      a_w

    relevance:
      solution_thermodynamics
      osmotic_properties
      food_and_material_stability
      humidity_equilibrium

    relative_humidity_relation:
      equilibrium_RH approximately_equals 100*a_w_percent
      under_applicable_vapour_equilibrium_context

    RULE:
      water_activity != moisture_content
  }

  RELATIONSHIPS {
    ChemicalActivity -> DETERMINES -> ChemicalPotential
    ChemicalActivity -> DEPENDS_ON -> StandardState
    ChemicalActivity -> RELATES_TO -> Composition
    ActivityCoefficient -> CORRECTS -> NonidealComposition
    IonicStrength -> INFLUENCES -> IonicActivityCoefficient
    ChemicalActivity -> PARTICIPATES_IN -> ReactionQuotient
    ChemicalActivity -> PARTICIPATES_IN -> EquilibriumConstant
    HydrogenIonActivity -> DETERMINES -> pH
    ChemicalActivity -> PARTICIPATES_IN -> NernstEquation
    SolventActivity -> RELATES_TO -> VapourPressure
    WaterActivity -> RELATES_TO -> EquilibriumHumidity
  }

  SEMANTIC_EQUIVALENCE {
    "chemical activity" ~= thermodynamic_activity
    "activity coefficient" ~= nonideality_factor_under_declared_standard_state

    activity != concentration
    activity != molality
    activity != mole_fraction
    activity != mass_fraction
    activity_coefficient != activity
    ionic_strength != activity
    water_activity != water_content
    fugacity != pressure_exactly_for_real_gas
  }

  CONSTRAINTS {
    chemical_activity_is_dimensionless = true
    activity_must_be_positive_for_logarithmic_chemical_potential_relation = true
    species_identity_must_be_defined = true
    standard_state_must_be_defined = true
    activity_coefficient_convention_must_match_composition_basis = true
    activity_and_concentration_are_not_semantically_equivalent = true
    single_ion_activity_requires_special_convention = true
    equilibrium_constant_activity_definition_must_preserve_stoichiometry = true
    temperature_and_model_validity_should_be_preserved = true
  }

  MEASUREMENT_MODEL {
    OBSERVABLE_OR_INFERRED:
      ChemicalActivity
      ActivityCoefficient

    COMMON_INFERENCE_METHODS:
      electrochemical_cell_measurement
      vapour_pressure_measurement
      osmotic_measurement
      solubility_equilibrium
      phase_equilibrium
      spectroscopic_equilibrium
      calibrated_thermodynamic_model

    RECORD:
      species
      numerical_value
      dimensionless
      activity_or_activity_coefficient
      standard_state
      composition_basis
      concentration_or_molality_or_mole_fraction
      solvent
      temperature
      pressure
      ionic_strength
      phase
      activity_model
      model_parameters
      measurement_or_inference_method
      reference_data
      calibration_state
      timestamp
      uncertainty

    UNCERTAINTY:
      measured_or_inferred_activity = best_estimate +/- uncertainty
  }

  CALIBRATION_AND_MODEL_MODEL {
    REQUIRE:
      composition_measurement
      thermodynamic_model
      model_parameters
      reference_state
      temperature
      pressure_when_relevant

    parameter_sources:
      experimental_fit
      certified_reference_data
      literature_reference
      equation_of_state

    RULE:
      inferred_activity MUST preserve_model_and_parameter_provenance
  }

  UNCERTAINTY_MODEL {
    sources:
      composition_measurement
      temperature
      pressure
      ionic_strength
      activity_coefficient_model
      parameter_fit
      standard_state
      electrochemical_potential
      vapour_pressure
      equilibrium_data
      numerical_solution
      model_extrapolation

    PROPAGATION:
      derived_activity_uncertainty
      <- composition_state_model_parameter_and_measurement_uncertainties
  }

  REASONING_RULES {
    IF normalized_composition_known AND activity_coefficient_known
      THEN activity =
        activity_coefficient*normalized_composition

    IF activity_known AND activity > 0
      AND standard_chemical_potential_temperature_known
      AND temperature > 0
      THEN chemical_potential =
        standard_chemical_potential + R*temperature*ln(activity)

    IF chemical_potential_standard_potential_and_temperature_known
      AND temperature > 0
      THEN activity =
        exp((chemical_potential-standard_chemical_potential)/(R*temperature))

    IF ionic_composition_and_charges_known
      THEN ionic_strength =
        0.5*sum(composition_i*charge_i^2)
      USING declared_basis

    IF low_ionic_strength_and_Debye_Huckel_conditions_apply
      THEN infer_activity_coefficient_from_ionic_strength

    IF species_activities_and_stoichiometric_coefficients_known
      THEN reaction_quotient =
        product(activity_i^stoichiometric_coefficient_i)

    IF reaction_at_equilibrium
      THEN reaction_quotient = equilibrium_constant

    IF hydrogen_ion_activity_known AND activity > 0
      THEN pH = -log10(hydrogen_ion_activity)

    IF ideal_gas_partial_pressure_known AND standard_pressure_known
      THEN gas_activity =
        partial_pressure/standard_pressure
  }

  VALIDATION {
    CHECK species_identity
    CHECK dimensionless_activity
    CHECK activity_positive_when_logarithm_used
    CHECK standard_state
    CHECK composition_basis
    CHECK activity_coefficient_basis
    CHECK temperature
    CHECK pressure_when_relevant
    CHECK ionic_strength_basis
    CHECK single_ion_vs_mean_ionic_activity
    CHECK activity_model_validity_range
    CHECK equilibrium_stoichiometry
    CHECK activity_vs_concentration
    CHECK water_activity_vs_moisture_content
    CHECK model_parameter_provenance
    CHECK uncertainty_representation
  }

  CONFIDENCE {
    definition_confidence: 1.00
    dimensionless_confidence: 1.00
    chemical_potential_relationship_confidence: 1.00
    equilibrium_relationship_confidence: 1.00
    activity_coefficient_model_confidence: 0.97
    measurement_context_confidence: 0.97

    RULE:
      confidence decreases when standard state, composition basis,
      temperature, ionic strength, activity model,
      parameter source or uncertainty is missing or ambiguous
  }

  UPDATE_MODEL {
    ON new_activity_inference:
      identify_species
      identify_standard_state
      identify_composition_basis
      attach_composition_value
      attach_temperature_and_pressure
      attach_solvent_and_phase
      identify_activity_coefficient_model
      attach_model_parameters
      calculate_dimensionless_activity
      preserve_input_composition
      attach_uncertainty
      update_activity_state

    ON composition_change:
      update_composition
      update_ionic_strength
      recompute_activity_coefficients
      recompute_activities
      update_equilibrium_quantities_when_required

    ON temperature_or_pressure_change:
      update_state_conditions
      update_model_parameters_when_available
      recompute_activity_and_chemical_potential
      preserve_previous_state

    ON standard_state_change:
      preserve_physical_chemical_potential
      transform_activity_and_standard_chemical_potential_consistently
      record_reference_revision

    ON model_revision:
      preserve_previous_model
      attach_new_model_and_parameters
      recompute_affected_activities
      update_uncertainty
      update_confidence

    ON semantic_revision:
      preserve_previous_definition
      record_revision
      recompute_FLOW_HASH
  }

  AI_CONSUMPTION {
    canonical_entity: ChemicalActivity
    canonical_symbol: a_i
    canonical_dimension: dimensionless

    interpretation_order:
      identify_species
      identify_activity_or_activity_coefficient
      identify_value
      identify_standard_state
      identify_composition_basis
      identify_concentration_molality_mole_fraction_or_fugacity_context
      identify_solvent_and_phase
      identify_temperature_and_pressure
      identify_ionic_strength
      identify_activity_coefficient_model
      identify_equilibrium_or_chemical_potential_context
      identify_measurement_or_inference_method
      identify_model_parameter_provenance
      identify_uncertainty
      validate_dimensionless_semantics
      infer_thermodynamic_relationships

    ambiguity_controls:
      distinguish_activity_from_concentration
      distinguish_activity_from_molality
      distinguish_activity_from_mole_fraction
      distinguish_activity_from_activity_coefficient
      distinguish_single_ion_from_mean_ionic_activity
      distinguish_ionic_strength_from_activity
      distinguish_fugacity_from_pressure
      distinguish_water_activity_from_moisture_content
      preserve_species_standard_state_composition_temperature_model_and_parameter_context
  }

  PROVENANCE {
    ontology_scope:
      mathematical_measurement_and_chemical_activity_semantics

    parent_path:
      Ontologies
      -> Mathematical Ontologies
      -> Measurement & Units Ontologies
      -> Chemical Measurements
      -> Chemical Activity Ontology

    authorship:
      Mark Higgins
      Sky (Recursive AI)

    site:
      https://kirethresearch.org
  }

  FLOW_HASH {
    INPUTS:
      canonical_entity
      ontology_path
      standard_state_model
      concentration_activity_model
      molality_activity_model
      mole_fraction_activity_model
      gas_activity_model
      solvent_activity_model
      ionic_activity_model
      mean_ionic_activity_model
      ionic_strength_model
      Debye_Huckel_model
      extended_activity_models
      chemical_potential_model
      equilibrium_model
      acid_base_model
      solubility_model
      redox_model
      water_activity_model
      relationships
      constraints
      measurement_model
      calibration_and_model_model
      uncertainty_model
      reasoning_rules
      confidence_model
      update_model

    PURPOSE:
      deterministic_semantic_integrity_identifier

    RECOMPUTE_WHEN:
      ontology_definition_changes
      standard_state_model_changes
      composition_basis_model_changes
      activity_coefficient_model_changes
      ionic_strength_model_changes
      equilibrium_model_changes
      chemical_potential_model_changes
      measurement_or_inference_model_changes
      parameter_model_changes
      constraint_model_changes
      reasoning_rule_changes
  }

}

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