@prefix owl:     <http://www.w3.org/2002/07/owl#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix skos:    <http://www.w3.org/2004/02/skos/core#> .
@prefix vl:      <https://valuelogics.ai/ontology/value#> .

#################################################################
#  ValueLogics Value Ontology  ·  v1.0.0
#  One governed core, four modules: Problem Pyramid · ROI ·
#  Value Marketing · Proof. Profiled per domain, never forked.
#################################################################

<https://valuelogics.ai/ontology/value> a owl:Ontology ;
    dcterms:title    "ValueLogics Value Ontology" ;
    dcterms:creator  "Anthony Sarno — ValueLogics.ai" ;
    owl:versionInfo  "1.0.0" ;
    rdfs:comment      "A four-module ontology for planning, quantifying, communicating, and proving value. The four modules share join keys so a value message traces to a REAL requirement, to a quantified benefit, to a hash-verified proof. One governed core; domains (e.g. data warehouse, healthcare, Salesforce) are profiles on top, never forks." ;
    rdfs:seeAlso     "AAEI — AI Agent Accountability (evidence & settlement alignment)" ,
                     "OMG BMM — Business Motivation Model (Problem Pyramid alignment)" ,
                     "BVPM — Business Value Proposition Model (Value Marketing alignment)" .

### Annotation property to tag each term's module
vl:module a owl:AnnotationProperty ;
    rdfs:label "module" ;
    rdfs:comment "Core | Problem Pyramid | ROI | Value Marketing | Proof" .

#################################################################
#  CORE
#################################################################

vl:ValueEntity a owl:Class ; rdfs:label "Value Entity" ; vl:module "Core" ;
    rdfs:comment "Top class for every concept in the value ontology." .

vl:BusinessCase a owl:Class ; rdfs:subClassOf vl:ValueEntity ; rdfs:label "Business Case" ; vl:module "Core" ;
    rdfs:comment "The anchor object. Carries the canonical business_case_id and joins all four modules." ;
    rdfs:subClassOf [ a owl:Restriction ; owl:onProperty vl:businessCaseId ; owl:cardinality 1 ] .

vl:Measure a owl:Class ; rdfs:subClassOf vl:ValueEntity ; rdfs:label "Measure" ; vl:module "Core" ;
    rdfs:comment "A named, quantifiable metric. Join key across Problem Pyramid, ROI and Proof." .

#################################################################
#  MODULE 1 · PROBLEM PYRAMID  (what the customer values)
#################################################################

vl:ProblemPyramid a owl:Class ; rdfs:subClassOf vl:ValueEntity ; rdfs:label "Problem Pyramid" ; vl:module "Problem Pyramid" ;
    rdfs:comment "The discovery structure: problem, causes, BAU and Goal Measure yielding REAL requirements." .

vl:Problem       a owl:Class ; rdfs:subClassOf vl:ValueEntity ; rdfs:label "Problem" ;        vl:module "Problem Pyramid" .
vl:Cause         a owl:Class ; rdfs:subClassOf vl:ValueEntity ; rdfs:label "Cause" ;          vl:module "Problem Pyramid" .
vl:BAU           a owl:Class ; rdfs:subClassOf vl:ValueEntity ; rdfs:label "Business As Usual (BAU)" ; vl:module "Problem Pyramid" ;
    rdfs:comment "The as-is baseline state the goal is measured against." .
vl:GoalMeasure   a owl:Class ; rdfs:subClassOf vl:Measure ;     rdfs:label "Goal Measure" ;   vl:module "Problem Pyramid" ;
    rdfs:comment "JOIN KEY. The governed target metric the customer values." .
vl:RealRequirement a owl:Class ; rdfs:subClassOf vl:ValueEntity ; rdfs:label "REAL Requirement" ; vl:module "Problem Pyramid" ;
    rdfs:comment "JOIN KEY. A deliverable 'what' that provides value when met (vs a product/design 'how')." .

#################################################################
#  MODULE 2 · ROI  (what it is worth)
#################################################################

