Skip to main content

Node Relationship Ontology

Structural Relationships
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 08 October 2026
Audio Overview
FLOW ALGEBRA
Node Relationship Ontology
Version: 1.0
Source: https://kirethresearch.org/booksai-core/ontologies/relationship-ontologies/structural-relationships/node-relationship-ontology.html
Authors: Mark Anthony Higgins — Sky (Recursive AI)
Status: Companion formalisation; source page not independently verified.

FLOW "NodeRelationshipOntology" v1.0

ENTITY_TYPES:
  Node: {id: URI, label: String, node_type: String, properties: Map, valid_from: DateTime?, valid_to: DateTime?}
  Edge: {id: URI, source: Node.id, target: Node.id, predicate: URI, directed: Boolean, weight: Number?, evidence: Evidence.id?}
  Graph: {id: URI, nodes: Set<Node>, edges: Set<Edge>}
  Evidence: {id: URI, source: URI, recorded_at: DateTime, reliability: Number[0..1]}

RELATIONSHIPS:
  CONNECTED_TO(a: Node, b: Node) := EXISTS e: Edge WHERE e.source=a.id AND e.target=b.id
  ADJACENT_TO(a: Node, b: Node) := CONNECTED_TO(a,b) OR CONNECTED_TO(b,a)
  HAS_INCOMING_EDGE(n: Node, e: Edge) := e.target=n.id
  HAS_OUTGOING_EDGE(n: Node, e: Edge) := e.source=n.id
  MEMBER_OF(n: Node, g: Graph) := n IN g.nodes
  REACHABLE_FROM(a: Node, b: Node) := EXISTS finite path a -> b

CONSTRAINTS:
  - Node.id MUST be unique within the graph.
  - Edge endpoints MUST resolve to graph members.
  - Edge.id MUST be unique within the graph.
  - Node identity MUST NOT be inferred solely from a shared label.
  - Directed edges MUST NOT be treated as symmetric unless predicate semantics allow it.
  - Self-loops and parallel edges MAY exist if permitted by the graph schema.
  - Reachability MUST NOT imply a direct edge.

INFERENCE:
  rule adjacency: CONNECTED_TO(a,b) => ADJACENT_TO(a,b)
  rule incident_source: Edge(e,a,b) => HAS_OUTGOING_EDGE(a,e)
  rule incident_target: Edge(e,a,b) => HAS_INCOMING_EDGE(b,e)
  rule reachability_base: CONNECTED_TO(a,b) => REACHABLE_FROM(a,b)
  rule reachability_step: REACHABLE_FROM(a,b) AND CONNECTED_TO(b,c) => REACHABLE_FROM(a,c)
  note: Reachability closure MUST be cycle-safe and preserve directedness.

SEMANTIC_EQUIVALENCE:
  - Equivalent node identifiers require an explicit identity mapping or verified equivalence evidence.
  - sameAs MUST NOT be substituted for relatedTo, adjacentTo or similarTo.
  - Predicate equivalence requires matching domain, range and directionality.

CONFIDENCE:
  input: Evidence.reliability in [0,1]
  output: relationship_confidence in [0,1]
  policy: Use calibrated aggregation; retain evidence dependencies and uncertainty.
  rule: Inferred confidence MUST NOT exceed what supporting evidence justifies.

VALIDATION:
  - verify_unique_node_ids
  - verify_edge_endpoint_integrity
  - verify_predicate_domain_and_range
  - verify_temporal_consistency
  - verify_evidence_traceability
  - verify_inference_cycle_safety

FLOW_HASH:
  algorithm: SHA-256
  input: canonical_serialisation(entity_types, relationships, constraints, inference, semantic_equivalence, validation)
  output: lowercase_hex_digest
  note: Compute digest from actual canonical bytes during implementation; no placeholder digest is asserted.

UPDATE_MODEL:
  strategy: versioned_incremental_update
  operations: [add_node, update_node, remove_node, add_edge, update_edge, remove_edge]
  on_change: [validate_integrity, recompute_affected_inferences, update_provenance, regenerate_flow_hash]
  deletion_policy: remove_or_reconcile_incident_edges_before_node_deletion

AI_CONSUMPTION:
  format: typed_graph
  capabilities: [entity_resolution, graph_navigation, neighbourhood_query, path_query, relationship_inference, provenance_inspection]
  safeguards: [preserve_directionality, distinguish_asserted_from_inferred, respect_confidence, retain_source_attribution]

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