@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix gufo: <http://purl.org/nemo/gufo#> .
@prefix uco-core: <https://ontology.unifiedcyberontology.org/uco/core/> .
@prefix uco-identity: <https://ontology.unifiedcyberontology.org/uco/identity/> .
@prefix uco-location: <https://ontology.unifiedcyberontology.org/uco/location/> .
@prefix cac-core: <https://cacontology.projectvic.org/core#> .
@prefix cacontology-institutional: <https://cacontology.projectvic.org/institutional-exploitation#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix dcterms: <http://purl.org/dc/terms/> .

# Ontology Declaration
<https://cacontology.projectvic.org/institutional-exploitation/shapes/3.0.0> rdf:type owl:Ontology ;
    rdfs:label "CAC Institutional Exploitation SHACL Shapes with gUFO Validation"@en ;
    rdfs:comment "SHACL validation shapes for gUFO-enhanced CAC institutional exploitation ontology, including anti-rigidity constraints, temporal validation, and foundational type compliance."@en ;
    owl:versionIRI <https://cacontology.projectvic.org/institutional-exploitation/shapes/3.0.0> ;
    owl:versionInfo "3.0.0" ;
    dcterms:creator "CAC Ontology Team" ;
    dcterms:modified "2025-11-18"^^xsd:date ;
    owl:imports <https://cacontology.projectvic.org/institutional-exploitation/3.0.0> ,
                <http://purl.org/nemo/gufo#> ,
                <https://ontology.unifiedcyberontology.org/uco/core/> .

# =============================================================================
# gUFO TYPE CONSISTENCY VALIDATION FOR INSTITUTIONAL EXPLOITATION
# =============================================================================

# Kind validation for charitable organizations (rigid sortals)
cacontology-institutional:CharitableOrganizationKindValidationShape rdf:type sh:NodeShape ;
    sh:targetClass gufo:Kind ;
    sh:property [
        sh:path rdf:type ;
        sh:hasValue gufo:Kind ;
        sh:minCount 1     ] ;
    sh:message "Every charitable organization Kind must extend gufo:Object and be properly classified"@en .

# EventType validation for exploitation patterns
cacontology-institutional:ExploitationEventTypeValidationShape rdf:type sh:NodeShape ;
    sh:targetClass gufo:EventType ;
    sh:message "Every exploitation EventType must extend gufo:Event"@en .

# Role validation for institutional authority figures (anti-rigid relational)
cacontology-institutional:InstitutionalRoleValidationShape rdf:type sh:NodeShape ;
    sh:targetClass cac-core:Role ;
    sh:not [
        sh:property [
            sh:path rdfs:subClassOf ;
            sh:class gufo:Kind         ]     ] ;
    sh:message "Institutional roles are anti-rigid and cannot be subclasses of rigid Kinds"@en .

# Phase validation for vulnerable child populations (anti-rigid temporal)
cacontology-institutional:VulnerableChildPhaseValidationShape rdf:type sh:NodeShape ;
    sh:targetClass cac-core:Phase ;
    sh:not [
        sh:property [
            sh:path rdfs:subClassOf ;
            sh:class gufo:Kind         ]     ] ;
    sh:message "Vulnerable child phases are anti-rigid temporal stages and cannot be rigid Kinds"@en .

# SituationType validation for legal and evidential situations
cacontology-institutional:LegalSituationTypeValidationShape rdf:type sh:NodeShape ;
    sh:targetClass gufo:SituationType ;
    sh:message "Every legal SituationType must extend gufo:Situation"@en .

# =============================================================================
# gUFO TEMPORAL CONSTRAINTS FOR INSTITUTIONAL EXPLOITATION
# =============================================================================

# Institutional Operation Temporal Validation
cacontology-institutional:InstitutionalTemporalBoundariesShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:CharitableOrganization ;
    sh:property [
        sh:path cacontology-institutional:hasInstitutionFoundingDate ;
        sh:datatype xsd:dateTime ;
        sh:maxCount 1 ;
        sh:message "Institution may have at most one founding date (gUFO temporal boundary)"@en     ] ;
    sh:property [
        sh:path cacontology-institutional:hasOperationEndDate ;
        sh:datatype xsd:dateTime ;
        sh:maxCount 1 ;
        sh:message "Institution may have at most one operation end date (gUFO temporal boundary)"@en     ] ;
    sh:sparql [
        sh:message "Institution operation end date must be after founding date (gUFO temporal ordering)"@en ;
        sh:prefixes [
            sh:declare [
                sh:prefix "cacontology-institutional" ;
                sh:namespace "https://cacontology.projectvic.org/institutional-exploitation#"^^xsd:anyURI             ]         ] ;
        sh:select """
            SELECT $this
            WHERE {
                $this cacontology-institutional:hasInstitutionFoundingDate ?foundingDate .
                $this cacontology-institutional:hasOperationEndDate ?endDate .
                FILTER (?endDate <= ?foundingDate)
            }
        """     ] .

