@prefix core: <http://proethica.org/ontology/core#> .
@prefix iao: <http://purl.obolibrary.org/obo/IAO_> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix pcsh: <http://proethica.org/shapes/core#> .
@prefix proeth: <http://proethica.org/ontology/intermediate#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

proeth:EmergencyState a owl:Class ;
    rdfs:label "Emergency State"@en ;
    proeth:persistenceType "non_inertial" ;
    iao:0000115 "An acute, time-critical condition demanding immediate response. As a content kind it is distinguished from RiskState by acuteness. Its deontic relevance is that it can activate emergency-response obligations and license suspension of constraints that normally bound action."@en ;
    rdfs:comment "Acute, time-critical condition demanding immediate response."@en ;
    rdfs:subClassOf core:State ;
    skos:changeNote "2026-07-06: the Almpani and Stefaneas reference was removed after a verify-or-drop check against the full text: emergency and suspension occur nowhere in the paper, whose subject is context-determined priority ordering; the suspension clause stays as unattributed design language."@en ;
    skos:definition "An acute, time-critical condition demanding immediate response. As a content kind it is distinguished from RiskState by acuteness. Its deontic relevance is that it can activate emergency-response obligations and license suspension of constraints that normally bound action."@en .

pcsh:CaseAnnotationShape a sh:NodeShape ;
    rdfs:label "Shared per-case annotation schema (all nine components)"@en ;
    rdfs:comment "The cross-component annotation fields on committed case individuals: proeth:confidence (extraction confidence, decimal; all components except Action, whose Step-3 contract carries no confidence field), proeth:textReferences (verbatim supporting quotes, universal), proeth-prov sourceText (the source snippet, on the Step-1/2 provenance layers; Step-3 A/E individuals ground via textReferences only), and the involvement gloss (proeth:caseInvolvement on role individuals, proeth:caseContext on obligation, capability, and constraint individuals). Values are per-individual; the fields do not individuate any type."@en ;
    sh:property [ sh:description "Extraction confidence for this individual (0 to 1)." ;
            sh:name "confidence" ;
            sh:order 1 ;
            sh:path proeth:confidence ],
        [ sh:description "Verbatim case quotes supporting this individual." ;
            sh:name "text references" ;
            sh:order 2 ;
            sh:path proeth:textReferences ],
        [ sh:description "How this individual figures in the case narrative (role individuals; the same text is routed into rdfs:comment)." ;
            sh:name "case involvement" ;
            sh:order 3 ;
            sh:path proeth:caseInvolvement ],
        [ sh:description "Grounding context in this case (obligation, capability, and constraint individuals)." ;
            sh:name "case context" ;
            sh:order 4 ;
            sh:path proeth:caseContext ] ;
    sh:targetClass core:Action,
        core:Capability,
        core:Constraint,
        core:Event,
        core:Obligation,
        core:Principle,
        core:Resource,
        core:Role,
        core:State .

pcsh:StateDefinitionShape a sh:NodeShape ;
    rdfs:label "State definition schema (type-level, descriptive, field contract)"@en ;
    rdfs:comment "What individuates a state TYPE: its content archetype (drives the archetype subClassOf typing) and its persistence type (inertial vs non-inertial fluent, a class-level datatype). Its per-case urgency and the activatesObligation edge are per-individual and declared on StatePropertyShape, mirroring the Role/Principle/Obligation Definition/Property split and the state scopeNote (which names the condition and its persistence type as type-defining). Descriptive only (no validation result); state_category is a routing input, not stored as a literal."@en ;
    sh:property [ sh:description "The content archetype, which drives the archetype subClassOf typing: EpistemicState, RiskState, CompetenceState, EmergencyState, ConflictOfInterestState, RegulatoryState, TemporalState, ResourceState, DisclosureState. A classification of the state content, explicitly NOT the activatesObligation relation. A routing input, not stored as a literal." ;
            sh:name "state archetype" ;
            sh:order 1 ;
            sh:path proeth:stateCategory ],
        [ sh:description "Whether the state is an inertial fluent (holds until an event terminates it) or a non-inertial fluent (true at a single time point), the inertial versus non-inertial fluent distinction of Berreby et al. (2017) in the Event Calculus; a class-level datatype, a property of the fluent predicate itself." ;
            sh:name "persistence type" ;
            sh:order 2 ;
            sh:path proeth:persistenceType ] ;
    sh:targetClass core:State .

pcsh:StatePropertyShape a sh:NodeShape ;
    rdfs:label "State per-case schema (individual data, non-definitional)"@en ;
    rdfs:comment "What a given state INDIVIDUAL is described by in a specific case: its bearer and holding period, its urgency (per-case salience), the event boundaries of the fluent, and the obligations, constraints, and agents its obtaining engages via edges. These do NOT individuate the state TYPE (that is StateDefinitionShape); their values are per-case, asserted on the individual. The proeth:principleTransformation synthesis literal (the S->P->O grounding written onto the individual by the state-edge pass) is deliberately not part of the extraction field contract. Descriptive only."@en ;
    sh:property [ sh:description "The salience or acuteness of the state in this case (Jones 1991 moral-intensity salience; components include temporal immediacy, magnitude of consequences, and proximity)." ;
            sh:name "urgency level" ;
            sh:order 1 ;
            sh:path proeth:urgencyLevel ],
        [ sh:description "The obligation the state makes applicable, via the outgoing S->O activatesObligation edge; the incoming counterpart is defeasibleUnder (O->S), recording the obligation that yields when this state obtains. Range: Obligation." ;
            sh:name "activates obligation" ;
            sh:order 2 ;
            sh:path core:activatesObligation ],
        [ sh:description "The constraint the state activates, via the outgoing S->Cs activatesConstraint edge, bounding the actions available while the state holds. Range: Constraint." ;
            sh:name "activates constraint" ;
            sh:order 3 ;
            sh:path core:activatesConstraint ],
        [ sh:description "The agent(s) the state bears on, via the S->Agent affects edge, resolved from the affected-parties text by embedding shortlist + LLM multi-select. Range: Agent." ;
            sh:name "affects" ;
            sh:order 4 ;
            sh:path core:affects ],
        [ sh:description "The entity the state holds of (the bearer text); a kept literal that also feeds the defeasibility prompt as state context." ;
            sh:name "subject" ;
            sh:order 5 ;
            sh:path proeth:subject ],
        [ sh:description "The period over which the state holds, as extracted text." ;
            sh:name "active period" ;
            sh:order 6 ;
            sh:path proeth:activePeriod ],
        [ sh:description "The event bringing the state into being; kept verbatim on the individual and also resolved to the activatedByEvent edge (the start boundary of the fluent)." ;
            sh:name "triggering event" ;
            sh:order 7 ;
            sh:path proeth:triggeringEvent ],
        [ sh:description "What removes the state; kept verbatim on the individual and also resolved to the terminatedByEvent edge (the end boundary of the fluent)." ;
            sh:name "terminated by" ;
            sh:order 8 ;
            sh:path proeth:terminatedBy ],
        [ sh:description "The Event whose occurrence initiates this state, via the outgoing activatedByEvent edge (the start boundary of the fluent). Range: Event." ;
            sh:name "activated by event" ;
            sh:order 9 ;
            sh:path core:activatedByEvent ],
        [ sh:description "The Event whose occurrence ends this state, via the outgoing terminatedByEvent edge (the end boundary of the fluent). Range: Event." ;
            sh:name "terminated by event" ;
            sh:order 10 ;
            sh:path core:terminatedByEvent ] ;
    sh:targetClass core:State .

