Skip to main content

Concentration Ontology

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

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

FLOW ConcentrationOntology {

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

  PURPOSE:
    Represent chemical concentration as a family of composition quantities describing the amount or mass of a specified component relative to solution volume, solvent mass, total mixture amount, or other declared basis, including amount concentration, mass concentration, molality, fractions, dilution, density conversion, temperature dependence, analytical measurement, calibration, uncertainty, and strict semantic distinction between concentration definitions.

  ENTITY AmountConcentration {
    TYPE: DerivedChemicalCompositionQuantity
    SYMBOL: c_i
    DIMENSION: N * L^-3
    SI_UNIT: mole_per_cubic_metre
    SI_SYMBOL: mol/m^3

    COMMON_UNIT:
      mol/L

    DEFINITION:
      c_i = n_i/V_solution

    REQUIRE:
      V_solution != 0
  }

  ENTITY MassConcentration {
    TYPE: DerivedChemicalCompositionQuantity
    SYMBOL: rho_i
    DIMENSION: M * L^-3
    SI_UNIT: kilogram_per_cubic_metre
    SI_SYMBOL: kg/m^3

    DEFINITION:
      rho_i = m_i/V_solution

    REQUIRE:
      V_solution != 0
  }

  ENTITY Molality {
    TYPE: DerivedChemicalCompositionQuantity
    SYMBOL: b_i
    DIMENSION: N * M^-1
    SI_UNIT: mole_per_kilogram
    SI_SYMBOL: mol/kg

    DEFINITION:
      b_i = n_i/m_solvent

    REQUIRE:
      m_solvent != 0
  }

  ENTITY MoleFraction {
    TYPE: DimensionlessCompositionQuantity
    SYMBOL: x_i

    DEFINITION:
      x_i = n_i/n_total

    COMPLETE_MIXTURE:
      sum(x_i) = 1
  }

  ENTITY MassFraction {
    TYPE: DimensionlessCompositionQuantity
    SYMBOL: w_i

    DEFINITION:
      w_i = m_i/m_total

    COMPLETE_MIXTURE:
      sum(w_i) = 1
  }

  ENTITY VolumeFraction {
    TYPE: DimensionlessCompositionQuantity
    SYMBOL: phi_i

    DEFINITION:
      phi_i = V_i/V_total
      UNDER declared_volume_definition
  }

  TERMINOLOGY_MODEL {
    phrase:
      "concentration"

    possible_meanings:
      amount_concentration
      mass_concentration
      molality
      mole_fraction
      mass_fraction
      volume_fraction
      number_concentration
      equivalent_concentration
      activity_based_effective_concentration

    RULE:
      concentration_basis MUST be resolved_before_quantitative_reasoning
  }

  UNIT_SYSTEM {
    amount_concentration:
      SI: mol/m^3
      common: mol/L, mmol/L, micromol/L

    mass_concentration:
      SI: kg/m^3
      common: g/L, mg/L, microgram/L

    molality:
      SI: mol/kg

    fractions:
      dimensionless

    common_ratio_units:
      percent
      ppm
      ppb
      ppt

    RULE:
      percent_ppm_ppb_and_ppt MUST identify_basis
      such_as_mass_mass_volume_volume_mole_fraction_or_mass_volume
  }

  AMOUNT_CONCENTRATION_MODEL {
    c_i = n_i/V_solution

    amount:
      n_i = c_i*V_solution

    volume:
      V_solution = n_i/c_i
      WHEN c_i != 0

    RULE:
      solution_volume_not_solvent_volume MUST be used
      unless_alternative_definition_explicitly_declared
  }

  MASS_CONCENTRATION_MODEL {
    rho_i = m_i/V_solution

    mass:
      m_i = rho_i*V_solution

    RULE:
      mass_concentration != solution_density
      unless_component_is_entire_solution_under_special_context
  }

  MOLALITY_MODEL {
    b_i = n_i/m_solvent

    PROPERTY:
      based_on_solvent_mass
      and_less_directly_temperature_sensitive_than_volume_based_molarity

    RULE:
      molality != amount_concentration
  }

  FRACTION_MODEL {
    mole_fraction:
      x_i = n_i/n_total

    mass_fraction:
      w_i = m_i/m_total

    volume_fraction:
      phi_i = V_i/V_total
      UNDER declared_volume_basis

    CONSTRAINT:
      complete_component_fraction_sum = 1

    RULE:
      fraction_type MUST be preserved
  }

  DILUTION_MODEL {
    conserved_solute_amount:
      c_1*V_1 = c_2*V_2

    CONDITIONS:
      same_solute
      no_reaction
      no_precipitation_or_loss
      compatible_amount_concentration
      defined_volumes

    dilution_factor:
      DF = V_final/V_aliquot
      under_simple_volumetric_dilution

    original_concentration:
      c_original = c_measured*DF

    RULE:
      dilution_factor_definition MUST be declared
  }

  DENSITY_CONVERSION_MODEL {
    solution_density:
      rho_solution = m_solution/V_solution

    mass_fraction_to_mass_concentration:
      rho_i = rho_solution*w_i

    mass_concentration_to_amount_concentration:
      c_i = rho_i/M_i
      WHEN M_i != 0

    mass_fraction_to_amount_concentration:
      c_i = rho_solution*w_i/M_i
      WHEN M_i != 0

    RULE:
      density_temperature_and_molar_mass MAY be required_for_basis_conversion
  }

  MOLARITY_MOLALITY_CONVERSION_MODEL {
    REQUIRE:
      solution_density
      solute_molar_mass
      composition_basis
      temperature

    RULE:
      amount_concentration_and_molality
      MUST NOT be converted_by_simple_unit_factor_alone
  }

  TEMPERATURE_MODEL {
    volume_based_concentration:
      may_change_with_temperature_due_to_thermal_expansion

    mass_based_quantities:
      mass_fraction_and_molality_less_directly_affected_by_volume_expansion

    RULE:
      precision_amount_or_mass_concentration SHOULD preserve_measurement_temperature
  }

  MIXTURE_MODEL {
    multi_component_solution:
      component_concentrations indexed_by_chemical_entity

    REQUIRE:
      analyte_identity
      solvent_or_matrix_identity
      composition_basis

    RULE:
      numerical_concentration_without_component_identity
      is_semantically_incomplete
  }

  ACTIVITY_DISTINCTION_MODEL {
    activity:
      a_i = gamma_i*normalized_composition_quantity

    ideal_dilute_context:
      activity MAY approximate normalized_concentration

    RULE:
      concentration != thermodynamic_activity
  }

  SATURATION_MODEL {
    solubility_limit:
      maximum_equilibrium_concentration_under_defined_conditions

    dependencies:
      temperature
      pressure
      solvent
      pH
      ionic_strength
      solid_phase

    RULE:
      concentration_above_equilibrium_solubility MAY indicate_supersaturation_or_non_equilibrium_state
  }

  ANALYTICAL_CALIBRATION_MODEL {
    generic_response:
      y = f(c)

    linear:
      y = a + b*c

    inverse:
      c_unknown = (y_unknown-a)/b
      WHEN b != 0

    REQUIRE:
      calibration_standards
      matrix
      concentration_basis
      valid_range
      blank
      response_model
      uncertainty

    RULE:
      standards_and_unknown MUST use_compatible_concentration_basis
  }

  SPECTROPHOTOMETRIC_MODEL {
    Beer_Lambert:
      A = epsilon*l*c

    inference:
      c = A/(epsilon*l)
      WHEN epsilon != 0 AND l != 0

    REQUIRE:
      analyte
      wavelength
      path_length
      molar_absorptivity
      applicable_linear_range

    RULE:
      inferred_c_basis MUST match_absorptivity_definition
  }

  CHROMATOGRAPHIC_MODEL {
    detector_response:
      peak_area_or_height -> concentration

    REQUIRE:
      response_factor_or_calibration_curve
      injection_volume_when_relevant
      sample_preparation
      dilution
      internal_standard_when_used

    RULE:
      chromatographic_response_is_not_concentration_without_calibration
  }

  SAMPLE_PREPARATION_MODEL {
    operations:
      weighing
      volumetric_transfer
      dilution
      extraction
      digestion
      filtration
      evaporation
      reconstitution
      derivatisation

    cumulative_dilution:
      DF_total = product(DF_i)
      under_consistent_definition

    RULE:
      preparation_history MUST be preserved_for_back_calculation_to_original_sample
  }

  RELATIONSHIPS {
    Concentration -> DESCRIBES -> ChemicalComposition
    AmountConcentration -> RELATES -> AmountAndSolutionVolume
    MassConcentration -> RELATES -> ComponentMassAndSolutionVolume
    Molality -> RELATES -> SoluteAmountAndSolventMass
    MoleFraction -> RELATES -> ComponentAmountAndTotalAmount
    MassFraction -> RELATES -> ComponentMassAndTotalMass
    Density -> ENABLES -> ConcentrationBasisConversion
    MolarMass -> ENABLES -> MassToAmountConcentrationConversion
    Dilution -> CHANGES -> Concentration
    CalibrationModel -> MAPS -> AnalyticalResponseToConcentration
    Temperature -> MAY_AFFECT -> VolumeBasedConcentration
  }

  SEMANTIC_EQUIVALENCE {
    "molar concentration" ~= amount_concentration
    "molarity" ~= amount_concentration WHEN solution_context
    "mass per volume concentration" ~= mass_concentration

    concentration != amount_concentration_without_basis
    amount_concentration != molality
    mass_concentration != mass_fraction
    mole_fraction != amount_concentration
    volume_fraction != mass_fraction
    concentration != activity
    concentration != density
  }

  CONSTRAINTS {
    analyte_identity_must_be_defined = true
    concentration_basis_must_be_defined = true
    denominator_quantity_must_be_nonzero = true
    amount_concentration_uses_solution_volume = true
    molality_uses_solvent_mass = true
    fractions_are_dimensionless = true
    ppm_ppb_and_percent_basis_must_be_identified = true
    temperature_should_be_preserved_for_precision_volume_based_concentration = true
    concentration_and_activity_are_not_semantically_equivalent = true
    calibration_basis_must_match_reported_basis = true
  }

  MEASUREMENT_MODEL {
    OBSERVABLE_OR_INFERRED:
      Concentration

    COMMON_METHODS:
      gravimetric_preparation
      volumetric_preparation
      titration
      spectrophotometry
      chromatography
      mass_spectrometry
      electrochemistry
      elemental_analysis

    RECORD:
      analyte
      chemical_entity
      numerical_value
      unit
      concentration_basis
      sample
      matrix
      solvent
      sample_mass_or_volume
      solution_volume
      solvent_mass_when_relevant
      molar_mass_when_relevant
      density_when_relevant
      temperature
      pressure_when_relevant
      dilution_factor
      preparation_history
      analytical_method
      calibration_model
      calibration_range
      blank
      recovery
      detection_limit
      quantification_limit
      timestamp
      uncertainty

    UNCERTAINTY:
      measured_or_inferred_concentration = best_estimate +/- uncertainty
  }

  UNCERTAINTY_MODEL {
    sources:
      sample_mass
      solution_volume
      solvent_mass
      temperature
      density
      molar_mass_or_purity
      volumetric_glassware
      dilution
      extraction_recovery
      calibration
      blank
      matrix_effect
      instrument_repeatability
      drift
      sample_heterogeneity

    PROPAGATION:
      derived_concentration_uncertainty
      <- sampling_preparation_basis_conversion_calibration_and_measurement_uncertainties
  }

  REASONING_RULES {
    IF solute_amount_known AND solution_volume != 0
      THEN amount_concentration =
        solute_amount/solution_volume

    IF solute_mass_known AND solution_volume != 0
      THEN mass_concentration =
        solute_mass/solution_volume

    IF solute_amount_known AND solvent_mass != 0
      THEN molality =
        solute_amount/solvent_mass

    IF component_amount_and_total_amount_known AND total_amount != 0
      THEN mole_fraction =
        component_amount/total_amount

    IF component_mass_and_total_mass_known AND total_mass != 0
      THEN mass_fraction =
        component_mass/total_mass

    IF solution_density_and_mass_fraction_known
      THEN mass_concentration =
        solution_density*mass_fraction

    IF mass_concentration_known AND molar_mass != 0
      THEN amount_concentration =
        mass_concentration/molar_mass

    IF initial_amount_concentration_and_volume_known
      AND final_volume != 0
      AND solute_amount_conserved
      THEN final_amount_concentration =
        initial_concentration*initial_volume/final_volume

    IF measured_concentration_and_dilution_factor_known
      THEN original_concentration =
        measured_concentration*dilution_factor
      UNDER declared_dilution_factor_definition

    IF analytical_response_and_valid_calibration_known
      THEN infer_concentration =
        inverse_calibration(analytical_response)
  }

  VALIDATION {
    CHECK analyte_identity
    CHECK concentration_basis
    CHECK unit_consistency
    CHECK denominator_nonzero
    CHECK solution_volume_vs_solvent_mass
    CHECK amount_concentration_vs_molality
    CHECK mass_concentration_vs_mass_fraction
    CHECK ppm_ppb_or_percent_basis
    CHECK fraction_sum_when_complete_mixture
    CHECK density_and_molar_mass_for_basis_conversion
    CHECK temperature_when_volume_sensitive
    CHECK dilution_factor_definition
    CHECK preparation_history
    CHECK calibration_basis_and_range
    CHECK blank_and_recovery
    CHECK detection_and_quantification_limits
    CHECK uncertainty_representation
  }

  CONFIDENCE {
    definition_confidence: 1.00
    unit_confidence: 1.00
    basis_relationship_confidence: 1.00
    dilution_relationship_confidence: 0.99
    analytical_calibration_confidence: 0.98
    measurement_context_confidence: 0.97

    RULE:
      confidence decreases when analyte, basis, denominator,
      sample matrix, temperature, density, dilution,
      preparation, calibration or uncertainty is missing or ambiguous
  }

  UPDATE_MODEL {
    ON new_measurement:
      identify_analyte
      identify_concentration_basis
      validate_unit
      identify_sample_matrix_and_solvent
      attach_mass_volume_or_solvent_mass_inputs
      attach_temperature
      attach_density_and_molar_mass_when_relevant
      attach_preparation_and_dilution_history
      apply_valid_calibration
      normalize_to_canonical_basis_when_requested_and_supported
      preserve_original_value_unit_and_basis
      attach_uncertainty
      update_concentration_state

    ON dilution:
      preserve_pre_dilution_state
      update_volume_and_dilution_factor
      recompute_concentration
      preserve_solute_amount_when_valid

    ON temperature_change:
      update_temperature
      update_solution_volume_or_density_when_model_available
      recompute_volume_based_concentration
      preserve_mass_based_composition_quantities

    ON basis_conversion:
      validate_required_density_molar_mass_and_temperature
      preserve_original_basis
      compute_target_basis
      propagate_uncertainty

    ON calibration_revision:
      preserve_previous_calibration
      recompute_affected_results
      update_uncertainty
      update_confidence

    ON semantic_revision:
      preserve_previous_definition
      record_revision
      recompute_FLOW_HASH
  }

  AI_CONSUMPTION {
    canonical_domain: ChemicalConcentration

    interpretation_order:
      identify_analyte
      resolve_concentration_basis
      identify_value
      identify_unit
      identify_denominator_quantity
      identify_sample_matrix_and_solvent
      identify_temperature_and_pressure
      identify_density_and_molar_mass_when_relevant
      identify_dilution_and_preparation_history
      identify_analytical_method
      identify_calibration
      identify_detection_and_quantification_limits
      identify_uncertainty
      normalize_units
      validate_basis
      infer_concentration_relationships

    ambiguity_controls:
      distinguish_generic_concentration_from_specific_basis
      distinguish_amount_concentration_from_molality
      distinguish_mass_concentration_from_mass_fraction
      distinguish_mole_fraction_from_molarity
      distinguish_volume_fraction_from_mass_fraction
      distinguish_concentration_from_density
      distinguish_concentration_from_activity
      distinguish_ppm_ppb_and_percent_bases
      preserve_analyte_matrix_temperature_preparation_dilution_and_calibration_context
  }

  PROVENANCE {
    ontology_scope:
      mathematical_measurement_and_chemical_concentration_semantics

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

    authorship:
      Mark Higgins
      Sky (Recursive AI)

    site:
      https://kirethresearch.org
  }

  FLOW_HASH {
    INPUTS:
      canonical_domain
      ontology_path
      terminology_model
      unit_system
      amount_concentration_model
      mass_concentration_model
      molality_model
      fraction_model
      dilution_model
      density_conversion_model
      molarity_molality_conversion_model
      temperature_model
      mixture_model
      activity_distinction_model
      saturation_model
      analytical_calibration_model
      spectrophotometric_model
      chromatographic_model
      sample_preparation_model
      relationships
      constraints
      measurement_model
      uncertainty_model
      reasoning_rules
      confidence_model
      update_model

    PURPOSE:
      deterministic_semantic_integrity_identifier

    RECOMPUTE_WHEN:
      ontology_definition_changes
      concentration_basis_model_changes
      unit_model_changes
      dilution_model_changes
      density_or_molar_mass_conversion_changes
      temperature_model_changes
      sample_preparation_model_changes
      calibration_model_changes
      measurement_model_changes
      constraint_model_changes
      reasoning_rule_changes
  }

}

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