@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:ClientEconomicPressureRefusalObligation a owl:Class ;
rdfs:label "Client Economic Pressure Refusal Obligation" ;
proeth:confidence "0.88" ;
proeth:derivedFromPrinciple "Client Economic Pressure Resistance Principle" ;
proeth:enforcementLevel "mandatory" ;
proeth:monitoringCriteria "Evidence that the engineer ceased work or formally declined to proceed after the client refused to implement identified safety measures" ;
proeth:nspeReference "II.1.a" ;
proeth:obligationType "safety" ;
proeth:stakeholdersAffected "Client",
"General public",
"Regulatory authorities" ;
proeth:textReferences "Engineer A 'abandoned the ethical duty [to the public] and proceeded to work on the project.' The BER, in discussing BER Case 84-5, felt that 'Engineer A acted in a manner that suggests the primary obligation was not the public, but the client's economic concerns. For that reason, Engineer A was in violation of Code section II.1.a.'",
"Engineer L cannot ethically acquiesce to Client X's insistence to continue work on the project when Client X refuses to invest in the protective measures identified by Engineer L." ;
proeth:violationConsequences "Violation of Code section II.1.a; potential harm to public health and safety; professional discipline" ;
proeth-prov:discoveredInCase 8 ;
proeth-prov:discoveredInPass 2 ;
proeth-prov:discoveredInSection "discussion" ;
proeth-prov:firstDiscoveredAt "2026-06-04T10:06:46.728956+00:00"^^xsd:dateTime ;
proeth-prov:firstDiscoveredInCase 8 ;
proeth-prov:matchConfidence 0.78 ;
proeth-prov:matchReasoning "The existing Client Instruction Limits Obligation covers the duty to decline client instructions that would require violating professional ethics. This class is a more specific variant focused on the scenario where the client's refusal is driven by cost or economic pressure and the engineer must refuse to continue rather than merely decline a specific instruction. The economic pressure dimension and the affirmative duty to stop work distinguish it sufficiently to warrant a separate class, though it is closely related." ;
proeth-prov:matchedOntologyClass proeth:ClientInstructionLimitsObligation ;
proeth-prov:matchedOntologyLabel "Client Instruction Limits Obligation" ;
proeth-prov:matchesExisting true ;
proeth-prov:sourceText "Engineer A 'abandoned the ethical duty [to the public] and proceeded to work on the project.' The BER, in discussing BER Case 84-5, felt that 'Engineer A acted in a manner that suggests the primary obligation was not the public, but the client's economic concerns. For that reason, Engineer A was in violation of Code section II.1.a.'" ;
rdfs:comment "Duty of an engineer to refuse to continue work on a project when a client declines to implement safety measures the engineer has identified as necessary, even when the client's refusal is motivated by cost concerns, and to refrain from subordinating the paramount duty to public welfare to the client's economic interests." ;
rdfs:subClassOf proeth:SafetyObligation ;
skos:definition "Duty of an engineer to refuse to continue work on a project when a client declines to implement safety measures the engineer has identified as necessary, even when the client's refusal is motivated by cost concerns, and to refrain from subordinating the paramount duty to public welfare to the client's economic interests." ;
skos:scopeNote "[ClientInstructionLimitsObligation] Duty of an engineer to decline client instructions that would require violating professional ethics obligations, recognizing that the faithful agent duty does not extend to complying with directives that breach professional standards." ;
prov:generatedAtTime "2026-06-04T10:06:46.728956+00:00"^^xsd:dateTime ;
prov:wasAttributedTo "Case 8 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:ObligationDefinitionShape a sh:NodeShape ;
rdfs:label "Obligation definition schema (type-level, descriptive, field contract)"@en ;
rdfs:comment "What individuates an obligation TYPE: its controlled NSPE category, which drives the subClassOf core:Obligation typing. The concrete duty statement and the temporal-scope/compliance-status literals are per-individual, as are the derivedFromPrinciple and obligatedParty edges; all are declared on ObligationPropertyShape, mirroring the Role/Principle Definition/Property split. Descriptive only (no validation result); obligation_type is a routing input, not stored as a literal."@en ;
sh:property [ sh:description "The controlled NSPE obligation category, which drives the subClassOf core:Obligation typing: disclosure, safety, competence, confidentiality, reporting, collegial, attribution, legal, ethical." ;
sh:name "obligation type" ;
sh:order 1 ;
sh:path proeth:obligationType ] ;
sh:targetClass core:Obligation .
pcsh:ObligationPropertyShape a sh:NodeShape ;
rdfs:label "Obligation per-case schema (individual data, non-definitional)"@en ;
rdfs:comment "What a given obligation INDIVIDUAL is described by in a specific case: the concrete duty it states, the principle it derives from and the party who bears it (both edges), and its temporal scope and compliance status. These do NOT individuate the obligation TYPE (that is ObligationDefinitionShape); their values are per-case, asserted on the individual. Descriptive only."@en ;
sh:property [ sh:description "The concrete duty the obligation states (the operative 'shall' clause)." ;
sh:name "obligation statement" ;
sh:order 1 ;
sh:path proeth:obligationStatement ],
[ sh:description "The principle the obligation derives from, via the O->P derivedFromPrinciple edge (the P side of R->P->O). Range: Principle." ;
sh:name "derived from principle" ;
sh:order 2 ;
sh:path core:derivedFromPrinciple ],
[ sh:description "The agent who bears the obligation, via the obligatedParty edge. Range: Agent." ;
sh:name "obligated party" ;
sh:order 3 ;
sh:path core:obligatedParty ],
[ sh:description "When the obligation is in force (the period or condition of applicability)." ;
sh:name "temporal scope" ;
sh:order 4 ;
sh:path proeth:temporalScope ],
[ sh:description "Whether the obligation was met in the case: met, unmet, partial, or unclear." ;
sh:name "compliance status" ;
sh:order 5 ;
sh:path proeth:complianceStatus ] ;
sh:targetClass core:Obligation .