@prefix core: <http://proethica.org/ontology/core#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix pcsh: <http://proethica.org/shapes/core#> .
@prefix proeth: <http://proethica.org/ontology/intermediate#> .
@prefix proeth-prov: <http://proethica.org/provenance#> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@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:RegulatoryGapState a owl:Class ;
    rdfs:label "RegulatoryGapState" ;
    proeth:activationConditions "The City drafts senior-level employment contracts without revolving door provisions" ;
    proeth:confidence "0.85" ;
    proeth:persistenceType "inertial" ;
    proeth:principleTransformation "With no contractual restriction in force, any limits on Engineer D's post-employment conduct must come from professional ethics rather than from contract terms." ;
    proeth:stateCategory "regulatory" ;
    proeth:terminationConditions "The City adopts revolving door provisions in its employment contracts" ;
    proeth:textReferences "Of significance is that the City does not include “revolving door” provisions in employment contracts for its senior-level employees." ;
    proeth-prov:discoveredInCase 10 ;
    proeth-prov:discoveredInPass 1 ;
    proeth-prov:discoveredInSection "facts" ;
    proeth-prov:firstDiscoveredAt "2026-07-05T05:42:51.898894+00:00"^^xsd:dateTime ;
    proeth-prov:firstDiscoveredInCase 10 ;
    proeth-prov:matchConfidence 0.74 ;
    proeth-prov:matchReasoning "The absence of revolving door provisions is a condition of the regulatory standing of the situation, a specialization of the canonical Regulatory State archetype. It is distinct from Evolving Standard State, which concerns unsettled professional guidelines rather than a gap in contractual provisions, so it matches the parent archetype at medium confidence." ;
    proeth-prov:matchedOntologyClass proeth:RegulatoryState ;
    proeth-prov:matchedOntologyLabel "Regulatory State" ;
    proeth-prov:matchesExisting true ;
    proeth-prov:sourceText "Of significance is that the City does not include “revolving door” provisions in employment contracts for its senior-level employees." ;
    rdfs:comment "A regulatory condition in which no provision, rule, or contractual requirement is in force to govern an ethically significant practice question, here the absence of revolving door provisions in the City's employment contracts for senior-level employees, so the movement of a senior public engineer to a private firm doing business with the City is not contractually restricted." ;
    rdfs:subClassOf proeth:RegulatoryState ;
    skos:definition "A regulatory condition in which no provision, rule, or contractual requirement is in force to govern an ethically significant practice question, here the absence of revolving door provisions in the City's employment contracts for senior-level employees, so the movement of a senior public engineer to a private firm doing business with the City is not contractually restricted." ;
    skos:scopeNote "[RegulatoryState] A condition in which a code provision, standard, statute, permit, or contractual requirement is in force for the situation, including states of compliance and of violation. As a content kind it is the regulatory standing of the situation. Its deontic relevance is that it activates a constraint or compliance obligation on the available actions." ;
    prov:generatedAtTime "2026-07-05T05:42:51.898894+00:00"^^xsd:dateTime ;
    prov:wasAttributedTo "Case 10 Extraction",
        "claude-fable-5" .

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 .

