@prefix : <http://seal.tamu.edu/legal-kernel#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix bfo: <http://purl.obolibrary.org/obo/BFO_> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix dcterms: <http://purl.org/dc/terms/> .

#################################################################
# Ontology header
#################################################################

<http://seal.tamu.edu/legal-kernel> a owl:Ontology ;
    rdfs:label "SEAL / SOoL Unified Legal Structural Kernel Ontology" ;
    rdfs:comment """Unified kernel for the Structural Ontology of Law (SOoL)
        by David R. Koepsell (Texas A&M University).
        Integrates: MLC reification, BFO alignment, Contradiction Debt typology,
        IAT agency layer, LegalEffect / correlativity relations,
        and system-level coherence diagnostics.
        Canonical source: A Structural Ontology of the Law (Palgrave, forthcoming).""" ;
    dcterms:creator "David R. Koepsell" ;
    dcterms:publisher "SEAL — Structural Ethics and Applied Law Lab, Texas A&M University" ;
    dcterms:rights "© David R. Koepsell. All rights reserved." ;
    owl:versionInfo "1.0.0-unified" .

#################################################################
# MODULE 0 — CORE CLASSES (original kernel)
#################################################################

:LegalSystem a owl:Class ;
    rdfs:label "Legal system" ;
    rdfs:subClassOf bfo:0000004 ;
    rdfs:comment "A historically and socially situated system of norms, roles, and practices. Independent continuant (BFO)." .

:Norm a owl:Class ;
    rdfs:label "Norm" ;
    rdfs:subClassOf bfo:0000020 ;
    rdfs:comment "A rule or standard within a legal system — statute, regulation, constitutional provision, or customary rule. Specifically dependent continuant (BFO): inheres in a legal system." .

:Role a owl:Class ;
    rdfs:label "Role" ;
    rdfs:subClassOf bfo:0000020 ;
    rdfs:comment "A position or function within a legal system — judge, police officer, legislator, citizen, etc. Specifically dependent continuant (BFO): assigned, not inherent." .

:Agent a owl:Class ;
    rdfs:label "Agent" ;
    rdfs:subClassOf bfo:0000040 ;
    rdfs:comment "An entity that can bear roles and perform acts — person, organization, or state actor. Material entity (BFO)." .

:LegalEvent a owl:Class ;
    rdfs:label "Legal event" ;
    rdfs:subClassOf bfo:0000003 ;
    rdfs:comment "A temporally extended occurrence involving agents, norms, roles, procedures, and facts. Occurrent (BFO)." .

:NormativeEvent a owl:Class ;
    rdfs:subClassOf :LegalEvent ;
    rdfs:label "Normative event" ;
    rdfs:comment "A legal event concerning creation, modification, or application of norms." .

:OffenseEvent a owl:Class ;
    rdfs:subClassOf :LegalEvent ;
    rdfs:label "Offense event" ;
    rdfs:comment "A legal event that instantiates a wrongful pattern described by an offense type." .

:BreachEvent a owl:Class ;
    rdfs:subClassOf :LegalEvent ;
    rdfs:label "Breach event" ;
    rdfs:comment "An occurrent that produces normative residue attributable to an agent." .

:FactSituation a owl:Class ;
    rdfs:label "Fact situation" ;
    rdfs:comment "A concrete factual configuration relevant to legal assessment." .

:Remedy a owl:Class ;
    rdfs:label "Remedy" ;
    rdfs:comment "A structured legal response intended to repair, compensate, punish, or restore. Corresponds to MLC Node 8." .

:OffenseType a owl:Class ;
    rdfs:label "Offense type" ;
    rdfs:comment "A type-level pattern of wrongful conduct (e.g., Murder, Fraud, War Crime)." .

:OffenseCategory a owl:Class ;
    rdfs:label "Offense category" ;
    rdfs:comment "A category such as Crime, Tort, Constitutional Violation, or International Law Violation." .

:Crime a owl:NamedIndividual , :OffenseCategory ;
    rdfs:label "Crime" .

