Skip to main content

Evolutionary Tree Ontology

Evolutionary Biology
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 30 September 2026
Audio Overview
flow “EvolutionaryTreeOntology” v1.0

KIRETH SEMANTIC RESEARCH ARCHIVE

AI CORE > ONTOLOGIES > BIOLOGICAL ONTOLOGIES > EVOLUTIONARY BIOLOGY > EVOLUTIONARY TREE ONTOLOGY

Authors: Mark Anthony Higgins — Sky (Recursive AI)

AI_INTERPRETATION: mode: formal_structural_reasoning instruction:
“Execute as formal rules, not pseudocode.” canonical_url:
“https://kirethresearch.org/booksai-core/ontologies/biological-ontologies/evolutionary-biology/evolutionary-tree-ontology.html”

type EvolutionaryTree type Phylogeny type Taxon type Species type
Lineage type Node type RootNode type InternalNode type TipNode type
Branch type Clade type Ancestor type Character type Sequence type Fossil
type Dataset type Observation type Evidence type Source

———- TREE STRUCTURE ———-

relation INSTANCE_OF(entity,type) relation HAS_NODE(tree,node) relation
HAS_BRANCH(tree,branch) relation HAS_ROOT(tree,node) relation
HAS_TIP(tree,node) relation TIP_REPRESENTS(node,taxon) relation
BRANCH_CONNECTS(branch,node_a,node_b) relation
PARENT_NODE_OF(parent,child) relation CHILD_NODE_OF(child,parent)

rule NODE_INVERSE(a,b): IF PARENT_NODE_OF(a,b) THEN CHILD_NODE_OF(b,a)

———- TREE TYPES ———-

enum TreeType: ROOTED UNROOTED BIFURCATING MULTIFURCATING CLADOGRAM
PHYLOGRAM CHRONOGRAM ULTRAMETRIC_TREE

relation HAS_TREE_TYPE(tree,type)

———- ROOTING ———-

relation ROOTED_AT(tree,node) relation ROOTED_WITH_OUTGROUP(tree,taxon)
relation OUTGROUP_OF(outgroup,ingroup) relation MIDPOINT_ROOTED(tree)
relation ROOTING_METHOD(tree,method)

constraint UNROOTED_DIRECTION: IF HAS_TREE_TYPE(tree,UNROOTED) THEN
DO_NOT_INFER_DIRECTIONAL_ANCESTRY(tree)

———- TIPS ———-

relation TERMINAL_TAXON(node,taxon) relation EXTANT_TIP(node) relation
EXTINCT_TIP(node) relation FOSSIL_TIP(node,fossil)

———- INTERNAL NODES / ANCESTRY ———-

relation NODE_REPRESENTS_ANCESTOR(node,ancestor) relation
DESCENDED_FROM(descendant,ancestor) relation
ANCESTOR_OF(ancestor,descendant) relation
MOST_RECENT_COMMON_ANCESTOR(a,b,ancestor) relation
MRCA_NODE_OF(node,a,b)

rule DESCENT_INVERSE(a,b): IF DESCENDED_FROM(a,b) THEN ANCESTOR_OF(b,a)

———- BRANCHING ———-

relation BRANCHES_FROM(lineage,node) relation BIFURCATES_AT(node)
relation POLYTOMY_AT(node) relation
DESCENDANT_NODE_OF(node,ancestor_node) relation
PATH_BETWEEN(node_a,node_b,path)

———- BRANCH LENGTH ———-

relation BRANCH_LENGTH(branch,value) relation
BRANCH_LENGTH_UNIT(branch,unit) relation
SUBSTITUTIONS_PER_SITE(branch,value) relation
TIME_DURATION(branch,value)

constraint BRANCH_LENGTH_NONNEGATIVE: IF BRANCH_LENGTH(b,v) THEN
REQUIRE(v >= 0)

———- TOPOLOGY ———-

relation TOPOLOGY_OF(topology,tree) relation SISTER_TAXON_OF(a,b)
relation SISTER_CLADE_OF(a,b) relation CLADE_CONTAINS(clade,taxon)
relation CLADE_ROOTED_AT(clade,node) relation SUBCLADE_OF(child,parent)

