Linked.Archi Financial Architecture SHACL Shapes
type: Ontology
imports: core#
license: http://creativecommons.org/licenses/by/4.0/
preferred namespace prefix: finash
creator: Kalin Maldzhanski
description: SHACL shapes for validating financial architecture models. Enforces governance rules: every cost model must have a currency and at least one cost item, every investment case must have a type and projected ROI, and every cost-benefit analysis must have cost, benefit, and NPV.
created: 2026-05-03
modified: 2026-05-03
publisher: Linked.Archi
publisher: linked.archi
status: draft
version IRI: 0.1.0#
version info: 0.1.0

Cost Model Shape
type: NodeShape
target class: CostModel
definition: Validates that cost models have required metadata.
property:
  path: currency
  min count: 1
  max count: 1
  datatype: string
  message: Every cost model must declare its currency (ISO 4217 code).
  severity: Violation
property:
  path: hasCostItem
  min count: 1
  message: Every cost model must have at least one cost item.
  severity: Violation
property:
  path: tcoHorizonYears
  min count: 1
  datatype: integer
  message: Every cost model should declare its TCO horizon (years).
  severity: Warning
property:
  path: costModelDate
  min count: 1
  datatype: date
  message: Every cost model should have a date indicating when it was last updated.
  severity: Warning

Cost Item Shape
type: NodeShape
target class: CostItem
definition: Validates that cost items have required metadata.
property:
  path: costCategory
  min count: 1
  class: CostCategory
  message: Every cost item must have a cost category.
  severity: Violation
or:
  property:
    path: annualAmount
    min count: 1
    datatype: decimal
or:
  property:
    path: oneTimeAmount
    min count: 1
    datatype: decimal

Investment Case Shape
type: NodeShape
target class: InvestmentCase
definition: Validates that investment cases have required metadata.
property:
  path: prefLabel
  min count: 1
  message: Every investment case must have a human-readable label.
  severity: Violation
property:
  path: investmentType
  min count: 1
  max count: 1
  class: InvestmentType
  message: Every investment case must declare its type (Run/Grow/Transform).
  severity: Violation
property:
  path: investmentAmount
  min count: 1
  datatype: decimal
  message: Every investment case must have an investment amount.
  severity: Violation
property:
  path: projectedROI
  min count: 1
  datatype: decimal
  message: Every investment case should have a projected ROI.
  severity: Warning
property:
  path: investmentSponsor
  min count: 1
  message: Every investment case should have a sponsor.
  severity: Warning

Cost-Benefit Analysis Shape
type: NodeShape
target class: CostBenefitAnalysis
definition: Validates that cost-benefit analyses have required metrics.
property:
  path: estimatedCost
  min count: 1
  datatype: decimal
  message: Every CBA must have an estimated cost.
  severity: Violation
property:
  path: estimatedBenefit
  min count: 1
  datatype: decimal
  message: Every CBA must have an estimated benefit.
  severity: Violation
property:
  path: netPresentValue
  min count: 1
  datatype: decimal
  message: Every CBA should have a net present value.
  severity: Warning
property:
  path: cbaCurrency
  min count: 1
  datatype: string
  message: Every CBA must declare its currency.
  severity: Violation

Budget Shape
type: NodeShape
target class: Budget
definition: Validates that budgets have required metadata.
property:
  path: prefLabel
  min count: 1
  message: Every budget must have a human-readable label.
  severity: Violation
property:
  path: budgetAmount
  min count: 1
  datatype: decimal
  message: Every budget must have an amount.
  severity: Violation
property:
  path: budgetCurrency
  min count: 1
  datatype: string
  message: Every budget must declare its currency.
  severity: Violation
property:
  path: budgetOwner
  min count: 1
  message: Every budget should have an owner.
  severity: Warning

Technical Debt Cost Shape
type: NodeShape
target class: TechnicalDebtCost
definition: Validates that technical debt costs have required metadata.
property:
  path: debtType
  min count: 1
  message: Technical debt costs must specify the debt type (interest or principal).
  severity: Warning
property:
  path: debtDescription
  min count: 1
  message: Technical debt costs should describe the debt and its impact.
  severity: Warning

Cloud Cost Allocation Shape
type: NodeShape
target class: CloudCostAllocation
definition: Validates that cloud cost allocations have FinOps metadata.
property:
  path: cloudProvider
  min count: 1
  message: Cloud cost allocations must specify the cloud provider.
  severity: Violation
property:
  path: cloudServiceType
  min count: 1
  message: Cloud cost allocations must specify the service type.
  severity: Warning