FLOW ALGEBRA
BIOLOGICAL STRUCTURE ONTOLOGY
Version: 1.0
Date: 2026-10-15
Source: https://kirethresearch.org/booksai-core/entity-graph/biological-entities/foundations-of-biological-entities/biological-structure-ontology-2.html
Authors: Mark Higgins — Sky (Recursive AI)
Licence: Open Research Licence — freely reusable for research and education.
PURPOSE
Represent biological structures as typed, contextualised entities linked by composition, spatial organisation, developmental origin, function, and evidence. This is a companion formalisation of the named ontology, not a claim of verbatim extraction from the page.
ENTITY TYPES
BiologicalStructure := {id, label, taxon, level, location?, developmental_stage?, state?, provenance}
StructuralComponent := {id, parent_id, component_type, cardinality?, arrangement?}
MolecularStructure := BiologicalStructure where level = molecular
SubcellularStructure := BiologicalStructure where level = subcellular
CellularStructure := BiologicalStructure where level = cellular
TissueStructure := BiologicalStructure where level = tissue
OrganStructure := BiologicalStructure where level = organ
OrganSystemStructure := BiologicalStructure where level = organ_system
OrganismalStructure := BiologicalStructure where level = organismal
AnatomicalRegion := {id, spatial_frame, boundaries?, taxon}
StructuralFeature := {id, morphology, geometry?, scale?, measurement?}
Observation := {id, target_id, method, timestamp?, result, uncertainty?, source}
TYPED RELATIONSHIPS
PART_OF: BiologicalStructure × BiologicalStructure -> Boolean
HAS_PART: BiologicalStructure × BiologicalStructure -> Boolean
LOCATED_IN: BiologicalStructure × AnatomicalRegion -> Boolean
ADJACENT_TO: BiologicalStructure × BiologicalStructure -> Boolean
CONNECTED_TO: BiologicalStructure × BiologicalStructure -> Boolean
DEVELOPS_FROM: BiologicalStructure × BiologicalStructure -> Boolean
SUPPORTS_FUNCTION: BiologicalStructure × BiologicalFunction -> EvidenceQualifiedClaim
HOMOLOGOUS_TO: BiologicalStructure × BiologicalStructure -> EvidenceQualifiedClaim
ANALOGOUS_TO: BiologicalStructure × BiologicalStructure -> EvidenceQualifiedClaim
OBSERVED_BY: BiologicalStructure × Observation -> Boolean
FLOW ALGEBRA
flow BiologicalStructureGraph v1.0 {
input: BiologicalStructure[] structures, Relationship[] edges, Observation[] evidence
output: ValidatedStructureGraph graph, Finding[] findings
step 1: normalise_identifiers(structures)
step 2: resolve_taxonomic_and_developmental_context(structures)
step 3: type_check_entities_and_edges(structures, edges)
step 4: validate_part_whole_constraints(edges)
step 5: validate_spatial_and_temporal_qualifiers(edges)
step 6: attach_evidence_and_provenance(edges, evidence)
step 7: detect_conflicts_and_unsupported_inferences()
step 8: derive_permitted_relationships()
step 9: assign_confidence_by_claim()
step 10: canonicalise_and_hash_graph()
step 11: publish_machine_readable_output()
}
STRUCTURAL AXIOMS AND CONSTRAINTS
A1. PART_OF(a,b) implies HAS_PART(b,a), for the same context and time.
A2. PART_OF(a,a) is false for strict parthood.
A3. PART_OF(a,b) and PART_OF(b,c) may imply PART_OF(a,c) when all edges denote strict structural parthood in a compatible context.
A4. A strict PART_OF graph must be acyclic within a single consistent snapshot.
A5. ADJACENT_TO(a,b) implies ADJACENT_TO(b,a) when adjacency uses the same spatial definition.
A6. CONNECTED_TO is not automatically equivalent to PART_OF or ADJACENT_TO.
A7. DEVELOPS_FROM is directional; it does not imply structural identity.
A8. HOMOLOGOUS_TO is an evolutionary claim and requires evidence; it is not synonymous with analogous function.
A9. Structural similarity does not by itself prove homology or functional equivalence.
A10. Missing evidence is UNKNOWN, not FALSE.
INFERENCE RULES
R1: PART_OF(x,y) AND PART_OF(y,z) AND compatible_context(x,y,z)
=> PART_OF(x,z) [derived, context_bound]
R2: PART_OF(x,y) => HAS_PART(y,x) [inverse]
R3: ADJACENT_TO(x,y) => ADJACENT_TO(y,x) [symmetric, same_frame]
R4: OBSERVED_BY(x,o) AND validates(o, feature)
=> supported_feature(x,feature) [evidence_qualified]
R5: supports_function(x,f) AND observed_function(x,f)
=> corroborated_function(x,f) [not absolute proof]
SEMANTIC_EQUIVALENCE
Two identifiers may be merged only when taxon, developmental stage, structural granularity, reference frame, and identity evidence are compatible. Synonymy is distinguished from homology, analogy, similarity, and exact identity. Record mapping type, scope, provenance, and confidence.
VALIDATION
- Unique persistent IDs; valid typed endpoints and permitted predicates.
- No strict-part cycles or self-parthood.
- Consistent taxonomic, temporal, and spatial context.
- Measurement units and scale explicit where applicable.
- Evidence attached to empirical claims; inferred edges marked as inferred.
- Conflicts preserved for review rather than silently overwritten.
CONFIDENCE
CONFIDENCE(claim) := {score: 0..1, method, evidence_ids, assumptions, limitations}
Confidence is calibrated to evidence and method; it is not proof probability. Derived confidence must not exceed warranted evidence strength. Unknown and unverified remain explicit statuses.
PROVENANCE
PROVENANCE := {source_uri, author_or_institution?, observation_method?, created_at?, version, licence?, evidence_id?}
Each assertion retains its own provenance, including transformations and inferred relationships.
FLOW_HASH
FLOW_HASH := SHA256(canonical_serialisation(ontology_version, entity_types, relations, axioms, inference_rules, context, evidence_references))
A hash identifies a canonicalised version; it does not establish scientific correctness.
UPDATE_MODEL
On new evidence: validate -> compare versions -> retain history -> mark superseded claims -> recompute affected derived edges -> refresh confidence -> regenerate FLOW_HASH -> publish change log. Never erase the original evidence trail.
AI_CONSUMPTION
Expose typed nodes and edges, context qualifiers, evidence, confidence, validation status, ontology version, and stable identifiers. AI systems must distinguish asserted from inferred claims, avoid unsupported taxonomic generalisation, and report unresolved ambiguities.
EXAMPLE
entity: CELL_MEMBRANE_001 type=CellularStructure taxon=Homo_sapiens
entity: CELL_001 type=CellularStructure taxon=Homo_sapiens
relation: PART_OF(CELL_MEMBRANE_001, CELL_001)
result: HAS_PART(CELL_001, CELL_MEMBRANE_001) [derived by R2]
END FLOW ALGEBRA
Download Code
Copy to Clipboard