Skip to main content

Molarity Ontology

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

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

FLOW MolarityOntology {

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

  PURPOSE:
    Represent molarity as the common laboratory expression of amount concentration, defined as amount of a specified solute per unit volume of solution, including SI and laboratory units, dilution, solution preparation, temperature dependence, density and molar-mass conversions, stoichiometric use, analytical measurement, calibration, uncertainty, and distinctions from molality, mole fraction and mass concentration.

  ENTITY Molarity {
    TYPE: AmountConcentrationQuantity
    CANONICAL_NAME: AmountConcentration
    COMMON_SYMBOL: M
    FORMAL_SYMBOL: c
    DIMENSION: N * L^-3
    SI_UNIT: mole_per_cubic_metre
    SI_SYMBOL: mol/m^3

    COMMON_LAB_UNIT:
      mole_per_litre
      symbol: mol/L
      informal_symbol: M

    DEFINITION:
      molarity := amount_of_solute / volume_of_solution

    FORM:
      c = n_solute/V_solution

    PROPERTIES:
      is_scalar
      is_component_specific
      is_volume_based
      depends_on_solution_volume
      may_depend_on_temperature
      may_depend_on_pressure
      may_have_uncertainty
  }

  ENTITY SoluteAmount {
    SYMBOL: n_solute
    SI_UNIT: mole
    SI_SYMBOL: mol
  }

  ENTITY SolutionVolume {
    SYMBOL: V_solution
    SI_UNIT: cubic_metre
    SI_SYMBOL: m^3

    COMMON_UNIT:
      litre
      symbol: L
  }

  ENTITY MolarMass {
    SYMBOL: M_molar
    SI_UNIT: kilogram_per_mole
    SI_SYMBOL: kg/mol
  }

  UNIT_SYSTEM {
    SI:
      mol/m^3

    COMMON:
      mol/L
      mmol/L
      micromol/L
      nmol/L

    CONVERSIONS:
      1 mol/L = 1000 mol/m^3
      1 mmol/L = 1 mol/m^3
      1 micromol/L = 1e-3 mol/m^3

    RULE:
      preserve_original_unit_and_normalized_SI_value
  }

  TERMINOLOGY_MODEL {
    "molarity" ~= amount_concentration
      WHEN conventional_solution_chemistry_context

    "M" MAY mean:
      mol_per_litre_as_concentration_unit
      molar_mass_in_some_notational_contexts
      other_domain_specific_symbols

    RULE:
      symbol_M MUST be disambiguated_by_context
  }

  DEFINITION_MODEL {
    FORM:
      c = n_solute/V_solution

    INVERSE_AMOUNT:
      n_solute = c*V_solution

    INVERSE_VOLUME:
      V_solution = n_solute/c
      WHEN c != 0

    REQUIRE:
      specified_solute
      solution_volume
      volume != 0

    RULE:
      denominator_is_total_solution_volume
      NOT solvent_volume
  }

  SOLUTION_PREPARATION_MODEL {
    FROM_PURE_SOLUTE:
      required_amount =
        target_concentration*final_solution_volume

    required_mass:
      m_solute =
        target_concentration
        * final_solution_volume
        * molar_mass

    REQUIRE:
      solute_identity
      molar_mass
      purity
      target_concentration
      final_solution_volume

    purity_correction:
      weighed_mass =
        pure_required_mass/purity_fraction
      WHEN purity_fraction > 0

    RULE:
      solution_should_be_made_up_to_final_volume
      rather_than_assuming_solvent_volume_equals_solution_volume
  }

  DILUTION_MODEL {
    conserved_solute_amount:
      c_1*V_1 = c_2*V_2

    target_volume:
      V_2 = c_1*V_1/c_2
      WHEN c_2 != 0

    aliquot_volume:
      V_1 = c_2*V_2/c_1
      WHEN c_1 != 0

    CONDITIONS:
      same_solute
      no_reaction
      no_loss
      amount_concentration_basis

    RULE:
      dilution_relation assumes_conservation_of_solute_amount
  }

  SERIAL_DILUTION_MODEL {
    stage_factor:
      DF_i = V_final_i/V_aliquot_i

    total_dilution_factor:
      DF_total = product(DF_i)

    final_concentration:
      c_final = c_initial/DF_total

    original_from_measured:
      c_original = c_measured*DF_total

    RULE:
      dilution_factor_definition MUST be preserved
  }

  MASS_CONVERSION_MODEL {
    amount:
      n = m/M_molar

    amount_concentration:
      c = m/(M_molar*V_solution)

    mass_concentration:
      rho_solute = c*M_molar

    inverse:
      c = rho_solute/M_molar
      WHEN M_molar != 0

    RULE:
      molar_mass_and_chemical_identity MUST be preserved
  }

  TEMPERATURE_MODEL {
    principle:
      amount_of_solute_is_conserved_in_closed_nonreacting_sample
      while_solution_volume_may_change_with_temperature

    consequence:
      molarity_may_change_with_temperature

    approximation:
      c_2 = c_1*V_1/V_2

    RULE:
      precision_molarity SHOULD preserve_reference_temperature
  }

  DENSITY_RELATION_MODEL {
    mass_fraction_to_molarity:
      c_i = rho_solution*w_i/M_i

    REQUIRE:
      solution_density
      mass_fraction
      solute_molar_mass
      compatible_units

    RULE:
      density_should_correspond_to_relevant_temperature_and_composition
  }

  MOLALITY_DISTINCTION_MODEL {
    molarity:
      c = n_solute/V_solution

    molality:
      b = n_solute/m_solvent

    molarity_basis:
      solution_volume

    molality_basis:
      solvent_mass

    RULE:
      molarity != molality
      and_conversion_requires_density_composition_and_molar_mass_context
  }

  MOLE_FRACTION_DISTINCTION_MODEL {
    mole_fraction:
      x_i = n_i/n_total

    molarity:
      c_i = n_i/V_solution

    RULE:
      mole_fraction_is_dimensionless
      molarity_has_amount_per_volume_dimension
  }

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

    amount_from_solution:
      n_i = c_i*V_i

    reaction_relation:
      n_i/abs(nu_i)
      compared_across_reactants
      under_stoichiometric_consumption

    RULE:
      balanced_reaction_required_for_stoichiometric_molarity_reasoning
  }

  TITRATION_MODEL {
    analyte_amount:
      n_analyte =
        n_titrant
        * abs(nu_analyte/nu_titrant)
      at_equivalence

    titrant_amount:
      n_titrant = c_titrant*V_titrant

    analyte_concentration:
      c_analyte =
        n_analyte/V_analyte
      WHEN V_analyte != 0

    RULE:
      one_to_one_cV_equality ONLY valid_for_1_to_1_stoichiometry
  }

  MIXTURE_MODEL {
    simple_mixing_same_solute:
      c_final =
        sum(c_i*V_i)/V_final

    CONDITIONS:
      same_solute
      no_reaction
      solute_amount_conserved

    RULE:
      V_final SHOULD be measured_or_validly_modelled
      rather_than_unconditionally_assumed_equal_to_sum_of_component_volumes
  }

  ACTIVITY_DISTINCTION_MODEL {
    activity:
      a_i = gamma_i*(c_i/c_standard)
      under_concentration_standard_state_convention

    ideal_dilute:
      gamma_i approximately_equals 1

    RULE:
      molarity != activity
  }

  ANALYTICAL_MODEL {
    measurement_methods:
      titration
      spectrophotometry
      chromatography
      electrochemistry
      gravimetric_preparation
      standard_solution_comparison

    generic_calibration:
      response = f(c)

    RULE:
      instrument_response MUST be mapped_to_molarity_through_valid_calibration_or_physical_model
  }

  RELATIONSHIPS {
    Molarity -> IS_A -> AmountConcentration
    Molarity -> RELATES -> SoluteAmountAndSolutionVolume
    Molarity -> MEASURED_IN -> MolePerCubicMetre
    Molarity -> COMMONLY_EXPRESSED_IN -> MolePerLitre
    Molarity -> MAY_CHANGE_WITH -> Temperature
    Molarity -> ENABLES -> StoichiometricAmountCalculation
    MolarMass -> ENABLES -> MassToMolarityConversion
    Density -> ENABLES -> MassFractionToMolarityConversion
    Dilution -> CHANGES -> Molarity
    CalibrationModel -> MAPS -> AnalyticalResponseToMolarity
  }

  SEMANTIC_EQUIVALENCE {
    "molarity" ~= amount_concentration
    "molar concentration" ~= amount_concentration
    "mol/L" ~= mole_per_litre

    molarity != molality
    molarity != mole_fraction
    molarity != mass_concentration
    molarity != activity
    molarity != solution_density
    solution_volume != solvent_volume
  }

  CONSTRAINTS {
    solute_identity_must_be_defined = true
    solution_volume_must_be_nonzero = true
    molarity_is_amount_per_solution_volume = true
    SI_unit = mol/m^3
    common_lab_unit = mol/L
    molarity_and_molality_are_not_semantically_equivalent = true
    molarity_and_mole_fraction_are_not_semantically_equivalent = true
    temperature_should_be_preserved_for_precision_measurements = true
    dilution_requires_solute_amount_conservation = true
    stoichiometric_reasoning_requires_balanced_reaction = true
  }

  MEASUREMENT_MODEL {
    OBSERVABLE_OR_INFERRED:
      Molarity

    RECORD:
      solute
      chemical_formula_or_entity
      numerical_value
      unit
      solution_volume
      solute_amount
      solute_mass_when_relevant
      molar_mass
      purity
      solvent
      matrix
      temperature
      pressure_when_relevant
      density_when_relevant
      dilution_factor
      preparation_history
      measurement_method
      calibration_model
      calibration_range
      timestamp
      uncertainty

    UNCERTAINTY:
      measured_or_prepared_molarity = best_estimate +/- uncertainty
  }

  CALIBRATION_MODEL {
    volumetric_preparation:
      requires_calibrated_mass_and_volume_measurements

    analytical_calibration:
      response = f(c)

    REQUIRE:
      standards
      concentration_values
      matrix_compatibility
      valid_range
      blank
      traceability
      uncertainty

    RULE:
      calibration_standards_and_unknown SHOULD use_compatible_molarity_definition
  }

  UNCERTAINTY_MODEL {
    sources:
      solute_mass
      molar_mass
      purity
      solution_volume
      volumetric_glassware
      temperature
      density
      dilution
      calibration
      blank
      recovery
      instrument_repeatability
      sample_preparation

    PROPAGATION:
      derived_molarity_uncertainty
      <- amount_volume_preparation_and_calibration_uncertainties
  }

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

    IF molarity_known AND solution_volume_known
      THEN solute_amount = molarity*solution_volume

    IF solute_mass_known AND molar_mass != 0
      AND solution_volume != 0
      THEN molarity =
        solute_mass/(molar_mass*solution_volume)

    IF molarity_known AND molar_mass_known
      THEN mass_concentration =
        molarity*molar_mass

    IF initial_molarity_and_volume_known
      AND final_volume != 0
      AND solute_amount_conserved
      THEN final_molarity =
        initial_molarity*initial_volume/final_volume

    IF serial_dilution_factors_known
      THEN total_dilution_factor =
        product(stage_dilution_factors)

    IF measured_diluted_molarity_known
      AND total_dilution_factor_known
      THEN original_molarity =
        measured_diluted_molarity*total_dilution_factor

    IF solution_density_mass_fraction_and_molar_mass_known
      AND molar_mass != 0
      THEN molarity =
        solution_density*mass_fraction/molar_mass

    IF titration_equivalence_and_balanced_reaction_known
      THEN infer_unknown_molarity_from_stoichiometric_amount_relation
  }

  VALIDATION {
    CHECK solute_identity
    CHECK unit_consistency
    CHECK solution_volume_nonzero
    CHECK solution_volume_vs_solvent_volume
    CHECK molarity_vs_molality
    CHECK molarity_vs_mole_fraction
    CHECK molarity_vs_mass_concentration
    CHECK molarity_vs_activity
    CHECK temperature_for_precision_volume_measurement
    CHECK molar_mass_and_purity_when_mass_prepared
    CHECK dilution_factor_definition
    CHECK solute_conservation
    CHECK balanced_reaction_for_stoichiometry
    CHECK calibration_range
    CHECK uncertainty_representation
  }

  CONFIDENCE {
    definition_confidence: 1.00
    dimensional_confidence: 1.00
    SI_unit_confidence: 1.00
    dilution_relationship_confidence: 1.00
    mass_conversion_confidence: 0.99
    measurement_context_confidence: 0.98

    RULE:
      confidence decreases when solute identity, solution volume,
      temperature, molar mass, purity, dilution,
      calibration or uncertainty is missing or ambiguous
  }

  UPDATE_MODEL {
    ON new_measurement_or_preparation:
      identify_solute
      validate_unit
      identify_solution_volume
      attach_solute_amount_or_mass
      attach_molar_mass_and_purity_when_relevant
      attach_solvent_and_matrix
      attach_temperature
      attach_density_when_relevant
      attach_dilution_and_preparation_history
      normalize_to_mol_per_m3
      preserve_original_value_and_unit
      attach_uncertainty
      update_molarity_state

    ON dilution:
      preserve_initial_molarity_and_volume
      update_final_volume
      recompute_molarity
      preserve_solute_amount_when_valid

    ON temperature_change:
      update_temperature
      update_solution_volume_when_model_available
      recompute_molarity
      preserve_solute_amount

    ON basis_conversion:
      validate_density_molar_mass_and_units
      preserve_original_basis
      compute_target_composition_quantity
      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_entity: Molarity
    canonical_equivalent: AmountConcentration
    canonical_symbol: c
    canonical_dimension: N*L^-3
    canonical_SI_unit: mol/m^3
    common_lab_unit: mol/L

    interpretation_order:
      identify_solute
      identify_value
      identify_unit
      confirm_amount_concentration_basis
      identify_solution_volume
      identify_amount_or_mass_inputs
      identify_molar_mass_and_purity
      identify_temperature
      identify_density_when_relevant
      identify_dilution_and_preparation_history
      identify_stoichiometric_context
      identify_measurement_or_calibration_method
      identify_uncertainty
      normalize_units
      validate_basis
      infer_solution_relationships

    ambiguity_controls:
      distinguish_molarity_from_molality
      distinguish_molarity_from_mole_fraction
      distinguish_molarity_from_mass_concentration
      distinguish_molarity_from_activity
      distinguish_solution_volume_from_solvent_volume
      distinguish_symbol_M_as_unit_from_molar_mass_symbol
      distinguish_simple_dilution_from_reactive_or_nonideal_mixing
      preserve_solute_temperature_preparation_dilution_and_calibration_context
  }

  PROVENANCE {
    ontology_scope:
      mathematical_measurement_and_chemical_molarity_semantics

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

    authorship:
      Mark Higgins
      Sky (Recursive AI)

    site:
      https://kirethresearch.org
  }

  FLOW_HASH {
    INPUTS:
      canonical_entity
      ontology_path
      terminology_model
      definition_model
      unit_system
      solution_preparation_model
      dilution_model
      serial_dilution_model
      mass_conversion_model
      temperature_model
      density_relation_model
      molality_distinction_model
      mole_fraction_distinction_model
      stoichiometry_model
      titration_model
      mixture_model
      activity_distinction_model
      analytical_model
      relationships
      constraints
      measurement_model
      calibration_model
      uncertainty_model
      reasoning_rules
      confidence_model
      update_model

    PURPOSE:
      deterministic_semantic_integrity_identifier

    RECOMPUTE_WHEN:
      ontology_definition_changes
      molarity_basis_model_changes
      unit_model_changes
      solution_preparation_model_changes
      dilution_model_changes
      mass_or_density_conversion_changes
      temperature_model_changes
      stoichiometry_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