@prefix : <http://proethica.org/ontology/intermediate#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix iao: <http://purl.obolibrary.org/obo/IAO_> .
@prefix proeth: <http://proethica.org/ontology/intermediate#> .
@prefix proeth-core: <http://proethica.org/ontology/core#> .
@prefix proeth-cases: <http://proethica.org/ontology/cases#> .
@prefix bfo: <http://purl.obolibrary.org/obo/> .
@prefix time: <http://www.w3.org/2006/time#> .
@base <http://proethica.org/ontology/intermediate> .

<http://proethica.org/ontology/intermediate> rdf:type owl:Ontology ;
    owl:imports <http://purl.obolibrary.org/obo/bfo.owl> ,
                <http://proethica.org/ontology/core> ;
    rdfs:label "ProEthica Intermediate Ontology"@en ;
    rdfs:comment "A mid-level ontology bridging BFO to domain-specific ethical frameworks"@en ;
    dc:creator "ProEthica AI"@en ;
    dc:date "2025-05-31"^^xsd:date .

#################################################################
#    Core Ethical Modeling Concepts                              
#################################################################

# Declare key types needed by the OntologyMCPServer for entity extraction
:EntityType rdf:type owl:Class ;
    rdfs:label "Entity Type"@en ;
    rdfs:comment "Meta-class for entity types recognized by the ProEthica system"@en .

# New supertype for guideline concept extraction
:GuidelineConceptType rdf:type owl:Class ;
    rdfs:subClassOf :EntityType ;
    rdfs:label "Guideline Concept Type"@en ;
    rdfs:comment "A type of entity specifically extracted from ethical guidelines and standards. These are the eight core categories used for concept extraction from guideline documents."@en .

# The 8 Guideline Concept Types

# Role is imported from proethica-core, not redefined here

# Principle is imported from proethica-core, not redefined here


# ====================================================================
# PRINCIPLE SUBCLASSES BASED ON CHAPTER 2.2.2 LITERATURE
# ====================================================================

# Core Principle Categories from Chapter 2.2.2 Analysis
:FundamentalEthicalPrinciple rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf proeth-core:Principle ;
    rdfs:label "Fundamental Ethical Principle"@en ;
    iao:0000115 "A universal moral foundation that serves as the highest-level abstraction in professional ethics, requiring extensive interpretation through concrete cases (BFO: generically dependent continuant)"@en ;
    skos:definition "According to McLaren (2003), fundamental principles like public welfare and respect for persons cannot be applied through formal deduction alone but require extensional definition through landmark ethics cases and professional code applications. These principles function as constitutional-like foundations (Taddeo et al. 2024) that mediate moral ideals into professional practice (Hallamaa & Kalliokoski 2022)."@en ;
    dcterms:source <https://doi.org/10.1023/A:1024195425598> , # McLaren 2003
                   <https://doi.org/10.1007/s00146-024-01870-x> , # Taddeo et al. 2024
                   <https://doi.org/10.1080/08989621.2022.2054267> ; # Hallamaa & Kalliokoski 2022
    rdfs:comment "Examples: Public Welfare Paramount, Respect for Persons, Justice, Beneficence. These require extensive interpretation and balancing in specific contexts."@en .

:ProfessionalVirtuePrinciple rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf proeth-core:Principle ;
    rdfs:label "Professional Virtue Principle"@en ;
    iao:0000115 "A character-based principle defining professional excellence and ethical sensitivities specific to professional identity (BFO: generically dependent continuant)"@en ;
    skos:definition "Professional virtue principles guide professional identity formation and ethical sensitivities (Oakley & Cocking 2001). These principles are learned through expert examples (Anderson & Anderson 2018) and exemplified through model professional behavior cases, creating role-generated moral demands that shape professional character."@en ;
    dcterms:source <https://doi.org/10.1017/CBO9780511489471> , # Oakley & Cocking 2001
                   <https://doi.org/10.1007/s10994-018-5753-x> ; # Anderson & Anderson 2018
    rdfs:comment "Examples: Integrity, Competence, Honesty, Professional Courage, Accountability. These shape professional character and decision-making."@en .

:RelationalPrinciple rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf proeth-core:Principle ;
    rdfs:label "Relational Principle"@en ;
    iao:0000115 "A principle governing professional relationships and establishing frameworks for trust and stakeholder interactions (BFO: generically dependent continuant)"@en ;
    skos:definition "Relational principles establish frameworks for managing professional relationships and stakeholder trust. Following McLaren's extensional approach, these principles gain meaning through precedents from client-professional disputes and resolutions, defining how professionals navigate competing interests and maintain trustworthy relationships."@en ;
    dcterms:source <https://doi.org/10.1023/A:1024195425598> , # McLaren 2003
                   <https://doi.org/10.1080/10508422.2016.1155099> ; # Dennis et al. 2016
    rdfs:comment "Examples: Confidentiality, Loyalty, Fairness, Transparency, Respect for Autonomy. These govern interpersonal professional dynamics."@en .

:DomainSpecificPrinciple rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf proeth-core:Principle ;
    rdfs:label "Domain-Specific Principle"@en ;
    iao:0000115 "A principle particular to professional domain contexts that bridges general ethics to specific technical practices (BFO: generically dependent continuant)"@en ;
    skos:definition "Domain-specific principles bridge general ethical guidance to particular professional contexts. As identified by Prem (2023), these principles face inherent challenges in operationalization but remain essential for contextual guidance. They are grounded through industry-specific cases and technical standards applications."@en ;
    dcterms:source <https://doi.org/10.1007/s00146-023-01687-0> , # Prem 2023
                   <https://doi.org/10.1007/s10676-021-09586-y> ; # Segun 2021
    rdfs:comment "Examples: Environmental Stewardship (engineering), Patient Autonomy (medicine), Academic Freedom (education). These address domain-specific ethical challenges."@en .

# Specific Principle Instances commonly found in Professional Codes
:PublicWelfarePrinciple rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf :FundamentalEthicalPrinciple ;
    rdfs:label "Public Welfare Principle"@en ;
    iao:0000115 "The fundamental principle that public safety, health, and welfare must be held paramount in professional practice (BFO: generically dependent continuant)"@en ;
    skos:definition "The public welfare principle, as articulated in NSPE Fundamental Canon 1, requires professionals to hold paramount the safety, health, and welfare of the public. This principle exemplifies McLaren's challenge of operationalizing abstract guidance - 'hold paramount' gains meaning only through NSPE case applications and precedents like the Challenger disaster."@en ;
    dcterms:source <https://doi.org/10.1023/A:1024195425598> , # McLaren 2003
                   "NSPE Code of Ethics Fundamental Canon 1" ;
    proeth:nspeReference "Fundamental Canon 1" ;
    proeth:extensionalCases "NSPE BER Case 92-6", "Challenger Disaster", "Hyatt Regency Walkway Collapse" ;
    rdfs:comment "Requires contextual interpretation to balance against client confidentiality and employer loyalty when public safety is at risk."@en .

:IntegrityPrinciple rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf :ProfessionalVirtuePrinciple ;
    rdfs:label "Integrity Principle"@en ;
    iao:0000115 "The professional virtue principle of maintaining honesty, truthfulness, and ethical consistency in professional practice (BFO: generically dependent continuant)"@en ;
    skos:definition "Professional integrity requires contextual interpretation through cases (Kong et al. 2020) and manifests differently across professional contexts. It encompasses honesty in professional communications, truthfulness in representations, and consistency between professional values and actions."@en ;
    dcterms:source <https://doi.org/10.1007/s10676-020-09538-y> , # Kong et al. 2020
                   "NSPE Code of Ethics II.3" ;
    proeth:nspeReference "Rule of Practice II.3" ;
    rdfs:comment "Central to professional identity formation and trust maintenance in professional relationships."@en .

:CompetencePrinciple rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf :ProfessionalVirtuePrinciple ;
    rdfs:label "Competence Principle"@en ;
    iao:0000115 "The professional virtue principle requiring maintenance and application of professional knowledge and skill within areas of competence (BFO: generically dependent continuant)"@en ;
    skos:definition "The competence principle requires professionals to perform services only in areas of their competence and to maintain professional knowledge through continuous learning. This principle generates obligations for professional development and honest self-assessment of capabilities."@en ;
    dcterms:source "NSPE Code of Ethics II.2" ,
                   <https://doi.org/10.1017/CBO9780511489471> ; # Oakley & Cocking 2001
    proeth:nspeReference "Rule of Practice II.2" ;
    rdfs:comment "Balances professional autonomy with recognition of limitations and need for collaboration."@en .

:ConfidentialityPrinciple rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf :RelationalPrinciple ;
    rdfs:label "Confidentiality Principle"@en ;
    iao:0000115 "The relational principle protecting client information and maintaining trust in professional relationships (BFO: generically dependent continuant)"@en ;
    skos:definition "Confidentiality establishes trust frameworks in professional relationships by protecting client information from unauthorized disclosure. This principle requires balancing through precedents when it conflicts with public welfare or legal obligations."@en ;
    dcterms:source "NSPE Code of Ethics II.1.c" ,
                   <https://doi.org/10.1023/A:1024195425598> ; # McLaren 2003
    proeth:nspeReference "Rule of Practice II.1.c" ;
    rdfs:comment "Must be balanced against public safety obligations and legal disclosure requirements."@en .

:TransparencyPrinciple rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf :RelationalPrinciple ;
    rdfs:label "Transparency Principle"@en ;
    iao:0000115 "The relational principle requiring openness and disclosure in professional communications and decision-making (BFO: generically dependent continuant)"@en ;
    skos:definition "Transparency requires professionals to be open about conflicts of interest, limitations, and decision-making processes. This principle supports accountability and enables informed consent from stakeholders."@en ;
    dcterms:source "NSPE Code of Ethics II.4" ,
                   <https://doi.org/10.1080/10508422.2016.1155099> ; # Dennis et al. 2016
    proeth:nspeReference "Rule of Practice II.4" ;
    rdfs:comment "Essential for maintaining trust and enabling stakeholder participation in professional decisions."@en .

:EnvironmentalStewardshipPrinciple rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf :DomainSpecificPrinciple ;
    rdfs:label "Environmental Stewardship Principle"@en ;
    iao:0000115 "The domain-specific principle in engineering requiring consideration of environmental impact and sustainability (BFO: generically dependent continuant)"@en ;
    skos:definition "Environmental stewardship in engineering requires balancing technical solutions with environmental protection and sustainable development. This principle has evolved through cases addressing pollution, resource depletion, and climate change impacts."@en ;
    dcterms:source "NSPE Code of Ethics III.2.d" ,
                   <https://doi.org/10.1007/s00146-023-01687-0> ; # Prem 2023
    proeth:nspeReference "Professional Obligation III.2.d" ;
    rdfs:comment "Bridges engineering practice with broader environmental and societal responsibilities."@en .


# Obligation is imported from proethica-core, not redefined here

# State is imported from proethica-core, not redefined here

# Resource is imported from proethica-core, not redefined here

# Action is imported from proethica-core, not redefined here

# Event is imported from proethica-core, not redefined here

# Capability is imported from proethica-core, not redefined here

# Constraint is imported from proethica-core, not redefined here

# Legacy type references (maintained for backward compatibility)
:Condition rdfs:subClassOf :State ;
    rdfs:label "Condition"@en ;
    rdfs:comment "Legacy term for State. Use State instead for new concepts."@en ;
    owl:deprecated true .