# Exploitation Event Temporal Validation
cacontology-institutional:ExploitationTemporalShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:InstitutionalExploitation ;
    sh:property [
        sh:path cacontology-institutional:hasExploitationStartDate ;
        sh:datatype xsd:dateTime ;
        sh:maxCount 1 ;
        sh:message "Exploitation may have at most one start date (gUFO temporal boundary)"@en     ] ;
    sh:property [
        sh:path cacontology-institutional:hasExploitationEndDate ;
        sh:datatype xsd:dateTime ;
        sh:maxCount 1 ;
        sh:message "Exploitation may have at most one end date (gUFO temporal boundary)"@en     ] ;
    sh:sparql [
        sh:message "Exploitation end date must be after start date when both specified (gUFO temporal ordering)"@en ;
        sh:prefixes [
            sh:declare [
                sh:prefix "cacontology-institutional" ;
                sh:namespace "https://cacontology.projectvic.org/institutional-exploitation#"^^xsd:anyURI             ]         ] ;
        sh:select """
            SELECT $this
            WHERE {
                $this cacontology-institutional:hasExploitationStartDate ?startDate .
                $this cacontology-institutional:hasExploitationEndDate ?endDate .
                FILTER (?endDate <= ?startDate)
            }
        """     ] .

# Role Temporal Boundaries Validation
cacontology-institutional:RoleTemporalBoundariesShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:TrustedAdultRole ;
    sh:property [
        sh:path cacontology-institutional:hasRoleStartDate ;
        sh:datatype xsd:dateTime ;
        sh:maxCount 1 ;
        sh:message "Role may have at most one start date (gUFO temporal boundary)"@en     ] ;
    sh:property [
        sh:path cacontology-institutional:hasRoleEndDate ;
        sh:datatype xsd:dateTime ;
        sh:maxCount 1 ;
        sh:message "Role may have at most one end date (gUFO temporal boundary)"@en     ] ;
    sh:sparql [
        sh:message "Role end date must be after start date when both specified (gUFO temporal ordering)"@en ;
        sh:prefixes [
            sh:declare [
                sh:prefix "cacontology-institutional" ;
                sh:namespace "https://cacontology.projectvic.org/institutional-exploitation#"^^xsd:anyURI             ]         ] ;
        sh:select """
            SELECT $this
            WHERE {
                $this cacontology-institutional:hasRoleStartDate ?startDate .
                $this cacontology-institutional:hasRoleEndDate ?endDate .
                FILTER (?endDate <= ?startDate)
            }
        """     ] .

# =============================================================================
# ENHANCED CHARITABLE ORGANIZATION SHAPES WITH gUFO INTEGRATION
# =============================================================================

cacontology-institutional:CharitableOrganizationShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:CharitableOrganization ;
    rdfs:label "Charitable Organization Shape"@en ;
    rdfs:comment "Validation shape for charitable organization instances with gUFO integration."@en ;
    sh:property [
        sh:path cacontology-institutional:hasInstitutionFoundingDate ;
        sh:datatype xsd:dateTime ;
        sh:maxCount 1 ;
        sh:message "Organization may have founding date (gUFO temporal boundary)"@en     ] ;
    sh:property [
        sh:path cacontology-institutional:hasInstitutionalReputationLevel ;
        sh:datatype xsd:string ;
        sh:in ( "excellent" "good" "fair" "poor" "terrible" "unknown" ) ;
        sh:maxCount 1 ;
        sh:message "Institutional reputation level must be from allowed list (gUFO quality aspect)"@en     ] ;
    sh:property [
        sh:path cacontology-institutional:hasOversightLevel ;
        sh:datatype xsd:string ;
        sh:in ( "high" "moderate" "low" "minimal" "none" "self_regulated" ) ;
        sh:maxCount 1 ;
        sh:message "Oversight level must be from allowed list (gUFO quality aspect)"@en     ] ;
    sh:property [
        sh:path cacontology-institutional:foundingYear ;
        sh:datatype xsd:gYear ;
        sh:minCount 0 ;
        sh:maxCount 1 ;
        sh:message "Organization may have founding year specified."@en
    ] ;
    sh:property [
        sh:path cacontology-institutional:childrenServed ;
        sh:datatype xsd:nonNegativeInteger ;
        sh:minCount 0 ;
        sh:maxCount 1 ;
        sh:minInclusive 0 ;
        sh:maxInclusive 10000 ;
        sh:message "Children served must be between 0 and 10,000."@en
    ] .