:Tort a owl:NamedIndividual , :OffenseCategory ;
    rdfs:label "Tort" .

:ConstitutionalViolation a owl:NamedIndividual , :OffenseCategory ;
    rdfs:label "Constitutional violation" .

:InternationalLawViolation a owl:NamedIndividual , :OffenseCategory ;
    rdfs:label "International law violation" ;
    rdfs:comment "Includes IHL violations, UNCLOS breaches, jus ad bellum violations, and neutrality law violations." .

#################################################################
# MODULE 1 — MLC REIFICATION
#################################################################

:MLCPosition a owl:Class ;
    rdfs:label "MLC position" ;
    rdfs:comment "A numbered node in the Minimum Legal Chain. Each position must be satisfied in sequence for a legal effect to be valid." .

:MinimumLegalChain a owl:Class ;
    rdfs:label "Minimum legal chain" ;
    rdfs:comment "An instance of the 8-node MLC applied to a specific legal situation. A legal effect is valid only if each numbered position is satisfied in order." .

:MLCCluster a owl:Class ;
    rdfs:label "MLC cluster" ;
    rdfs:comment "A structural grouping of MLC positions: AUTHORITY (1-3), EFFECT (4-5), RECOGNITION (6-7), REPAIR (8)." .

:ChainClosureStatus a owl:Class ;
    rdfs:label "Chain closure status" ;
    rdfs:comment "Whether a given MLC position is satisfied in a particular chain instance." .

# --- Chain closure status individuals ---

:CLOSES a owl:NamedIndividual , :ChainClosureStatus ;
    rdfs:label "Closes" .

:FAILS a owl:NamedIndividual , :ChainClosureStatus ;
    rdfs:label "Fails" .

:CONDITIONALLY_CLOSES a owl:NamedIndividual , :ChainClosureStatus ;
    rdfs:label "Conditionally closes" .

# --- MLC Cluster individuals ---

:AUTHORITY_Cluster a owl:NamedIndividual , :MLCCluster ;
    rdfs:label "AUTHORITY" ;
    rdfs:comment "Nodes 1-3: Source of authority, Norm, Actor in role. Primary failures: conferral failure (1→3), jurisdictional contradiction (2→6), role contradiction (3)." .

:EFFECT_Cluster a owl:NamedIndividual , :MLCCluster ;
    rdfs:label "EFFECT" ;
    rdfs:comment "Nodes 4-5: Triggering facts, Legal act/omission. Primary failures: procedural contradiction (2→5), temporal contradiction (2↔4)." .

:RECOGNITION_Cluster a owl:NamedIndividual , :MLCCluster ;
    rdfs:label "RECOGNITION" ;
    rdfs:comment "Nodes 6-7: Target, Legal effect. Primary failures: recognition failure (6/7), role contradiction (7), correlativity contradiction (7)." .

:REPAIR_Cluster a owl:NamedIndividual , :MLCCluster ;
    rdfs:label "REPAIR" ;
    rdfs:comment "Node 8: Remedy. Primary failures: repair failure (8), remedy unavailable or blocked." .

# --- MLC Position individuals (canonical 8 nodes) ---

:MLC_1_SourceOfAuthority a owl:NamedIndividual , :MLCPosition ;
    rdfs:label "Source of authority" ;
    :hasPosition 1 ;
    :inCluster :AUTHORITY_Cluster .

:MLC_2_Norm a owl:NamedIndividual , :MLCPosition ;
    rdfs:label "Norm" ;
    :hasPosition 2 ;
    :inCluster :AUTHORITY_Cluster ;
    :precedesInChain :MLC_3_ActorInRole .

:MLC_3_ActorInRole a owl:NamedIndividual , :MLCPosition ;
    rdfs:label "Actor in role" ;
    :hasPosition 3 ;
    :inCluster :AUTHORITY_Cluster ;
    :precedesInChain :MLC_4_TriggeringFacts .