:ConditionType rdf:type owl:Class ;
    rdfs:label "Condition Type"@en ;
    rdfs:comment "Legacy meta-class. Use State instead."@en ;
    owl:deprecated true .

# Meta-classes for subtypes (not GuidelineConceptTypes themselves)
:ResourceType rdf:type owl:Class ;
    rdfs:subClassOf :EntityType ;
    rdfs:label "Resource Type"@en ;
    rdfs:comment "Meta-class for specific resource types recognized by the ProEthica system"@en .

:EventType rdf:type owl:Class ;
    rdfs:subClassOf :EntityType ;
    rdfs:label "Event Type"@en ;
    rdfs:comment "Meta-class for specific event types recognized by the ProEthica system"@en .

:ActionType rdf:type owl:Class ;
    rdfs:subClassOf :EntityType ;
    rdfs:label "Action Type"@en ;
    rdfs:comment "Meta-class for specific action types recognized by the ProEthica system"@en .

:CapabilityType rdf:type owl:Class ;
    rdfs:subClassOf :EntityType ;
    rdfs:label "Capability Type"@en ;
    rdfs:comment "Meta-class for specific capability types recognized by the ProEthica system"@en .

#################################################################
# Action Categories from Chapter 2.2.6 Literature
# Based on professional decisions and volitional interventions
#################################################################

# Communication Actions - Professional disclosure and information sharing
proeth:CommunicationAction a owl:Class ;
    rdfs:subClassOf proeth-core:Action ;
    rdfs:label "Communication Action"@en ;
    skos:definition "Professional actions involving disclosure, informing, notifying stakeholders, and communicating relevant information per Tolmeijer et al. (2021) explanation requirements and McLaren (2003) transparency obligations."@en ;
    rdfs:comment "Actions involving disclosure, informing, and transparent communication"@en ;
    dcterms:references <https://doi.org/10.1007/s11948-020-00230-4> , # Tolmeijer et al. 2021
                      <https://doi.org/10.1023/A:1024195425598> . # McLaren 2003

proeth:PreventionAction a owl:Class ;
    rdfs:subClassOf proeth-core:Action ;
    rdfs:label "Prevention Action"@en ;
    skos:definition "Professional actions aimed at avoiding, preventing, minimizing, or eliminating risks and harms per Anderson & Anderson (2018) harm prevention principles and Arkin (2008) safety obligations."@en ;
    rdfs:comment "Actions focused on avoiding and minimizing potential harms"@en ;
    dcterms:references <https://doi.org/10.1007/s10676-017-9430-8> , # Anderson & Anderson 2018
                      <https://doi.org/10.1109/MIS.2008.100> . # Arkin 2008

proeth:MaintenanceAction a owl:Class ;
    rdfs:subClassOf proeth-core:Action ;
    rdfs:label "Maintenance Action"@en ;
    skos:definition "Professional actions involving maintaining, upholding, preserving, and protecting professional standards and values per Oakley & Cocking (2001) role requirements and Kong et al. (2020) integrity principles."@en ;
    rdfs:comment "Actions focused on maintaining standards and protecting values"@en ;
    dcterms:references <https://doi.org/10.1017/CBO9780511489471> , # Oakley & Cocking 2001
                      <https://doi.org/10.1007/s10676-020-09538-y> . # Kong et al. 2020

proeth:PerformanceAction a owl:Class ;
    rdfs:subClassOf proeth-core:Action ;
    rdfs:label "Performance Action"@en ;
    skos:definition "Professional actions involving performing, executing, conducting, and implementing professional services within areas of competence per professional obligation frameworks (NSPE II.2)."@en ;
    rdfs:comment "Actions involving execution of professional services and duties"@en ;
    dcterms:references "NSPE Code of Ethics II.2" .

proeth:EvaluationAction a owl:Class ;
    rdfs:subClassOf proeth-core:Action ;
    rdfs:label "Evaluation Action"@en ;
    skos:definition "Professional actions involving evaluating, assessing, analyzing, reviewing, and examining professional work, conditions, or decisions per Berreby et al. (2017) assessment processes and Tolmeijer et al. (2021) situational awareness."@en ;
    rdfs:comment "Actions involving assessment and analysis of professional situations"@en ;
    dcterms:references <https://doi.org/10.1016/j.artint.2017.12.003> , # Berreby et al. 2017
                      <https://doi.org/10.1007/s11948-020-00230-4> . # Tolmeijer et al. 2021

proeth:CollaborationAction a owl:Class ;
    rdfs:subClassOf proeth-core:Action ;
    rdfs:label "Collaboration Action"@en ;
    skos:definition "Professional actions involving consulting, collaborating, coordinating, and cooperating with colleagues, clients, and stakeholders per Dennis et al. (2016) multi-agent frameworks and professional peer obligations."@en ;
    rdfs:comment "Actions involving professional cooperation and coordination"@en ;
    dcterms:references <https://doi.org/10.1007/s10458-015-9308-2> . # Dennis et al. 2016

proeth:CreationAction a owl:Class ;
    rdfs:subClassOf proeth-core:Action ;
    rdfs:label "Creation Action"@en ;
    skos:definition "Professional actions involving designing, developing, creating, building, and constructing professional solutions per technical competence requirements and innovation obligations."@en ;
    rdfs:comment "Actions involving design and development of professional solutions"@en ;
    dcterms:references "NSPE Code of Ethics Professional Obligations" .

proeth:MonitoringAction a owl:Class ;
    rdfs:subClassOf proeth-core:Action ;
    rdfs:label "Monitoring Action"@en ;
    skos:definition "Professional actions involving monitoring, supervising, overseeing, managing, and controlling professional processes per Arkin (2008) responsibility documentation and oversight requirements."@en ;
    rdfs:comment "Actions involving supervision and oversight of professional processes"@en ;
    dcterms:references <https://doi.org/10.1109/MIS.2008.100> . # Arkin 2008

# Specific Action Types
:Decision rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdf:type :ActionType ;
    rdfs:subClassOf proeth:EvaluationAction ;
    rdfs:label "Decision"@en ;
    skos:definition "A volitional choice made by an agent in response to an ethical situation, requiring deliberation between alternatives per Hooker & Kim (2018) reasoning-based action theory."@en ;
    rdfs:comment "Professional choice made after ethical deliberation between alternatives"@en ;
    dcterms:references <https://doi.org/10.1007/s11948-018-0030-6> . # Hooker & Kim 2018

proeth:DisclosureAction a owl:Class ;
    rdfs:subClassOf proeth:CommunicationAction ;
    rdfs:label "Disclosure Action"@en ;
    skos:definition "Professional action of revealing conflicts, limitations, or risks to stakeholders per NSPE requirements and transparency principles."@en ;
    rdfs:comment "Action of revealing relevant conflicts or limitations"@en ;
    dcterms:references "NSPE Code of Ethics II.4" .

proeth:CompetenceAction a owl:Class ;
    rdfs:subClassOf proeth:PerformanceAction ;
    rdfs:label "Competence Action"@en ;
    skos:definition "Professional action performed within demonstrated areas of competence per NSPE competence requirements and professional boundaries."@en ;
    rdfs:comment "Action performed within established professional competence"@en ;
    dcterms:references "NSPE Code of Ethics II.2" .

#################################################################
# Event Categories from Chapter 2.2.7 Literature  
# Based on temporal occurrences that trigger ethical consideration
#################################################################

# Crisis Events - Failures and emergency situations
proeth:CrisisEvent a owl:Class ;
    rdfs:subClassOf proeth-core:Event ;
    rdfs:label "Crisis Event"@en ;
    skos:definition "Events involving failures, accidents, emergencies, crises, and disasters that require immediate professional response and may override normal procedures per Berreby et al. (2017) automatic event modeling."@en ;
    rdfs:comment "Emergency situations requiring immediate professional response"@en ;
    dcterms:references <https://doi.org/10.1016/j.artint.2017.12.003> . # Berreby et al. 2017

proeth:ComplianceEvent a owl:Class ;
    rdfs:subClassOf proeth-core:Event ;
    rdfs:label "Compliance Event"@en ;
    skos:definition "Events involving violations, breaches, non-compliance, misconduct, or errors that trigger regulatory or professional review processes per Dennis et al. (2016) ethical policy frameworks."@en ;
    rdfs:comment "Events involving breaches of professional or regulatory standards"@en ;
    dcterms:references <https://doi.org/10.1007/s10458-015-9308-2> . # Dennis et al. 2016

proeth:ConflictEvent a owl:Class ;
    rdfs:subClassOf proeth-core:Event ;
    rdfs:label "Conflict Event"@en ;
    skos:definition "Events involving conflicts, disputes, disagreements, controversies, or issues between stakeholders that require professional mediation or resolution per Rao et al. (2023) context-dependent moral evaluation."@en ;
    rdfs:comment "Events involving stakeholder conflicts requiring resolution"@en ;
    dcterms:references <https://doi.org/10.48550/arXiv.2302.00997> . # Rao et al. 2023

proeth:ProjectEvent a owl:Class ;
    rdfs:subClassOf proeth-core:Event ;
    rdfs:label "Project Event"@en ;
    skos:definition "Events involving deadlines, milestones, completions, deliveries, and launches that affect project timelines and professional obligations per Sarmiento et al. (2023) temporal reasoning."@en ;
    rdfs:comment "Time-based project events affecting professional obligations"@en ;
    dcterms:references <https://doi.org/10.1007/s10458-023-09609-6> . # Sarmiento et al. 2023

proeth:SafetyEvent a owl:Class ;
    rdfs:subClassOf proeth-core:Event ;
    rdfs:label "Safety Event"@en ;
    skos:definition "Events involving injuries, harm, damage, losses, threats, or risks that trigger safety obligations and public welfare protections per Anderson & Anderson (2018) harm-based ethical evaluation."@en ;
    rdfs:comment "Events involving harm or risk requiring safety response"@en ;
    dcterms:references <https://doi.org/10.1007/s10676-017-9430-8> . # Anderson & Anderson 2018

proeth:EvaluationEvent a owl:Class ;
    rdfs:subClassOf proeth-core:Event ;
    rdfs:label "Evaluation Event"@en ;
    skos:definition "Events involving inspections, audits, reviews, assessments, and evaluations that trigger professional scrutiny and accountability requirements per Arkin (2008) responsibility documentation."@en ;
    rdfs:comment "Formal review events triggering professional accountability"@en ;
    dcterms:references <https://doi.org/10.1109/MIS.2008.100> . # Arkin 2008

proeth:DiscoveryEvent a owl:Class ;
    rdfs:subClassOf proeth-core:Event ;
    rdfs:label "Discovery Event"@en ;
    skos:definition "Events involving discoveries, findings, identifications, detections, or reports of new information that may affect professional obligations per Zhang et al. (2023) moral event classification."@en ;
    rdfs:comment "Events revealing new information affecting professional responsibilities"@en ;
    dcterms:references <https://doi.org/10.18653/v1/2023.findings-emnlp.95> . # Zhang et al. 2023

proeth:ChangeEvent a owl:Class ;
    rdfs:subClassOf proeth-core:Event ;
    rdfs:label "Change Event"@en ;
    skos:definition "Events involving changes, modifications, alterations, updates, or revisions to systems, procedures, or requirements that affect professional practice per Almpani et al. (2023) dynamic priority adjustment."@en ;
    rdfs:comment "Events involving changes affecting professional practice requirements"@en ;
    dcterms:references <https://doi.org/10.1007/978-3-031-21203-1_31> . # Almpani et al. 2023