vl:Cost a owl:Class ; rdfs:subClassOf vl:ValueEntity ; rdfs:label "Cost" ; vl:module "ROI" .
vl:ImplementationCost a owl:Class ; rdfs:subClassOf vl:Cost ; rdfs:label "Implementation Cost" ; vl:module "ROI" .
vl:OperationalCost    a owl:Class ; rdfs:subClassOf vl:Cost ; rdfs:label "Operational Cost" ;    vl:module "ROI" .
vl:OpportunityCost    a owl:Class ; rdfs:subClassOf vl:Cost ; rdfs:label "Opportunity Cost" ;    vl:module "ROI" .

vl:Benefit a owl:Class ; rdfs:subClassOf vl:ValueEntity ; rdfs:label "Benefit" ; vl:module "ROI" ;
    rdfs:comment "JOIN KEY (Value/Benefit). Quantified value in one of four buckets." .
vl:Revenue       a owl:Class ; rdfs:subClassOf vl:Benefit ; rdfs:label "Revenue" ;        vl:module "ROI" .
vl:CostSavings   a owl:Class ; rdfs:subClassOf vl:Benefit ; rdfs:label "Cost Savings" ;   vl:module "ROI" .
vl:AssetSavings  a owl:Class ; rdfs:subClassOf vl:Benefit ; rdfs:label "Asset Savings" ;  vl:module "ROI" .
vl:RiskReduction a owl:Class ; rdfs:subClassOf vl:Benefit ; rdfs:label "Risk Reduction" ; vl:module "ROI" .

vl:ROIMetric a owl:Class ; rdfs:subClassOf vl:Measure ; rdfs:label "ROI Metric" ; vl:module "ROI" .
vl:NPV            a owl:Class ; rdfs:subClassOf vl:ROIMetric ; rdfs:label "Net Present Value" ;     vl:module "ROI" .
vl:IRR            a owl:Class ; rdfs:subClassOf vl:ROIMetric ; rdfs:label "Internal Rate of Return" ; vl:module "ROI" .
vl:PaybackPeriod  a owl:Class ; rdfs:subClassOf vl:ROIMetric ; rdfs:label "Payback Period" ;        vl:module "ROI" .
vl:ROIPercentage  a owl:Class ; rdfs:subClassOf vl:ROIMetric ; rdfs:label "ROI Percentage" ;        vl:module "ROI" .

vl:CashFlow a owl:Class ; rdfs:subClassOf vl:ValueEntity ; rdfs:label "Cash Flow" ; vl:module "ROI" .
vl:Risk     a owl:Class ; rdfs:subClassOf vl:ValueEntity ; rdfs:label "Risk" ;      vl:module "ROI" ;
    rdfs:comment "Risk exposure = impact × likelihood." .

#################################################################
#  MODULE 3 · VALUE MARKETING  (how you say it)
#################################################################

vl:Persona          a owl:Class ; rdfs:subClassOf vl:ValueEntity ; rdfs:label "Persona" ;           vl:module "Value Marketing" ;
    rdfs:comment "JOIN KEY. The decision-maker or buyer segment value is framed for." .
vl:ValueProposition a owl:Class ; rdfs:subClassOf vl:ValueEntity ; rdfs:label "Value Proposition" ; vl:module "Value Marketing" .
vl:ValueMessage     a owl:Class ; rdfs:subClassOf vl:ValueEntity ; rdfs:label "Value Message" ;     vl:module "Value Marketing" ;
    rdfs:comment "A market-facing claim; the head of the traceability thread." .
vl:Channel          a owl:Class ; rdfs:subClassOf vl:ValueEntity ; rdfs:label "Channel" ;           vl:module "Value Marketing" .
vl:CaseStudy        a owl:Class ; rdfs:subClassOf vl:ValueEntity ; rdfs:label "Case Study" ;        vl:module "Value Marketing" .

#################################################################
#  MODULE 4 · PROOF  (did it happen?)
#################################################################

vl:Proof a owl:Class ; rdfs:subClassOf vl:ValueEntity ; rdfs:label "Proof" ; vl:module "Proof" ;
    rdfs:comment "Verification that a claimed benefit was realized. Aligns to AAEI (evidence) / VDSC (validation) / STT (settlement)." ;
    rdfs:subClassOf [ a owl:Restriction ; owl:onProperty vl:hasActual   ; owl:someValuesFrom vl:Actual ] ,
                    [ a owl:Restriction ; owl:onProperty vl:hasBaseline ; owl:someValuesFrom vl:Baseline ] .

