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
Download Code
Copy to Clipboard