FLOW ALGEBRA
TITLE: Biological Organisation Ontology
DOMAIN: Foundations of Biological Entities / Biological Entities / Entity Graph
SOURCE: https://kirethresearch.org/booksai-core/entity-graph/biological-entities/foundations-of-biological-entities/biological-organisation-ontology-2.html
AUTHORS: Mark Anthony Higgins — Sky (Recursive AI)
VERSION: 1.0
DATE: 2026-10-15
STATUS: Companion formalisation; proposed schema and rules, not a verified transcription of embedded source code.
1. PURPOSE
Represent biological organisation as typed, contextual, multi-level structures and processes. Distinguish physical part-whole organisation, membership, lineage, functional participation and ecological interaction. Preserve provenance and uncertainty in all inferred claims.
2. ENTITY TYPES
ENTITY BiologicalEntity {id:IRI, label:String, taxon:IRI?, provenance:SourceRef}
ENTITY OrganisationLevel {id:IRI, name:String, scale:ScaleKind}
ENTITY BiologicalStructure <: BiologicalEntity {level:OrganisationLevel}
ENTITY MolecularComplex <: BiologicalStructure
ENTITY Organelle <: BiologicalStructure
ENTITY Cell <: BiologicalStructure
ENTITY Tissue <: BiologicalStructure
ENTITY Organ <: BiologicalStructure
ENTITY OrganSystem <: BiologicalStructure
ENTITY Organism <: BiologicalEntity
ENTITY Population {id:IRI, taxon:IRI, region:IRI, interval:TimeInterval}
ENTITY Community {id:IRI, region:IRI, interval:TimeInterval}
ENTITY Ecosystem {id:IRI, region:IRI, interval:TimeInterval}
ENTITY Biosphere {id:IRI, interval:TimeInterval}
ENTITY BiologicalProcess {id:IRI, inputs:Set[IRI], outputs:Set[IRI], interval:TimeInterval?}
ENTITY Observation {id:IRI, subject:IRI, method:IRI, source:SourceRef, time:Timestamp}
ENTITY SourceRef {uri:IRI, version:String?, retrieved_at:Timestamp?}
ENTITY Assertion {subject:IRI, predicate:RelationType, object:IRI, context:Context, confidence:Confidence, provenance:Set[SourceRef]}
ENTITY Context {taxon:IRI?, developmental_stage:String?, environment:IRI?, interval:TimeInterval?}
ENTITY Confidence {value:Real[0,1], basis:EvidenceBasis, calibration:String?}
3. TYPED RELATIONSHIPS
RELATION part_of(BiologicalStructure, BiologicalStructure|Organism)
RELATION has_part(BiologicalStructure|Organism, BiologicalStructure)
RELATION member_of(Organism|Population, Population|Community)
RELATION located_in(BiologicalEntity, BiologicalStructure|Region)
RELATION participates_in(BiologicalEntity, BiologicalProcess)
RELATION regulates(BiologicalEntity|BiologicalProcess, BiologicalProcess)
RELATION interacts_with(BiologicalEntity, BiologicalEntity)
RELATION develops_into(BiologicalStructure, BiologicalStructure)
RELATION derived_from(BiologicalEntity, BiologicalEntity)
RELATION occurs_in(BiologicalProcess, BiologicalStructure|Ecosystem)
RELATION observed_by(BiologicalEntity, Observation)
RELATION classified_as(BiologicalEntity, OrganisationLevel)
RELATION supported_by(Assertion, SourceRef)
4. ORGANISATION LEVELS
LEVEL molecular = 10
LEVEL organelle = 20
LEVEL cellular = 30
LEVEL tissue = 40
LEVEL organ = 50
LEVEL organ_system = 60
LEVEL organism = 70
LEVEL population = 80
LEVEL community = 90
LEVEL ecosystem = 100
LEVEL biosphere = 110
NOTE: The levels are an educational ordering, not a universal strict partonomy. Viruses, unicellular organisms, colonies, biofilms and symbioses may cross or bypass levels. Ecological membership is not equivalent to physical part_of.
5. CORE INVARIANTS
RULE valid_identifier(e) := is_iri(e.id)
RULE valid_confidence(a) := 0 <= a.confidence.value <= 1
RULE evidence_required(a) := cardinality(a.provenance) >= 1
RULE no_self_part(x) := NOT part_of(x,x)
RULE context_compatible(a,b) := compatible(a.taxon,b.taxon) AND compatible(a.interval,b.interval) AND compatible(a.environment,b.environment)
RULE type_safe(r,x,y) := domain_type(r,x) AND range_type(r,y)
RULE direct_part_acyclic(x,y) := part_of(x,y) IMPLIES NOT reachable_part(y,x)
RULE membership_not_partonomy(x,y) := member_of(x,y) DOES_NOT_IMPLY part_of(x,y)
6. INFERENCE AND GRAPH TRAVERSAL
RULE inverse_part(x,y): part_of(x,y) -> has_part(y,x)
RULE inverse_has_part(y,x): has_part(y,x) -> part_of(x,y)
RULE transitive_part(x,y,z): part_of(x,y) AND part_of(y,z) AND context_compatible(x,z) -> inferred_part_of(x,z)
RULE level_classification(x,l): declared_level(x,l) AND evidence_for(x,l) -> classified_as(x,l)
RULE organism_population(x,p): member_of(x,p) AND Population(p) -> population_member(x,p)
RULE process_location(p,x): occurs_in(p,x) -> process_context(p,x)
RULE no_automatic_function_inheritance: part_of(x,y) DOES_NOT_IMPLY same_function(x,y)
RULE no_automatic_ecological_transitivity: member_of(x,p) AND member_of(p,c) DOES_NOT_IMPLY part_of(x,c)
RULE recursive_traversal(start): visit typed neighbours; preserve edge labels, evidence and context; stop at visited (node,relation,context) tuples.
7. SEMANTIC EQUIVALENCE
SEMANTIC_EQUIVALENCE exact(x,y) IF same_referent(x,y) AND context_compatible(x,y) AND independently_validated(x,y)
SEMANTIC_EQUIVALENCE close(x,y) IF overlapping_meaning(x,y) AND NOT exact(x,y)
SEMANTIC_EQUIVALENCE related(x,y) IF linked_domain_concept(x,y)
RULE avoid_false_equivalence: part_of != member_of; structural_similarity != identity; functional_similarity != taxonomic_identity.
RULE alias_resolution: lexical_alias(x,y) -> candidate_equivalence(x,y); require identity evidence before merge.
8. CONFIDENCE AND VALIDATION
CONFIDENCE assertion := evidence_calibrated_score(observations, source_quality, method_reliability, context_fit)
RULE inference_confidence(a,b) := conservative_combine(a.confidence,b.confidence)
RULE missing_evidence(a) := mark_unverified(a); never assign confidence=1 by default
RULE conflicting_claims(a,b) := same_subject_predicate(a,b) AND incompatible_objects(a,b) -> flag_conflict(a,b)
RULE validate(a) := type_safe(a.predicate,a.subject,a.object) AND valid_confidence(a) AND evidence_required(a) AND context_consistent(a) AND NOT violates_invariants(a)
RULE failed_validation(a) := quarantine(a); retain original evidence; do not silently discard.
NOTE: Confidence represents uncertainty of assertions, not mathematical proof of truth.
9. PROVENANCE
PROVENANCE each_assertion := {source_uri, source_version, author_or_agent, observation_method, timestamp, derivation_chain, licence?}
RULE inferred_provenance(output, premises) := union(premise.provenance) + inference_rule_id + execution_version
RULE provenance_immutability := preserve original source records when graph is updated.
10. FLOW OPERATORS
FLOW INGEST(source) -> parse biological entities and claims
FLOW NORMALISE(claims) -> canonical identifiers, names, units and contexts
FLOW TYPE_CHECK(graph) -> enforce entity and relation signatures
FLOW LINK(graph) -> create evidence-backed typed edges
FLOW INFER(graph, rules) -> materialise justified conclusions with derivations
FLOW VALIDATE(graph) -> report contradictions, cycles, missing evidence and context conflicts
FLOW RESOLVE(graph) -> distinguish aliases, duplicates and distinct biological referents
FLOW EXPORT(graph) -> provenance-rich machine-readable assertions
11. FLOW HASH
FLOW_HASH canonical_assertion := SHA256(canonical_serialisation(subject,predicate,object,context,provenance,rule_version))
RULE deterministic_hash := sort maps and sets, normalise IRIs and Unicode, encode UTF-8 before hashing.
NOTE: A hash supports integrity and change detection; it does not establish biological truth.
12. UPDATE MODEL
UPDATE_MODEL on_new_evidence(e):
ingest(e)
identify_affected_entities_and_edges()
preserve_prior_versions()
revalidate_impacted_assertions()
retract_or_mark_superseded_unsupported_inferences()
recompute_confidence_where_calibrated()
recompute_flow_hashes()
publish_versioned_change_log()
13. AI CONSUMPTION
AI_CONSUMPTION:
representation: typed_property_graph_or_RDF
interpretation: evidence_aware_and_context_sensitive
outputs: entity_ids, typed_edges, inferred_claims, validation_status, confidence, provenance, flow_hash
safeguards: no_invented_evidence; distinguish asserted_from_inferred; do_not_conflate_partonomy_with_ecological_membership
retrieval: expose source_and_derivation_for_each_claim
failure_mode: return unknown_or_conflicted when evidence is insufficient
14. EXAMPLE ASSERTIONS (ILLUSTRATIVE)
ASSERT part_of(cell_001,tissue_001) [context=organism_A; provenance=source_A; confidence=0.95]
ASSERT part_of(tissue_001,organ_001) [context=organism_A; provenance=source_B; confidence=0.95]
INFER inferred_part_of(cell_001,organ_001) [rule=transitive_part; confidence=derived_conservatively; provenance={source_A,source_B}]
ASSERT member_of(organism_A,population_001) [provenance=source_C; confidence=0.90]
DO_NOT_INFER part_of(organism_A,population_001)
15. COMPLETION CRITERIA
A graph is ready for AI consumption when its entity identifiers, typed relations, evidence records, context constraints, validation outcomes, derivation traces, version identifiers and hashes are available. Unverified statements remain explicitly marked as such.
END FLOW ALGEBRA
Download Code
Copy to Clipboard