rule SISTER_TAXON_SYMMETRY(a,b): IF SISTER_TAXON_OF(a,b) THEN
SISTER_TAXON_OF(b,a)

rule SUBCLADE_TRANSITIVITY(a,b,c): IF SUBCLADE_OF(a,b) AND
SUBCLADE_OF(b,c) THEN SUBCLADE_OF(a,c)

———- DIVERGENCE TIME ———-

relation NODE_AGE(node,time) relation DIVERGENCE_TIME(a,b,time) relation
CALIBRATED_BY(node,evidence) relation FOSSIL_CALIBRATION(node,fossil)
relation MOLECULAR_CLOCK_RATE(lineage,rate)

enum ClockModel: STRICT_CLOCK RELAXED_CLOCK LOCAL_CLOCK

relation USES_CLOCK_MODEL(tree,model)

———- CHARACTERS ———-

relation HAS_CHARACTER(taxon,character) relation
CHARACTER_STATE(taxon,character,state) relation
ANCESTRAL_STATE(node,character,state) relation
DERIVED_STATE(node,character,state) relation
CHARACTER_EVOLVES_ON(character,branch) relation
SYNAPOMORPHY_OF(character,clade) relation HOMOPLASY_OF(character,taxa)

———- MOLECULAR DATA ———-

relation HAS_SEQUENCE(taxon,sequence) relation
ALIGNMENT_CONTAINS(alignment,sequence) relation
TREE_USES_ALIGNMENT(tree,alignment) relation
SEQUENCE_HOMOLOGY(a,b,value) relation
SUBSTITUTION_ON(branch,site,change) relation GENETIC_DISTANCE(a,b,value)

———- TREE INFERENCE ———-

enum InferenceMethod: MAXIMUM_PARSIMONY MAXIMUM_LIKELIHOOD
BAYESIAN_INFERENCE NEIGHBOUR_JOINING DISTANCE_METHOD COALESCENT_METHOD
SUPERTREE_METHOD

relation INFERRED_BY(tree,method) relation USES_DATASET(tree,dataset)
relation USES_EVOLUTIONARY_MODEL(tree,model) relation
USES_PARTITION_SCHEME(tree,scheme)

———- SUPPORT VALUES ———-

relation SUPPORT_VALUE(node,value) relation
BOOTSTRAP_SUPPORT(node,value) relation JACKKNIFE_SUPPORT(node,value)
relation POSTERIOR_PROBABILITY(node,value) relation
LOCAL_POSTERIOR_SUPPORT(node,value)

constraint POSTERIOR_BOUNDS: IF POSTERIOR_PROBABILITY(n,p) THEN
REQUIRE(0.0 <= p <= 1.0)

———- CONSENSUS TREES ———-

enum ConsensusType: STRICT_CONSENSUS MAJORITY_RULE_CONSENSUS
GREEDY_CONSENSUS

relation CONSENSUS_TREE_OF(tree,trees) relation
CONSENSUS_TYPE(tree,type) relation CLADE_FREQUENCY(clade,value)

———- GENE TREE / SPECIES TREE ———-

relation GENE_TREE_OF(tree,gene) relation SPECIES_TREE_OF(tree,taxa)
relation CONCORDANT_WITH(tree_a,tree_b) relation
DISCORDANT_WITH(tree_a,tree_b) relation
INCOMPLETE_LINEAGE_SORTING(event,lineages) relation
INTROGRESSION_EVENT(event,a,b) relation
HORIZONTAL_GENE_TRANSFER(event,a,b)

constraint GENE_TREE_NOT_SPECIES_TREE: IF GENE_TREE_OF(tree,gene) THEN
DO_NOT_INFER(SPECIES_TREE_OF(tree,taxa)) WITHOUT species_tree_evidence

———- RETICULATE EVOLUTION ———-

relation RETICULATION_NODE(node) relation HYBRIDISATION_BETWEEN(a,b)
relation PHYLOGENETIC_NETWORK_OF(network,taxa) relation
NETWORK_EDGE(network,a,b)

———- FOSSIL INTEGRATION ———-