vl:Claim        a owl:Class ; rdfs:subClassOf vl:ValueEntity ; rdfs:label "Claim" ;        vl:module "Proof" .
vl:Evidence     a owl:Class ; rdfs:subClassOf vl:ValueEntity ; rdfs:label "Evidence" ;     vl:module "Proof" .
vl:Measurement  a owl:Class ; rdfs:subClassOf vl:ValueEntity ; rdfs:label "Measurement" ;  vl:module "Proof" .
vl:Actual       a owl:Class ; rdfs:subClassOf vl:Measurement ; rdfs:label "Actual" ;       vl:module "Proof" ;
    rdfs:comment "Telemetry proposes a candidate Actual; stakeholder confirmation (isAuthoritative = true) makes it authoritative. External signals explain drift but never rewrite a governed Actual." .
vl:Baseline     a owl:Class ; rdfs:subClassOf vl:Measurement ; rdfs:label "Baseline" ;     vl:module "Proof" ;
    rdfs:comment "The locked BAU value a Proof measures against." .
vl:Drift        a owl:Class ; rdfs:subClassOf vl:ValueEntity ; rdfs:label "Drift" ;        vl:module "Proof" .
vl:Attestation  a owl:Class ; rdfs:subClassOf vl:ValueEntity ; rdfs:label "Attestation" ;  vl:module "Proof" .
vl:Provenance   a owl:Class ; rdfs:subClassOf vl:ValueEntity ; rdfs:label "Provenance" ;   vl:module "Proof" .

vl:ProofStatus a owl:Class ; rdfs:label "Proof Status" ; vl:module "Proof" ;
    owl:oneOf ( vl:Projected vl:Confirmed vl:Realized vl:Verified ) .
vl:Projected a vl:ProofStatus ; rdfs:label "Projected" .
vl:Confirmed a vl:ProofStatus ; rdfs:label "Confirmed" .
vl:Realized  a vl:ProofStatus ; rdfs:label "Realized (Actual)" .
vl:Verified  a vl:ProofStatus ; rdfs:label "Verified (hash-attested)" .

#################################################################
#  OBJECT PROPERTIES  (relationships & joins)
#################################################################

vl:causedBy         a owl:ObjectProperty ; rdfs:label "caused by" ;        rdfs:domain vl:Problem ;        rdfs:range vl:Cause .
vl:hasRealRequirement a owl:ObjectProperty ; rdfs:label "has REAL requirement" ; rdfs:domain vl:ProblemPyramid ; rdfs:range vl:RealRequirement .
vl:hasGoalMeasure   a owl:ObjectProperty ; rdfs:label "has goal measure" ; rdfs:domain vl:ProblemPyramid ; rdfs:range vl:GoalMeasure .
vl:hasBAU           a owl:ObjectProperty ; rdfs:label "has BAU" ;          rdfs:domain vl:ProblemPyramid ; rdfs:range vl:BAU .

vl:quantifiedBy     a owl:ObjectProperty ; rdfs:label "quantified by" ;    rdfs:domain vl:RealRequirement ; rdfs:range vl:Benefit ;
    rdfs:comment "PP → ROI join: a REAL requirement is quantified as a benefit." .
vl:hasBenefit       a owl:ObjectProperty ; rdfs:label "has benefit" ;      rdfs:domain vl:BusinessCase ;   rdfs:range vl:Benefit .
vl:hasCost          a owl:ObjectProperty ; rdfs:label "has cost" ;         rdfs:domain vl:BusinessCase ;   rdfs:range vl:Cost .
vl:hasMetric        a owl:ObjectProperty ; rdfs:label "has metric" ;       rdfs:domain vl:BusinessCase ;   rdfs:range vl:ROIMetric .
vl:hasProof         a owl:ObjectProperty ; rdfs:label "has proof" ;        rdfs:domain vl:BusinessCase ;   rdfs:range vl:Proof .

vl:addressesRequirement a owl:ObjectProperty ; rdfs:label "addresses requirement" ; rdfs:domain vl:ValueMessage ; rdfs:range vl:RealRequirement ;
    rdfs:comment "Marketing → PP join: a value message addresses a REAL requirement." .