:MLC_4_TriggeringFacts a owl:NamedIndividual , :MLCPosition ;
    rdfs:label "Triggering facts" ;
    :hasPosition 4 ;
    :inCluster :EFFECT_Cluster ;
    :precedesInChain :MLC_5_LegalAct .

:MLC_5_LegalAct a owl:NamedIndividual , :MLCPosition ;
    rdfs:label "Legal act or omission" ;
    :hasPosition 5 ;
    :inCluster :EFFECT_Cluster ;
    :precedesInChain :MLC_6_Target .

:MLC_6_Target a owl:NamedIndividual , :MLCPosition ;
    rdfs:label "Target" ;
    :hasPosition 6 ;
    :inCluster :RECOGNITION_Cluster ;
    :precedesInChain :MLC_7_LegalEffect .

:MLC_7_LegalEffect a owl:NamedIndividual , :MLCPosition ;
    rdfs:label "Legal effect" ;
    :hasPosition 7 ;
    :inCluster :RECOGNITION_Cluster ;
    :precedesInChain :MLC_8_Remedy .

:MLC_8_Remedy a owl:NamedIndividual , :MLCPosition ;
    rdfs:label "Remedy" ;
    :hasPosition 8 ;
    :inCluster :REPAIR_Cluster .

#################################################################
# MODULE 2 — BFO ALIGNMENT (inline with classes above)
# BFO IRIs used:
#   bfo:0000003 = occurrent
#   bfo:0000004 = independent continuant
#   bfo:0000020 = specifically dependent continuant
#   bfo:0000040 = material entity
#################################################################

# BFO alignment is declared inline on each class above.
# Additional alignment notes as annotations:

:Norm skos:note "BFO:0000020 — specifically dependent continuant. Inheres in legal systems and cannot exist without a bearer." .
:Role skos:note "BFO:0000020 — specifically dependent continuant. Assigned to agents by normative events; defined by institutional structures." .
:LegalEffect skos:note "BFO:0000020 — specifically dependent continuant. Attaches to targets through recognition at MLC Node 7." .
:Obligation skos:note "BFO:0000020 — specifically dependent continuant. Arises from recognition events; constrains an agent's field of possible action." .
:LegalEvent skos:note "BFO:0000003 — occurrent. Unfolds in time; distinct from the continuant structures it creates or modifies." .
:Agent skos:note "BFO:0000040 — material entity / independent continuant. Exists without depending on other entities for its being." .
:LegalSystem skos:note "BFO:0000004 — independent continuant. Persists through change; the bearer of norms, roles, and obligations." .

#################################################################
# MODULE 3 — CONTRADICTION DEBT AND 13-TYPE TYPOLOGY
#################################################################

:ContradictionType a owl:Class ;
    rdfs:label "Contradiction type" ;
    rdfs:comment "One of 13 structural contradiction types indexed to MLC chain links. Contradictions are structural conditions, not merely normative errors — they are evaluated independently of moral assessment." .

:ContradictionInstance a owl:Class ;
    rdfs:label "Contradiction instance" ;
    rdfs:comment "A specific instantiation of a contradiction type within a legal system or chain." .

:ContradictionDebt a owl:Class ;
    rdfs:label "Contradiction debt (CD)" ;
    rdfs:comment "The accumulated ontological instability in a legal system arising from unresolved contradiction instances. CD is an ontological measure, separate from moral evaluation. When CD reaches critical levels, structural collapse follows." .

# --- The 13 Contradiction Types ---

:ConferralFailure a owl:NamedIndividual , :ContradictionType ;
    rdfs:label "Conferral failure" ;
    rdfs:comment "Authority fails to properly confer power through the chain (links 1→3). The source of authority does not successfully vest the actor in role." ;
    :primaryChainLink :MLC_1_SourceOfAuthority ;
    :secondaryChainLink :MLC_3_ActorInRole .

:JurisdictionalContradiction a owl:NamedIndividual , :ContradictionType ;
    rdfs:label "Jurisdictional contradiction" ;
    rdfs:comment "Norm conflicts with or overreaches the target's jurisdiction (links 2→6). Multiple normative regimes claim authority over the same fact situation." ;
    :primaryChainLink :MLC_2_Norm ;
    :secondaryChainLink :MLC_6_Target .