cacontology-institutional:OrphanageShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:Orphanage ;
    rdfs:label "Orphanage Shape"@en ;
    rdfs:comment "Validation shape for orphanage instances with gUFO integration."@en ;
    sh:property [
        sh:path cacontology-institutional:childrenServed ;
        sh:datatype xsd:nonNegativeInteger ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:minInclusive 1 ;
        sh:maxInclusive 500 ;
        sh:message "Orphanage must specify number of children served (1-500)."@en
    ] ;
    sh:property [
        sh:path cacontology-institutional:hasVulnerabilityLevel ;
        sh:datatype xsd:string ;
        sh:in ( "low" "moderate" "high" "extreme" "critical" ) ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:message "Orphanage must specify vulnerability level of children (gUFO quality aspect)"@en     ] .

# =============================================================================
# ENHANCED EXPLOITATION PATTERN SHAPES WITH gUFO INTEGRATION
# =============================================================================

cacontology-institutional:InstitutionalExploitationShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:InstitutionalExploitation ;
    rdfs:label "Institutional Exploitation Shape"@en ;
    rdfs:comment "Validation shape for institutional exploitation instances with gUFO integration."@en ;
    sh:property [
        sh:path cacontology-institutional:hasExploitationStartDate ;
        sh:datatype xsd:dateTime ;
        sh:maxCount 1 ;
        sh:message "Exploitation may have start date (gUFO temporal boundary)"@en     ] ;
    sh:property [
        sh:path cacontology-institutional:hasExploitationSeverityLevel ;
        sh:datatype xsd:string ;
        sh:in ( "low" "moderate" "high" "severe" "extreme" "catastrophic" ) ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:message "Exploitation must specify severity level (gUFO quality aspect)"@en     ] ;
    sh:property [
        sh:path cacontology-institutional:victimCount ;
        sh:datatype xsd:nonNegativeInteger ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:minInclusive 1 ;
        sh:maxInclusive 1000 ;
        sh:message "Exploitation must specify victim count (1-1000)."@en
    ] ;
    sh:property [
        sh:path cacontology-institutional:occursWithin ;
        sh:class cacontology-institutional:CharitableOrganization ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:message "Exploitation must occur within a charitable organization."@en
    ] .

cacontology-institutional:LongTermInstitutionalControlShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:LongTermInstitutionalControl ;
    rdfs:label "Long Term Institutional Control Shape"@en ;
    rdfs:comment "Validation shape for long-term institutional control with gUFO integration."@en ;
    sh:property [
        sh:path cacontology-institutional:operationDurationYears ;
        sh:datatype xsd:nonNegativeInteger ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:minInclusive 2 ;
        sh:maxInclusive 50 ;
        sh:message "Long-term control must specify duration (2-50 years)."@en
    ] ;
    sh:property [
        sh:path cacontology-institutional:hasSystematicityDegree ;
        sh:datatype xsd:double ;
        sh:minInclusive 0.5 ;
        sh:maxInclusive 1.0 ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:message "Long-term control must have high systematicity degree (0.5-1.0) (gUFO quality aspect)"@en     ] .

cacontology-institutional:SystematicInstitutionalAbuseShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:SystematicInstitutionalAbuse ;
    rdfs:label "Systematic Institutional Abuse Shape"@en ;
    rdfs:comment "Validation shape for systematic abuse patterns with gUFO integration."@en ;
    sh:property [
        sh:path cacontology-institutional:hasSystematicityDegree ;
        sh:datatype xsd:double ;
        sh:minInclusive 0.7 ;
        sh:maxInclusive 1.0 ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:message "Systematic abuse must have high systematicity degree (0.7-1.0) (gUFO quality aspect)"@en     ] ;
    sh:property [
        sh:path cacontology-institutional:victimCount ;
        sh:datatype xsd:nonNegativeInteger ;
        sh:minInclusive 3 ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:message "Systematic abuse must involve at least 3 victims."@en
    ] .

