FLOW ALGEBRA
Fatty Acid Ontology — Biological Entities / Macromolecular Entities
Version: 1.0
Source: https://kirethresearch.org/booksai-core/entity-graph/biological-entities/macromolecular-entities/fatty-acid-ontology.html
Authors: Mark Higgins — Sky (Recursive AI)
01. ONTOLOGY IDENTITY
ontology FattyAcidOntology {
domain: BiologicalEntity
parent: LipidRelatedMolecularEntity
entity: FattyAcid
definition: "Carboxylic acid with a hydrocarbon chain, typically participating in biological lipid metabolism and structure."
scope: [structure, classification, properties, reactions, metabolism, biological_roles]
}
02. ENTITY TYPES
entity FattyAcid {
id: URI
preferred_name: string
synonyms: list<string>
molecular_formula: string?
carbon_count: integer >= 1
double_bond_count: integer >= 0
double_bond_positions: list<integer>
double_bond_geometry: list<cis|trans|unspecified>
chain_topology: straight|branched|cyclic|other
chain_length_class: short|medium|long|very_long|context_dependent
saturation: saturated|monounsaturated|polyunsaturated
omega_family: integer?
charge_state: string?
conjugate_base: FattyAcidAnion?
biological_source: list<BiologicalEntity>
confidence: real in [0,1]
provenance: list<SourceRecord>
}
entity Lipid { id: URI; lipid_class: string }
entity Enzyme { id: URI; catalytic_activity: string }
entity Organism { id: URI; taxon: string }
entity MetabolicPathway { id: URI; name: string }
entity Membrane { id: URI; organism: Organism? }
entity SourceRecord { id: URI; citation: string; observed_at: datetime? }
03. SUBCLASS AND CLASSIFICATION RULES
FattyAcid -> CarboxylicAcid
SaturatedFattyAcid subset FattyAcid
MonounsaturatedFattyAcid subset FattyAcid
PolyunsaturatedFattyAcid subset FattyAcid
EssentialFattyAcid subset FattyAcid [organism_dependent]
rule SATURATION:
double_bond_count = 0 => saturated
double_bond_count = 1 => monounsaturated
double_bond_count >= 2 => polyunsaturated
rule OMEGA_FAMILY:
requires straight-chain convention and known terminal double-bond position
omega_family = carbon_count - max(double_bond_positions)
positions measured from carboxyl carbon, starting at C1
do not infer omega_family if positions are unknown
rule VALIDATION:
carbon_count >= 1
0 <= double_bond_count <= max_chemically_possible(carbon_count, structure)
length(double_bond_positions) = double_bond_count when fully annotated
length(double_bond_geometry) = double_bond_count when fully annotated
all double_bond_positions refer to valid adjacent carbon positions
saturated => double_bond_positions = []
classifications must be supported by structure and stated conventions
04. TYPED RELATIONSHIPS
FattyAcid --is_a--> CarboxylicAcid
FattyAcid --has_functional_group--> CarboxylGroup
FattyAcid --has_chain--> HydrocarbonChain
FattyAcid --has_conjugate_base--> FattyAcidAnion
FattyAcid --is_component_of--> ComplexLipid
FattyAcid --is_esterified_in--> Triacylglycerol|Phospholipid|OtherLipid
FattyAcid --is_substrate_of--> Enzyme
FattyAcid --participates_in--> MetabolicPathway
FattyAcid --can_be_oxidised_via--> BetaOxidation
FattyAcid --can_be_synthesised_via--> FattyAcidSynthesis
FattyAcid --modulates--> MembraneProperties
FattyAcid --is_essential_for--> Organism [when organism cannot synthesise adequate quantities]
FattyAcid --derived_from--> BiologicalSource
FattyAcid --supported_by--> SourceRecord
05. BIOLOGICAL PROCESSES
flow FattyAcidActivation:
inputs: [FattyAcid, CoenzymeA, ATP]
enzyme_class: AcylCoASynthetase
outputs: [FattyAcylCoA, AMP, Pyrophosphate]
conditions: [appropriate_compartment, enzyme_available]
flow BetaOxidation:
input: FattyAcylCoA
stages: [oxidation, hydration, oxidation, thiolysis]
outputs_per_standard_cycle: [shortened_FattyAcylCoA, AcetylCoA, FADH2, NADH]
qualifiers: [chain_length, unsaturation, compartment, organism]
note: "Additional enzymes and alternative pathways may be required."
flow FattyAcidSynthesis:
substrates: [AcetylCoA_derived_primer, MalonylCoA, NADPH]
catalyst: FattyAcidSynthase_or_equivalent
outputs: [FattyAcidProduct]
qualifiers: [organism, cellular_compartment, enzyme_system]
flow Esterification:
inputs: [FattyAcidDerivedAcylGroup, AlcoholContainingMolecule]
output: EsterifiedLipid
note: "Reaction mechanisms and activated substrates depend on pathway."
06. CANONICAL EXAMPLES
PalmiticAcid: C16:0; saturated; 16 carbons
StearicAcid: C18:0; saturated; 18 carbons
OleicAcid: C18:1 cis-delta9; monounsaturated; omega-9
LinoleicAcid: C18:2 cis-delta9,12; polyunsaturated; omega-6
AlphaLinolenicAcid: C18:3 cis-delta9,12,15; polyunsaturated; omega-3
ArachidonicAcid: C20:4 cis-delta5,8,11,14; polyunsaturated; omega-6
07. INFERENCE RULES
rule R1:
IF FattyAcid(x) AND double_bond_count(x)=0
THEN SaturatedFattyAcid(x)
rule R2:
IF FattyAcid(x) AND double_bond_count(x)=1
THEN MonounsaturatedFattyAcid(x)
rule R3:
IF FattyAcid(x) AND double_bond_count(x)>=2
THEN PolyunsaturatedFattyAcid(x)
rule R4:
IF FattyAcid(x) AND omega_family(x)=3
THEN Omega3FattyAcid(x)
rule R5:
IF FattyAcid(x) AND required_by(x, organism) AND
insufficient_endogenous_synthesis(x, organism)
THEN EssentialFattyAcidFor(x, organism)
rule R6:
IF is_esterified_in(x, lipid)
THEN is_component_of(x, lipid)
WITH context: "x denotes the fatty-acyl moiety derived from the acid"
08. SEMANTIC EQUIVALENCE AND DIFFERENCE
semantic_equivalence:
"octadecanoic acid" <=> "stearic acid" [same chemical species and protonation convention]
"cis-9-octadecenoic acid" <=> "oleic acid" [specified stereochemistry]
semantic_difference:
FattyAcid != FattyAcidAnion
FattyAcid != FattyAcylCoA
FattyAcid != Triacylglycerol
omega_family != double_bond_count
essential_for_humans != essential_for_all_organisms
09. CONFIDENCE AND PROVENANCE
confidence_model:
verified_structure: 0.99
curated_reference: 0.95
peer_reviewed_contextual_claim: 0.90
computational_prediction: variable
unverified_claim: requires_review
rule EVIDENCE:
attach provenance to each nontrivial biochemical assertion
store evidence_type, source, date, organism, method, confidence
do not treat example confidence values as calibrated probabilities
10. RECURSIVE SEMANTIC FLOW
flow FattyAcidReasoning(query):
entity = resolve_entity(query)
structure = retrieve_structure(entity)
validated = validate(structure, ontology_constraints)
classes = classify(validated)
relations = traverse_typed_relations(entity, depth_limit=3)
pathways = infer_applicable_pathways(entity, biological_context)
evidence = attach_provenance(classes, relations, pathways)
confidence = aggregate_confidence(evidence, context_sensitive=true)
result = compose_answer(entity, classes, relations, pathways, confidence)
return result
11. FLOW HASH AND UPDATE MODEL
FLOW_HASH:
algorithm: SHA-256
input: canonical_serialisation(ontology_version, entity_schema, rules, relationships)
value: compute_at_publication
UPDATE_MODEL:
change_detection: [new_evidence, revised_classification, structure_correction, nomenclature_change]
steps: [validate, compare_versions, record_provenance, recompute_hash, publish]
preserve_previous_versions: true
12. AI CONSUMPTION
AI_CONSUMPTION:
format: text/plain; charset=UTF-8
schema: typed_entity_relationship_graph
reasoning: [classification, traversal, constrained_inference, evidence_tracking]
disambiguation: [free_acid_vs_anion, acyl_group_vs_parent_acid, species_specific_essentiality]
uncertainty: explicit
unsupported_inference: prohibited
applications: [biochemical_education, semantic_search, molecular_knowledge_graphs, pathway_reasoning]
END FLOW ALGEBRA
Download Code
Copy to Clipboard