:RoleContradiction a owl:NamedIndividual , :ContradictionType ;
    rdfs:label "Role contradiction" ;
    rdfs:comment "Internal conflict within the normative content of a role (link 3). The role simultaneously authorizes and prohibits the same conduct." ;
    :primaryChainLink :MLC_3_ActorInRole .

:ProceduralContradiction a owl:NamedIndividual , :ContradictionType ;
    rdfs:label "Procedural contradiction" ;
    rdfs:comment "Norm conflicts with the procedure governing the act it mandates (links 2→5). The act required by the norm cannot be performed through the procedures the norm itself prescribes." ;
    :primaryChainLink :MLC_2_Norm ;
    :secondaryChainLink :MLC_5_LegalAct .

:TemporalContradiction a owl:NamedIndividual , :ContradictionType ;
    rdfs:label "Temporal contradiction" ;
    rdfs:comment "Bidirectional temporal misalignment between norm and triggering facts (links 2↔4). A norm retroactively undermines the lawfulness of an act, or an act retroactively activates a norm that voids it." ;
    :primaryChainLink :MLC_2_Norm ;
    :secondaryChainLink :MLC_4_TriggeringFacts .

:RecognitionFailure a owl:NamedIndividual , :ContradictionType ;
    rdfs:label "Recognition failure" ;
    rdfs:comment "Target or legal effect fails to achieve recognition required for validity (links 6/7). Recognition is asserted by norm but denied in effect." ;
    :primaryChainLink :MLC_6_Target ;
    :secondaryChainLink :MLC_7_LegalEffect .

:CorrelativityContradiction a owl:NamedIndividual , :ContradictionType ;
    rdfs:label "Correlativity contradiction" ;
    rdfs:comment "An agent claims Hohfeldian rights at Node 7 while refusing the correlative duties that make those rights coherent within the legal regime (link 7). The rights and duties of a legal regime are not severable." ;
    :primaryChainLink :MLC_7_LegalEffect .

:RepairFailure a owl:NamedIndividual , :ContradictionType ;
    rdfs:label "Repair failure" ;
    rdfs:comment "Remedy is structurally available but unavailable, blocked, or inaccessible in practice (link 8). CD accumulates without discharge." ;
    :primaryChainLink :MLC_8_Remedy .

:AuthorityInflation a owl:NamedIndividual , :ContradictionType ;
    rdfs:label "Authority inflation" ;
    rdfs:comment "Authority collapses the norm/will distinction, becoming personal rather than institutional. The Führerprinzip pattern: link 1 absorbs link 2, destroying the distinction between sovereign will and legal norm." ;
    :primaryChainLink :MLC_1_SourceOfAuthority ;
    :secondaryChainLink :MLC_2_Norm .

:FactManipulation a owl:NamedIndividual , :ContradictionType ;
    rdfs:label "Fact manipulation" ;
    rdfs:comment "Triggering facts are fabricated, suppressed, or made indeterminate, destroying chain integrity at Node 4. Show trials and fabricated confessions are the paradigm case." ;
    :primaryChainLink :MLC_4_TriggeringFacts .

:NormIndeterminacy a owl:NamedIndividual , :ContradictionType ;
    rdfs:label "Norm indeterminacy" ;
    rdfs:comment "Norm at Node 2 is ontologically vague to the point of being unapplicable — 'enemy of the people' being the paradigm. Prevents determinate chain closure downstream." ;
    :primaryChainLink :MLC_2_Norm .

:RecognitionCollapseUnderEnforcement a owl:NamedIndividual , :ContradictionType ;
    rdfs:label "Recognition collapse under enforcement" ;
    rdfs:comment "Legal subjecthood is stripped while enforcement continues — the system regulates persons it refuses to recognize as legal subjects. Paradigm: Nuremberg racial laws." ;
    :primaryChainLink :MLC_6_Target ;
    :secondaryChainLink :MLC_8_Remedy .