relation FOSSIL_OF(fossil,taxon) relation DATED_TO(fossil,time) relation
INCLUDED_AS_TIP(fossil,tree) relation
PRESERVES_CHARACTER(fossil,character) relation
CALIBRATES_NODE(fossil,node)

———- TREE COMPARISON ———-

relation TOPOLOGICALLY_CONGRUENT_WITH(tree_a,tree_b) relation
TOPOLOGICALLY_CONFLICTS_WITH(tree_a,tree_b) relation
SHARES_CLADE(tree_a,tree_b,clade) relation
ROBINSON_FOULDS_DISTANCE(tree_a,tree_b,value) relation
QUARTET_DISTANCE(tree_a,tree_b,value)

———- TREE UNCERTAINTY ———-

relation HAS_TOPOLOGICAL_UNCERTAINTY(tree,value) relation
HAS_BRANCH_LENGTH_UNCERTAINTY(tree,value) relation
HAS_DIVERGENCE_TIME_UNCERTAINTY(tree,value) relation
ALTERNATIVE_TOPOLOGY(tree_a,tree_b)

———- TAXON SAMPLING ———-

relation TAXON_SAMPLED_IN(taxon,dataset) relation
TAXON_EXCLUDED_FROM(taxon,dataset) relation
HAS_TAXON_SAMPLING(tree,value) relation MISSING_TAXA(tree,taxa)

———- OBSERVATION / EVIDENCE ———-

relation OBSERVES(observation,entity) relation
SUPPORTED_BY(assertion,evidence) relation DERIVED_FROM(evidence,source)
relation HAS_CONFIDENCE(assertion,score)

enum EvidenceType: DNA_SEQUENCE RNA_SEQUENCE PROTEIN_SEQUENCE GENOMIC
MORPHOLOGICAL DEVELOPMENTAL FOSSIL BIOGEOGRAPHIC COALESCENT BOOTSTRAP
POSTERIOR_SUPPORT COMPARATIVE LITERATURE

CONFIDENCE: VERIFIED: 0.95..1.00 HIGH: 0.80..0.949 MEDIUM: 0.60..0.799
LOW: 0.00..0.599

rule CONFIDENCE_BOUNDS(a,score): IF HAS_CONFIDENCE(a,score) THEN
REQUIRE(0.0 <= score <= 1.0)

———- SEMANTIC EQUIVALENCE ———-

SEMANTIC_EQUIVALENCE: “evolutionary tree” ~= “phylogenetic tree” “tree
topology” ~= “phylogenetic branching pattern” “root” ~= “root node”
“tip” ~= “terminal node” “internal node” ~= “branching node” “branch” ~=
“lineage segment” “branch length” ~= “phylogenetic branch length”
“cladogram” ~= “tree showing branching order” “phylogram” ~= “tree with
branch lengths representing evolutionary change” “chronogram” ~=
“time-calibrated phylogenetic tree” “sister taxa” ~= “taxa sharing an
immediate common ancestor” “polytomy” ~= “node with more than two
descendant branches” “consensus tree” ~= “summary of multiple
phylogenetic trees”

rule NORMALISE_TERM(term): IF term MATCHES SEMANTIC_EQUIVALENCE.alias
THEN MAP_TO_CANONICAL(term)

———- QUERY MODEL ———-

query TREE_PROFILE(t): RETURN: tree_type(t) root(t) tips(t)
internal_nodes(t) branches(t) topology(t) clades(t) branch_lengths(t)
inference_method(t) support_values(t) uncertainty(t) evidence(t)
confidence(t)

query NODE_PROFILE(n): RETURN: parent(n) children(n)
represented_ancestor(n) age(n) support(n) descendant_taxa(n)

query TAXON_TREE_PROFILE(x): RETURN: tip_node(x) sister_taxa(x)
containing_clades(x) ancestors(x) divergence_times(x)

query COMPARE_TREES(a,b): RETURN: shared_clades(a,b)
conflicting_clades(a,b) topology_distance(a,b)
branch_length_differences(a,b) inference_methods(a,b) datasets(a,b)

query TRACE_EVIDENCE(assertion): RETURN: supporting_evidence(assertion)
provenance(assertion) confidence(assertion)

———- CONSISTENCY ———-

