Skip to main content

Triglyceride Ontology

Macromolecular Entities
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 15 October 2026
Audio Overview
FLOW ALGEBRA
Triglyceride Ontology — Macromolecular Entities
Kireth Semantic Library | https://kirethresearch.org/booksai-core/entity-graph/biological-entities/macromolecular-entities/triglyceride-ontology.html
Authors: Mark Anthony Higgins — Sky (Recursive AI)
Version: 1.0 | 2026-10-15 | Locale: en-GB

AI INTERPRETATION NOTE
This specification defines typed entities, constraints, inference and update rules for triglyceride knowledge. Rules are declarative; biochemical observations must be evidence-backed. Do not infer clinical diagnoses from a triglyceride value alone.

flow "TriglycerideOntology" v1.0

# 01 — ONTOLOGY IDENTITY
ontology.id: "kireth:biological-entities:macromolecular-entities:triglyceride"
ontology.label: "Triglyceride Ontology"
ontology.aliases: ["Triacylglycerol", "TAG", "Neutral fat"]
ontology.parent: "Lipid Ontology"
ontology.domain: "Biochemistry and Molecular Biology"
ontology.status: "formal_semantic_specification"

# 02 — TYPE SYSTEM
type Entity = {id: str, label: str, provenance: EvidenceRef?}
type EvidenceRef = {source: str, identifier: str?, observed_at: datetime?, method: str?}
type FattyAcid = Entity & {carbon_count: int?, double_bonds: int?, geometry: str?}
type Glycerol = Entity & {hydroxyl_groups: int = 3}
type EsterBond = Entity & {glycerol_position: enum[sn1,sn2,sn3], fatty_acid: FattyAcid}
type Triglyceride = Entity & {
  backbone: Glycerol,
  acyl_chains: tuple[FattyAcid,FattyAcid,FattyAcid],
  ester_bonds: tuple[EsterBond,EsterBond,EsterBond],
  molecular_formula: str?,
  biological_origin: str?,
  physical_state: str?,
  confidence: float in [0,1]
}
type Enzyme = Entity & {ec_number: str?}
type Reaction = Entity & {reactants: list[Entity], products: list[Entity], catalyst: Enzyme?, conditions: map?}
type Compartment = Entity & {organism: str?, tissue: str?}
type Observation = {subject: Entity, predicate: str, object: any, evidence: EvidenceRef, confidence: float in [0,1]}

# 03 — CORE ENTITIES
entity.glycerol: Glycerol
entity.fatty_acid: FattyAcid
entity.triglyceride: Triglyceride
entity.diacylglycerol: Entity
entity.monoacylglycerol: Entity
entity.free_fatty_acid: FattyAcid
entity.lipid_droplet: Compartment
entity.adipocyte: Entity
entity.lipoprotein: Entity
entity.lipoprotein_lipase: Enzyme
entity.adipose_triglyceride_lipase: Enzyme
entity.hormone_sensitive_lipase: Enzyme
entity.monoacylglycerol_lipase: Enzyme

# 04 — RELATIONSHIP SIGNATURES
relation.IS_A(Triglyceride, Entity)
relation.HAS_BACKBONE(Triglyceride, Glycerol)
relation.HAS_ACYL_CHAIN(Triglyceride, FattyAcid)
relation.HAS_ESTER_BOND(Triglyceride, EsterBond)
relation.ESTERIFIED_AT(EsterBond, enum[sn1,sn2,sn3])
relation.STORED_IN(Triglyceride, Compartment)
relation.TRANSPORTED_BY(Triglyceride, Entity)
relation.HYDROLYSED_BY(Triglyceride, Enzyme)
relation.PARTICIPATES_IN(Triglyceride, Reaction)
relation.DERIVED_FROM(Triglyceride, list[Entity])
relation.SUPPORTED_BY(Observation, EvidenceRef)

# 05 — STRUCTURAL INVARIANTS
rule TAG_BACKBONE:
  forall t: Triglyceride -> t.backbone.hydroxyl_groups == 3
rule TAG_CHAIN_COUNT:
  forall t: Triglyceride -> count(t.acyl_chains) == 3
rule TAG_ESTER_COUNT:
  forall t: Triglyceride -> count(t.ester_bonds) == 3