# =============================================================================
# ENHANCED CROSS-BORDER TRAVEL SHAPES WITH gUFO INTEGRATION
# =============================================================================

cacontology-institutional:CrossBorderPersonalTravelShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:CrossBorderPersonalTravel ;
    rdfs:label "Cross Border Personal Travel Shape"@en ;
    rdfs:comment "Validation shape for cross-border travel instances with gUFO integration."@en ;
    sh:property [
        sh:path cacontology-institutional:hasTravelDate ;
        sh:datatype xsd:dateTime ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:message "Cross-border travel must have travel date (gUFO temporal boundary)"@en     ] ;
    sh:property [
        sh:path cacontology-institutional:travelsFrom ;
        sh:class uco-location:Location ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:message "Travel must specify origin location."@en
    ] ;
    sh:property [
        sh:path cacontology-institutional:travelsTo ;
        sh:class uco-location:Location ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:message "Travel must specify destination location."@en
    ] .

cacontology-institutional:RepeatedCrossBorderTravelShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:RepeatedCrossBorderTravel ;
    rdfs:label "Repeated Cross Border Travel Shape"@en ;
    rdfs:comment "Validation shape for repeated travel patterns with gUFO integration."@en ;
    sh:property [
        sh:path cacontology-institutional:travelFrequency ;
        sh:datatype xsd:string ;
        sh:in ( "monthly" "quarterly" "semi_annually" "annually" "bi_annually" ) ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:message "Repeated travel must specify frequency from allowed list."@en
    ] ;
    sh:property [
        sh:path cacontology-institutional:travelPatternYears ;
        sh:datatype xsd:nonNegativeInteger ;
        sh:minInclusive 2 ;
        sh:maxInclusive 30 ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:message "Repeated travel pattern must span 2-30 years."@en
    ] .

cacontology-institutional:HumanitarianTravelCoverShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:HumanitarianTravelCover ;
    rdfs:label "Humanitarian Travel Cover Shape"@en ;
    rdfs:comment "Validation shape for humanitarian travel cover with gUFO integration."@en ;
    sh:property [
        sh:path cacontology-institutional:travelPurposeClaimed ;
        sh:datatype xsd:string ;
        sh:in ( "humanitarian_aid" "charitable_work" "missionary_work" "volunteer_service" "medical_mission" "educational_support" ) ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:message "Humanitarian cover must specify claimed purpose from allowed list."@en
    ] .

# =============================================================================
# ENHANCED AUTHORITY ROLE SHAPES WITH gUFO INTEGRATION
# =============================================================================

cacontology-institutional:InstitutionalFounderShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:InstitutionalFounder ;
    rdfs:label "Institutional Founder Shape"@en ;
    rdfs:comment "Validation shape for institutional founder roles with gUFO integration."@en ;
    sh:property [
        sh:path cacontology-institutional:hasRoleStartDate ;
        sh:datatype xsd:dateTime ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:message "Founder role must have start date (gUFO temporal boundary)"@en     ] ;
    sh:property [
        sh:path cacontology-institutional:hasAuthorityLevel ;
        sh:datatype xsd:string ;
        sh:in ( "founder" "executive_director" "board_chair" "senior_leadership" "middle_management" ) ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:message "Founder must specify authority level (gUFO quality aspect)"@en     ] ;
    sh:property [
        sh:path cacontology-institutional:hasTrustLevel ;
        sh:datatype xsd:string ;
        sh:in ( "absolute" "high" "moderate" "low" "compromised" "none" ) ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:message "Founder must specify trust level (gUFO quality aspect)"@en     ] .

cacontology-institutional:TrustedAdultRoleShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:TrustedAdultRole ;
    rdfs:label "Trusted Adult Role Shape"@en ;
    rdfs:comment "Validation shape for trusted adult roles with gUFO integration."@en ;
    sh:property [
        sh:path cacontology-institutional:hasAuthorityLevel ;
        sh:datatype xsd:string ;
        sh:in ( "founder" "director" "supervisor" "caregiver" "staff" "volunteer" ) ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:message "Trusted adult must specify authority level (gUFO quality aspect)"@en     ] ;
    sh:property [
        sh:path cacontology-institutional:hasTrustLevel ;
        sh:datatype xsd:string ;
        sh:in ( "absolute" "high" "moderate" "low" "compromised" ) ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:message "Trusted adult must specify trust level (gUFO quality aspect)"@en     ] .

