Skip to main content

Accounting Domain Ontology

Business Domains
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 11 October 2026
Audio Overview
FLOW ALGEBRA
Accounting Domain Ontology — Kireth Semantic Library
Version: 1.0
Source URL: https://kirethresearch.org/booksai-core/ontologies/domain-ontologies/business-domains/accounting-domain-ontology.html
Status: Domain-derived draft; source webpage not independently verified.
Authors: Mark Higgins — Sky (Recursive AI)

flow "AccountingDomainOntology" v1.0

DOMAIN:
  id: accounting_domain_ontology
  parent: business_domain_ontology
  label: Accounting Domain Ontology
  description: Typed semantic model of accounting records, transactions, reporting, controls, and assurance.

TYPES:
  Organisation: entity
  ReportingEntity: Organisation
  AccountingPeriod: interval
  Currency: unit
  Account: entity {code:str, name:str, category:AccountCategory}
  AccountCategory: enum[asset, liability, equity, revenue, expense]
  JournalEntry: entity {id:str, date:date, description:str}
  JournalLine: entity {account:Account, debit:decimal, credit:decimal, currency:Currency}
  Ledger: collection[JournalEntry]
  TrialBalance: collection[AccountBalance]
  AccountBalance: record {account:Account, debit:decimal, credit:decimal}
  FinancialStatement: entity
  BalanceSheet: FinancialStatement
  IncomeStatement: FinancialStatement
  CashFlowStatement: FinancialStatement
  Transaction: entity
  Invoice: document
  Receipt: document
  Payment: Transaction
  Asset: economic_resource
  Liability: obligation
  Equity: residual_interest
  Revenue: income
  Expense: outflow_or_consumption
  Budget: plan
  TaxRecord: document
  AuditEvidence: document
  AccountingPolicy: rule
  AccountingStandard: normative_reference
  Control: procedure
  SourceDocument: document

RELATIONSHIPS:
  reports(ReportingEntity, FinancialStatement)
  covers(FinancialStatement, AccountingPeriod)
  records(Ledger, JournalEntry)
  contains(JournalEntry, JournalLine)
  posts_to(JournalLine, Account)
  substantiated_by(Transaction, SourceDocument)
  recognises(ReportingEntity, Asset|Liability|Revenue|Expense)
  governed_by(FinancialStatement, AccountingPolicy)
  references(AccountingPolicy, AccountingStandard)
  reconciles(AccountBalance, SourceDocument)
  verified_by(Transaction|AccountBalance, AuditEvidence)
  mitigated_by(AccountingRisk, Control)

CONSTRAINTS:
  journal_balance: for_each JournalEntry e, sum(e.lines.debit) == sum(e.lines.credit)
  non_negative_lines: for_each JournalLine l, l.debit >= 0 and l.credit >= 0
  single_side_line: for_each JournalLine l, not (l.debit > 0 and l.credit > 0)
  statement_identity: Assets == Liabilities + Equity
  period_integrity: posting_date in authorised_period OR approved_adjustment
  currency_consistency: totals require same_currency OR documented_conversion
  evidence_traceability: material_postings SHOULD reference SourceDocument

DERIVED_RULES:
  trial_balance_balanced := sum(TrialBalance.debit) == sum(TrialBalance.credit)
  gross_profit := revenue - cost_of_sales
  operating_profit := gross_profit - operating_expenses
  net_profit := total_income - total_expenses
  working_capital := current_assets - current_liabilities
  closing_equity := opening_equity + owner_contributions + comprehensive_income - distributions + other_equity_movements
  NOTE: Financial statement presentation and recognition depend on the applicable framework.

INFERENCE:
  IF journal_balance == false THEN flag("unbalanced_journal_entry")
  IF trial_balance_balanced == false THEN flag("ledger_balance_exception")
  IF account_balance != independently_supported_balance THEN flag("reconciliation_difference")
  IF missing_required_source_document THEN flag("evidence_gap")
  IF policy_conflicts_with_applicable_standard THEN flag("policy_review_required")
  IF reported_amount_is_estimate THEN require("assumptions_and_uncertainty")
  NOTE: Balanced books alone do not establish accuracy, completeness, or absence of fraud.

CONFIDENCE:
  range: [0.0, 1.0]
  evidence_factors: [source_reliability, completeness, reconciliation_status, audit_status, timeliness]
  rule: confidence is evidence-weighted and never substitutes for audit assurance

SEMANTIC_EQUIVALENCE:
  accounts_payable ~ trade_creditors WHEN context == trade_payables
  accounts_receivable ~ trade_debtors WHEN context == trade_receivables
  income_statement ~ profit_and_loss_statement WHEN reporting_framework_compatible
  balance_sheet ~ statement_of_financial_position WHEN reporting_framework_compatible
  NOTE: Terminological similarity does not imply identical recognition or presentation rules.

PROVENANCE:
  required_fields: [source_id, source_type, author_or_issuer, observed_at, applicable_period, version]
  preserve: [original_amount, original_currency, transformation_history, evidence_links]

FLOW_HASH:
  method: SHA-256
  input: canonical_serialisation(types, relationships, constraints, rules, provenance, version)
  output: deterministic_content_digest
  NOTE: Digest calculated at implementation time; no fabricated hash supplied.

UPDATE_MODEL:
  trigger: [new_transaction, corrected_entry, revised_standard, amended_policy, restatement, new_audit_evidence]
  actions: [validate, version, recalculate, reconcile, propagate_dependencies, regenerate_flow_hash]
  preserve_history: true
  conflict_policy: require_human_review_for_material_conflicts

AI_CONSUMPTION:
  output: [typed_entities, semantic_relationships, validated_inferences, confidence, provenance, version, flow_hash]
  safeguards: [no_invented_balances, no_unsupported_audit_opinions, distinguish_fact_from_estimate, identify_applicable_jurisdiction_and_standard]
  use_cases: [financial_knowledge_graphs, document_classification, reconciliation_assistance, reporting_validation, accounting_retrieval]

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