@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:CADDProficiencyCompetenceConstraint a owl:Class ;
    rdfs:label "CADD Proficiency Competence Constraint" ;
    proeth:affectedStakeholders "Client",
        "Engineer",
        "Public",
        "Regulatory Authority" ;
    proeth:confidence "0.88" ;
    proeth:constraintType "competence" ;
    proeth:flexibility "hard" ;
    proeth:mitigationStrategies "Engage qualified assistance when CADD capabilities exceed the engineer's understanding",
        "Limit reliance on CADD outputs to areas within the engineer's demonstrated competence",
        "Obtain formal training in CADD systems before use on professional projects" ;
    proeth:textReferences "The change to CADD provides the BER with concerns that require assurance that the professional engineer has the requisite background, education and training to be proficient with the dynamics of CADD including the limitations of current technology.",
        "The key point is that the engineer must utilize such systems to assist the engineer in the performance of professional services and not employ such systems as a replacement for professional competence and expertise." ;
    proeth:violationImpact "Engineer may seal documents reflecting outputs the engineer does not understand, exposing the public to undetected design errors and exposing the engineer to professional liability and disciplinary action." ;
    proeth-prov:discoveredInCase 120 ;
    proeth-prov:discoveredInPass 2 ;
    proeth-prov:discoveredInSection "discussion" ;
    proeth-prov:firstDiscoveredAt "2026-06-04T18:13:02.665367+00:00"^^xsd:dateTime ;
    proeth-prov:firstDiscoveredInCase 120 ;
    proeth-prov:matchConfidence 0.82 ;
    proeth-prov:matchReasoning "The existing Unfamiliar Tool Competence Constraint captures the same core concept: limiting an engineer's permissible use of a tool with which they lack sufficient experience or understanding, and requiring adequate competence before reliance on outputs. The CADD-specific framing here is a variant of that general class applied to computer-aided design systems. Medium confidence match because the existing class is general enough to subsume this, but the CADD context and the BER's specific articulation of proficiency requirements add detail not fully expressed in the existing label." ;
    proeth-prov:matchedOntologyClass proeth:UnfamiliarToolCompetenceConstraint ;
    proeth-prov:matchedOntologyLabel "Unfamiliar Tool Competence Constraint" ;
    proeth-prov:matchesExisting true ;
    proeth-prov:sourceText "The change to CADD provides the BER with concerns that require assurance that the professional engineer has the requisite background, education and training to be proficient with the dynamics of CADD including the limitations of current technology." ;
    rdfs:comment "Competence constraint requiring that a professional engineer who uses computer-aided drafting and design systems in the preparation of engineering documents possess sufficient background, education, and training to be proficient with the dynamics of those systems, including an understanding of their limitations, so that the systems serve as tools under professional direction rather than substitutes for engineering judgment." ;
    rdfs:subClassOf proeth:CompetenceConstraint,
        proeth:InviolableConstraint ;
    skos:definition "Competence constraint requiring that a professional engineer who uses computer-aided drafting and design systems in the preparation of engineering documents possess sufficient background, education, and training to be proficient with the dynamics of those systems, including an understanding of their limitations, so that the systems serve as tools under professional direction rather than substitutes for engineering judgment." ;
    skos:scopeNote "[UnfamiliarToolCompetenceConstraint] Competence constraint limiting an engineer's permissible use of a tool, technology, or method with which they lack sufficient experience or understanding, requiring that the engineer either acquire adequate competence before use, limit reliance on the tool's outputs, or obtain qualified assistance, so that professional work products meet required standards." ;
    prov:generatedAtTime "2026-06-04T18:13:02.665367+00:00"^^xsd:dateTime ;
    prov:wasAttributedTo "Case 120 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:ConstraintDefinitionShape a sh:NodeShape ;
    rdfs:label "Constraint definition schema (type-level, descriptive, field contract)"@en ;
    rdfs:comment "What individuates a constraint TYPE: the boundary it states (boundary_type, which drives the subClassOf typing into one of the ten closed boundary-type classes) and the source provision that establishes it. The per-case severity and applicability, the agent it limits, and the action it bounds are per-individual and declared on ConstraintPropertyShape, mirroring the R/P/O/S/Rs/Ca Definition/Property split and the constraint scopeNote (the TYPE is the prohibition plus its source provision; the constrained party, per-occasion applicability, and any exception attach to the case individual). Descriptive only (no validation result); the routing input is the constraint_type schema field (the boundaryType property is its shape-path anchor), not stored as a literal."@en ;
    sh:property [ sh:description "The controlled boundary type, which drives the subClassOf typing into one of the ten closed boundary-type classes: LegalConstraint, RegulatoryConstraint, ResourceConstraint, CompetenceConstraint, JurisdictionalConstraint, ProceduralConstraint, EthicalConstraint, SafetyConstraint, ConfidentialityConstraint, TemporalConstraint. The prohibition/boundary content that individuates the type. A routing input, not stored as a literal." ;
            sh:name "boundary type" ;
            sh:order 1 ;
            sh:path proeth:boundaryType ],
        [ pcsh:informationalOnly true ;
            sh:description "The source CodeProvision that establishes the constraint, via the establishedBy edge. The second type-individuating coordinate: per the scopeNote a constraint type is the boundary it states plus its source provision. Range: CodeProvision." ;
            sh:name "established by" ;
            sh:order 2 ;
            sh:path core:establishedBy ] ;
    sh:targetClass core:Constraint .

pcsh:ConstraintPropertyShape a sh:NodeShape ;
    rdfs:label "Constraint per-case schema (individual data, non-definitional)"@en ;
    rdfs:comment "What a given constraint INDIVIDUAL is described by in a specific case: its per-occasion severity and applicability window, the agent whose conduct it limits, and the action it bounds. These do NOT individuate the constraint TYPE (that is ConstraintDefinitionShape, keyed on the boundary it states and its source provision); their values are per-case, asserted on the individual. Descriptive only."@en ;
    sh:property [ sh:description "The severity of the constraint in this case (critical, high, medium, low); a per-occasion assessment (Dennis severity ordering) that can differ across cases sharing the same boundary." ;
            sh:name "severity" ;
            sh:order 1 ;
            sh:path proeth:severity ],
        [ sh:description "The situational TRIGGER: the circumstances under which the prohibition applies in this case (the Dennis specification-by-context condition); temporalScope carries the durational window." ;
            sh:name "applicability condition" ;
            sh:order 2 ;
            sh:path proeth:applicabilityCondition ],
        [ sh:description "The agent whose conduct the constraint limits, via the outgoing constrainedEntity edge. Range: Agent." ;
            sh:name "constrained entity" ;
            sh:order 3 ;
            sh:path core:constrainedEntity ],
        [ sh:description "The durational WINDOW during which the boundary is in force in this case (e.g. for the duration of the engagement); applicabilityCondition carries the situational trigger under which it applies." ;
            sh:name "temporal scope" ;
            sh:order 4 ;
            sh:path proeth:temporalScope ],
        [ sh:description "The provision or authority string as extracted, kept verbatim on the individual; each dotted NSPE designation that resolves against the provision registry is also materialized as the establishedBy edge (a non-code source survives only in this literal)." ;
            sh:name "source" ;
            sh:order 5 ;
            sh:path proeth:source ],
        [ sh:description "The operative must-not clause, kept verbatim; mirrors skos:definition and is one of the narrative source fields the defeasibility harvest reads from committed TTLs." ;
            sh:name "constraint statement" ;
            sh:order 6 ;
            sh:path proeth:constraintStatement ] ;
    sh:targetClass core:Constraint .