# =============================================================================
# ENHANCED VULNERABLE POPULATION SHAPES WITH gUFO INTEGRATION
# =============================================================================

cacontology-institutional:VulnerableChildInCareShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:VulnerableChildInCare ;
    rdfs:label "Vulnerable Child in Care Shape"@en ;
    rdfs:comment "Validation shape for vulnerable children with gUFO integration."@en ;
    sh:property [
        sh:path cacontology-institutional:hasVulnerabilityLevel ;
        sh:datatype xsd:string ;
        sh:in ( "low" "moderate" "high" "severe" "extreme" "critical" ) ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:message "Vulnerable child must specify vulnerability level (gUFO quality aspect)"@en     ] ;
    sh:property [
        sh:path cacontology-institutional:vulnerabilityType ;
        sh:datatype xsd:string ;
        sh:in ( "orphaned" "impoverished" "abandoned" "disabled" "refugee" "trafficked" "neglected" "abused" ) ;
        sh:minCount 1 ;
        sh:message "Vulnerable child must specify at least one vulnerability type."@en
    ] .

cacontology-institutional:OrphanedChildShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:OrphanedChild ;
    rdfs:label "Orphaned Child Shape"@en ;
    rdfs:comment "Validation shape for orphaned children with gUFO integration."@en ;
    sh:property [
        sh:path cacontology-institutional:vulnerabilityType ;
        sh:hasValue "orphaned" ;
        sh:minCount 1 ;
        sh:message "Orphaned child must have 'orphaned' vulnerability type."@en
    ] ;
    sh:property [
        sh:path cacontology-institutional:hasVulnerabilityLevel ;
        sh:datatype xsd:string ;
        sh:in ( "high" "severe" "extreme" "critical" ) ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:message "Orphaned child must have high vulnerability level (gUFO quality aspect)"@en     ] .

# =============================================================================
# ENHANCED EXPLOITATION METHOD SHAPES WITH gUFO INTEGRATION
# =============================================================================

cacontology-institutional:PositionOfTrustAbuseShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:PositionOfTrustAbuse ;
    rdfs:label "Position of Trust Abuse Shape"@en ;
    rdfs:comment "Validation shape for position of trust abuse with gUFO integration."@en ;
    sh:property [
        sh:path cacontology-institutional:trustLevelExploited ;
        sh:datatype xsd:string ;
        sh:in ( "high" "complete" "institutional" "parental" "absolute" ) ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:message "Position of trust abuse must specify trust level exploited."@en
    ] ;
    sh:property [
        sh:path cacontology-institutional:exploitsRole ;
        sh:class cacontology-institutional:TrustedAdultRole ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:message "Trust abuse must exploit a trusted adult role."@en
    ] .

cacontology-institutional:IsolationBasedControlShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:IsolationBasedControl ;
    rdfs:label "Isolation Based Control Shape"@en ;
    rdfs:comment "Validation shape for isolation-based control with gUFO integration."@en ;
    sh:property [
        sh:path cacontology-institutional:hasIsolationDegree ;
        sh:datatype xsd:string ;
        sh:in ( "complete" "high" "moderate" "partial" "minimal" ) ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:message "Isolation control must specify isolation degree (gUFO quality aspect)"@en     ] ;
    sh:property [
        sh:path cacontology-institutional:isolationDegree ;
        sh:datatype xsd:string ;
        sh:in ( "complete" "high" "moderate" "partial" ) ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:message "Isolation must specify degree from allowed list."@en
    ] .

# =============================================================================
# ENHANCED FINANCIAL MANIPULATION SHAPES WITH gUFO INTEGRATION
# =============================================================================

cacontology-institutional:DonorManipulationShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:DonorManipulation ;
    rdfs:label "Donor Manipulation Shape"@en ;
    rdfs:comment "Validation shape for donor manipulation with gUFO integration."@en ;
    sh:property [
        sh:path cacontology-institutional:donorCount ;
        sh:datatype xsd:nonNegativeInteger ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:minInclusive 1 ;
        sh:maxInclusive 10000 ;
        sh:message "Donor manipulation must specify donor count (1-10,000)."@en
    ] ;
    sh:property [
        sh:path cacontology-institutional:manipulationTactics ;
        sh:datatype xsd:string ;
        sh:in ( "emotional_appeal" "false_reporting" "photo_manipulation" "fake_testimonials" "progress_exaggeration" "need_inflation" ) ;
        sh:minCount 1 ;
        sh:message "Manipulation must specify at least one tactic."@en
    ] .

cacontology-institutional:CharitableFundingMisuseShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:CharitableFundingMisuse ;
    rdfs:label "Charitable Funding Misuse Shape"@en ;
    rdfs:comment "Validation shape for funding misuse with gUFO integration."@en ;
    sh:property [
        sh:path cacontology-institutional:fundingAmount ;
        sh:datatype xsd:decimal ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:minInclusive 1000.00 ;
        sh:maxInclusive 10000000.00 ;
        sh:message "Funding misuse must specify amount ($1,000-$10,000,000)."@en
    ] .

# =============================================================================
# ENHANCED LEGAL PROSECUTION SHAPES WITH gUFO INTEGRATION
# =============================================================================

cacontology-institutional:ForeignCommerceOffenseShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:ForeignCommerceOffense ;
    rdfs:label "Foreign Commerce Offense Shape"@en ;
    rdfs:comment "Validation shape for foreign commerce offenses with gUFO integration."@en ;
    sh:property [
        sh:path cacontology-institutional:chargeCount ;
        sh:datatype xsd:nonNegativeInteger ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:minInclusive 1 ;
        sh:maxInclusive 100 ;
        sh:message "Foreign commerce offense must specify charge count (1-100)."@en
    ] .

cacontology-institutional:USProsecutionForeignCrimesShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:USProsecutionForeignCrimes ;
    rdfs:label "US Prosecution Foreign Crimes Shape"@en ;
    rdfs:comment "Validation shape for US prosecution of foreign crimes with gUFO integration."@en ;
    sh:property [
        sh:path cacontology-institutional:prosecutionJurisdiction ;
        sh:datatype xsd:string ;
        sh:in ( "federal" "state" "international" "joint_jurisdiction" ) ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:message "Prosecution must specify jurisdiction from allowed list."@en
    ] ;
    sh:property [
        sh:path cacontology-institutional:sentenceLength ;
        sh:datatype xsd:nonNegativeInteger ;
        sh:minCount 0 ;
        sh:maxCount 1 ;
        sh:minInclusive 1 ;
        sh:maxInclusive 50 ;
        sh:message "Sentence length must be between 1 and 50 years when specified."@en
    ] .

# =============================================================================
# ENHANCED VICTIM TESTIMONY SHAPES WITH gUFO INTEGRATION
# =============================================================================

cacontology-institutional:MultipleVictimTestimonyShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:MultipleVictimTestimony ;
    rdfs:label "Multiple Victim Testimony Shape"@en ;
    rdfs:comment "Validation shape for multiple victim testimony with gUFO integration."@en ;
    sh:property [
        sh:path cacontology-institutional:victimTestimoniesCount ;
        sh:datatype xsd:nonNegativeInteger ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:minInclusive 2 ;
        sh:maxInclusive 100 ;
        sh:message "Multiple victim testimony must specify count (2-100)."@en
    ] .

cacontology-institutional:AdultVictimTestimonyShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:AdultVictimTestimony ;
    rdfs:label "Adult Victim Testimony Shape"@en ;
    rdfs:comment "Validation shape for adult victim testimony with gUFO integration."@en ;
    sh:property [
        sh:path cacontology-institutional:yearsFromVictimizationToTestimony ;
        sh:datatype xsd:nonNegativeInteger ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:minInclusive 5 ;
        sh:maxInclusive 50 ;
        sh:message "Adult victim testimony must specify years from victimization (5-50)."@en
    ] .

# =============================================================================
# gUFO PARTICIPATION CONSTRAINTS FOR INSTITUTIONAL EXPLOITATION
# =============================================================================

# Institutional Exploitation Event Participation Validation
cacontology-institutional:ExploitationEventParticipationShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:InstitutionalExploitation ;
    sh:property [
        sh:path [ sh:alternativePath ( 
            cacontology-institutional:perpetratesExploitation 
            cacontology-institutional:experiencesExploitation 
            cacontology-institutional:facilitatedBy 
        ) ] ;
        sh:minCount 2 ;
        sh:message "Every exploitation event must have at least perpetrator and victim participants (gUFO participation)"@en     ] .

