@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:ProfessionalTransparency a owl:Class ;
    rdfs:label "Professional Transparency" ;
    proeth:abstractNature "Requires contextual judgment about what information must be disclosed to whom, and at what stage of a professional process, to preserve trust and fairness in collegial relationships." ;
    proeth:confidence "0.91" ;
    proeth:derivedObligations "Decline to conduct covert review of a colleague's work",
        "Inform the original engineer of the scope and purpose of the review",
        "Notify the original engineer before commencing peer review" ;
    proeth:extensionalExamples "NSPE BER Case 94-7 on notification obligations when reviewing another engineer's work",
        "NSPE Code Section III.8 requiring engineers to notify the other party when asked to review another engineer's work" ;
    proeth:operationalization "Requires the reviewing engineer to notify the original design engineer before or at the outset of a peer review, and requires the client to permit such notification as a condition of the engagement." ;
    proeth:potentialConflicts "Confidentiality",
        "Loyalty" ;
    proeth:principleCategory "relational" ;
    proeth:textReferences "Engineer B objects to conducting the peer review without advising Engineer A",
        "Owner instructs Engineer B to conduct the peer review without letting Engineer A know",
        "When Owner reluctantly consents to notifying Engineer A" ;
    proeth:valueBasis "Engineers whose work is subject to review have a legitimate professional interest in knowing that review is occurring, so they may respond, correct errors, or provide context." ;
    proeth-prov:discoveredInCase 15 ;
    proeth-prov:discoveredInPass 2 ;
    proeth-prov:discoveredInSection "facts" ;
    proeth-prov:firstDiscoveredAt "2026-06-02T19:55:30.891672+00:00"^^xsd:dateTime ;
    proeth-prov:firstDiscoveredInCase 15 ;
    proeth-prov:matchConfidence 0.88 ;
    proeth-prov:matchReasoning "The principle maps closely to the existing Transparency class in the ontology. The case instantiates transparency as the obligation to disclose to Engineer A that a peer review is being conducted, which is a direct application of the Transparency principle governing openness in professional conduct." ;
    proeth-prov:matchedOntologyClass <http://proethica.org/ontology/principles#Transparency> ;
    proeth-prov:matchedOntologyLabel "Transparency" ;
    proeth-prov:matchesExisting true ;
    proeth-prov:sourceText "Owner instructs Engineer B to conduct the peer review without letting Engineer A know" ;
    rdfs:comment "Relational principle requiring engineers to conduct professional activities openly and without concealment from affected colleagues, particularly when those activities involve evaluating or overseeing another engineer's work." ;
    rdfs:subClassOf proeth:RelationalPrinciple ;
    skos:definition "Relational principle requiring engineers to conduct professional activities openly and without concealment from affected colleagues, particularly when those activities involve evaluating or overseeing another engineer's work." ;
    prov:generatedAtTime "2026-06-02T19:55:30.891672+00:00"^^xsd:dateTime ;
    prov:wasAttributedTo "Case 15 Extraction",
        "claude-sonnet-4-6" .

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:PrincipleDefinitionShape a sh:NodeShape ;
    rdfs:label "Principle definition schema (type-level, descriptive, field contract)"@en ;
    rdfs:comment "What individuates a principle TYPE: its canonical kind (drives the four-kind subClassOf typing; the canonical leaf becomes the rdf:type) and the extensional cases that ground it (McLaren). The five per-case narrative literals and the invokedBy edge are per-individual and now declared on PrinciplePropertyShape, mirroring the RoleDefinitionShape/ProfessionalRolePropertyShape split so the {{ principle_schema }} prompt separates the type judgment from what the case supplies. Descriptive only (no validation result); principle_category is a routing input, not stored as a literal."@en ;
    sh:property [ sh:description "The controlled principle kind, which drives the four-kind subClassOf typing: FundamentalEthicalPrinciple, ProfessionalVirtuePrinciple, RelationalPrinciple, DomainSpecificPrinciple. The canonical leaf label becomes the rdf:type; the category is a routing input, not stored as a literal." ;
            sh:name "principle kind" ;
            sh:order 1 ;
            sh:path proeth:principleCategory ],
        [ sh:description "Class-level prior cases that instantiate the principle (McLaren extensional grounding); an optional class-mint field." ;
            sh:name "extensional cases" ;
            sh:order 2 ;
            sh:path proeth:extensionalCases ] ;
    sh:targetClass core:Principle .

pcsh:PrinciplePropertyShape a sh:NodeShape ;
    rdfs:label "Principle per-case schema (individual data, non-definitional)"@en ;
    rdfs:comment "What a principle INDIVIDUAL is described by in a specific case: the five narrative literals the defeasibility pipeline consumes and the agent that invokes it. These do NOT individuate the principle TYPE (that is PrincipleDefinitionShape); their values are per-case, asserted on the individual. Descriptive only."@en ;
    sh:property [ sh:description "Per-case reading of what the principle requires in this situation (a defeasibility-pipeline source field)." ;
            sh:name "interpretation" ;
            sh:order 1 ;
            sh:path proeth:interpretation ],
        [ sh:description "How the principle is concretely expressed in the case (a defeasibility-pipeline source field)." ;
            sh:name "concrete expression" ;
            sh:order 2 ;
            sh:path proeth:concreteExpression ],
        [ sh:description "What the principle is applied to in the case (the situation or party it bears on)." ;
            sh:name "applied to" ;
            sh:order 3 ;
            sh:path proeth:appliedTo ],
        [ sh:description "The competing principle or value this principle is balanced against in the case, recorded as a literal; extraction records the tension but asserts no defeat or precedence, and the defeasibility edges are materialized by a separate pass from this field." ;
            sh:name "balancing with" ;
            sh:order 4 ;
            sh:path proeth:balancingWith ],
        [ sh:description "How the case resolves the tension involving this principle (a defeasibility-pipeline source field)." ;
            sh:name "tension resolution" ;
            sh:order 5 ;
            sh:path proeth:tensionResolution ],
        [ sh:description "The agent who invokes the principle, via the P->Agent invokedBy edge (resolved to a case Agent by embedding shortlist + LLM select; a Board-pattern invoking party resolves deterministically to the case-scoped NSPE Board of Ethical Review Agent). Range: Agent." ;
            sh:name "invoked by" ;
            sh:order 6 ;
            sh:path core:invokedBy ] ;
    sh:targetClass core:Principle .