# Specific Event Instances
:Violation rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf proeth:ComplianceEvent ;
    rdfs:label "Violation"@en ;
    skos:definition "An event indicating that an obligation, prohibition, or standard has been breached, requiring corrective action and potentially triggering disciplinary procedures."@en ;
    rdfs:comment "Breach of professional standard requiring corrective response"@en .

proeth:EmergencyEvent a owl:Class ;
    rdfs:subClassOf proeth:CrisisEvent ;
    rdfs:label "Emergency Event"@en ;
    skos:definition "Critical event requiring immediate response that may override normal professional procedures and activate emergency protocols."@en ;
    rdfs:comment "Critical event overriding normal professional procedures"@en .

proeth:DeadlineEvent a owl:Class ;
    rdfs:subClassOf proeth:ProjectEvent ;
    rdfs:label "Deadline Event"@en ;
    skos:definition "Temporal event marking project deadline or milestone that affects professional priorities and resource allocation decisions."@en ;
    rdfs:comment "Time constraint event affecting professional priorities"@en .

proeth:SafetyIncident a owl:Class ;
    rdfs:subClassOf proeth:SafetyEvent ;
    rdfs:label "Safety Incident"@en ;
    skos:definition "Event involving actual or potential harm triggering safety reporting obligations and corrective measures per public welfare protection requirements."@en ;
    rdfs:comment "Incident triggering safety obligations and reporting requirements"@en .

# Event properties for temporal relationships
proeth:triggersObligation a owl:ObjectProperty ;
    rdfs:domain proeth-core:Event ;
    rdfs:range proeth-core:Obligation ;
    rdfs:label "triggers obligation"@en ;
    rdfs:comment "Relates an event to obligations it activates"@en .

proeth:causedByAction a owl:ObjectProperty ;
    rdfs:domain proeth-core:Event ;
    rdfs:range proeth-core:Action ;
    rdfs:label "caused by action"@en ;
    rdfs:comment "Links event to actions that caused it (Wright's NESS test)"@en ;
    dcterms:references <https://doi.org/10.1007/s10458-023-09609-6> . # Sarmiento et al. 2023

proeth:altersPriority a owl:ObjectProperty ;
    rdfs:domain proeth-core:Event ;
    rdfs:range proeth-core:Obligation ;
    rdfs:label "alters priority"@en ;
    rdfs:comment "Indicates how events change obligation priorities"@en .

###############################################################
# OWL-Time Temporal Properties (Allen Interval Algebra)
# Maps to http://www.w3.org/2006/time# vocabulary
###############################################################

proeth:temporalMarker a owl:DatatypeProperty ;
    rdfs:domain [ a owl:Class ; owl:unionOf (proeth-core:Action proeth-core:Event) ] ;
    rdfs:range xsd:string ;
    rdfs:label "temporal marker"@en ;
    rdfs:comment "Narrative temporal marker indicating when an action or event occurred in case time (e.g. 'During preliminary design phase', 'Several months later'). Cases use narrative rather than calendar time."@en .

proeth:TemporalRelation a owl:Class ;
    rdfs:label "Temporal Relation"@en ;
    rdfs:comment "A reified Allen interval algebra relation between two temporal entities (actions or events). Stores both the ProEthica relation name and the corresponding OWL-Time property URI."@en .

proeth:hasTemporalRelation a owl:ObjectProperty ;
    rdfs:domain [ a owl:Class ; owl:unionOf (proeth-core:Action proeth-core:Event) ] ;
    rdfs:range proeth:TemporalRelation ;
    rdfs:label "has temporal relation"@en ;
    rdfs:comment "Links an action or event to a reified Allen interval relation instance."@en .

proeth:fromEntity a owl:ObjectProperty ;
    rdfs:domain proeth:TemporalRelation ;
    rdfs:range [ a owl:Class ; owl:unionOf (proeth-core:Action proeth-core:Event) ] ;
    rdfs:label "from entity"@en ;
    rdfs:comment "The source entity in a temporal relation (Entity1 [relation] Entity2)."@en .

proeth:toEntity a owl:ObjectProperty ;
    rdfs:domain proeth:TemporalRelation ;
    rdfs:range [ a owl:Class ; owl:unionOf (proeth-core:Action proeth-core:Event) ] ;
    rdfs:label "to entity"@en ;
    rdfs:comment "The target entity in a temporal relation (Entity1 [relation] Entity2)."@en .

proeth:allenRelation a owl:DatatypeProperty ;
    rdfs:domain proeth:TemporalRelation ;
    rdfs:range xsd:string ;
    rdfs:label "Allen relation"@en ;
    rdfs:comment "The Allen interval algebra relation name (before, after, meets, overlaps, during, starts, finishes, equals, and their inverses). Maps to OWL-Time properties via services/allen_owl_time_mapper.py."@en .

proeth:owlTimeProperty a owl:DatatypeProperty ;
    rdfs:domain proeth:TemporalRelation ;
    rdfs:range xsd:string ;
    rdfs:label "OWL-Time property"@en ;
    rdfs:comment "The corresponding OWL-Time property name (e.g. time:before, time:intervalMeets). See W3C OWL-Time ontology."@en .

# Common Ethical Concepts
:EthicalDilemma rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf proeth-core:State ; # treat dilemmas as contextual states for decision-making
    rdfs:label "Ethical Dilemma"@en ;
    rdfs:comment "A situation involving a difficult ethical choice between competing moral considerations that applies across all professional domains"@en .

:EthicalPrinciple rdf:type owl:Class ;
    rdfs:subClassOf bfo:BFO_0000031 ; # generically dependent continuant
    rdfs:label "Ethical Principle"@en ;
    rdfs:comment "Legacy synonym for Principle. Use :Principle for new concepts."@en ;
    owl:deprecated true ;
    rdfs:seeAlso :Principle .

:ProfessionalObligation rdf:type owl:Class ;
    # NOTE: bfo:BFO_0000017 (realizable entity / SDC) removed — it conflicts with proeth-core:Obligation
    # which is IAO:directive information entity (GDC). BFO GDC and SDC are mutually exclusive,
    # so having both superclasses would make this class unsatisfiable in a reasoning context.
    rdfs:subClassOf proeth-core:Obligation ;
    rdfs:label "Professional Obligation"@en ;
    rdfs:comment "A duty or responsibility arising from professional role or standards. As a directive information entity (IAO:0000033 via proeth-core:Obligation), it is a generically dependent continuant — not a realizable entity."@en ;
    skos:changeNote "v2.x: Removed rdfs:subClassOf bfo:BFO_0000017 (realizable entity/SDC). Obligations are directive information entities (GDC), and SDC+GDC dual-inheritance is inconsistent in BFO."@en .

# Obligation Categories from Chapter 2 Literature
# Based on Dennis et al. (2016), Anderson & Anderson, NSPE Code

proeth:DisclosureObligation a owl:Class ;
    rdfs:subClassOf proeth-core:Obligation ;
    rdfs:label "Disclosure Obligation"@en ;
    rdfs:comment "Requirement to inform stakeholders about conflicts, limitations, or risks (NSPE II.3.a)"@en .

proeth:SafetyObligation a owl:Class ;
    rdfs:subClassOf proeth-core:Obligation ;
    rdfs:label "Safety Obligation"@en ;
    rdfs:comment "Duty to hold paramount the safety, health, and welfare of the public (NSPE I.1)"@en .

proeth:CompetenceObligation a owl:Class ;
    rdfs:subClassOf proeth-core:Obligation ;
    rdfs:label "Competence Obligation"@en ;
    rdfs:comment "Requirement to perform services only in areas of competence (NSPE II.2)"@en .

proeth:ConfidentialityObligation a owl:Class ;
    rdfs:subClassOf proeth-core:Obligation ;
    rdfs:label "Confidentiality Obligation"@en ;
    rdfs:comment "Duty to protect confidential information of clients or employers (NSPE III.4)"@en .

proeth:ReportingObligation a owl:Class ;
    rdfs:subClassOf proeth-core:Obligation ;
    rdfs:label "Reporting Obligation"@en ;
    rdfs:comment "Duty to report violations or unsafe conditions to appropriate authorities"@en .

proeth:MandatoryObligation a owl:Class ;
    rdfs:subClassOf proeth-core:Obligation ;
    rdfs:label "Mandatory Obligation"@en ;
    rdfs:comment "Obligations that MUST be fulfilled (deontic force: mandatory)"@en .

proeth:DefeasibleObligation a owl:Class ;
    rdfs:subClassOf proeth-core:Obligation ;
    rdfs:label "Defeasible Obligation"@en ;
    rdfs:comment "Obligations that admit justified exceptions under specified conditions (Ganascia 2007)"@en .

proeth:ConditionalObligation a owl:Class ;
    rdfs:subClassOf proeth-core:Obligation ;
    rdfs:label "Conditional Obligation"@en ;
    rdfs:comment "Obligations that apply only when specific conditions are met"@en .

proeth:PrimaFacieObligation a owl:Class ;
    rdfs:subClassOf proeth-core:Obligation ;
    rdfs:label "Prima Facie Obligation"@en ;
    rdfs:comment "Obligations that hold at first appearance but may be overridden by stronger duties (Anderson & Anderson)"@en .

proeth:LegalObligation a owl:Class ;
    rdfs:subClassOf proeth-core:Obligation ;
    rdfs:label "Legal Obligation"@en ;
    rdfs:comment "Obligations arising from legal requirements and regulations"@en .

proeth:EthicalObligation a owl:Class ;
    rdfs:subClassOf proeth-core:Obligation ;
    rdfs:label "Ethical Obligation"@en ;
    rdfs:comment "Obligations arising from ethical principles beyond legal requirements"@en .

proeth:CollegialObligation a owl:Class ;
    rdfs:subClassOf proeth-core:Obligation ;
    rdfs:label "Collegial Obligation"@en ;
    rdfs:comment "Duties toward professional peers including respect, fairness, and credit for work"@en .

# NSPE Code-specific obligation subclasses used by NSPE BER case ontologies
# (e.g. Case 72, Public Welfare, Knowledge of Information Damaging to Client's Interest).

proeth:FaithfulAgentObligation a owl:Class ;
    rdfs:subClassOf proeth:ConfidentialityObligation ;
    rdfs:label "Faithful Agent Obligation"@en ;
    rdfs:comment "Duty of an engineer to act as a faithful agent or trustee of an employer or client (NSPE Code of Ethics, Section 1 / §II.4). Defeasible under states that confirm public-safety risk."@en .

proeth:PostTermEnvRiskReportingObligation a owl:Class ;
    rdfs:subClassOf proeth:ReportingObligation ;
    rdfs:label "Post-Termination Environmental Risk Reporting Obligation"@en ;
    rdfs:comment "Duty of an engineer to report environmental risks to a pollution-control authority after termination of the client relationship when the risk rises to a public-safety concern (NSPE Code §I.1, §II.1.a, §II.1.c). Derived from the paramount public-welfare principle."@en .

# Obligation properties for temporal and contextual aspects
proeth:hasEnforcementLevel a owl:DatatypeProperty ;  # was owl:ObjectProperty — corrected: range is xsd:string
    rdfs:domain proeth-core:Obligation ;
    rdfs:range xsd:string ;
    rdfs:label "has enforcement level"@en ;
    rdfs:comment "Specifies whether obligation is mandatory, strongly recommended, or recommended"@en ;
    skos:changeNote "v2.x: Changed from owl:ObjectProperty to owl:DatatypeProperty. Properties with rdfs:range xsd:string must be DatatypeProperties."@en .

