Skip to main content

Graph Data Structure Ontology

Data Structures
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 01 October 2026
Audio Overview
AI SEARCH

FLOW ALGEBRA — GRAPH DATA STRUCTURE ONTOLOGY
Semantic Library
Version: 4.0
Canonical Page:
https://kirethresearch.org/booksai-core/ontologies/computing-ontologies/data-structures/graph-data-structure-ontology.html

FLOW GRAPH_DATA_STRUCTURE_ONTOLOGY {

  META {
    DOMAIN = "Computing Ontologies"
    SUBDOMAIN = "Data Structures"
    ONTOLOGY = "Graph Data Structure Ontology"
    PURPOSE = "Formalise graph data structures, vertices, edges, direction, weights, adjacency, paths, connectivity, representations, traversal, updates, invariants and complexity."
    LOCALE = "en-GB"
  }

  ENTITY_TYPES {
    GRAPH
    DIRECTED_GRAPH
    UNDIRECTED_GRAPH
    WEIGHTED_GRAPH
    UNWEIGHTED_GRAPH
    SIMPLE_GRAPH
    MULTIGRAPH
    PSEUDOGRAPH
    CONNECTED_GRAPH
    DISCONNECTED_GRAPH
    COMPLETE_GRAPH
    BIPARTITE_GRAPH
    DIRECTED_ACYCLIC_GRAPH
    CYCLIC_GRAPH
    SPARSE_GRAPH
    DENSE_GRAPH
    MUTABLE_GRAPH
    IMMUTABLE_GRAPH
    PERSISTENT_GRAPH
    VERTEX
    NODE
    EDGE
    DIRECTED_EDGE
    UNDIRECTED_EDGE
    WEIGHTED_EDGE
    SELF_LOOP
    PARALLEL_EDGE
    SOURCE_VERTEX
    TARGET_VERTEX
    ENDPOINT
    EDGE_WEIGHT
    VERTEX_LABEL
    EDGE_LABEL
    ADJACENCY
    NEIGHBOUR
    DEGREE
    IN_DEGREE
    OUT_DEGREE
    PATH
    SIMPLE_PATH
    WALK
    TRAIL
    CYCLE
    CONNECTED_COMPONENT
    STRONGLY_CONNECTED_COMPONENT
    WEAKLY_CONNECTED_COMPONENT
    SUBGRAPH
    INDUCED_SUBGRAPH
    SPANNING_TREE
    ADJACENCY_LIST
    ADJACENCY_MATRIX
    EDGE_LIST
    INCIDENCE_MATRIX
    OPERATION
    CREATE
    ADD_VERTEX
    REMOVE_VERTEX
    ADD_EDGE
    REMOVE_EDGE
    UPDATE_VERTEX
    UPDATE_EDGE
    TRAVERSE
    SEARCH
    BREADTH_FIRST_SEARCH
    DEPTH_FIRST_SEARCH
    PATH_SEARCH
    CONNECTIVITY_SEARCH
    TOPOLOGICAL_TRAVERSAL
    ITERATE
    INVARIANT
    ENDPOINT_INVARIANT
    DIRECTION_INVARIANT
    WEIGHT_INVARIANT
    ADJACENCY_INVARIANT
    TIME_COMPLEXITY
    SPACE_COMPLEXITY
    SIZE
    VERTEX_COUNT
    EDGE_COUNT
    DENSITY
    MEMORY
    IMPLEMENTATION
    LANGUAGE_CONTEXT
    RUNTIME_CONTEXT
    CONFIGURATION
    ERROR
    EVIDENCE
    CONFIDENCE_SCORE
    PROVENANCE_RECORD
  }

  RELATIONSHIPS {
    IS_A
    INSTANCE_OF
    PART_OF
    CONTAINS
    HAS_VERTEX
    HAS_EDGE
    HAS_SOURCE
    HAS_TARGET
    HAS_ENDPOINT
    HAS_WEIGHT
    HAS_LABEL
    CONNECTS
    CONNECTED_TO
    ADJACENT_TO
    NEIGHBOUR_OF
    INCIDENT_TO
    ENTERS
    LEAVES
    HAS_DEGREE
    HAS_IN_DEGREE
    HAS_OUT_DEGREE
    HAS_PATH
    HAS_CYCLE
    HAS_COMPONENT
    HAS_SUBGRAPH
    HAS_SPANNING_TREE
    REPRESENTED_BY
    STORED_IN
    ADDS_VERTEX
    REMOVES_VERTEX
    ADDS_EDGE
    REMOVES_EDGE
    UPDATES
    TRAVERSES
    SEARCHES
    REACHES
    PRECEDES
    FOLLOWS
    HAS_SIZE
    HAS_VERTEX_COUNT
    HAS_EDGE_COUNT
    HAS_DENSITY
    HAS_INVARIANT
    HAS_TIME_COMPLEXITY
    HAS_SPACE_COMPLEXITY
    HAS_IMPLEMENTATION
    HAS_CONFIGURATION
    DEPENDS_ON
    DERIVED_FROM
    INFERRED_FROM
    HAS_EVIDENCE
    HAS_CONFIDENCE
    HAS_PROVENANCE
    SEMANTICALLY_EQUIVALENT_TO
  }

  INPUTS {
    GRAPH_SPECIFICATIONS
    GRAPH_IMPLEMENTATIONS
    SOURCE_CODE
    VERTEX_DATA
    EDGE_DATA
    EDGE_DIRECTION_DATA
    EDGE_WEIGHT_DATA
    LABEL_DATA
    ADJACENCY_DATA
    GRAPH_REPRESENTATION_DATA
    TRAVERSAL_TRACES
    SEARCH_TRACES
    UPDATE_TRACES
    CONNECTIVITY_DATA
    PATH_DATA
    COMPONENT_DATA
    INVARIANT_DEFINITIONS
    COMPLEXITY_ANALYSES
    MEMORY_DATA
    LANGUAGE_CONTEXT
    RUNTIME_CONTEXT
    CONFIGURATION_DATA
    ONTOLOGY_TERMS
  }

  NORMALISE {
    STANDARDISE_GRAPH_IDENTIFIERS
    NORMALISE_GRAPH_TYPES
    NORMALISE_VERTEX_IDENTIFIERS
    NORMALISE_EDGE_IDENTIFIERS
    NORMALISE_EDGE_DIRECTION
    NORMALISE_EDGE_WEIGHTS
    NORMALISE_VERTEX_AND_EDGE_LABELS
    NORMALISE_ADJACENCY_RELATIONS
    NORMALISE_REPRESENTATION_NAMES
    NORMALISE_OPERATION_NAMES
    NORMALISE_COMPONENT_IDENTIFIERS
    NORMALISE_COMPLEXITY_NOTATION
    NORMALISE_LANGUAGE_AND_RUNTIME_CONTEXT
    RESOLVE_GRAPH_VERTEX_AND_EDGE_IDENTITIES
    ALIGN_ONTOLOGY_TERMS
    REMOVE_DUPLICATES
    VALIDATE_METADATA
    PRESERVE_PROVENANCE
  }

  PROCESS GRAPH_REASONING_PIPELINE {
    GRAPH_REFERENCE
      -> GRAPH_IDENTIFICATION
      -> GRAPH_TYPE_RESOLUTION
      -> VERTEX_AND_EDGE_MAPPING
      -> DIRECTION_WEIGHT_AND_LABEL_MAPPING
      -> ADJACENCY_AND_REPRESENTATION_MAPPING
      -> OPERATION_MAPPING
      -> PATH_AND_CONNECTIVITY_ANALYSIS
      -> INVARIANT_ANALYSIS
      -> COMPLEXITY_ANALYSIS
      -> VALIDATION
      -> OUTPUT
  }

  PROCESS EDGE_REASONING {
    EDGE
      -> ENDPOINT_SET

    DIRECTED_EDGE
      -> SOURCE_VERTEX
      -> TARGET_VERTEX

    UNDIRECTED_EDGE
      -> UNORDERED_ENDPOINT_PAIR

    WEIGHTED_EDGE
      -> EDGE_WEIGHT

    EDGE
      -> ADJACENCY_RELATIONS
  }

  PROCESS ADJACENCY_REASONING {
    GRAPH + VERTEX
      -> INCIDENT_EDGES

    INCIDENT_EDGES
      -> ADJACENT_VERTICES

    DIRECTED_GRAPH
      -> OUT_NEIGHBOURS
      -> IN_NEIGHBOURS

    UNDIRECTED_GRAPH
      -> SYMMETRIC_ADJACENCY
  }

  PROCESS DEGREE_REASONING {
    UNDIRECTED_VERTEX
      -> DEGREE = COUNT(INCIDENT_EDGE_ENDS)

    DIRECTED_VERTEX
      -> IN_DEGREE = COUNT(INCOMING_EDGES)
      -> OUT_DEGREE = COUNT(OUTGOING_EDGES)

    SELF_LOOP
      -> APPLY_GRAPH_MODEL_SPECIFIC_DEGREE_CONVENTION
  }

  PROCESS REPRESENTATION_REASONING {
    GRAPH
      -> REPRESENTATION

    ADJACENCY_LIST
      -> VERTEX_TO_NEIGHBOUR_COLLECTIONS

    ADJACENCY_MATRIX
      -> VERTEX_PAIR_TO_EDGE_PRESENCE_OR_WEIGHT

    EDGE_LIST
      -> EDGE_RECORD_SEQUENCE

    REPRESENTATION
      -> MEMORY_AND_OPERATION_COST_CONTEXT
  }

  PROCESS BFS_REASONING {
    START_VERTEX
      -> VISITED_SET
      -> QUEUE

    ENQUEUE START_VERTEX

    WHILE QUEUE_NOT_EMPTY
      -> DEQUEUE CURRENT_VERTEX
      -> VISIT CURRENT_VERTEX
      -> DISCOVER_UNVISITED_NEIGHBOURS
      -> MARK_VISITED
      -> ENQUEUE_DISCOVERED_NEIGHBOURS

    RESULT
      -> BFS_TRAVERSAL_TREE_OR_ORDER
  }

  PROCESS DFS_REASONING {
    START_VERTEX
      -> VISITED_SET

    VISIT CURRENT_VERTEX
      -> MARK_VISITED

    FOR EACH UNVISITED_NEIGHBOUR
      -> DEPTH_FIRST_VISIT

    RESULT
      -> DFS_TRAVERSAL_TREE_OR_ORDER
  }

  PROCESS PATH_REASONING {
    SOURCE_VERTEX + TARGET_VERTEX
      -> GRAPH_TRAVERSAL_OR_PATH_ALGORITHM

    DISCOVERED_PREDECESSOR_RELATIONS
      -> PATH_RECONSTRUCTION

    VALID_EDGE_SEQUENCE
      -> PATH

    NO_REACHABILITY
      -> NO_PATH_IN_ANALYSED_GRAPH_STATE
  }

  PROCESS CONNECTIVITY_REASONING {
    UNDIRECTED_GRAPH
      -> TRAVERSAL_FROM_UNVISITED_VERTEX
      -> CONNECTED_COMPONENT

    REPEAT_FOR_REMAINING_UNVISITED_VERTICES
      -> COMPONENT_SET

    DIRECTED_GRAPH
      -> DIRECTION_AWARE_REACHABILITY

    MUTUAL_REACHABILITY
      -> STRONGLY_CONNECTED_COMPONENT
  }

  PROCESS UPDATE_REASONING {
    ADD_VERTEX
      -> VERTEX_SET_UPDATE

    REMOVE_VERTEX
      -> REMOVE_INCIDENT_EDGES
      -> VERTEX_SET_UPDATE

    ADD_EDGE
      -> VALIDATE_ENDPOINTS
      -> EDGE_SET_UPDATE
      -> ADJACENCY_UPDATE

    REMOVE_EDGE
      -> EDGE_SET_UPDATE
      -> ADJACENCY_UPDATE

    RESULT
      -> GRAPH_STATE_UPDATE
      -> INVARIANT_CHECK
  }

  PROCESS COMPLEXITY_REASONING {
    GRAPH + OPERATION
      -> VERTEX_COUNT + EDGE_COUNT + REPRESENTATION

    BFS_OR_DFS
      -> VISITED_VERTICES_AND_EDGES

    ADJACENCY_QUERY
      -> REPRESENTATION_SPECIFIC_COST

    EDGE_INSERT_DELETE
      -> REPRESENTATION_SPECIFIC_COST

    MEMORY_USAGE
      -> REPRESENTATION_STORAGE_COST

    COSTS
      -> TIME_AND_SPACE_COMPLEXITY
  }

  PROCESS PERSISTENCE_REASONING {
    PERSISTENT_GRAPH_STATE(T1)
      + UPDATE
      -> NEW_GRAPH_STATE(T2)

    T1
      -> PRESERVED

    T1 + T2
      -> STRUCTURAL_SHARING_IF_IMPLEMENTED
  }

  RULES {
    IF DIRECTED_EDGE_IS_ASSERTED
    THEN PRESERVE SOURCE_AND_TARGET_DIRECTION

    IF UNDIRECTED_EDGE_IS_ASSERTED
    THEN DO_NOT INFER DIRECTION

    IF WEIGHTED_GRAPH_IS_ASSERTED
    THEN PRESERVE EDGE_WEIGHT_DOMAIN_AND_SEMANTICS

    IF PATH_IS_ASSERTED
    THEN REQUIRE CONSECUTIVE_EDGE_CONNECTIVITY

    IF DIRECTED_ACYCLIC_GRAPH_IS_ASSERTED
    THEN REQUIRE NO_DIRECTED_CYCLE

    IF VERTEX_IS_REMOVED
    THEN REMOVE_OR_REMAP_INCIDENT_EDGES_ACCORDING_TO_OPERATION

    IF GRAPH_REPRESENTATION_CHANGES
    THEN PRESERVE ABSTRACT_GRAPH_IDENTITY_WHEN_VERTEX_AND_EDGE_SEMANTICS_ARE_UNCHANGED

    IF SEMANTIC_IDENTIFIERS_DIFFER
    AND GRAPH_REFERENT_IS_SAME
    THEN APPLY SEMANTIC_EQUIVALENCE
  }

  CONFIDENCE {
    CONFIDENCE_SCORE =
      WEIGHT(
        GRAPH_IDENTITY_CERTAINTY,
        GRAPH_TYPE_CERTAINTY,
        VERTEX_COMPLETENESS,
        EDGE_COMPLETENESS,
        DIRECTION_AND_WEIGHT_CERTAINTY,
        ADJACENCY_COMPLETENESS,
        OPERATION_TRACE_COMPLETENESS,
        PROVENANCE_COMPLETENESS
      )

    LEVELS {
      HIGH
      MODERATE
      LOW
      INSUFFICIENT
    }

    IF EDGE_DATA_IS_PARTIAL
    THEN REDUCE_PATH_CONNECTIVITY_AND_COMPONENT_CONFIDENCE

    IF DIRECTION_OR_WEIGHT_SEMANTICS_ARE_UNKNOWN
    THEN REDUCE_GRAPH_ALGORITHM_INFERENCE_CONFIDENCE

    IF COMPLETE_VERTEX_EDGE_AND_ADJACENCY_DATA_CONFIRM_STATE
    THEN INCREASE_CONFIDENCE_SCORE
  }

  SEMANTIC_EQUIVALENCE {
    EQUIVALENCE_KEY =
      NORMALISE(
        ENTITY_TYPE,
        GRAPH_IDENTIFIER,
        GRAPH_TYPE,
        VERTEX_IDENTIFIER,
        EDGE_IDENTIFIER,
        DIRECTION_AND_WEIGHT_CONTEXT,
        IMPLEMENTATION
      )

    IF EQUIVALENCE_KEY(A) == EQUIVALENCE_KEY(B)
    THEN A SEMANTICALLY_EQUIVALENT_TO B

    ELSE PRESERVE_DISTINCT_ENTITIES
  }

  REASONING_CONSTRAINTS {
    GRAPH != TREE
    VERTEX != EDGE
    VERTEX != LABEL
    EDGE != PATH
    ADJACENCY != REACHABILITY
    NEIGHBOUR != DESCENDANT
    DIRECTED_GRAPH != UNDIRECTED_GRAPH
    WEIGHTED_GRAPH != UNWEIGHTED_GRAPH
    SIMPLE_GRAPH != MULTIGRAPH
    PATH != WALK_AS_IDENTICAL_CONCEPT
    TRAIL != SIMPLE_PATH
    CYCLE != SELF_LOOP_AS_IDENTICAL_CONCEPT
    CONNECTED_GRAPH != STRONGLY_CONNECTED_DIRECTED_GRAPH
    DAG != TREE
    ADJACENCY_LIST != ABSTRACT_GRAPH
    ADJACENCY_MATRIX != ABSTRACT_GRAPH
    BFS != DFS
    REPRESENTATION_AFFECTS_OPERATION_AND_MEMORY_COMPLEXITY
    GRAPH_ALGORITHM_RESULTS_DEPEND_ON_DIRECTION_WEIGHT_AND_GRAPH_STATE
    PROVENANCE_MUST_BE_PRESERVED
    UNCERTAINTY_MUST_NOT_BE_DISCARDED
  }

  VALIDATION {
    CHECK_ENTITY_TYPES
    CHECK_RELATION_DOMAINS_AND_RANGES
    CHECK_GRAPH_IDENTIFIER
    CHECK_GRAPH_TYPE
    CHECK_VERTEX_IDENTITIES
    CHECK_EDGE_IDENTITIES
    CHECK_EDGE_ENDPOINTS
    CHECK_DIRECTION
    CHECK_WEIGHTS
    CHECK_LABELS
    CHECK_ADJACENCY
    CHECK_DEGREES
    CHECK_REPRESENTATION
    CHECK_BFS_AND_DFS_RELATIONS
    CHECK_PATHS
    CHECK_CYCLES
    CHECK_CONNECTIVITY
    CHECK_COMPONENTS
    CHECK_UPDATE_RELATIONS
    CHECK_INVARIANTS
    CHECK_COMPLEXITY_CONTEXT
    CHECK_PERSISTENCE
    CHECK_LANGUAGE_RUNTIME_AND_CONFIGURATION
    CHECK_PROVENANCE
    CHECK_CONFIDENCE
    CHECK_SEMANTIC_CONSISTENCY
  }

  OUTPUTS {
    NORMALISED_GRAPH_ENTITIES
    GRAPH_TYPE_RELATIONS
    VERTEX_RELATIONS
    EDGE_RELATIONS
    DIRECTION_RELATIONS
    WEIGHT_RELATIONS
    ADJACENCY_RELATIONS
    DEGREE_RELATIONS
    REPRESENTATION_RELATIONS
    BFS_RELATIONS
    DFS_RELATIONS
    PATH_AND_REACHABILITY_RELATIONS
    CYCLE_RELATIONS
    CONNECTIVITY_RELATIONS
    COMPONENT_RELATIONS
    SUBGRAPH_RELATIONS
    GRAPH_STATE_TRANSITIONS
    INVARIANT_RELATIONS
    TIME_COMPLEXITY_RELATIONS
    SPACE_COMPLEXITY_RELATIONS
    PERSISTENCE_AND_STRUCTURAL_SHARING_RELATIONS
    CONFIDENCE_SCORES
    EVIDENCE_LINKS
    PROVENANCE_RECORDS
    EXPLANATION_PATHS
  }

  UPDATE_MODEL {
    ON GRAPH_OPERATION {
      NORMALISE
      RESOLVE_GRAPH_VERTEX_AND_EDGE_IDENTITIES
      UPDATE_VERTEX_AND_EDGE_SETS
      UPDATE_ADJACENCY
      UPDATE_DEGREES
      RECOMPUTE_PATH_CONNECTIVITY_AND_COMPONENT_RELATIONS_AS_REQUIRED
      RECHECK_INVARIANTS
      UPDATE_CONFIDENCE
    }

    ON REPRESENTATION_CONFIGURATION_OR_RUNTIME_CHANGE {
      UPDATE_IMPLEMENTATION_CONTEXT
      REASSESS_COMPLEXITY
      PRESERVE_ABSTRACT_GRAPH_RELATIONS
      RECHECK_SEMANTIC_EQUIVALENCE
      RECOMPUTE_AFFECTED_RELATIONS
      UPDATE_CONFIDENCE
      PRESERVE_VERSION_HISTORY
    }

    ON ONTOLOGY_REVISION {
      REMAP_TERMS
      CHECK_SEMANTIC_EQUIVALENCE
      IDENTIFY_DEPRECATED_TERMS
      MIGRATE_RELATIONSHIPS
      PRESERVE_PRIOR_VERSION_REFERENCES
    }
  }

  FLOW_HASH {
    HASH_INPUT =
      CANONICALISE(
        ENTITY_TYPES,
        RELATIONSHIPS,
        RULES,
        CONFIDENCE,
        SEMANTIC_EQUIVALENCE,
        REASONING_CONSTRAINTS,
        UPDATE_MODEL
      )

    FLOW_HASH = SHA256(HASH_INPUT)
  }

  AI_CONSUMPTION {
    INDEX {
      ONTOLOGY
      ENTITY_TYPES
      RELATIONSHIPS
      RULES
      OUTPUTS
    }

    RETRIEVE {
      BY_GRAPH
      BY_GRAPH_TYPE
      BY_VERTEX
      BY_EDGE
      BY_DIRECTION
      BY_WEIGHT
      BY_ADJACENCY
      BY_DEGREE
      BY_REPRESENTATION
      BY_TRAVERSAL
      BY_PATH
      BY_COMPONENT
      BY_INVARIANT
      BY_COMPLEXITY
      BY_CONFIDENCE
    }

    REASON {
      APPLY_RELATIONSHIPS
      APPLY_RULES
      ANALYSE_EDGES_AND_ENDPOINTS
      ANALYSE_ADJACENCY
      COMPUTE_DEGREES
      ANALYSE_GRAPH_REPRESENTATIONS
      TRACE_BREADTH_FIRST_SEARCH
      TRACE_DEPTH_FIRST_SEARCH
      ANALYSE_PATHS_AND_REACHABILITY
      ANALYSE_CONNECTIVITY_AND_COMPONENTS
      TRACE_GRAPH_UPDATES
      CHECK_GRAPH_INVARIANTS
      ANALYSE_COMPLEXITY
      ANALYSE_PERSISTENCE
      CHECK_SEMANTIC_EQUIVALENCE
      PRESERVE_UNCERTAINTY
      TRACE_EVIDENCE
      TRACE_PROVENANCE
      GENERATE_EXPLANATION_PATH
    }

    RESPONSE_POLICY {
      DISTINGUISH_GRAPH_FROM_TREE
      DISTINGUISH_VERTEX_EDGE_PATH_AND_LABEL
      DISTINGUISH_ADJACENCY_FROM_REACHABILITY
      PRESERVE_DIRECTION_WEIGHT_REPRESENTATION_IMPLEMENTATION_LANGUAGE_AND_RUNTIME_CONTEXT
      DISTINGUISH_BFS_FROM_DFS
      PRESERVE_GRAPH_INVARIANTS_AND_VERSIONED_STATES
      RETURN_CONFIDENCE_WHEN_AVAILABLE
      RETURN_PROVENANCE_WHEN_AVAILABLE
      AVOID_UNSUPPORTED_GRAPH_INFERENCE
    }
  }

  TERMINAL {
    RESULT =
      VALIDATED(
        SEMANTICALLY_NORMALISED(
          EVIDENCE_LINKED(
            CONFIDENCE_AWARE(
              GRAPH_DATA_STRUCTURE_KNOWLEDGE
            )
          )
        )
      )
  }
}

END FLOW
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