Skip to main content

Source Code Ontology

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

FLOW ALGEBRA — SOURCE CODE ONTOLOGY
Semantic Library
Version: 4.0
Canonical Page:
https://kirethresearch.org/booksai-core/ontologies/computing-ontologies/programming/source-code-ontology.html

FLOW SOURCE_CODE_ONTOLOGY {

  META {
    DOMAIN = "Computing Ontologies"
    SUBDOMAIN = "Programming"
    ONTOLOGY = "Source Code Ontology"
    PURPOSE = "Formalise source-code artefacts, lexical and syntactic structures, symbols, types, control flow, dependencies, versions, transformations and relationships to executable behaviour."
    LOCALE = "en-GB"
  }

  ENTITY_TYPES {
    SOURCE_CODE
    SOURCE_FILE
    SOURCE_TEXT
    PROGRAM
    MODULE
    PACKAGE
    LIBRARY
    PROGRAMMING_LANGUAGE
    LANGUAGE_VERSION
    ENCODING
    COMMENT
    DOCUMENTATION_COMMENT
    WHITESPACE
    TOKEN
    LEXEME
    KEYWORD
    IDENTIFIER
    OPERATOR
    PUNCTUATION
    LITERAL
    EXPRESSION
    STATEMENT
    DECLARATION
    DEFINITION
    VARIABLE
    CONSTANT
    FUNCTION
    PROCEDURE
    METHOD
    PARAMETER
    CLASS
    OBJECT
    INTERFACE
    ENUMERATION
    DATA_TYPE
    TYPE_ANNOTATION
    SCOPE
    NAMESPACE
    SYMBOL
    SYMBOL_TABLE
    BINDING
    IMPORT
    EXPORT
    DEPENDENCY
    CONTROL_FLOW
    BASIC_BLOCK
    BRANCH
    CONDITIONAL
    LOOP
    FUNCTION_CALL
    RETURN_STATEMENT
    EXCEPTION
    EXCEPTION_HANDLER
    ABSTRACT_SYNTAX_TREE
    AST_NODE
    CONTROL_FLOW_GRAPH
    CALL_GRAPH
    DEPENDENCY_GRAPH
    SOURCE_LOCATION
    LINE
    COLUMN
    FILE_PATH
    REVISION
    COMMIT
    VERSION
    DIFF
    CHANGE
    REFACTORING
    GENERATED_CODE
    HANDWRITTEN_CODE
    BUILD_CONFIGURATION
    COMPILER
    INTERPRETER
    TEST
    ERROR
    WARNING
    DIAGNOSTIC
    EVIDENCE
    CONFIDENCE_SCORE
    PROVENANCE_RECORD
  }

  RELATIONSHIPS {
    IS_A
    INSTANCE_OF
    PART_OF
    CONTAINS
    WRITTEN_IN
    HAS_VERSION
    HAS_ENCODING
    HAS_TOKEN
    HAS_AST
    HAS_NODE
    DEFINES
    DECLARES
    REFERENCES
    RESOLVES_TO
    BINDS_TO
    HAS_TYPE
    HAS_SCOPE
    HAS_NAMESPACE
    HAS_PARAMETER
    CALLS
    RETURNS
    IMPORTS
    EXPORTS
    DEPENDS_ON
    IMPLEMENTS
    EXTENDS
    INHERITS_FROM
    OVERRIDES
    PRECEDES
    FOLLOWS
    BRANCHES_TO
    LOOPS_TO
    THROWS
    CATCHES
    LOCATED_AT
    GENERATED_FROM
    TRANSFORMED_FROM
    CHANGED_BY
    ADDED_BY
    MODIFIED_BY
    DELETED_BY
    COMPILED_BY
    INTERPRETED_BY
    TESTED_BY
    HAS_ERROR
    HAS_WARNING
    DERIVED_FROM
    INFERRED_FROM
    HAS_EVIDENCE
    HAS_CONFIDENCE
    HAS_PROVENANCE
    MAPS_TO
    SEMANTICALLY_EQUIVALENT_TO
  }

  INPUTS {
    SOURCE_FILES
    SOURCE_TEXT
    FILE_PATHS
    LANGUAGE_METADATA
    LANGUAGE_VERSION_DATA
    ENCODING_DATA
    TOKEN_STREAMS
    ABSTRACT_SYNTAX_TREES
    SYMBOL_TABLES
    TYPE_INFORMATION
    CONTROL_FLOW_GRAPHS
    CALL_GRAPHS
    DEPENDENCY_GRAPHS
    VERSION_CONTROL_HISTORY
    DIFF_DATA
    BUILD_CONFIGURATION
    COMPILER_DIAGNOSTICS
    INTERPRETER_DIAGNOSTICS
    TEST_RESULTS
    GENERATED_CODE_METADATA
    ONTOLOGY_TERMS
  }

  NORMALISE {
    STANDARDISE_SOURCE_IDENTIFIERS
    NORMALISE_FILE_PATHS
    NORMALISE_TEXT_ENCODING
    NORMALISE_LANGUAGE_NAMES
    NORMALISE_LANGUAGE_VERSIONS
    NORMALISE_IDENTIFIERS
    NORMALISE_TYPE_NAMES
    NORMALISE_FUNCTION_SIGNATURES
    NORMALISE_MODULE_AND_PACKAGE_NAMES
    NORMALISE_SOURCE_LOCATIONS
    NORMALISE_REVISION_IDENTIFIERS
    NORMALISE_DEPENDENCY_IDENTIFIERS
    NORMALISE_DIAGNOSTIC_TYPES
    RESOLVE_SYMBOL_IDENTITIES
    ALIGN_ONTOLOGY_TERMS
    REMOVE_DUPLICATES
    VALIDATE_METADATA
    PRESERVE_PROVENANCE
  }

  PROCESS SOURCE_CODE_PIPELINE {
    SOURCE_FILE
      -> ENCODING_RESOLUTION
      -> LANGUAGE_IDENTIFICATION
      -> LEXICAL_ANALYSIS
      -> SYNTACTIC_ANALYSIS
      -> SYMBOL_RESOLUTION
      -> TYPE_RESOLUTION
      -> CONTROL_FLOW_MAPPING
      -> CALL_AND_DEPENDENCY_MAPPING
      -> VERSION_AND_PROVENANCE_MAPPING
      -> VALIDATION
      -> OUTPUT
  }

  PROCESS LEXICAL_REASONING {
    SOURCE_TEXT
      -> CHARACTER_STREAM

    CHARACTER_STREAM
      -> TOKENISATION

    TOKENISATION
      -> TOKEN_STREAM

    TOKEN_STREAM
      -> TOKEN_SOURCE_LOCATIONS
  }

  PROCESS SYNTACTIC_REASONING {
    TOKEN_STREAM
      -> LANGUAGE_GRAMMAR

    LANGUAGE_GRAMMAR
      -> PARSE_STRUCTURE

    PARSE_STRUCTURE
      -> ABSTRACT_SYNTAX_TREE

    ABSTRACT_SYNTAX_TREE
      -> AST_NODE_RELATIONS
  }

  PROCESS SYMBOL_REASONING {
    IDENTIFIER_REFERENCE
      -> SOURCE_SCOPE

    SOURCE_SCOPE
      -> ENCLOSING_SCOPE_SEARCH

    ENCLOSING_SCOPE_SEARCH
      -> NAMESPACE_MODULE_OR_IMPORT_SEARCH

    MATCHED_DECLARATION
      -> SYMBOL_BINDING

    SYMBOL_BINDING
      -> REFERENCED_ENTITY
  }

  PROCESS TYPE_REASONING {
    DECLARATION_OR_EXPRESSION
      -> EXPLICIT_OR_INFERRED_TYPE

    TYPE_INFORMATION
      -> LANGUAGE_TYPE_RULES

    LANGUAGE_TYPE_RULES
      -> TYPE_RELATIONS

    INVALID_TYPE_RELATION
      -> TYPE_DIAGNOSTIC
  }

  PROCESS CONTROL_FLOW_REASONING {
    FUNCTION_OR_PROGRAM_ENTRY
      -> BASIC_BLOCKS

    BASIC_BLOCKS
      -> SEQUENTIAL_EDGES
      -> BRANCH_EDGES
      -> LOOP_EDGES
      -> EXCEPTION_EDGES

    EDGES
      -> CONTROL_FLOW_GRAPH

    CONTROL_FLOW_GRAPH
      -> REACHABILITY_AND_PATH_ANALYSIS
  }

  PROCESS CALL_GRAPH_REASONING {
    CALL_SITE
      -> CALLEE_REFERENCE

    CALLEE_REFERENCE
      -> SYMBOL_RESOLUTION

    RESOLVED_CALLEE
      -> CALL_EDGE

    CALL_EDGES
      -> CALL_GRAPH

    DYNAMIC_DISPATCH
      -> POSSIBLE_CALLEE_SET
  }

  PROCESS DEPENDENCY_REASONING {
    IMPORT_OR_REFERENCE
      -> DEPENDENCY_IDENTIFIER

    DEPENDENCY_IDENTIFIER
      -> MODULE_PACKAGE_OR_LIBRARY

    RESOLVED_DEPENDENCIES
      -> DEPENDENCY_GRAPH

    DEPENDENCY_GRAPH
      -> DIRECT_AND_TRANSITIVE_RELATIONS
  }

  PROCESS VERSION_REASONING {
    SOURCE_REVISION_A + SOURCE_REVISION_B
      -> DIFF

    DIFF
      -> ADDED_LINES
      -> MODIFIED_LINES
      -> DELETED_LINES

    CHANGED_SOURCE_ENTITIES
      -> CHANGE_RELATIONS

    CHANGE_RELATIONS
      -> PROVENANCE_UPDATE
  }

  PROCESS GENERATED_CODE_REASONING {
    GENERATED_CODE
      -> GENERATOR_OR_SOURCE_ARTEFACT

    GENERATOR_OR_SOURCE_ARTEFACT
      -> GENERATION_CONFIGURATION

    GENERATION_CONFIGURATION
      -> GENERATED_SOURCE

    GENERATED_SOURCE
      -> DERIVATION_PROVENANCE
  }

  RULES {
    IF SOURCE_ENTITY_IS_REFERENCED
    THEN PRESERVE FILE_LANGUAGE_VERSION_SCOPE_AND_LOCATION_CONTEXT

    IF IDENTIFIER_IS_REFERENCED
    THEN REQUIRE SYMBOL_RESOLUTION_BEFORE_ASSERTING_REFERENT

    IF SAME_IDENTIFIER_TEXT_APPEARS_IN_DIFFERENT_SCOPES
    THEN DO_NOT_ASSUME SAME_SYMBOL

    IF SOURCE_CODE_COMPILES
    THEN DO_NOT_ASSERT RUNTIME_CORRECTNESS

    IF STATIC_CALL_GRAPH_CONTAINS_DYNAMIC_DISPATCH
    THEN PRESERVE POSSIBLE_CALLEE_UNCERTAINTY

    IF SOURCE_FILE_CHANGES
    THEN PRESERVE REVISION_AND_CHANGE_PROVENANCE

    IF CODE_IS_GENERATED
    THEN DISTINGUISH GENERATED_SOURCE_FROM_GENERATOR_AND_ORIGINAL_INPUT

    IF SEMANTIC_IDENTIFIERS_DIFFER
    AND SOURCE_CODE_REFERENT_IS_SAME
    THEN APPLY SEMANTIC_EQUIVALENCE
  }

  CONFIDENCE {
    CONFIDENCE_SCORE =
      WEIGHT(
        LANGUAGE_VERSION_CERTAINTY,
        ENCODING_CERTAINTY,
        PARSE_COMPLETENESS,
        SYMBOL_RESOLUTION_COMPLETENESS,
        TYPE_INFORMATION_COMPLETENESS,
        CONTROL_FLOW_COMPLETENESS,
        VERSION_PROVENANCE_COMPLETENESS,
        SOURCE_LOCATION_QUALITY
      )

    LEVELS {
      HIGH
      MODERATE
      LOW
      INSUFFICIENT
    }

    IF LANGUAGE_OR_VERSION_IS_UNKNOWN
    THEN REDUCE_SYNTAX_AND_SEMANTIC_CONFIDENCE

    IF DYNAMIC_DISPATCH_IS_UNRESOLVED
    THEN REDUCE_CALL_GRAPH_CONFIDENCE

    IF SOURCE_REVISION_AND_LOCATION_ARE_KNOWN
    THEN INCREASE_PROVENANCE_CONFIDENCE
  }

  SEMANTIC_EQUIVALENCE {
    EQUIVALENCE_KEY =
      NORMALISE(
        ENTITY_TYPE,
        REPOSITORY_OR_PROJECT_CONTEXT,
        FILE_PATH,
        REVISION,
        SYMBOL_SIGNATURE,
        SOURCE_LOCATION,
        LANGUAGE_VERSION
      )

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

    ELSE PRESERVE_DISTINCT_ENTITIES
  }

  REASONING_CONSTRAINTS {
    SOURCE_FILE != PROGRAM_EXECUTION
    SOURCE_TEXT != ABSTRACT_SYNTAX_TREE
    TOKEN != AST_NODE
    IDENTIFIER_TEXT != SYMBOL_IDENTITY
    DECLARATION != REFERENCE
    FUNCTION_DEFINITION != CALL_SITE
    STATIC_CALL_GRAPH != COMPLETE_RUNTIME_CALL_GRAPH
    FILE_PATH != FILE_IDENTITY_ACROSS_ALL_REVISIONS
    SAME_LINE_NUMBER != SAME_SOURCE_ENTITY_ACROSS_REVISIONS
    GENERATED_CODE != HANDWRITTEN_CODE_WITHOUT_PROVENANCE
    COMPILATION_SUCCESS != PROGRAM_CORRECTNESS
    SOURCE_CHANGE != BEHAVIOURAL_CHANGE_WITHOUT_ANALYSIS
    LANGUAGE_VERSION_AFFECTS_SOURCE_SEMANTICS
    BUILD_CONFIGURATION_AND_DEPENDENCIES_AFFECT_RESULTING_PROGRAM
    PROVENANCE_MUST_BE_PRESERVED
    UNCERTAINTY_MUST_NOT_BE_DISCARDED
  }

  VALIDATION {
    CHECK_ENTITY_TYPES
    CHECK_RELATION_DOMAINS_AND_RANGES
    CHECK_SOURCE_FILE_IDENTIFIER
    CHECK_FILE_PATH
    CHECK_ENCODING
    CHECK_LANGUAGE_AND_VERSION
    CHECK_TOKEN_STRUCTURE
    CHECK_PARSE_STRUCTURE
    CHECK_AST_RELATIONS
    CHECK_SYMBOL_BINDINGS
    CHECK_TYPE_RELATIONS
    CHECK_CONTROL_FLOW
    CHECK_CALL_GRAPH
    CHECK_DEPENDENCIES
    CHECK_SOURCE_LOCATIONS
    CHECK_VERSION_AND_DIFF_RELATIONS
    CHECK_GENERATED_CODE_PROVENANCE
    CHECK_DIAGNOSTICS
    CHECK_PROVENANCE
    CHECK_CONFIDENCE
    CHECK_SEMANTIC_CONSISTENCY
  }

  OUTPUTS {
    NORMALISED_SOURCE_CODE_ENTITIES
    SOURCE_FILE_RELATIONS
    TOKEN_RELATIONS
    ABSTRACT_SYNTAX_RELATIONS
    SYMBOL_BINDINGS
    TYPE_RELATIONS
    CONTROL_FLOW_GRAPHS
    CALL_GRAPHS
    DEPENDENCY_GRAPHS
    SOURCE_LOCATION_RELATIONS
    VERSION_AND_DIFF_RELATIONS
    GENERATED_CODE_RELATIONS
    DIAGNOSTIC_RELATIONS
    CONFIDENCE_SCORES
    EVIDENCE_LINKS
    PROVENANCE_RECORDS
    EXPLANATION_PATHS
  }

  UPDATE_MODEL {
    ON SOURCE_REVISION_CHANGE {
      NORMALISE
      REPARSE_AFFECTED_SOURCE
      RESOLVE_SYMBOLS
      RECHECK_TYPES
      UPDATE_CONTROL_FLOW
      UPDATE_CALL_GRAPH
      UPDATE_DEPENDENCY_GRAPH
      UPDATE_SOURCE_LOCATIONS
      RECORD_CHANGE_PROVENANCE
      UPDATE_CONFIDENCE
    }

    ON BUILD_DEPENDENCY_OR_LANGUAGE_CHANGE {
      UPDATE_LANGUAGE_AND_BUILD_CONTEXT
      RECHECK_SYMBOL_AND_TYPE_RELATIONS
      REASSESS_DEPENDENCY_GRAPH
      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_SOURCE_FILE
      BY_FILE_PATH
      BY_LANGUAGE
      BY_REVISION
      BY_TOKEN
      BY_AST_NODE
      BY_IDENTIFIER
      BY_SYMBOL
      BY_TYPE
      BY_FUNCTION
      BY_CALL_SITE
      BY_DEPENDENCY
      BY_SOURCE_LOCATION
      BY_CONFIDENCE
    }

    REASON {
      APPLY_RELATIONSHIPS
      APPLY_RULES
      ANALYSE_LEXICAL_STRUCTURE
      ANALYSE_SYNTAX
      RESOLVE_SYMBOLS
      ANALYSE_TYPES
      TRACE_CONTROL_FLOW
      BUILD_CALL_GRAPH
      BUILD_DEPENDENCY_GRAPH
      ANALYSE_SOURCE_CHANGES
      TRACE_GENERATED_CODE_PROVENANCE
      CHECK_SEMANTIC_EQUIVALENCE
      PRESERVE_UNCERTAINTY
      TRACE_EVIDENCE
      TRACE_PROVENANCE
      GENERATE_EXPLANATION_PATH
    }

    RESPONSE_POLICY {
      DISTINGUISH_SOURCE_TEXT_FROM_PARSED_STRUCTURE
      DISTINGUISH_IDENTIFIER_TEXT_FROM_SYMBOL_IDENTITY
      PRESERVE_FILE_REVISION_LANGUAGE_VERSION_SCOPE_AND_LOCATION_CONTEXT
      DISTINGUISH_STATIC_RELATIONS_FROM_RUNTIME_BEHAVIOUR
      PRESERVE_GENERATED_CODE_PROVENANCE
      RETURN_CONFIDENCE_WHEN_AVAILABLE
      RETURN_PROVENANCE_WHEN_AVAILABLE
      AVOID_UNSUPPORTED_SOURCE_CODE_INFERENCE
    }
  }

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

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