# Cross-Border Travel Participation Validation
cacontology-institutional:TravelEventParticipationShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:CrossBorderPersonalTravel ;
    sh:property [
        sh:path cacontology-institutional:undertakesTravelFor ;
        sh:class uco-identity:Person ;
        sh:minCount 1 ;
        sh:maxCount 1 ;
        sh:message "Travel event must have exactly one traveler participant (gUFO participation)"@en     ] .

# =============================================================================
# gUFO PART-WHOLE RELATIONSHIP VALIDATION FOR INSTITUTIONAL EXPLOITATION
# =============================================================================

# Institutional Composition Validation
cacontology-institutional:InstitutionalCompositionShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:CharitableOrganization ;
    sh:property [
        sh:path [ sh:inversePath cacontology-institutional:isPartOfInstitution ] ;
        sh:minCount 1 ;
        sh:message "Institution must have at least one component part (gUFO part-whole)"@en     ] .

# Systematic Abuse Pattern Composition Validation
cacontology-institutional:SystematicAbuseCompositionShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:SystematicInstitutionalAbuse ;
    sh:property [
        sh:path [ sh:inversePath cacontology-institutional:isComponentOfExploitation ] ;
        sh:minCount 3 ;
        sh:message "Systematic abuse must be composed of at least 3 individual exploitation instances (gUFO part-whole)"@en     ] .

# Investigation Evidence Composition Validation
cacontology-institutional:InvestigationCompositionShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:USProsecutionForeignCrimes ;
    sh:property [
        sh:path [ sh:inversePath cacontology-institutional:isPartOfInvestigation ] ;
        sh:minCount 1 ;
        sh:message "Investigation must include at least one piece of evidence or testimony (gUFO part-whole)"@en     ] .

# =============================================================================
# ADVANCED BUSINESS RULES FOR INSTITUTIONAL EXPLOITATION
# =============================================================================

# Long-Term Institutional Control Business Rule
cacontology-institutional:LongTermControlBusinessRule rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:LongTermInstitutionalControl ;
    sh:sparql [
        sh:message "Long-term institutional control must involve high authority roles and multiple victims"@en ;
        sh:prefixes [
            sh:declare [
                sh:prefix "cacontology-institutional" ;
                sh:namespace "https://cacontology.projectvic.org/institutional-exploitation#"^^xsd:anyURI             ]         ] ;
        sh:select """
            SELECT $this
            WHERE {
                $this cacontology-institutional:operationDurationYears ?duration ;
                      cacontology-institutional:victimCount ?victims .
                FILTER (?duration >= 5 && ?victims < 5)
            }
        """     ] .

# Cross-Border Travel Pattern Business Rule
cacontology-institutional:CrossBorderTravelPatternBusinessRule rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:RepeatedCrossBorderTravel ;
    sh:sparql [
        sh:message "Repeated cross-border travel must enable significant institutional exploitation"@en ;
        sh:prefixes [
            sh:declare [
                sh:prefix "cacontology-institutional" ;
                sh:namespace "https://cacontology.projectvic.org/institutional-exploitation#"^^xsd:anyURI             ]         ] ;
        sh:select """
            SELECT $this
            WHERE {
                $this cacontology-institutional:travelPatternYears ?years ;
                      cacontology-institutional:enablesExploitation ?exploitation .
                ?exploitation cacontology-institutional:victimCount ?victims .
                FILTER (?years >= 3 && ?victims < 3)
            }
        """     ] .

# Position of Trust Abuse Business Rule
cacontology-institutional:TrustAbuseBusinessRule rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:PositionOfTrustAbuse ;
    sh:sparql [
        sh:message "High trust level exploitation must involve high authority roles"@en ;
        sh:prefixes [
            sh:declare [
                sh:prefix "cacontology-institutional" ;
                sh:namespace "https://cacontology.projectvic.org/institutional-exploitation#"^^xsd:anyURI             ]         ] ;
        sh:select """
            SELECT $this
            WHERE {
                $this cacontology-institutional:trustLevelExploited ?trustLevel ;
                      cacontology-institutional:exploitsRole ?role .
                ?role cacontology-institutional:hasAuthorityLevel ?authLevel .
                FILTER (?trustLevel IN ("absolute", "complete") && 
                        ?authLevel NOT IN ("founder", "director", "executive_director"))
            }
        """     ] .