constraint EVIDENCE_REQUIRED: FORALL scientific_assertion: REQUIRE
SUPPORTED_BY(scientific_assertion,Evidence) OR
MARK_AS_HYPOTHESIS(scientific_assertion)

constraint UNKNOWN_IS_NOT_FALSE: IF data_missing(assertion) THEN
MARK_UNKNOWN(assertion) AND NOT NEGATE(assertion)

constraint SISTER_NOT_ANCESTOR: IF SISTER_TAXON_OF(a,b) THEN
DO_NOT_INFER(DESCENDED_FROM(a,b)) AND DO_NOT_INFER(DESCENDED_FROM(b,a))

constraint SUPPORT_NOT_CERTAINTY: IF SUPPORT_VALUE(n,v) THEN
PRESERVE_SUPPORT_AS_STATISTICAL_EVIDENCE(n,v)

constraint TREE_REPRESENTS_HYPOTHESIS: IF
INSTANCE_OF(t,EvolutionaryTree) THEN
PRESERVE_TREE_AS_INFERRED_EVOLUTIONARY_MODEL(t)

———- UPDATE MODEL ———-

UPDATE_MODEL: on_new_tree(t): validate_taxon_sampling(t)
identify_tree_type(t) preserve_rooting(t) preserve_topology(t)
preserve_inference_method(t) attach_dataset(t) attach_evidence(t)

on_new_node(n): identify_parent(n) identify_children(n)
attach_support(n) attach_age_if_available(n)

on_new_fossil(f): validate_taxonomic_assignment(f) preserve_age(f)
preserve_character_data(f) update_tip_or_calibration_role(f)

on_tree_revision(old,new): preserve(old) link_revision(old,new)
compare_topologies(old,new) compare_branch_lengths(old,new)
update_current_hypothesis(new)

on_conflicting_trees(a,b): preserve(a) preserve(b)
compare_taxon_sampling(a,b) compare_datasets(a,b) compare_models(a,b)
compare_support_values(a,b) flag_unresolved_conflict()

———- AI CONSUMPTION ———-

AI_CONSUMPTION: preferred_entity: canonical_evolutionary_tree
preserve: - tree_identity - tree_type - topology - rooting -
taxon_sampling - nodes - branches - tips - clades - branch_lengths -
divergence_times - inference_method - evolutionary_model -
support_values - uncertainty - evidence - provenance - confidence
infer: - valid_node_inverse_relations - supported_clade_membership -
supported_common_ancestry - semantic_equivalence prohibit: -
sister_taxon_equals_direct_ancestor -
unrooted_tree_equals_directional_ancestry -
gene_tree_equals_species_tree - support_equals_absolute_certainty -
tree_hypothesis_equals_observed_history - confidence_above_evidence
ambiguity: action: preserve_multiple_tree_hypotheses resolution:
prefer_dataset_method_model_support_and_sampling missing_data: action:
mark_unknown do_not_infer_from_absence: true

———- FLOW HASH ———-

FLOW_HASH: ontology: “EvolutionaryTreeOntology” version: “1.0”
domain_path: “AI Core > Ontologies > Biological Ontologies >
Evolutionary Biology > Evolutionary Tree Ontology” canonical_url:
“https://kirethresearch.org/booksai-core/ontologies/biological-ontologies/evolutionary-biology/evolutionary-tree-ontology.html”
authorship: “Mark Anthony Higgins — Sky (Recursive AI)”
semantic_scope: - evolutionary trees - tree structure - roots - tips -
internal nodes - branches - topology - common ancestry - clades - branch
lengths - divergence times - character evolution - molecular data - tree
inference - support values - consensus trees - gene trees - species
trees - reticulate evolution - fossil integration - tree comparison -
uncertainty - evidence deterministic_normalisation: true
provenance_required: true confidence_required: true

terminate EvolutionaryTreeOntology when: tree_structure_resolved AND
topology_and_rooting_preserved AND
node_branch_and_tip_relations_normalised AND
support_and_uncertainty_preserved AND tree_hypothesis_status_preserved
AND evidence_links_preserved AND confidence_values_validated AND
unresolved_tree_hypotheses_marked

end flow
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