:SelfUnderminingEffect a owl:NamedIndividual , :ContradictionType ;
    rdfs:label "Self-undermining effect" ;
    rdfs:comment "The legal effect at Node 7 destabilizes the administrative or institutional conditions required for the system's own persistence. Genocidal expansion as legal-ontological suicide." ;
    :primaryChainLink :MLC_7_LegalEffect .

#################################################################
# MODULE 4 — IAT / NORMATIVE AGENCY LAYER
#################################################################

:NormativeAgent a owl:Class ;
    rdfs:subClassOf :Agent ;
    rdfs:label "Normative agent" ;
    rdfs:comment "An agent for whom IAT holds — bears genuine moral and legal accountability under SOoL. Agency is satisfied only when IAT holds; denial of obligation contradicts agency." .

:Standing a owl:Class ;
    rdfs:label "Standing" ;
    rdfs:comment "Normatively structured position of an agent within a domain. Must be addressable and normatively structured (IAT condition 1)." .

:NormativeResidue a owl:Class ;
    rdfs:label "Normative residue" ;
    rdfs:comment "Enduring, non-resettable effect produced by a breach event and borne by an agent (IAT condition 3). Distinct from StructuralResidue: normative residue is specifically the accountability-bearing remainder." .

:StructuralResidue a owl:Class ;
    rdfs:label "Structural residue" ;
    rdfs:comment "The broader ontological remainder left by a breach — may be enduring or eliminable by repair." .

:RepairCapacity a owl:Class ;
    rdfs:label "Repair capacity" ;
    rdfs:comment "The ability of an agent to address normative residue — including through refusal (IAT condition 4). Refusal is itself an accountable act." .

:CounterfactualControl a owl:Class ;
    rdfs:label "Counterfactual control" ;
    rdfs:comment "The agent's demonstrable capacity to have acted otherwise — makes the breach attributable rather than merely caused (IAT condition 5)." .

:IATSatisfaction a owl:Class ;
    rdfs:label "IAT satisfaction" ;
    rdfs:comment "Holds when all five IAT conditions are met for an agent in a domain: (1) standing, (2) attributable breach, (3) enduring non-resettable residue, (4) repair capacity, (5) counterfactual control." .

:AttributableBreach a owl:Class ;
    rdfs:label "Attributable breach" ;
    rdfs:subClassOf :BreachEvent ;
    rdfs:comment "A breach event that satisfies IAT condition 2: directly attributable to the agent, not accidental or externally compelled." .

# --- RepairAct ---

:RepairAct a owl:Class ;
    rdfs:label "Repair act" ;
    rdfs:comment "An act addressing normative residue produced by a breach event." .

:RepairMode a owl:Class ;
    rdfs:label "Repair mode" .

:Restitution a owl:NamedIndividual , :RepairMode ;
    rdfs:label "Restitution" ;
    rdfs:comment "Repair by restoring the pre-breach state." .

:Reconciliation a owl:NamedIndividual , :RepairMode ;
    rdfs:label "Reconciliation" ;
    rdfs:comment "Repair through acknowledgment and relational restoration." .

:InstitutionalRepair a owl:NamedIndividual , :RepairMode ;
    rdfs:label "Institutional repair" ;
    rdfs:comment "Repair via formal institutional mechanisms (courts, tribunals, legislative correction)." .

:Refusal a owl:NamedIndividual , :RepairMode ;
    rdfs:label "Refusal" ;
    rdfs:comment "Acknowledgment that repair is owed but consciously declined. Refusal is itself an accountable act under IAT — it does not discharge the normative residue." .

#################################################################
# MODULE 5 — LEGAL EFFECT, CORRELATIVITY, AND TEMPORAL RELATIONS
#################################################################

:LegalEffect a owl:Class ;
    rdfs:subClassOf bfo:0000020 ;
    rdfs:label "Legal effect" ;
    rdfs:comment "A specifically dependent continuant that attaches to a target at MLC Node 7 through recognition. The Hohfeldian jural relation that results from a completed MLC chain." .

