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
Download Code
Copy to Clipboard