# Provenance datatype properties used by the extraction client when it
# materializes typed individuals from case narratives. These record the
# narrative source text for a typed individual and the agent to whom an
# obligation is attributed. They are emitted by the LLM extraction client
# described in Section 4 of the KI2026 paper.

proeth:sourcetext a owl:DatatypeProperty ;
    rdfs:range xsd:string ;
    rdfs:label "source text"@en ;
    rdfs:comment "The narrative sentence or clause from a case text that grounds a typed individual. Preserved as a string alongside each extracted State, Action, Event, or Obligation to support provenance and qualitative inspection."@en .

proeth:obligatedparty a owl:DatatypeProperty ;
    rdfs:domain proeth-core:Obligation ;
    rdfs:range xsd:string ;
    rdfs:label "obligated party"@en ;
    rdfs:comment "The agent label to which an obligation is attributed in a case (e.g. 'Engineer Doe'). This is a string rather than an Agent individual so that case text phrasing is preserved verbatim."@en .

proeth:derivedFromPrinciple a owl:ObjectProperty ;
    rdfs:domain proeth-core:Obligation ;
    rdfs:range proeth-core:Principle ;
    rdfs:label "derived from principle"@en ;
    rdfs:comment "Links obligation to the principle(s) it operationalizes (Hallamaa & Kalliokoski 2022)"@en .

proeth:conflictsWith a owl:ObjectProperty ;
    rdfs:domain proeth-core:Obligation ;
    rdfs:range proeth-core:Obligation ;
    rdfs:label "conflicts with"@en ;
    rdfs:comment "Indicates potential conflicts between obligations requiring resolution"@en .



# Engineering-specific role types
:EngineerRole rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf proeth-core:Role ;
    rdfs:label "Engineer Role"@en ;
    rdfs:comment "A professional role involving engineering practice and responsibilities"@en ;
    rdfs:subClassOf :ProfessionalRole .

# Role specializations for classification of roles mentioned in guidelines and cases
:ProfessionalRole rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf proeth-core:Role ;
    rdfs:label "Professional Role"@en ;
        rdfs:comment "A role within a profession that entails recognized ends/goals of practice (e.g., safeguarding public safety, delivering competent technical solutions) and a coherent set of obligations codified in standards and codes (e.g., NSPE). Often associated with licensure or formal accountability. Examples: Professional Engineer, Project Manager, Public Official."@en ;
        # Professional roles characteristically bear obligations and are governed by codes
        # v2.4.2: Fixed namespace references -- :Obligation and :hasObligation resolved to
        # intermediate namespace where they were never defined. Corrected to proeth-core:.
        rdfs:subClassOf [ a owl:Restriction ;
                                         owl:onProperty proeth-core:hasObligation ;
                                         owl:someValuesFrom proeth-core:Obligation
                                     ] ;
        rdfs:subClassOf [ a owl:Restriction ;
                                         owl:onProperty :governedByCode ;
                                         owl:someValuesFrom :EthicalCode
                                     ] .

:ParticipantRole rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf proeth-core:Role ;
    rdfs:label "Participant Role"@en ;
    rdfs:comment "A role of an involved party or stakeholder that does not itself establish professional obligations (e.g., Client, The Public, Community Member)."@en .

# Alias for clarity when classifying roles extracted from text
:StakeholderRole rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf :ParticipantRole ;
    rdfs:label "Stakeholder Role"@en ;
    rdfs:comment "A participant role borne by stakeholders such as Clients, Employers, and the Public. Typically not the bearer of professional obligations, but may be linked to principles in explicit statements."@en .

# Keep ProfessionalRole and ParticipantRole disjoint to avoid mixing semantics
:ProfessionalRole owl:disjointWith :ParticipantRole .

#################################################################
# Professional Role Categories from Chapter 2.2.1 Literature
#################################################################

# Based on Kong et al. (2020) empirical analysis and Dennis et al. (2016) role-based filtering

:ProviderClientRole rdf:type owl:Class ;
    rdfs:subClassOf :ProfessionalRole ;
    rdfs:label "Provider-Client Role" ;
    skos:definition "Professional role defining relationships between service providers and their clients, creating duties of competent service delivery, confidentiality, and client welfare per Kong et al. (2020) identity role analysis." ;
    rdfs:comment "Service delivery relationship with duties of competence and care" ;
    dcterms:references <https://doi.org/10.1007/s10676-020-09524-4> . # Kong et al. 2020

:ProfessionalPeerRole rdf:type owl:Class ;
    rdfs:subClassOf :ProfessionalRole ;
    rdfs:label "Professional Peer Role" ;
    skos:definition "Professional role defining relationships between practitioners within the same professional domain, creating obligations for peer review, professional development, knowledge sharing, and standard maintenance per Kong et al. (2020)." ;
    rdfs:comment "Collegial relationship with mentoring and review obligations" ;
    dcterms:references <https://doi.org/10.1007/s10676-020-09524-4> . # Kong et al. 2020

:EmployerRelationshipRole rdf:type owl:Class ;
    rdfs:subClassOf :ProfessionalRole ;
    rdfs:label "Employer Relationship Role" ;
    skos:definition "Professional role defining relationships between professionals and their employing organizations, creating duties of loyalty, competent performance, and honest reporting while maintaining professional independence per Wendel (2024) moral complexity framework." ;
    rdfs:comment "Organizational relationship balancing loyalty and independence" ;
    dcterms:references <https://doi.org/10.1093/oso/9780198863335.001.0001> . # Wendel 2024

:PublicResponsibilityRole rdf:type owl:Class ;
    rdfs:subClassOf :ProfessionalRole ;
    rdfs:label "Public Responsibility Role" ;
    skos:definition "Professional role defining obligations to the broader public and society, creating duties of public welfare protection that can override client or employer interests per Thornton et al. (2017) collective morality framework." ;
    rdfs:comment "Societal obligation that can override other professional duties" ;
    dcterms:references <https://doi.org/10.1080/10508422.2017.1318069> . # Thornton et al. 2017

# Ends / Goals of roles
:End rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf bfo:BFO_0000031 ; # generically dependent continuant
    rdfs:label "End/Goal"@en ;
    rdfs:comment "A characteristic end or goal toward which a role is directed (e.g., in engineering: protecting public safety, serving the public welfare, providing competent service)."@en .

# Standards and regulatory frameworks
:Standard rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf proeth-core:Resource ;
    rdfs:label "Standard"@en ;
    rdfs:comment "A documented agreement containing technical specifications or criteria for professional practice"@en .

:EthicalCode rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf proeth-core:Guideline ;
    rdfs:label "Ethical Code"@en ;
    rdfs:comment "A formal document that codifies ethical principles and professional conduct requirements for a profession. As a document (IAO:0000310 via Guideline), it contains principles, obligations, and constraints -- it is not itself a principle."@en ;
    skos:changeNote "v2.4.2: Changed rdfs:subClassOf from proeth-core:Principle to proeth-core:Guideline. An ethical code is a document that contains principles, obligations, and constraints. Classifying it as a Principle conflated the container with its contents."@en .

# Specialized capability types
:TechnicalCapability rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf proeth-core:Capability ;
    rdfs:label "Technical Capability"@en ;
    rdfs:comment "A specialized technical skill or competency in a professional domain"@en .

# Problem and issue types
:EthicalIssue rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf proeth-core:State ;
    rdfs:label "Ethical Issue"@en ;
    rdfs:comment "A problematic situation involving ethical considerations or conflicts"@en .

# Measurement and assessment types
:Measurement rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf proeth-core:Resource ;
    rdfs:label "Measurement"@en ;
    rdfs:comment "A quantitative or qualitative assessment or evaluation"@en .

#################################################################
#    Normative refinements (subclasses, non-breaking)            
#################################################################

# Modalities (kept as subclasses to avoid new primaries)
:Permission rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf proeth-core:Obligation ;
    rdfs:label "Permission"@en ;
    rdfs:comment "A normative allowance indicating that an action or state is permitted under certain conditions."@en .

:Prohibition rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf proeth-core:Obligation ;
    rdfs:label "Prohibition"@en ;
    rdfs:comment "A normative restriction indicating that an action or state is disallowed."@en .

# Compliance tracking
:Violation rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf proeth-core:Event ;
    rdfs:label "Violation"@en ;
    rdfs:comment "An event indicating that an obligation, prohibition, or standard has been breached."@en .

# Explainability / rationale
:Justification rdf:type owl:Class ;
    rdf:type :EntityType ;
    rdfs:subClassOf proeth-core:Resource ;
    rdfs:label "Justification"@en ;
    rdfs:comment "A rationale, argument, or evidence artifact supporting a decision or interpretation in an ethical case."@en .

#################################################################
#    Annotation properties                                        
#################################################################

:hasValueLabel rdf:type owl:AnnotationProperty ;
    rdfs:label "has value label"@en ;
    rdfs:comment "Annotation for recording the value-oriented reading of a principle (e.g., 'Integrity', 'Justice')."@en ;
    rdfs:domain proeth-core:Principle ;
    rdfs:range xsd:string .

#################################################################
#    Object Properties                                           
#################################################################

:hasRole rdf:type owl:ObjectProperty ;
    owl:equivalentProperty proeth-core:hasRole ;
    owl:deprecated true ;
    rdfs:domain bfo:BFO_0000004 ; # independent continuant
    rdfs:range proeth-core:Role ;
    rdfs:label "has role"@en ;
    rdfs:comment "Relates an entity to a role it bears. DEPRECATED: use proeth-core:hasRole."@en ;
    skos:changeNote "v2.4.2: Deprecated in favor of proeth-core:hasRole. Added owl:equivalentProperty to bridge existing references."@en .

:hasCondition rdf:type owl:ObjectProperty ;
    rdfs:domain bfo:BFO_0000015 ; # process
    rdfs:range proeth-core:State ;
    rdfs:label "has condition"@en ;
    rdfs:comment "Relates a process to a state that affects it"@en ;
    owl:deprecated true .

:hasState rdf:type owl:ObjectProperty ;
    owl:equivalentProperty proeth-core:hasState ;
    owl:deprecated true ;
    rdfs:domain bfo:BFO_0000015 ; # process
    rdfs:range proeth-core:State ;
    rdfs:label "has state"@en ;
    rdfs:comment "Relates a process to a state that affects it. DEPRECATED: use proeth-core:hasState."@en ;
    skos:changeNote "v2.4.2: Deprecated in favor of proeth-core:hasState. Added owl:equivalentProperty to bridge existing references."@en .

:hasResource rdf:type owl:ObjectProperty ;
    rdfs:domain bfo:BFO_0000015 ; # process
    rdfs:range proeth-core:Resource ;
    rdfs:label "has resource"@en ;
    rdfs:comment "Relates a process to a resource it uses"@en ;
    skos:changeNote "v2.4.2: Fixed range from :Resource (undefined in intermediate namespace) to proeth-core:Resource."@en .

:performsAction rdf:type owl:ObjectProperty ;
    owl:equivalentProperty proeth-core:performsAction ;
    owl:deprecated true ;
    rdfs:domain bfo:BFO_0000040 ; # material entity
    rdfs:range proeth-core:Action ;
    rdfs:label "performs action"@en ;
    rdfs:comment "Relates an agent to an action they perform. DEPRECATED: use proeth-core:performsAction."@en ;
    skos:changeNote "v2.4.2: Deprecated in favor of proeth-core:performsAction. Added owl:equivalentProperty to bridge existing references."@en .