# Hohfeldian effect subtypes
:Obligation a owl:Class ;
    rdfs:subClassOf :LegalEffect ;
    rdfs:label "Obligation" ;
    rdfs:comment "A directed legal effect constraining an agent's field of possible action. Arises from recognition events; persists as a specifically dependent continuant." .

:Permission a owl:Class ;
    rdfs:subClassOf :LegalEffect ;
    rdfs:label "Permission" ;
    rdfs:comment "A legal effect removing a constraint from an agent's field of possible action." .

:Immunity a owl:Class ;
    rdfs:subClassOf :LegalEffect ;
    rdfs:label "Immunity" ;
    rdfs:comment "A legal effect shielding an agent from the exercise of another's power." .

:Liability a owl:Class ;
    rdfs:subClassOf :LegalEffect ;
    rdfs:label "Liability" ;
    rdfs:comment "A legal effect exposing an agent to a change in their normative position by another's act." .

:Power a owl:Class ;
    rdfs:subClassOf :LegalEffect ;
    rdfs:label "Power" ;
    rdfs:comment "A legal effect enabling an agent to alter normative relations." .

:Claim a owl:Class ;
    rdfs:subClassOf :LegalEffect ;
    rdfs:label "Claim" ;
    rdfs:comment "A legal effect entitling an agent to performance or forbearance by another." .

#################################################################
# MODULE 6 — COMPETING CHAINS AND SYSTEM-LEVEL DIAGNOSTICS
#################################################################

# (Properties and data properties for MinimumLegalChain and LegalSystem
#  are defined in the properties section below.)

#################################################################
# OBJECT PROPERTIES (unified)
#################################################################

# --- Chain structure ---
:hasPosition a owl:DatatypeProperty ;
    rdfs:label "has position number" ;
    rdfs:domain :MLCPosition ;
    rdfs:range xsd:integer .

:precedesInChain a owl:ObjectProperty ;
    rdfs:label "precedes in chain" ;
    rdfs:domain :MLCPosition ;
    rdfs:range :MLCPosition ;
    rdfs:comment "Encodes the sequential dependency order of MLC nodes." .

:inCluster a owl:ObjectProperty ;
    rdfs:label "in cluster" ;
    rdfs:domain :MLCPosition ;
    rdfs:range :MLCCluster .

:hasChainPosition a owl:ObjectProperty ;
    rdfs:label "has chain position" ;
    rdfs:domain :MinimumLegalChain ;
    rdfs:range :MLCPosition .

:hasClosureStatus a owl:ObjectProperty ;
    rdfs:label "has closure status" ;
    rdfs:domain :MinimumLegalChain ;
    rdfs:range :ChainClosureStatus .

:governedByChain a owl:ObjectProperty ;
    rdfs:label "governed by chain" ;
    rdfs:domain :LegalEvent ;
    rdfs:range :MinimumLegalChain .

:competingChain a owl:ObjectProperty , owl:SymmetricProperty ;
    rdfs:label "competing chain" ;
    rdfs:domain :MinimumLegalChain ;
    rdfs:range :MinimumLegalChain ;
    rdfs:comment "Two chains compete when they govern the same fact situation under different authority sources. Produces jurisdictional contradiction at Node 2→6." .

:activatedBy a owl:ObjectProperty ;
    rdfs:label "activated by" ;
    rdfs:domain :MLCPosition ;
    rdfs:range :LegalEvent .

# --- Contradiction ---
:primaryChainLink a owl:ObjectProperty ;
    rdfs:label "primary chain link" ;
    rdfs:domain :ContradictionType ;
    rdfs:range :MLCPosition .

:secondaryChainLink a owl:ObjectProperty ;
    rdfs:label "secondary chain link" ;
    rdfs:domain :ContradictionType ;
    rdfs:range :MLCPosition .