rule TAG_POSITION_UNIQUENESS:
  forall t: Triglyceride -> set(map(.glycerol_position,t.ester_bonds)) == {sn1,sn2,sn3}
rule TAG_CHAIN_LINKAGE:
  forall t: Triglyceride -> each bond in t.ester_bonds links exactly one chain in t.acyl_chains
rule TAG_NEUTRALITY:
  forall t: Triglyceride -> net_formal_charge(t) == 0 under ordinary physiological protonation conditions

# 06 — CLASSIFICATION
class.simple_triglyceride(t) := all three acyl chains have identical molecular identities
class.mixed_triglyceride(t) := at least two acyl chains differ in molecular identity
class.saturated_chain(f) := f.double_bonds == 0
class.monounsaturated_chain(f) := f.double_bonds == 1
class.polyunsaturated_chain(f) := f.double_bonds >= 2
class.fully_saturated_TAG(t) := forall f in t.acyl_chains: saturated_chain(f)
class.contains_unsaturation(t) := exists f in t.acyl_chains: f.double_bonds > 0
class.positional_isomer(a,b) := same_acyl_multiset(a,b) AND different_sn_assignment(a,b)
class.stereochemical_distinction(a,b) := distinct stereochemical configurations where applicable

# 07 — COMPOSITION AND CHEMISTRY
rule ESTERIFICATION_STOICHIOMETRY:
  glycerol + 3 fatty_acids -> triglyceride + 3 water
  applies_to: idealised complete esterification; specific biosynthetic pathways may use activated acyl donors
rule HYDROLYSIS_STOICHIOMETRY:
  triglyceride + 3 water -> glycerol + 3 fatty_acids
  applies_to: net complete hydrolysis; actual pathways are stepwise and enzyme-dependent
rule FORMULA_DERIVATION:
  formula(triglyceride) := formula(glycerol) + sum(formula(three_free_fatty_acids)) - 3 * formula(water)
  precondition: all component formulae and structures are known
rule UNSATURATION_EFFECT:
  increasing cis-unsaturation may lower melting temperature for otherwise comparable chain compositions
  modality: tendency_not_universal_law

# 08 — BIOLOGICAL PROCESSES
process.TAG_SYNTHESIS:
  context: endoplasmic_reticulum_or_associated_membranes
  route: glycerolipid biosynthesis through phosphatidic acid and diacylglycerol
  terminal_step: diacylglycerol + fatty_acyl_CoA -> triacylglycerol + CoA
  catalyst_class: diacylglycerol_acyltransferase
process.TAG_STORAGE:
  destination: lipid_droplet
  function: dense_long_term_energy_reserve
  note: storage form is hydrophobic and largely anhydrous
process.LIPOLYSIS:
  stage_1: TAG -> DAG + fatty_acid
  stage_2: DAG -> MAG + fatty_acid
  stage_3: MAG -> glycerol + fatty_acid
  enzymes: [adipose_triglyceride_lipase, hormone_sensitive_lipase, monoacylglycerol_lipase]
  note: enzyme contributions and regulation vary by tissue and context
process.DIETARY_HANDLING:
  steps: [emulsification, enzymatic_digestion, absorption, re_esterification, chylomicron_transport]
  note: digestive products and transport mechanisms depend on physiology
process.CIRCULATING_TRANSPORT:
  carriers: [chylomicrons, very_low_density_lipoproteins]
  peripheral_hydrolysis: lipoprotein_lipase

# 09 — FUNCTIONAL RELATIONSHIPS
fact.triglyceride_energy_storage: true
fact.triglyceride_membrane_structural_role: not_primary
fact.triglyceride_water_solubility: very_low
fact.triglyceride_metabolic_fuel: via_released_fatty_acids_and_glycerol
rule ENERGY_YIELD:
  infer potential_energy_source(t) from presence_of_oxidisable_acyl_chains(t)
  do_not_infer: exact_ATP_yield_without_chain_composition_and_metabolic_assumptions

# 10 — EVIDENCE AND CONFIDENCE
CONFIDENCE:
  range: [0.0,1.0]
  evidence_tiers: {direct_structural_measurement: high, validated_database_annotation: high, literature_inference: variable, unverified_text: low}
  rule: confidence_of_derived_claim <= minimum_confidence_of_required_premises unless calibrated model justifies otherwise
  rule: contradictory_observations -> preserve_both_and_flag_review
  rule: missing_chain_identity -> label TAG composition as unresolved