:hasCapability rdf:type owl:ObjectProperty ;
    owl:equivalentProperty proeth-core:hasCapability ;
    owl:deprecated true ;
    rdfs:domain bfo:BFO_0000040 ; # material entity
    rdfs:range proeth-core:Capability ;
    rdfs:label "has capability"@en ;
    rdfs:comment "Relates an entity to a capability it possesses. DEPRECATED: use proeth-core:hasCapability."@en ;
    skos:changeNote "v2.4.2: Deprecated in favor of proeth-core:hasCapability. Added owl:equivalentProperty to bridge existing references."@en .

:guidedByPrinciple rdf:type owl:ObjectProperty ;
    rdfs:domain proeth-core:Action ;
    rdfs:range proeth-core:Principle ;
    rdfs:label "guided by principle"@en ;
    rdfs:comment "Relates an action to a principle that guides it"@en .

:fulfillsObligation rdf:type owl:ObjectProperty ;
    owl:equivalentProperty proeth-core:fulfillsObligation ;
    owl:deprecated true ;
    rdfs:domain proeth-core:Action ;
    rdfs:range proeth-core:Obligation ;
    rdfs:label "fulfills obligation"@en ;
    rdfs:comment "Relates an action to an obligation it fulfills. DEPRECATED: use proeth-core:fulfillsObligation."@en ;
    skos:changeNote "v2.4.2: Deprecated in favor of proeth-core:fulfillsObligation. Added owl:equivalentProperty to bridge existing references."@en .

:violatesObligation rdf:type owl:ObjectProperty ;
    rdfs:domain proeth-core:Action ;
    rdfs:range proeth-core:Obligation ;
    rdfs:label "violates obligation"@en ;
    rdfs:comment "Relates an action to an obligation it violates"@en .

:constrainedBy rdf:type owl:ObjectProperty ;
    owl:equivalentProperty proeth-core:constrainedBy ;
    owl:deprecated true ;
    rdfs:domain proeth-core:Action ;
    rdfs:range proeth-core:Constraint ;
    rdfs:label "constrained by"@en ;
    rdfs:comment "Relates an action to a constraint that limits or shapes it. DEPRECATED: use proeth-core:constrainedBy."@en ;
    skos:changeNote "v2.4.2: Deprecated in favor of proeth-core:constrainedBy. Added owl:equivalentProperty to bridge existing references."@en .

:hasAgentRole rdf:type owl:ObjectProperty ;
    rdfs:domain proeth-core:Action ;
    rdfs:range proeth-core:Role ;
    rdfs:label "has agent role"@en ;
    rdfs:comment "Relates an action to the role of the agent performing it"@en .

# Properties connecting roles to obligations and principles
:hasObligation rdf:type owl:ObjectProperty ;
    owl:equivalentProperty proeth-core:hasObligation ;
    owl:deprecated true ;
    rdfs:domain proeth-core:Role ;
    rdfs:range proeth-core:Obligation ;
    rdfs:label "has obligation"@en ;
    rdfs:comment "Relates a role to the professional obligations borne by entities bearing that role. DEPRECATED: use proeth-core:hasObligation."@en ;
    skos:changeNote "v2.4.2: Deprecated in favor of proeth-core:hasObligation. Added owl:equivalentProperty to bridge existing references."@en .

:adheresToPrinciple rdf:type owl:ObjectProperty ;
    owl:equivalentProperty proeth-core:adheresToPrinciple ;
    owl:deprecated true ;
    rdfs:domain proeth-core:Role ;
    rdfs:range proeth-core:Principle ;
    rdfs:label "adheres to principle"@en ;
    rdfs:comment "Relates a role to ethical principles that normatively govern that role. DEPRECATED: use proeth-core:adheresToPrinciple."@en ;
    skos:changeNote "v2.4.2: Deprecated in favor of proeth-core:adheresToPrinciple. Added owl:equivalentProperty to bridge existing references."@en .

:pursuesEnd rdf:type owl:ObjectProperty ;
    rdfs:domain proeth-core:Role ;
    rdfs:range :End ;
    rdfs:label "pursues end"@en ;
    rdfs:comment "Relates a role to its characteristic ends/goals."@en .

:governedByCode rdf:type owl:ObjectProperty ;
    rdfs:domain proeth-core:Role ;
    rdfs:range :EthicalCode ;
    rdfs:label "governed by code"@en ;
    rdfs:comment "Relates a professional role to an ethical code that formalizes its obligations and norms."@en .

#################################################################
#    Role-to-Role Instance Relations
#################################################################

# These properties model professional relationships between role instances
# Used in case extraction to capture organizational and supervisory structures

:retainedBy rdf:type owl:ObjectProperty ;
    rdfs:domain proeth-core:Role ;
    rdfs:range proeth-core:Role ;
    rdfs:label "retained by"@en ;
    rdfs:comment "Professional retained by client or organization"@en .

:retains rdf:type owl:ObjectProperty ;
    owl:inverseOf :retainedBy ;
    rdfs:domain proeth-core:Role ;
    rdfs:range proeth-core:Role ;
    rdfs:label "retains"@en ;
    rdfs:comment "Client or organization that retains a professional"@en .

:employedBy rdf:type owl:ObjectProperty ;
    rdfs:domain proeth-core:Role ;
    rdfs:range proeth-core:Role ;
    rdfs:label "employed by"@en ;
    rdfs:comment "Professional employed by organization"@en .

:employs rdf:type owl:ObjectProperty ;
    owl:inverseOf :employedBy ;
    rdfs:domain proeth-core:Role ;
    rdfs:range proeth-core:Role ;
    rdfs:label "employs"@en ;
    rdfs:comment "Organization that employs a professional"@en .

:supervises rdf:type owl:ObjectProperty ;
    rdfs:domain proeth-core:Role ;
    rdfs:range proeth-core:Role ;
    owl:inverseOf :supervisedBy ;
    rdfs:label "supervises"@en ;
    rdfs:comment "Role supervises another role in organizational hierarchy"@en .

:supervisedBy rdf:type owl:ObjectProperty ;
    rdfs:domain proeth-core:Role ;
    rdfs:range proeth-core:Role ;
    owl:inverseOf :supervises ;
    rdfs:label "supervised by"@en ;
    rdfs:comment "Role is supervised by another role"@en .

:mentors rdf:type owl:ObjectProperty ;
    rdfs:domain proeth-core:Role ;
    rdfs:range proeth-core:Role ;
    owl:inverseOf :mentoredBy ;
    rdfs:label "mentors"@en ;
    rdfs:comment "Role mentors another role in professional development"@en .

:mentoredBy rdf:type owl:ObjectProperty ;
    rdfs:domain proeth-core:Role ;
    rdfs:range proeth-core:Role ;
    owl:inverseOf :mentors ;
    rdfs:label "mentored by"@en ;
    rdfs:comment "Role is mentored by another role"@en .

:collaboratesWith rdf:type owl:ObjectProperty ;
    rdf:type owl:SymmetricProperty ;
    rdfs:domain proeth-core:Role ;
    rdfs:range proeth-core:Role ;
    rdfs:label "collaborates with"@en ;
    rdfs:comment "Role collaborates with another role as peers"@en .

:reportsTo rdf:type owl:ObjectProperty ;
    rdfs:domain proeth-core:Role ;
    rdfs:range proeth-core:Role ;
    owl:inverseOf :receivesReportFrom ;
    rdfs:label "reports to"@en ;
    rdfs:comment "Role reports to another role in organizational structure"@en .

:receivesReportFrom rdf:type owl:ObjectProperty ;
    rdfs:domain proeth-core:Role ;
    rdfs:range proeth-core:Role ;
    owl:inverseOf :reportsTo ;
    rdfs:label "receives report from"@en ;
    rdfs:comment "Role receives reports from another role"@en .

#################################################################
#    Provision-Concept Relationships
#################################################################

# These properties link ethical code provisions to the concepts they establish
# Used to trace how specific code sections ground principles, obligations, and constraints

:establishes rdf:type owl:ObjectProperty ;
    rdfs:domain proeth-core:Resource ;
    rdfs:range [ rdf:type owl:Class ;
                 owl:unionOf ( proeth-core:Principle proeth-core:Obligation proeth-core:Constraint ) ] ;
    rdfs:label "establishes"@en ;
    rdfs:comment "Relates a code provision to the ethical concepts (Principles, Obligations, Constraints) it establishes or reinforces. For example, NSPE Canon I.1 establishes the Public Safety Principle."@en ;
    dcterms:source <https://doi.org/10.1023/A:1024195425598> . # McLaren 2003 - extensional grounding

:establishedBy rdf:type owl:ObjectProperty ;
    owl:inverseOf :establishes ;
    rdfs:domain [ rdf:type owl:Class ;
                  owl:unionOf ( proeth-core:Principle proeth-core:Obligation proeth-core:Constraint ) ] ;
    rdfs:range proeth-core:Resource ;
    rdfs:label "established by"@en ;
    rdfs:comment "Inverse of establishes. Relates an ethical concept to the code provision(s) that establish it. For example, Public Safety Principle is established by NSPE Canon I.1."@en .

#################################################################
#    State Classes - Based on Chapter 2.2.4 Literature Review
#################################################################

# Conflict States - Context where competing interests or obligations arise

:ConflictOfInterest a owl:Class ;
    rdfs:subClassOf proeth-core:State ;
    rdfs:label "Conflict of Interest State" ;
    skos:definition "Environmental state where a professional has personal interests that could influence their professional judgment or decision-making, requiring disclosure and management according to Dennis et al. (2016) context-aware ethical reasoning framework." ;
    rdfs:comment "Professional situation where personal and professional interests compete" ;
    dcterms:references <https://doi.org/10.1007/s10458-015-9308-2> . # Dennis et al. 2016

:CompetingDuties a owl:Class ;
    rdfs:subClassOf proeth-core:State ;
    rdfs:label "Competing Duties State" ;
    skos:definition "Context where multiple professional obligations conflict and cannot all be fully satisfied simultaneously, requiring prioritization based on Rao et al. (2023) context-dependent moral evaluation." ;
    rdfs:comment "State requiring ethical prioritization between conflicting obligations" ;
    dcterms:references <https://doi.org/10.48550/arXiv.2302.00997> . # Rao et al. 2023

proeth:ConfirmedRiskWithoutAdequateSafeguardsState a owl:Class ;
    rdfs:subClassOf proeth-core:State ;
    rdfs:label "Confirmed Risk Without Adequate Safeguards State"@en ;
    rdfs:comment "State in which a professional has confirmed the existence of a concrete public-safety or environmental risk and adequate safeguards are known to be absent. Typical activator for post-termination reporting obligations and for defeating faithful-agent confidentiality (NSPE BER Case 72 pattern)."@en .

# Risk States - Environmental conditions involving potential harm

:PublicSafetyAtRisk a owl:Class ;
    rdfs:subClassOf proeth-core:State ;
    rdfs:label "Public Safety at Risk" ;
    skos:definition "Environmental condition where actions or conditions pose potential harm to public health, safety, or welfare, elevating safety obligations per Berreby et al. (2017) Event Calculus state representation." ;
    rdfs:comment "Critical state triggering heightened safety obligations" ;
    dcterms:references <https://doi.org/10.1016/j.artint.2017.12.003> . # Berreby et al. 2017

