@prefix wn:   <https://witnessability.io/ns/wn#> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:  <http://www.w3.org/2002/07/owl#> .
@prefix xsd:  <http://www.w3.org/2001/XMLSchema#> .
@prefix dct:  <http://purl.org/dc/terms/> .

# Witnessability Notation vocabulary: the abstract syntax of Specification v0.4 §3 as RDF, aligned with PROV-O.
# Informative bridge of 3 November 2026 (research/notation/2026-10-31/bridges/). Namespace document:
# https://witnessability.io/ns/wn/ (HTML, one anchor per term) and this file at https://witnessability.io/ns/wn.ttl.
# Where the vocabulary and the versioned texts of the Core, CBEE or WEXP differ, the texts prevail.
# Licence: CC0 1.0 (Specification v0.4 §13, erratum E-13; LICENSE-MAP.md).

wn: a owl:Ontology ;
    rdfs:label "Witnessability Notation vocabulary"@en ;
    dct:created "2026-11-03"^^xsd:date ;
    dct:license <https://creativecommons.org/publicdomain/zero/1.0/> ;
    owl:versionInfo "bridge 0.2 for notation 0.4, generator 0.4.0" ;
    rdfs:comment "The elements of a boundary diagram and an evaluator's findings about what records support. PROV-O is used only for who generated the findings and from what; the findings, states, premises and ceilings are terms of this vocabulary and are not PROV relations."@en ;
    rdfs:seeAlso <https://www.w3.org/TR/prov-o/> , <https://witnessability.io/ns/wn/> .

# ---------------- classes ----------------

wn:Diagram a owl:Class ; rdfs:label "diagram"@en ;
    rdfs:comment "A claim-relative figure: one report's records, claims and findings. Specification §3."@en .

wn:Band a owl:Class ; rdfs:label "control band"@en ;
    rdfs:comment "One party's control. Two points in one band are never independent. Does not mean: a trust zone."@en .

wn:Boundary a owl:Class ; rdfs:label "witness boundary"@en ;
    rdfs:comment "The producing boundary of CBEE −02: where records are produced, what can be observed there, who controls it. A type of the Core's Witnessability Boundary (Core 1.0 §5.3). Does not mean: a network perimeter, an organisational unit or a security control."@en .

wn:ObservationPoint a owl:Class ; rdfs:label "observation point"@en ;
    rdfs:comment "An Observation Locus (Core 1.0 §5.4) on a boundary. With observed = true capture occurred: a record exists. Does not mean: that the record is correct, complete or trustworthy. With observed = false only a capability exists (the ring). Does not mean: that nothing happened."@en .

wn:Record a owl:Class ; rdfs:label "record"@en ;
    rdfs:comment "A record (verified artefact), an assertion, or an expected record found absent. Records and assertions are also typed prov:Entity; an absent record is not, because it is no artefact. Tags are verified properties. Does not mean: the artefact's content is true."@en .

wn:Claim a owl:Class ; rdfs:label "claim"@en ;
    rdfs:comment "A Target Proposition (Core 1.0 §2.1), written literally, grouped by kind; rank orders claims within a kind as the author does (CBEE −02 §5 presumes no comparability); an unranked claim has no rank and no stated order with any other claim of its kind (v0.4, D-10)."@en .

wn:Finding a owl:Class ; rdfs:subClassOf prov:Entity ; rdfs:label "finding"@en ;
    rdfs:comment "An arrow of the diagram: the evaluator's finding about what one or more records, offered for a claim, support. Several offered records form a linked support: they warrant the claim jointly and none of them alone. Does not mean: that each record supports the claim a little."@en .

wn:Appraisal a owl:Class ; rdfs:subClassOf prov:Activity ; rdfs:label "appraisal"@en ;
    rdfs:comment "The evaluation that generated the findings; it used the evaluated set and is associated with the evaluator."@en .

wn:Evaluator a owl:Class ; rdfs:subClassOf prov:Agent ; rdfs:label "evaluator"@en .

wn:Premise a owl:Class ; rdfs:label "premise"@en ;
    rdfs:comment "A named premise a finding rests on."@en .

wn:Ceiling a owl:Class ; rdfs:label "ceiling"@en ;
    rdfs:comment "The claim ceiling of CBEE −02 §5: the limit that records from one boundary place on claims of one kind, under the stated premises. An exclusion rule, not a source of support. Does not mean: that a claim below it is supported, that a claim above it is false, or that another boundary cannot reach it."@en .