:instantiatesContradictionType a owl:ObjectProperty ;
    rdfs:label "instantiates contradiction type" ;
    rdfs:domain :ContradictionInstance ;
    rdfs:range :ContradictionType .

:occursInSystem a owl:ObjectProperty ;
    rdfs:label "occurs in system" ;
    rdfs:domain :ContradictionInstance ;
    rdfs:range :LegalSystem .

:contributesToDebt a owl:ObjectProperty ;
    rdfs:label "contributes to debt" ;
    rdfs:domain :ContradictionInstance ;
    rdfs:range :ContradictionDebt .

:hasContradictionDebt a owl:ObjectProperty ;
    rdfs:label "has contradiction debt" ;
    rdfs:domain :LegalSystem ;
    rdfs:range :ContradictionDebt .

:isDischargedBy a owl:ObjectProperty ;
    rdfs:label "is discharged by" ;
    rdfs:domain :ContradictionDebt ;
    rdfs:range :Remedy ;
    rdfs:comment "The repair event or remedy that resolves or reduces the contradiction debt." .

# --- IAT ---
:hasStanding a owl:ObjectProperty ;
    rdfs:label "has standing" ;
    rdfs:domain :IATSatisfaction ;
    rdfs:range :Standing .

:hasAttributableBreach a owl:ObjectProperty ;
    rdfs:label "has attributable breach" ;
    rdfs:domain :IATSatisfaction ;
    rdfs:range :AttributableBreach .

:hasNormativeResidue a owl:ObjectProperty ;
    rdfs:label "has normative residue" ;
    rdfs:domain :IATSatisfaction ;
    rdfs:range :NormativeResidue .

:hasRepairCapacity a owl:ObjectProperty ;
    rdfs:label "has repair capacity" ;
    rdfs:domain :IATSatisfaction ;
    rdfs:range :RepairCapacity .

:hasCounterfactualControl a owl:ObjectProperty ;
    rdfs:label "has counterfactual control" ;
    rdfs:domain :IATSatisfaction ;
    rdfs:range :CounterfactualControl .

:IATHoldsFor a owl:ObjectProperty ;
    rdfs:label "IAT holds for" ;
    rdfs:domain :IATSatisfaction ;
    rdfs:range :Agent .

:producedBy a owl:ObjectProperty ;
    rdfs:label "produced by" ;
    rdfs:domain :NormativeResidue ;
    rdfs:range :BreachEvent .

:bornBy a owl:ObjectProperty ;
    rdfs:label "borne by" ;
    rdfs:domain :NormativeResidue ;
    rdfs:range :Agent .

:hasRepairMode a owl:ObjectProperty ;
    rdfs:label "has repair mode" ;
    rdfs:domain :RepairAct ;
    rdfs:range :RepairMode .

# --- Legal effect ---
:correlatesWith a owl:ObjectProperty , owl:SymmetricProperty ;
    rdfs:label "correlates with" ;
    rdfs:domain :LegalEffect ;
    rdfs:range :LegalEffect ;
    rdfs:comment "Hohfeldian correlativity: right/duty, privilege/no-right, power/liability, immunity/disability." .

:isClaimedBy a owl:ObjectProperty ;
    rdfs:label "is claimed by" ;
    rdfs:domain :LegalEffect ;
    rdfs:range :Agent .

:isDeniedBy a owl:ObjectProperty ;
    rdfs:label "is denied by" ;
    rdfs:domain :LegalEffect ;
    rdfs:range :Agent .

:attachesTo a owl:ObjectProperty ;
    rdfs:label "attaches to" ;
    rdfs:domain :LegalEffect ;
    rdfs:range :Agent ;
    rdfs:comment "The target agent to whom the legal effect is directed at MLC Node 7." .

# --- Temporal ---
:temporallyPrecedes a owl:ObjectProperty , owl:TransitiveProperty ;
    rdfs:label "temporally precedes" ;
    rdfs:domain :LegalEvent ;
    rdfs:range :LegalEvent .