:EnvironmentalHazard a owl:Class ;
    rdfs:subClassOf proeth-core:State ;
    rdfs:label "Environmental Hazard Present" ;
    skos:definition "State where environmental conditions pose risks requiring professional intervention or mitigation according to Almpani et al. (2023) dynamic priority determination framework." ;
    rdfs:comment "Environmental risk state requiring assessment and action" ;
    dcterms:references <https://doi.org/10.1007/978-3-031-21203-1_31> . # Almpani et al. 2023

# Competence States - Professional capability boundaries

:OutsideCompetence a owl:Class ;
    rdfs:subClassOf proeth-core:State ;
    rdfs:label "Outside Area of Competence" ;
    skos:definition "State where professional lacks the expertise, training, or qualification to perform requested services, limiting available actions per competence-based ethical constraints." ;
    rdfs:comment "Competence boundary preventing service provision" .

:QualifiedToPerform a owl:Class ;
    rdfs:subClassOf proeth-core:State ;
    rdfs:label "Qualified to Perform" ;
    skos:definition "Positive competence state where professional has demonstrated expertise and authorization to perform specific services within defined scope of practice." ;
    rdfs:comment "Competence state enabling professional action" .

# Relationship States - Professional relationship contexts

:ClientRelationship a owl:Class ;
    rdfs:subClassOf proeth-core:State ;
    rdfs:label "Client Relationship Established" ;
    skos:definition "Relational state where formal professional-client relationship exists with associated fiduciary duties, confidentiality requirements, and professional boundaries." ;
    rdfs:comment "Active professional relationship with associated obligations" .

:EmploymentTerminated a owl:Class ;
    rdfs:subClassOf proeth-core:State ;
    rdfs:label "Employment Terminated" ;
    skos:definition "Post-employment state where professional relationship has ended but residual obligations for confidentiality and non-competition may persist." ;
    rdfs:comment "Post-employment state with continuing obligations" .

# Information States - Data and knowledge contexts

:ConfidentialInformation a owl:Class ;
    rdfs:subClassOf proeth-core:State ;
    rdfs:label "Confidential Information Held" ;
    skos:definition "Information state where professional possesses data subject to confidentiality obligations, restricting disclosure per professional ethics requirements." ;
    rdfs:comment "State triggering information protection obligations" .

:PublicInformation a owl:Class ;
    rdfs:subClassOf proeth-core:State ;
    rdfs:label "Public Information Available" ;
    skos:definition "Open information state where relevant data is publicly accessible without confidentiality restrictions, enabling unrestricted professional use." ;
    rdfs:comment "State permitting open information use" .

# Emergency States - Critical temporal conditions

:EmergencySituation a owl:Class ;
    rdfs:subClassOf proeth-core:State ;
    rdfs:label "Emergency Situation" ;
    skos:definition "Critical temporal state requiring immediate response that may override normal procedures, represented as non-inertial fluent per Berreby et al. (2017) Event Calculus formalism." ;
    rdfs:comment "Urgent state overriding normal protocols" ;
    dcterms:references <https://doi.org/10.1016/j.artint.2017.12.003> . # Berreby et al. 2017

:CrisisConditions a owl:Class ;
    rdfs:subClassOf proeth-core:State ;
    rdfs:label "Crisis Conditions" ;
    skos:definition "Extended emergency state of systemic disruption requiring coordinated professional response with adapted obligations and priorities." ;
    rdfs:comment "Sustained emergency requiring coordinated response" .

# Regulatory States - Legal and compliance contexts

:RegulatoryCompliance a owl:Class ;
    rdfs:subClassOf proeth-core:State ;
    rdfs:label "Regulatory Compliance State" ;
    skos:definition "State where specific regulatory requirements are in effect, constraining professional actions and decisions per jurisdictional requirements." ;
    rdfs:comment "Legal compliance context constraining actions" .

:NonCompliant a owl:Class ;
    rdfs:subClassOf proeth-core:State ;
    rdfs:label "Non-Compliant State" ;
    skos:definition "Problematic state where applicable standards or regulations are not being met, requiring immediate corrective action." ;
    rdfs:comment "State requiring compliance remediation" .

# Temporal States - Time-dependent conditions

:DeadlineApproaching a owl:Class ;
    rdfs:subClassOf proeth-core:State ;
    rdfs:label "Deadline Approaching" ;
    skos:definition "Temporal state where time constraints intensify, potentially affecting quality-safety tradeoffs per Sarmiento et al. (2023) causal reasoning framework." ;
    rdfs:comment "Time pressure state affecting decision priorities" ;
    dcterms:references <https://doi.org/10.1609/aaai.v37i5.25774> . # Sarmiento et al. 2023

:ExtendedTimeframe a owl:Class ;
    rdfs:subClassOf proeth-core:State ;
    rdfs:label "Extended Timeframe Available" ;
    skos:definition "Temporal state where sufficient time exists for thorough analysis and stakeholder consultation, enabling comprehensive ethical deliberation." ;
    rdfs:comment "State enabling thorough deliberation" .

# Resource States - Availability and constraint contexts

:ResourceConstrained a owl:Class ;
    rdfs:subClassOf proeth-core:State ;
    rdfs:label "Resource Constrained" ;
    skos:definition "State where limited resources (budget, personnel, materials) constrain available options and require allocation decisions." ;
    rdfs:comment "Resource limitation affecting available actions" .

:ResourceAvailable a owl:Class ;
    rdfs:subClassOf proeth-core:State ;
    rdfs:label "Resources Available" ;
    skos:definition "State where sufficient resources exist to implement optimal solutions without significant constraints." ;
    rdfs:comment "Resource sufficiency enabling full options" .

#################################################################
#    Professional Resource Types (Chapter 2.2.3 - McLaren 2003)
#################################################################

# Professional resources provide extensional grounding for ethical decision-making
# Based on McLaren (2003) extensional principles approach

:ProfessionalCode rdf:type owl:Class ;
    rdfs:subClassOf proeth-core:Resource ;
    rdfs:label "Professional Code" ;
    skos:definition "Formal codified professional ethics standards (e.g., NSPE Code, IEEE Code) that establish professional identity, create accountability, and provide deliberation frameworks beyond mere rules per McLaren (2003) extensional approach." ;
    rdfs:comment "Distillations of collective experience that guide and justify actions" ;
    dcterms:references <https://doi.org/10.1023/A:1024195425598> .

:CasePrecedent rdf:type owl:Class ;
    rdfs:subClassOf proeth-core:Resource ;
    rdfs:label "Case Precedent" ;
    skos:definition "Documented cases from ethics review boards providing precedential knowledge and analogical reasoning patterns for similar situations, grounding abstract principles in professional reality per McLaren (2003)." ;
    rdfs:comment "Concrete instances that exemplify principle application" ;
    dcterms:references <https://doi.org/10.1023/A:1024195425598> .

:ExpertInterpretation rdf:type owl:Class ;
    rdfs:subClassOf proeth-core:Resource ;
    rdfs:label "Expert Interpretation" ;
    skos:definition "Authoritative explanations bridging principles to specific contexts, providing nuanced understanding of how principles apply in complex situations based on professional consensus." ;
    rdfs:comment "Professional consensus on principle application in edge cases" ;
    dcterms:references <https://doi.org/10.1023/A:1024195425598> .

:TechnicalStandard rdf:type owl:Class ;
    rdfs:subClassOf proeth-core:Resource ;
    rdfs:label "Technical Standard" ;
    skos:definition "Industry standards and specifications defining acceptable practice (e.g., ISO, IEEE, ASME standards) that embody collective professional agreement on technical acceptability and minimum competence benchmarks." ;
    rdfs:comment "Collective professional agreement on technical acceptability" ;
    dcterms:references <https://doi.org/10.1023/A:1024195425598> .

:LegalResource rdf:type owl:Class ;
    rdfs:subClassOf proeth-core:Resource ;
    rdfs:label "Legal Resource" ;
    skos:definition "Laws, regulations, and statutes governing professional practice that establish legal boundaries and compliance requirements for professional activities." ;
    rdfs:comment "Legal framework constraining professional practice" .

:DecisionTool rdf:type owl:Class ;
    rdfs:subClassOf proeth-core:Resource ;
    rdfs:label "Decision Tool" ;
    skos:definition "Frameworks, methodologies, and assessment tools for ethical analysis that provide structured approaches to ethical decision-making in professional contexts." ;
    rdfs:comment "Structured approaches for ethical analysis" .

:ReferenceMaterial rdf:type owl:Class ;
    rdfs:subClassOf proeth-core:Resource ;
    rdfs:label "Reference Material" ;
    skos:definition "Handbooks, manuals, guides, and other documentation supporting professional practice with technical and procedural knowledge." ;
    rdfs:comment "Supporting documentation for professional practice" .

# Specific instances of professional codes (examples)
:NSPECodeOfEthics rdf:type owl:NamedIndividual ;
    rdf:type :ProfessionalCode ;
    rdfs:label "NSPE Code of Ethics" ;
    skos:definition "The National Society of Professional Engineers' Code of Ethics establishing fundamental canons, rules of practice, and professional obligations for engineers." ;
    rdfs:comment "Primary ethical framework for professional engineers in the United States" .

#################################################################
# Constraint Categories from Chapter 2.2.9 Literature
# Based on Ganascia (2007), Dennis et al. (2016), Taddeo et al. (2024)
#################################################################

# Boundary Type Constraints
proeth:LegalConstraint a owl:Class ;
    rdfs:subClassOf proeth-core:Constraint ;
    rdfs:label "Legal Constraint"@en ;
    rdfs:comment "Constraints arising from legal requirements and statutes that establish inviolable boundaries (Kroll 2020, Stenseke 2024)"@en ;
    dcterms:references <https://doi.org/10.1007/s00146-020-00965-5> . # Kroll 2020

proeth:RegulatoryConstraint a owl:Class ;
    rdfs:subClassOf proeth-core:Constraint ;
    rdfs:label "Regulatory Constraint"@en ;
    rdfs:comment "Constraints from regulatory bodies and professional standards organizations (Taddeo et al. 2024)"@en ;
    dcterms:references <https://doi.org/10.1007/s00146-024-01870-x> . # Taddeo et al. 2024

proeth:ResourceConstraint a owl:Class ;
    rdfs:subClassOf proeth-core:Constraint ;
    rdfs:label "Resource Constraint"@en ;
    rdfs:comment "Limitations on available time, budget, materials, or human resources (Ganascia 2007)"@en ;
    dcterms:references <https://doi.org/10.1007/s11023-007-9079-x> . # Ganascia 2007

proeth:CompetenceConstraint a owl:Class ;
    rdfs:subClassOf proeth-core:Constraint ;
    rdfs:label "Competence Constraint"@en ;
    rdfs:comment "Boundaries defined by agent capabilities and technical limitations (Hallamaa & Kalliokoski 2022)"@en ;
    dcterms:references <https://doi.org/10.1080/08989621.2022.2054267> . # Hallamaa & Kalliokoski 2022

proeth:JurisdictionalConstraint a owl:Class ;
    rdfs:subClassOf proeth-core:Constraint ;
    rdfs:label "Jurisdictional Constraint"@en ;
    rdfs:comment "Boundaries of authority and geographical or organizational scope (Dennis et al. 2016)"@en ;
    dcterms:references <https://doi.org/10.1007/s10458-015-9308-2> . # Dennis et al. 2016