wn:Tie a owl:Class ; rdfs:label "binding tie"@en ;
    rdfs:comment "A Binding Relation (Core 1.0 §5.4) between two records; established or only asserted. Does not mean: the two records agree."@en .

wn:Coverage a owl:Class ; rdfs:label "coverage"@en ;
    rdfs:comment "Effective Capture Coverage (Core 1.0 §5.4): the channels, interval and rule within which absence of a record is informative."@en .

wn:Downgrade a owl:Class ; rdfs:label "downgrade"@en ;
    rdfs:comment "From an asserted claim to the supported claim of the same kind."@en .

wn:State a owl:Class ; rdfs:label "finding state"@en .
wn:Supported a wn:State ; rdfs:label "supported"@en ;
    rdfs:comment "Under the cited premises, the offered records warrant the claim; the evaluator's finding. Does not mean: the claim is true in the world."@en .
wn:Unsupported a wn:State ; rdfs:label "unsupported (does not follow)"@en ;
    rdfs:comment "Evaluated; the claim does not follow from the offered records. Does not mean: that the claim is false."@en .
wn:Refuted a wn:State ; rdfs:label "refuted"@en ;
    rdfs:comment "Evaluated; the offered records refute the claim under the named premises."@en .
wn:NotEvaluated a wn:State ; rdfs:label "not evaluated"@en ;
    rdfs:comment "Not assessed; supplies no finding for or against the claim. Does not mean: unsupported."@en .

wn:Grounding a owl:Class ; rdfs:label "grounding class"@en ;
    rdfs:comment "How a boundary description is grounded (WEXP Core −02 §7 classes)."@en .
wn:AssertedOnly a wn:Grounding ; rdfs:label "asserted-only"@en .
wn:Attributed a wn:Grounding ; rdfs:label "attributed"@en .
wn:Attested a wn:Grounding ; rdfs:label "attested"@en .
wn:GroundingNotEvaluated a wn:Grounding ; rdfs:label "not evaluated"@en ;
    rdfs:comment "The grounding of the boundary was not evaluated (WEXP Core -02 §7). Added with notation v0.4 after review R-1, 3 November 2026."@en .

wn:RecordFormKind a owl:Class ; rdfs:label "record form"@en .
wn:RecordForm a wn:RecordFormKind ; rdfs:label "record"@en .
wn:AssertionForm a wn:RecordFormKind ; rdfs:label "assertion"@en .
wn:AbsentForm a wn:RecordFormKind ; rdfs:label "no record"@en .

# ---------------- properties ----------------

wn:title a owl:DatatypeProperty ; rdfs:domain wn:Diagram ; rdfs:range xsd:string .
wn:sourceFormat a owl:DatatypeProperty ; rdfs:domain wn:Diagram ; rdfs:range xsd:string ;
    rdfs:comment "The version of the source format the diagram was written in (the wn field; Specification §13)."@en .
wn:generator a owl:DatatypeProperty ; rdfs:domain wn:Diagram ; rdfs:range xsd:string .
wn:action a owl:DatatypeProperty ; rdfs:domain wn:Diagram ; rdfs:range xsd:string .
wn:kindOrder a owl:ObjectProperty ; rdfs:domain wn:Diagram ; rdfs:comment "Display order of kinds (an rdf:List of strings)."@en .
wn:reliance a owl:DatatypeProperty ; rdfs:domain wn:Diagram ; rdfs:range xsd:boolean .
wn:notEvaluatedItem a owl:DatatypeProperty ; rdfs:domain wn:Diagram ; rdfs:range xsd:string .
wn:inDiagram a owl:ObjectProperty ; rdfs:range wn:Diagram .
wn:evaluatedSet a owl:ObjectProperty ; rdfs:domain wn:Appraisal ; rdfs:range wn:Record ;
    rdfs:comment "Every record the evaluator examined, absent ones included; prov:used names only the artefacts among them."@en .

wn:label a owl:DatatypeProperty ; rdfs:range xsd:string .
wn:text a owl:DatatypeProperty ; rdfs:range xsd:string .
wn:kind a owl:DatatypeProperty ; rdfs:range xsd:string ;
    rdfs:comment "The base or report kind a claim or ceiling belongs to (CBEE −02 §4, §5)."@en .