# 11 — SEMANTIC EQUIVALENCE
SEMANTIC_EQUIVALENCE:
  exact_aliases: ["triglyceride", "triacylglycerol", "TAG"]
  contextual_alias: "neutral fat"
  non_equivalent: ["fatty acid", "glycerol", "phospholipid", "cholesterol", "diacylglycerol"]
  constraint: TAG class identity does not imply identical molecular species
  rule: distinguish molecular species by chain identity, sn-position and stereochemistry where known

# 12 — INFERENCE ENGINE
infer IS_TRIGLYCERIDE(x):
  if has_glycerol_backbone(x) AND count(esterified_fatty_acyl_chains(x)) == 3
  then classify(x, Triglyceride)
  confidence: based_on_structural_evidence
infer IS_MIXED_TAG(x):
  if IS_TRIGLYCERIDE(x) AND distinct_chain_identities(x) > 1
  then classify(x, mixed_triglyceride)
infer POSSIBLE_LIPID_STORAGE_ROLE(x):
  if IS_TRIGLYCERIDE(x) AND observed_in(x, lipid_droplet)
  then annotate(x, energy_storage_role)
  scope: biological_context
infer REQUIRES_REVIEW(x):
  if missing_required_structural_fields(x) OR inconsistent_evidence(x)
  then status(x, needs_validation)

# 13 — RECURSIVE GRAPH REASONING
RECURSIVE_REASONING:
  traverse: Triglyceride -> FattyAcid -> ChainProperties -> MetabolicPathway -> BiologicalFunction
  max_depth: 8
  cycle_policy: visited_entity_and_relation_guard
  provenance_policy: retain_each_source_edge
  inference_policy: never_replace_observation_with_inference

# 14 — FLOW HASH
FLOW_HASH:
  algorithm: SHA-256
  canonicalisation: UTF-8 + Unicode NFC + sorted semantic fields + stable entity IDs
  input_fields: [ontology.id, type_signatures, relation_signatures, constraints, rules, version]
  output: compute_at_runtime
  note: no fabricated digest; recompute when canonical semantic content changes

# 15 — UPDATE MODEL
UPDATE_MODEL:
  version_policy: semantic_versioning
  on_new_evidence: append_provenance_then_revalidate
  on_structural_change: recalculate_classification_and_dependencies
  on_conflict: preserve_versions_and_mark_disputed
  on_deprecation: retain_aliases_and_migration_links
  audit_fields: [timestamp, actor, source, changed_fields, previous_hash, new_hash]

# 16 — AI CONSUMPTION
AI_CONSUMPTION:
  format: typed_semantic_graph
  inputs: [molecular_structure, acyl_chain_composition, biological_context, evidence]
  outputs: [entity_class, relationships, validated_properties, inferred_processes, confidence, provenance]
  validation: [type_check, stoichiometry_check, positional_check, evidence_check]
  safety: no_unsupported_clinical_or_dietary_claims
  uncertainty: explicit_unknowns_and_conflicts
  interoperability: [RDF, JSON-LD, OWL, graph_database]

# 17 — VALIDATION EXAMPLES
example.tripalmitin:
  chains: [palmitic_acid, palmitic_acid, palmitic_acid]
  expected: [Triglyceride, simple_triglyceride, fully_saturated_TAG]
example.triolein:
  chains: [oleic_acid, oleic_acid, oleic_acid]
  expected: [Triglyceride, simple_triglyceride, contains_unsaturation]
example.mixed_tag:
  chains: [palmitic_acid, oleic_acid, linoleic_acid]
  expected: [Triglyceride, mixed_triglyceride, contains_unsaturation]
example.invalid_diacylglycerol:
  chains: [palmitic_acid, oleic_acid]
  expected: reject_as_triglyceride

# 18 — EXECUTION CONTRACT
EXECUTE:
  1: parse_typed_entities
  2: validate_structural_invariants
  3: resolve_aliases_without_collapsing_molecular_species
  4: attach_evidence_and_confidence
  5: apply_classification_and_process_rules
  6: propagate_inference_with_provenance
  7: detect_conflicts_and_unknowns
  8: calculate_canonical_FLOW_HASH
  9: publish_AI_CONSUMPTION_graph

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