# Systematic Abuse Pattern Business Rule
cacontology-institutional:SystematicAbusePatternBusinessRule rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:SystematicInstitutionalAbuse ;
    sh:sparql [
        sh:message "High systematicity requires institutional oversight failure and isolation control"@en ;
        sh:prefixes [
            sh:declare [
                sh:prefix "cacontology-institutional" ;
                sh:namespace "https://cacontology.projectvic.org/institutional-exploitation#"^^xsd:anyURI             ]         ] ;
        sh:select """
            SELECT $this
            WHERE {
                $this cacontology-institutional:hasSystematicityDegree ?systematicity ;
                      cacontology-institutional:occursWithin ?institution .
                ?institution cacontology-institutional:hasOversightLevel ?oversight .
                FILTER (?systematicity > 0.8 && ?oversight NOT IN ("minimal", "none", "self_regulated"))
            }
        """     ] .

# Donor Manipulation Business Rule
cacontology-institutional:DonorManipulationBusinessRule rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:DonorManipulation ;
    sh:sparql [
        sh:message "Large-scale funding misuse requires multiple manipulation tactics"@en ;
        sh:prefixes [
            sh:declare [
                sh:prefix "cacontology-institutional" ;
                sh:namespace "https://cacontology.projectvic.org/institutional-exploitation#"^^xsd:anyURI             ]         ] ;
        sh:select """
            SELECT $this
            WHERE {
                $this cacontology-institutional:fundingAmount ?amount ;
                      cacontology-institutional:manipulationTactics ?tactics .
                FILTER (?amount > 100000.00)
                {
                    SELECT $this (COUNT(?tactics) as ?tacticCount)
                    WHERE {
                        $this cacontology-institutional:manipulationTactics ?tactics .
                    }
                    GROUP BY $this
                    HAVING (?tacticCount < 2)
                }
            }
        """     ] .

# =============================================================================
# DATA QUALITY AND VALIDATION SHAPES WITH gUFO INTEGRATION
# =============================================================================

cacontology-institutional:InstitutionalExploitationDataQualityShape rdf:type sh:NodeShape ;
    sh:targetClass cacontology-institutional:InstitutionalExploitation ;
    rdfs:label "Institutional Exploitation Data Quality Shape"@en ;
    rdfs:comment "Validates data quality for institutional exploitation with gUFO quality aspects."@en ;
    sh:property [
        sh:path rdfs:label ;
        sh:datatype xsd:string ;
        sh:minCount 0 ;
        sh:maxCount 1 ;
        sh:minLength 10 ;
        sh:maxLength 300 ;
        sh:message "Label should be between 10 and 300 characters when provided."@en
    ] ;
    sh:property [
        sh:path rdfs:comment ;
        sh:datatype xsd:string ;
        sh:minCount 0 ;
        sh:maxCount 1 ;
        sh:minLength 20 ;
        sh:maxLength 2000 ;
        sh:message "Comment should be between 20 and 2000 characters when provided."@en
    ] .

# =============================================================================
# ENHANCED OBJECT PROPERTY SHAPES WITH gUFO INTEGRATION
# =============================================================================

cacontology-institutional:FoundedByShape rdf:type sh:PropertyShape ;
    sh:path cacontology-institutional:foundedBy ;
    sh:name "founded by" ;
    sh:description "Links institution to its founder (gUFO participation)" ;
    sh:class cacontology-institutional:InstitutionalFounder ;
    sh:minCount 1 ;
    sh:maxCount 1 .

cacontology-institutional:OccursWithinShape rdf:type sh:PropertyShape ;
    sh:path cacontology-institutional:occursWithin ;
    sh:name "occurs within" ;
    sh:description "Links exploitation to institution where it occurs (gUFO situational context)" ;
    sh:class cacontology-institutional:CharitableOrganization ;
    sh:minCount 1 ;
    sh:maxCount 1 .

cacontology-institutional:ExploitsVulnerabilityShape rdf:type sh:PropertyShape ;
    sh:path cacontology-institutional:exploitsVulnerability ;
    sh:name "exploits vulnerability" ;
    sh:description "Links exploitation to vulnerability exploited (gUFO aspect exploitation)" ;
    sh:class uco-core:UcoObject ;
    sh:minCount 0 .

cacontology-institutional:FacilitatedByShape rdf:type sh:PropertyShape ;
    sh:path cacontology-institutional:facilitatedBy ;
    sh:name "facilitated by" ;
    sh:description "Links exploitation to facilitating role (gUFO participation)" ;
    sh:class cacontology-institutional:TrustedAdultRole ;
    sh:minCount 0 . 