wn:rank a owl:DatatypeProperty ; rdfs:domain wn:Claim ; rdfs:range xsd:integer .
wn:wmType a owl:DatatypeProperty ; rdfs:domain wn:Claim ; rdfs:range xsd:string ;
    rdfs:comment "A WM 2.0 draft proposition type (Obs, Auth, Inv, Exec, Orig, NonExec); omitted where the claim is not a proposition about one action."@en .
wn:tag a owl:DatatypeProperty ; rdfs:domain wn:Record ; rdfs:range xsd:string .
wn:note a owl:DatatypeProperty ; rdfs:range xsd:string .

wn:inBand a owl:ObjectProperty ; rdfs:domain wn:Boundary ; rdfs:range wn:Band .
wn:onBoundary a owl:ObjectProperty ; rdfs:domain wn:ObservationPoint ; rdfs:range wn:Boundary .
wn:producedAt a owl:ObjectProperty ; rdfs:domain wn:Record ; rdfs:range wn:ObservationPoint .
wn:assertedAt a owl:ObjectProperty ; rdfs:domain wn:Record ; rdfs:range wn:Boundary ;
    rdfs:comment "A record asserted at a boundary with no observation point."@en .
wn:form a owl:ObjectProperty ; rdfs:domain wn:Record ; rdfs:range wn:RecordFormKind .
wn:grounding a owl:ObjectProperty ; rdfs:domain wn:Boundary ; rdfs:range wn:Grounding .
wn:observed a owl:DatatypeProperty ; rdfs:domain wn:ObservationPoint ; rdfs:range xsd:boolean .
wn:enforcement a owl:DatatypeProperty ; rdfs:domain wn:Boundary ; rdfs:range xsd:boolean .

wn:offers a owl:ObjectProperty ; rdfs:domain wn:Finding ; rdfs:range wn:Record .
wn:forClaim a owl:ObjectProperty ; rdfs:domain wn:Finding ; rdfs:range wn:Claim .
wn:state a owl:ObjectProperty ; rdfs:domain wn:Finding ; rdfs:range wn:State .
wn:premise a owl:ObjectProperty ; rdfs:domain wn:Finding ; rdfs:range wn:Premise .
wn:threshold a owl:DatatypeProperty ; rdfs:domain wn:Finding ; rdfs:range xsd:string .
wn:thresholdK a owl:DatatypeProperty ; rdfs:domain wn:Finding ; rdfs:range xsd:integer .
wn:thresholdN a owl:DatatypeProperty ; rdfs:domain wn:Finding ; rdfs:range xsd:integer .
wn:thresholdT a owl:DatatypeProperty ; rdfs:domain wn:Finding ; rdfs:range xsd:integer .

wn:ofBoundary a owl:ObjectProperty ; rdfs:range wn:Boundary .
wn:directlyAbove a owl:ObjectProperty ; rdfs:domain wn:Ceiling ; rdfs:range wn:Claim ;
    rdfs:comment "The claim directly below the ceiling; absent when the ceiling sits below the whole stack of its kind."@en .
wn:ceilingPremise a owl:ObjectProperty ; rdfs:domain wn:Ceiling ; rdfs:range wn:Premise ;
    rdfs:comment "A premise the ceiling rests on (Specification v0.4, N-12): CBEE −02 §5 places a ceiling under stated premises. Kept apart from wn:premise, whose domain is a finding."@en .
wn:between a owl:ObjectProperty ; rdfs:domain wn:Tie ; rdfs:range wn:Record .
wn:established a owl:DatatypeProperty ; rdfs:domain wn:Tie ; rdfs:range xsd:boolean .
wn:limit a owl:DatatypeProperty ; rdfs:domain wn:Finding ; rdfs:range xsd:boolean ;
    rdfs:comment "v0.4 (N-18): the struck finding states its boundary's limit on an unranked claim, under the premises it cites, not a gap in the evidence set."@en .
wn:channel a owl:DatatypeProperty ; rdfs:domain wn:Coverage ; rdfs:range xsd:string .
wn:interval a owl:DatatypeProperty ; rdfs:domain wn:Coverage ; rdfs:range xsd:string .
wn:cutoff a owl:DatatypeProperty ; rdfs:domain wn:Coverage ; rdfs:range xsd:string .
wn:fromClaim a owl:ObjectProperty ; rdfs:domain wn:Downgrade ; rdfs:range wn:Claim .
wn:toClaim a owl:ObjectProperty ; rdfs:domain wn:Downgrade ; rdfs:range wn:Claim .