proeth:ProceduralConstraint a owl:Class ;
    rdfs:subClassOf proeth-core:Constraint ;
    rdfs:label "Procedural Constraint"@en ;
    rdfs:comment "Requirements for following specific processes or protocols (Furbach et al. 2014)"@en ;
    dcterms:references <https://doi.org/10.1007/s13218-014-0309-0> . # Furbach et al. 2014

# Defeasibility Type Constraints
proeth:DefeasibleConstraint a owl:Class ;
    rdfs:subClassOf proeth-core:Constraint ;
    rdfs:label "Defeasible Constraint"@en ;
    rdfs:comment "Constraints that admit justified exceptions under specified conditions (Ganascia 2007)"@en ;
    dcterms:references <https://doi.org/10.1007/s11023-007-9079-x> . # Ganascia 2007

proeth:InviolableConstraint a owl:Class ;
    rdfs:subClassOf proeth-core:Constraint ;
    rdfs:label "Inviolable Constraint"@en ;
    rdfs:comment "Absolute constraints that cannot be overridden under any circumstances (Dennis et al. 2016)"@en ;
    dcterms:references <https://doi.org/10.1007/s10458-015-9308-2> . # Dennis et al. 2016

# Ethical Boundary Type Constraints
proeth:EthicalConstraint a owl:Class ;
    rdfs:subClassOf proeth-core:Constraint ;
    rdfs:label "Ethical Constraint"@en ;
    rdfs:comment "Professional ethical boundaries beyond legal requirements (Benzmüller et al. 2020)"@en ;
    dcterms:references <https://doi.org/10.1007/s10817-018-9507-z> . # Benzmüller et al. 2020

proeth:SafetyConstraint a owl:Class ;
    rdfs:subClassOf proeth-core:Constraint ;
    rdfs:label "Safety Constraint"@en ;
    rdfs:comment "Constraints ensuring safety requirements are met (Arkin 2008)"@en ;
    dcterms:references <https://doi.org/10.1109/MIS.2008.100> . # Arkin 2008

proeth:ConfidentialityConstraint a owl:Class ;
    rdfs:subClassOf proeth-core:Constraint ;
    rdfs:label "Confidentiality Constraint"@en ;
    rdfs:comment "Boundaries on information disclosure and privacy (Dennis et al. 2016)"@en ;
    dcterms:references <https://doi.org/10.1007/s10458-015-9308-2> . # Dennis et al. 2016

# Temporal and Priority Type Constraints
proeth:TemporalConstraint a owl:Class ;
    rdfs:subClassOf proeth-core:Constraint ;
    rdfs:label "Temporal Constraint"@en ;
    rdfs:comment "Time-based limitations and deadlines (Govindarajulu & Bringsjord 2017)"@en ;
    dcterms:references <https://doi.org/10.1609/aimag.v38i2.2743> . # Govindarajulu & Bringsjord 2017

proeth:PriorityConstraint a owl:Class ;
    rdfs:subClassOf proeth-core:Constraint ;
    rdfs:label "Priority Constraint"@en ;
    rdfs:comment "Constraints establishing precedence when multiple requirements conflict (Scheutz & Malle 2014)"@en ;
    dcterms:references <https://doi.org/10.1075/is.15.2.05sch> . # Scheutz & Malle 2014

# Constraint properties for relationships
proeth:hasConstraintType a owl:DatatypeProperty ;  # was owl:ObjectProperty — corrected: range is xsd:string
    rdfs:domain proeth-core:Constraint ;
    rdfs:range xsd:string ;
    rdfs:label "has constraint type"@en ;
    rdfs:comment "Specifies the type of constraint (legal, regulatory, resource, etc.)"@en ;
    skos:changeNote "v2.x: Changed from owl:ObjectProperty to owl:DatatypeProperty. A property relating to a string literal must be a DatatypeProperty."@en .

proeth:constrainsAction a owl:ObjectProperty ;
    rdfs:domain proeth-core:Constraint ;
    rdfs:range proeth-core:Action ;
    rdfs:label "constrains action"@en ;
    rdfs:comment "Links constraint to actions it limits or prohibits"@en .

proeth:conflictsWithObligation a owl:ObjectProperty ;
    rdfs:domain proeth-core:Constraint ;
    rdfs:range proeth-core:Obligation ;
    rdfs:label "conflicts with obligation"@en ;
    rdfs:comment "Indicates when a constraint creates tension with an obligation"@en .

#################################################################
# Capability Categories from Chapter 2.2.8 Literature
# Based on Tolmeijer et al. (2021), Berreby et al. (2017), Anderson & Anderson (2018)
#################################################################

# Norm Management Capabilities
proeth:NormCompetence a owl:Class ;
    rdfs:subClassOf proeth-core:Capability ;
    rdfs:label "Norm Competence"@en ;
    rdfs:comment "Ability to store ethical rules, recognize when they apply, understand conflicts, and resolve contradictions (Tolmeijer et al. 2021)"@en ;
    dcterms:references <https://doi.org/10.1007/s11948-020-00230-4> . # Tolmeijer et al. 2021

proeth:ConflictResolution a owl:Class ;
    rdfs:subClassOf proeth-core:Capability ;
    rdfs:label "Conflict Resolution"@en ;
    rdfs:comment "Capability to manage and resolve conflicts between diverse and potentially conflicting normative requirements (Dennis et al. 2016)"@en ;
    dcterms:references <https://doi.org/10.1007/s10458-015-9308-2> . # Dennis et al. 2016

# Awareness and Perception Capabilities
proeth:SituationalAwareness a owl:Class ;
    rdfs:subClassOf proeth-core:Capability ;
    rdfs:label "Situational Awareness"@en ;
    rdfs:comment "Ability to perceive and interpret environmental factors affecting ethical evaluation (Almpani et al. 2023, Tolmeijer et al. 2021)"@en ;
    dcterms:references <https://doi.org/10.1007/s11948-020-00230-4> . # Tolmeijer et al. 2021

proeth:EthicalPerception a owl:Class ;
    rdfs:subClassOf proeth-core:Capability ;
    rdfs:label "Ethical Perception"@en ;
    rdfs:comment "Capability to recognize ethically salient features and dynamically assess environment (Anderson et al. 2006, Berreby et al. 2017)"@en ;
    dcterms:references <https://doi.org/10.1109/MIS.2006.98> . # Anderson et al. 2006

# Learning and Adaptation Capabilities
proeth:EthicalLearning a owl:Class ;
    rdfs:subClassOf proeth-core:Capability ;
    rdfs:label "Ethical Learning"@en ;
    rdfs:comment "Ability to adapt to new cases, changing standards, and novel situations while maintaining consistency (Anderson & Anderson 2018)"@en ;
    dcterms:references <https://doi.org/10.1007/s10676-017-9430-8> . # Anderson & Anderson 2018

proeth:PrincipleRefinement a owl:Class ;
    rdfs:subClassOf proeth-core:Capability ;
    rdfs:label "Principle Refinement"@en ;
    rdfs:comment "Capability to evolve principles as inconsistencies are resolved and new cases are added (GenEth system, Anderson & Anderson 2018)"@en ;
    dcterms:references <https://doi.org/10.1007/s10676-017-9430-8> . # Anderson & Anderson 2018

# Reasoning and Deliberation Capabilities
proeth:EthicalReasoning a owl:Class ;
    rdfs:subClassOf proeth-core:Capability ;
    rdfs:label "Ethical Reasoning"@en ;
    rdfs:comment "Capability to process ethical information, deliberate on choices, and exercise moral judgment (Wallach & Allen 2009, Belle 2023)"@en ;
    dcterms:references <https://doi.org/10.1093/acprof:oso/9780195374049.001.0001> . # Wallach & Allen 2009

proeth:CausalReasoning a owl:Class ;
    rdfs:subClassOf proeth-core:Capability ;
    rdfs:label "Causal Reasoning"@en ;
    rdfs:comment "Ability to trace complex causal chains and establish responsibility relationships (Sarmiento et al. 2023, Wright's NESS test)"@en ;
    dcterms:references <https://doi.org/10.1007/s10458-023-09609-6> . # Sarmiento et al. 2023

proeth:TemporalReasoning a owl:Class ;
    rdfs:subClassOf proeth-core:Capability ;
    rdfs:label "Temporal Reasoning"@en ;
    rdfs:comment "Capability to reason about temporal dynamics and event sequences in ethical evaluation (Govindarajulu & Bringsjord 2017)"@en ;
    dcterms:references <https://doi.org/10.1007/s11023-015-9367-9> . # Govindarajulu & Bringsjord 2017

# Communication and Explanation Capabilities
proeth:ExplanationGeneration a owl:Class ;
    rdfs:subClassOf proeth-core:Capability ;
    rdfs:label "Explanation Generation"@en ;
    rdfs:comment "Ability to provide clear explanations and justifications for ethical decisions (Langley 2019, Tolmeijer et al. 2021)"@en ;
    dcterms:references <https://doi.org/10.1007/s11948-020-00230-4> . # Tolmeijer et al. 2021

proeth:JustificationCapability a owl:Class ;
    rdfs:subClassOf proeth-core:Capability ;
    rdfs:label "Justification Capability"@en ;
    rdfs:comment "Capability to trace reasoning paths connecting decisions to authoritative sources (McLaren 2003, Anderson & Anderson 2018)"@en ;
    dcterms:references <https://doi.org/10.1023/B:AIRE.0000009444.71972.2e> . # McLaren 2003

proeth:ResponsibilityDocumentation a owl:Class ;
    rdfs:subClassOf proeth-core:Capability ;
    rdfs:label "Responsibility Documentation"@en ;
    rdfs:comment "Capability to maintain detailed logs of actions and reasoning for accountability (Arkin 2008, Kroll 2020)"@en ;
    dcterms:references <https://doi.org/10.1109/MIS.2008.100> . # Arkin 2008

# Domain-Specific Capabilities
proeth:DomainExpertise a owl:Class ;
    rdfs:subClassOf proeth-core:Capability ;
    rdfs:label "Domain Expertise"@en ;
    rdfs:comment "Professional domain-specific knowledge and competencies (Hallamaa & Kalliokoski 2022, Doernberg & Truog 2023)"@en ;
    dcterms:references <https://doi.org/10.1007/s00146-021-01230-z> . # Hallamaa & Kalliokoski 2022

proeth:ProfessionalCompetence a owl:Class ;
    rdfs:subClassOf proeth-core:Capability ;
    rdfs:label "Professional Competence"@en ;
    rdfs:comment "Technical competencies specific to professional roles and activities (Kong et al. 2020, Stenseke 2024)"@en ;
    dcterms:references <https://doi.org/10.1007/s10676-024-09775-5> . # Stenseke 2024

# Retrieval and Application Capabilities
proeth:PrecedentRetrieval a owl:Class ;
    rdfs:subClassOf proeth-core:Capability ;
    rdfs:label "Precedent Retrieval"@en ;
    rdfs:comment "Capability to identify relevant precedents and apply case-based reasoning (McLaren 2003, SIROCCO system)"@en ;
    dcterms:references <https://doi.org/10.1023/B:AIRE.0000009444.71972.2e> . # McLaren 2003

# Capability properties for relationships
proeth:hasCapabilityLevel a owl:DatatypeProperty ;  # was owl:ObjectProperty — corrected: range is xsd:string
    rdfs:domain proeth-core:Capability ;
    rdfs:range xsd:string ;
    rdfs:label "has capability level"@en ;
    rdfs:comment "Indicates the level or degree of a capability"@en ;
    skos:changeNote "v2.x: Changed from owl:ObjectProperty to owl:DatatypeProperty. A property relating to a string literal must be a DatatypeProperty."@en .