# --- Original kernel properties (preserved) ---
:hasOffenseCategory a owl:ObjectProperty ;
    rdfs:label "has offense category" ;
    rdfs:domain :OffenseType ;
    rdfs:range :OffenseCategory .

:hasStructuralViolationClass a owl:ObjectProperty ;
    rdfs:label "has structural violation class" ;
    rdfs:domain :OffenseType ;
    rdfs:range :ContradictionType ;
    rdfs:comment "Links an offense type to the structural contradiction types it instantiates (replaces StructuralViolationClass with ContradictionType for unified typing)." .

:involvesFactSituation a owl:ObjectProperty ;
    rdfs:label "involves fact situation" ;
    rdfs:domain :LegalEvent ;
    rdfs:range :FactSituation .

:involvesAgent a owl:ObjectProperty ;
    rdfs:label "involves agent" ;
    rdfs:domain :LegalEvent ;
    rdfs:range :Agent .

:appliesNorm a owl:ObjectProperty ;
    rdfs:label "applies norm" ;
    rdfs:domain :LegalEvent ;
    rdfs:range :Norm .

:confersRole a owl:ObjectProperty ;
    rdfs:label "confers role" ;
    rdfs:domain :NormativeEvent ;
    rdfs:range :Role .

:hasRemedy a owl:ObjectProperty ;
    rdfs:label "has remedy" ;
    rdfs:domain :LegalEvent ;
    rdfs:range :Remedy .

:instantiatesOffenseType a owl:ObjectProperty ;
    rdfs:label "instantiates offense type" ;
    rdfs:domain :OffenseEvent ;
    rdfs:range :OffenseType .

#################################################################
# DATA PROPERTIES (unified)
#################################################################

:debtLevel a owl:DatatypeProperty ;
    rdfs:label "debt level" ;
    rdfs:domain :ContradictionDebt ;
    rdfs:range xsd:integer ;
    rdfs:comment "Ordinal measure of accumulated CD: 1=low, 2=moderate, 3=high, 4=critical/collapse-imminent." .

:isNonResettable a owl:DatatypeProperty ;
    rdfs:label "is non-resettable" ;
    rdfs:domain :NormativeResidue ;
    rdfs:range xsd:boolean .

:isEliminableByRepair a owl:DatatypeProperty ;
    rdfs:label "is eliminable by repair" ;
    rdfs:domain :NormativeResidue ;
    rdfs:range xsd:boolean .

:correlativityContradictionExists a owl:DatatypeProperty ;
    rdfs:label "correlativity contradiction exists" ;
    rdfs:domain :LegalEffect ;
    rdfs:range xsd:boolean ;
    rdfs:comment "True when an agent claims a right at Node 7 while denying its Hohfeldian correlative duty." .

:isCoherent a owl:DatatypeProperty ;
    rdfs:label "is coherent" ;
    rdfs:domain :LegalSystem ;
    rdfs:range xsd:boolean ;
    rdfs:comment "True when all active MLCs in the system close without structural contradiction. Coherence is structural, not moral." .

:stabilityLevel a owl:DatatypeProperty ;
    rdfs:label "stability level" ;
    rdfs:domain :LegalSystem ;
    rdfs:range xsd:integer ;
    rdfs:comment "Ordinal stability: 1=stable, 2=stressed, 3=unstable, 4=collapse-imminent." .

:requiresExternalRepair a owl:DatatypeProperty ;
    rdfs:label "requires external repair" ;
    rdfs:domain :LegalSystem ;
    rdfs:range xsd:boolean ;
    rdfs:comment "True when internal repair mechanisms are exhausted and external intervention is required (the Nuremberg model)." .

:chainPositionSatisfied a owl:DatatypeProperty ;
    rdfs:label "chain position satisfied" ;
    rdfs:domain :MinimumLegalChain ;
    rdfs:range xsd:boolean .

#################################################################
# END OF UNIFIED SOoL KERNEL ONTOLOGY v1.0.0
# Load into Protégé via File > Open from file (.ttl)
# IRI: http://seal.tamu.edu/legal-kernel
#################################################################