vl:targetsPersona   a owl:ObjectProperty ; rdfs:label "targets persona" ;  rdfs:domain vl:ValueProposition ; rdfs:range vl:Persona .
vl:supportsClaim    a owl:ObjectProperty ; rdfs:label "supports claim" ;   rdfs:domain vl:CaseStudy ;      rdfs:range vl:Claim .

vl:provenBy         a owl:ObjectProperty ; rdfs:label "proven by" ;        rdfs:domain vl:Benefit ;        rdfs:range vl:Proof ;
    rdfs:comment "ROI → Proof join: a benefit is proven by a proof." .
vl:hasActual        a owl:ObjectProperty ; rdfs:label "has actual" ;       rdfs:domain vl:Proof ;          rdfs:range vl:Actual .
vl:hasBaseline      a owl:ObjectProperty ; rdfs:label "has baseline" ;     rdfs:domain vl:Proof ;          rdfs:range vl:Baseline .
vl:hasDrift         a owl:ObjectProperty ; rdfs:label "has drift" ;        rdfs:domain vl:Proof ;          rdfs:range vl:Drift .
vl:attestedBy       a owl:ObjectProperty ; rdfs:label "attested by" ;      rdfs:domain vl:Proof ;          rdfs:range vl:Attestation .
vl:hasStatus        a owl:ObjectProperty ; rdfs:label "has status" ;       rdfs:domain vl:Proof ;          rdfs:range vl:ProofStatus .
vl:hasEvidence      a owl:ObjectProperty ; rdfs:label "has evidence" ;     rdfs:domain vl:Claim ;          rdfs:range vl:Evidence .
vl:hasProvenance    a owl:ObjectProperty ; rdfs:label "has provenance" ;   rdfs:domain vl:Evidence ;       rdfs:range vl:Provenance .
vl:measuredAgainst  a owl:ObjectProperty ; rdfs:label "measured against" ; rdfs:domain vl:Actual ;         rdfs:range vl:Baseline .

### Traceability spine: Message → Requirement → Benefit → Proof
vl:tracesToProof a owl:ObjectProperty ; rdfs:label "traces to proof" ;
    rdfs:domain vl:ValueMessage ; rdfs:range vl:Proof ;
    rdfs:comment "The end-to-end thread. A value message traces, via requirement and benefit, to a hash-verified proof." ;
    owl:propertyChainAxiom ( vl:addressesRequirement vl:quantifiedBy vl:provenBy ) .

#################################################################
#  DATATYPE PROPERTIES
#################################################################

vl:businessCaseId  a owl:DatatypeProperty , owl:FunctionalProperty ; rdfs:label "business_case_id" ;
    rdfs:domain vl:BusinessCase ; rdfs:range xsd:string ;
    rdfs:comment "JOIN KEY. The one canonical id threading every module and artifact." .
vl:amount          a owl:DatatypeProperty ; rdfs:label "amount" ;   rdfs:range xsd:decimal .
vl:currency        a owl:DatatypeProperty ; rdfs:label "currency" ; rdfs:range xsd:string .
vl:period          a owl:DatatypeProperty ; rdfs:label "period" ;   rdfs:range xsd:string .
vl:confidence      a owl:DatatypeProperty ; rdfs:label "confidence" ; rdfs:domain vl:Proof ; rdfs:range xsd:decimal .
vl:hash            a owl:DatatypeProperty ; rdfs:label "hash" ;     rdfs:domain vl:Proof ; rdfs:range xsd:string ;
    rdfs:comment "SHA-256 of the sealed proof event." .
vl:realizationRate a owl:DatatypeProperty ; rdfs:label "realization rate" ; rdfs:domain vl:Actual ; rdfs:range xsd:decimal .
vl:driftStatus     a owl:DatatypeProperty ; rdfs:label "drift status" ; rdfs:domain vl:Drift ; rdfs:range xsd:string ;
    rdfs:comment "on_track | watch | drifting" .
vl:isAuthoritative a owl:DatatypeProperty ; rdfs:label "is authoritative" ; rdfs:domain vl:Actual ; rdfs:range xsd:boolean ;
    rdfs:comment "false = telemetry candidate; true = stakeholder-confirmed authoritative Actual." .