proeth:enablesAction a owl:ObjectProperty ;
    rdfs:domain proeth-core:Capability ;
    rdfs:range proeth-core:Action ;
    rdfs:label "enables action"@en ;
    rdfs:comment "Relates a capability to the actions it enables"@en .

proeth:requiresCapability a owl:ObjectProperty ;
    rdfs:domain proeth-core:Role ;
    rdfs:range proeth-core:Capability ;
    rdfs:label "requires capability"@en ;
    rdfs:comment "Specifies capabilities required for a professional role"@en .

#################################################################
#    Case Analysis Entities (Step 4 Enhanced Analysis)
#    For Questions, Conclusions, and Decision Points
#################################################################

# Ethical Question - Questions posed to the Board for ethical review
:EthicalQuestion rdf:type owl:Class ;
    rdf:type :EntityType ;
    owl:equivalentClass proeth-cases:EthicalQuestion ;
    owl:deprecated true ;
    rdfs:subClassOf bfo:BFO_0000031 ; # generically dependent continuant (information content)
    rdfs:label "Ethical Question"@en ;
    iao:0000115 "A question about ethical conduct posed for Board of Ethical Review consideration, representing a specific inquiry about professional ethics requiring formal determination."@en ;
    skos:definition "Questions submitted to ethics review boards articulate specific ethical uncertainties requiring authoritative interpretation. Per McLaren (2003), these questions provide the extensional grounding for principle application, with each Board determination adding to the precedential knowledge base."@en ;
    dcterms:source <https://doi.org/10.1023/A:1024195425598> ; # McLaren 2003
    rdfs:comment "Extracted from case 'Questions' sections. Each question frames a specific ethical issue for Board determination. DEPRECATED: use proeth-cases:EthicalQuestion."@en ;
    skos:changeNote "v2.4.2: Deprecated in favor of proeth-cases:EthicalQuestion. Added owl:equivalentClass to bridge existing references. Case data uses the proeth-cases: version."@en .

# Board Conclusion - The Board's formal determination on an ethical question
:BoardConclusion rdf:type owl:Class ;
    rdf:type :EntityType ;
    owl:equivalentClass proeth-cases:EthicalConclusion ;
    owl:deprecated true ;
    rdfs:subClassOf bfo:BFO_0000031 ; # generically dependent continuant (information content)
    rdfs:label "Board Conclusion"@en ;
    iao:0000115 "The Board of Ethical Review's formal determination on an ethical question, representing authoritative professional judgment with precedential value."@en ;
    skos:definition "Board conclusions represent the culmination of ethical deliberation, providing precedential guidance for future cases. Per McLaren (2003), these determinations give concrete meaning to abstract principles through their application to specific factual contexts."@en ;
    dcterms:source <https://doi.org/10.1023/A:1024195425598> ; # McLaren 2003
    rdfs:comment "Extracted from case 'Conclusions' sections. Each conclusion answers a specific ethical question and establishes precedent. DEPRECATED: use proeth-cases:EthicalConclusion."@en ;
    skos:changeNote "v2.4.2: Deprecated in favor of proeth-cases:EthicalConclusion. Added owl:equivalentClass to bridge existing references."@en .

# Decision Point - A point in the case where an ethical choice must be made
:DecisionPoint rdf:type owl:Class ;
    rdf:type :EntityType ;
    owl:equivalentClass proeth-cases:DecisionPoint ;
    owl:deprecated true ;
    rdfs:subClassOf proeth-core:Event ;
    rdfs:label "Decision Point"@en ;
    iao:0000115 "A point in an ethics case where a professional actor must make a choice between ethically significant alternatives, representing a critical juncture in the case narrative."@en ;
    skos:definition "Decision points mark critical junctures in ethics cases where actors face choices between alternatives with ethical implications. Per Hobbs & Moore (2005) scenario-directed decision analysis, these points structure the ethical problem space and enable systematic analysis of options, constraints, and outcomes."@en ;
    dcterms:source <https://doi.org/10.1111/j.1539-6924.2005.00634.x> ; # Hobbs & Moore 2005
    rdfs:comment "Extracted during Step 4 analysis. Each decision point includes options, involved roles, applicable provisions, and the board's resolution. DEPRECATED: use proeth-cases:DecisionPoint."@en ;
    skos:changeNote "v2.4.2: Deprecated in favor of proeth-cases:DecisionPoint. Added owl:equivalentClass to bridge existing references. 845 case instances reference proeth-cases:DecisionPoint."@en .

# Decision Option - An alternative available at a decision point
:DecisionOption rdf:type owl:Class ;
    rdf:type :EntityType ;
    owl:equivalentClass proeth-cases:DecisionOption ;
    owl:deprecated true ;
    rdfs:subClassOf bfo:BFO_0000031 ; # generically dependent continuant (information content)
    rdfs:label "Decision Option"@en ;
    iao:0000115 "A possible course of action available at a decision point, representing one alternative the actor could choose."@en ;
    skos:definition "Decision options represent the discrete alternatives available to actors at decision points. Per scenario-directed analysis frameworks, clearly articulating options enables structured evaluation of consequences and ethical implications for each path."@en ;
    rdfs:comment "Each decision point has multiple options; one is typically marked as the board's chosen resolution. DEPRECATED: use proeth-cases:DecisionOption."@en ;
    skos:changeNote "v2.4.2: Deprecated in favor of proeth-cases:DecisionOption. Added owl:equivalentClass to bridge existing references."@en .

# Ethical Argument - A pro or con argument for a decision option
:EthicalArgument rdf:type owl:Class ;
    rdf:type :EntityType ;
    owl:equivalentClass proeth-cases:Argument ;
    owl:deprecated true ;
    rdfs:subClassOf bfo:BFO_0000031 ; # generically dependent continuant (information content)
    rdfs:label "Ethical Argument"@en ;
    iao:0000115 "An argument supporting or opposing a decision option, based on ethical principles, code provisions, and precedent cases."@en ;
    skos:definition "Ethical arguments represent the pro/con reasoning for decision options. Per the IAAI 'Pros and Cons in Ethical Decisions' paper, evaluative AI presents balanced arguments citing code provisions and precedents so practitioners can make informed decisions."@en ;
    rdfs:comment "Generated during Step 4 Part F. Each argument includes a claim, premises, provision citations, and strength assessment. DEPRECATED: use proeth-cases:Argument."@en ;
    skos:changeNote "v2.4.2: Deprecated in favor of proeth-cases:Argument. Added owl:equivalentClass to bridge existing references."@en .

# Properties for case analysis entities
:hasQuestion rdf:type owl:ObjectProperty ;
    rdfs:domain bfo:BFO_0000001 ; # entity (case)
    rdfs:range :EthicalQuestion ;
    rdfs:label "has question"@en ;
    rdfs:comment "Relates a case to the ethical questions it poses for Board review"@en .

:hasConclusion rdf:type owl:ObjectProperty ;
    rdfs:domain bfo:BFO_0000001 ; # entity (case)
    rdfs:range :BoardConclusion ;
    rdfs:label "has conclusion"@en ;
    rdfs:comment "Relates a case to the Board's conclusions"@en .

:hasDecisionPoint rdf:type owl:ObjectProperty ;
    rdfs:domain bfo:BFO_0000001 ; # entity (case)
    rdfs:range :DecisionPoint ;
    rdfs:label "has decision point"@en ;
    rdfs:comment "Relates a case to a decision point identified within it"@en .

:hasOption rdf:type owl:ObjectProperty ;
    rdfs:domain :DecisionPoint ;
    rdfs:range :DecisionOption ;
    rdfs:label "has option"@en ;
    rdfs:comment "Relates a decision point to its available options"@en .

:answersQuestion rdf:type owl:ObjectProperty ;
    rdfs:domain :BoardConclusion ;
    rdfs:range :EthicalQuestion ;
    rdfs:label "answers question"@en ;
    rdfs:comment "Relates a Board conclusion to the question it answers"@en .

:involvesRole rdf:type owl:ObjectProperty ;
    rdfs:domain :DecisionPoint ;
    rdfs:range proeth-core:Role ;
    rdfs:label "involves role"@en ;
    rdfs:comment "Relates a decision point to the professional roles involved in it"@en .

:appliesProvision rdf:type owl:ObjectProperty ;
    rdfs:domain :DecisionPoint ;
    rdfs:range :EthicalCode ;
    rdfs:label "applies provision"@en ;
    rdfs:comment "Relates a decision point to the ethical code provisions applicable to it"@en .

:isBoardChoice rdf:type owl:DatatypeProperty ;
    rdfs:domain :DecisionOption ;
    rdfs:range xsd:boolean ;
    rdfs:label "is board choice"@en ;
    rdfs:comment "Indicates whether this option was the Board's chosen resolution"@en .

:hasArgument rdf:type owl:ObjectProperty ;
    rdfs:domain :DecisionOption ;
    rdfs:range :EthicalArgument ;
    rdfs:label "has argument"@en ;
    rdfs:comment "Relates a decision option to an argument for or against it"@en .

:argumentFor rdf:type owl:ObjectProperty ;
    rdfs:domain :EthicalArgument ;
    rdfs:range :DecisionOption ;
    rdfs:label "argument for"@en ;
    rdfs:comment "Indicates this is a PRO argument supporting the decision option"@en ;
    skos:changeNote "v2.4.2: Removed rdfs:subPropertyOf :hasArgument. The parent property has domain DecisionOption and range EthicalArgument, but argumentFor has the inverse direction (EthicalArgument to DecisionOption). A subproperty cannot invert its parent's domain/range."@en .

:argumentAgainst rdf:type owl:ObjectProperty ;
    rdfs:domain :EthicalArgument ;
    rdfs:range :DecisionOption ;
    rdfs:label "argument against"@en ;
    rdfs:comment "Indicates this is a CON argument opposing the decision option"@en ;
    skos:changeNote "v2.4.2: Removed rdfs:subPropertyOf :hasArgument. Same domain/range inversion issue as argumentFor."@en .

:citesProvision rdf:type owl:ObjectProperty ;
    rdfs:domain :EthicalArgument ;
    rdfs:range :EthicalCode ;
    rdfs:label "cites provision"@en ;
    rdfs:comment "Relates an argument to the code provision it cites as support"@en .

:argumentType rdf:type owl:DatatypeProperty ;
    rdfs:domain :EthicalArgument ;
    rdfs:range xsd:string ;
    rdfs:label "argument type"@en ;
    rdfs:comment "The type of argument: 'pro' or 'con'"@en .

:argumentStrength rdf:type owl:DatatypeProperty ;
    rdfs:domain :EthicalArgument ;
    rdfs:range xsd:string ;
    rdfs:label "argument strength"@en ;
    rdfs:comment "The assessed strength of the argument: 'weak', 'moderate', or 'strong'"@en .

#################################################################
#    SPARQL Query Support
#################################################################

# This comment documents the SPARQL query to retrieve all GuidelineConceptTypes:
# SELECT ?type ?label ?comment WHERE {
#   ?type rdf:type :GuidelineConceptType .
#   ?type rdfs:label ?label .
#   OPTIONAL { ?type rdfs:comment ?comment }
# }
# This will return: Role, Principle, Obligation, State, Resource, Action, Event, Capability
