Analysis Phase
type: Phase
type: Class
comment: Phase focused on detailed analysis of evidence and cybertip information.
subclass of: CACInvestigation

Analyst Role
type: Role
type: Class
comment: Role of professional analyzing cybertips and digital evidence. Modeled as anti-rigid gUFO Role.
subclass of: Role

Conclusion Phase
type: Phase
type: Class
comment: Final phase involving case closure or prosecution referral.
subclass of: CACInvestigation

Conspiracy Leader Role
type: Class
comment: Leadership role within criminal conspiracy, directing and coordinating activities.
subclass of: ConspiracyRole

Conspiracy Member Role
type: Class
comment: Member role within criminal conspiracy, participating in coordinated activities.
subclass of: ConspiracyRole

Coordinated Offense Pattern
type: Class
comment: Pattern of coordinated criminal activities involving multiple perpetrators working together across time and locations.
subclass of: Action

Criminal Enterprise
type: Class
comment: Organized criminal group conducting systematic child exploitation activities with defined roles and structure.
subclass of: Organization

Digitally Generated CSAM Incident
type: Class
comment: Incidents involving digitally generated or manipulated child sexual abuse material.
subclass of: CSAMIncident

Evidence Phase
type: Phase
type: Class
comment: Phase focused on evidence collection, analysis, and curation.
subclass of: CACInvestigation

Evidence Review Action
type: Class
comment: The action of reviewing and analyzing digital evidence using forensic tools.
subclass of: Event
subclass of: Action

Grooming and Solicitation
type: Class
comment: Incidents involving grooming or solicitation of children for sexual purposes.
subclass of: ChildSexualAbuseEvent

Initial Investigation Phase
type: Phase
type: Class
comment: Initial phase of CAC investigation involving cybertip receipt and preliminary review.
subclass of: CACInvestigation

Investigation Lifecycle Situation
type: Class
comment: Overall situation encompassing the complete CAC investigation lifecycle.
subclass of: Situation

Investigator Role
type: Role
type: Class
comment: Role of law enforcement officer or analyst conducting CAC investigation. Modeled as anti-rigid gUFO Role.
subclass of: Role

Legal Process Phase
type: Phase
type: Class
comment: Phase involving legal processes such as search warrants and subpoenas.
subclass of: CACInvestigation

Live Streaming Child Sexual Abuse
type: Class
comment: Incidents involving live streaming of child sexual abuse.
subclass of: ChildSexualAbuseEvent

Receive Cybertip Action
type: Class
comment: The initial action of receiving a cybertip report from a reporting entity (e.g., NCMEC, INHOPE).
subclass of: Event
subclass of: Action
equivalent class: CriminalEvent

Rescuer Role
type: Role
type: Class
comment: Role of a person involved in rescuing or protecting victims (e.g., law enforcement, NGO worker). Modeled as anti-rigid gUFO Role.
subclass of: Role

Review Cybertip Action
type: Class
comment: The action of reviewing and analyzing a cybertip report by an analyst.
subclass of: Event
subclass of: Action

Victim Phase
type: Phase
type: Class
comment: Phase focused on victim identification, rescue, and support.
subclass of: CACInvestigation

conspiracy duration
type: DatatypeProperty
comment: Duration of criminal conspiracy from start to disruption.
domain: ConspiracyToCommitCSA
range: duration

conspiracy member count
type: DatatypeProperty
comment: Number of individuals involved in criminal conspiracy (e.g., 8 defendants).
domain: ConspiracyToCommitCSA
range: nonNegativeInteger

current phase
type: ObjectProperty
comment: The current active phase of the investigation.
domain: CACInvestigation
range: Phase

depicts child
type: ObjectProperty
comment: Links a digital artifact to a child depicted in it.
domain: DigitalArtifact
range: Person

has age situation
type: ObjectProperty
comment: Links a person to an Age At Time Situation that attributes a concrete age value to them over a time-bounded interval. This is the primary bridge from identity data into the gUFO-based age modeling pattern.
domain: Person
range: AgeAtTimeSituation

has offender age situation
type: ObjectProperty
comment: Convenience link from a child sexual abuse event to an Age At Time Situation describing the offender’s age at or during that event, enabling age-gap and Romeo-and-Juliet style analyses.
domain: ChildSexualAbuseEvent
range: AgeAtTimeSituation

has phase
type: ObjectProperty
comment: Links investigation to its current or historical phases.
domain: CACInvestigation
range: Phase

has phase begin point
type: DatatypeProperty
comment: Temporal begin point for investigation phase.
domain: Phase
range: dateTimeStamp
sub property of: hasBeginPointInXSDDateTimeStamp

has phase end point
type: DatatypeProperty
comment: Temporal end point for investigation phase.
domain: Phase
range: dateTimeStamp
sub property of: hasEndPointInXSDDateTimeStamp

has role begin point
type: DatatypeProperty
comment: Temporal begin point for CAC role.
domain: Role
range: dateTimeStamp
sub property of: hasBeginPointInXSDDateTimeStamp

has role end point
type: DatatypeProperty
comment: Temporal end point for CAC role.
domain: Role
range: dateTimeStamp
sub property of: hasEndPointInXSDDateTimeStamp

has victim age situation
type: ObjectProperty
comment: Convenience link from a child sexual abuse event to an Age At Time Situation describing the victim’s age at or during that event. Implementations MAY infer or materialize this from person-level age situations and event timepoints.
domain: ChildSexualAbuseEvent
range: AgeAtTimeSituation

indictment counts
type: DatatypeProperty
comment: Number of criminal counts in indictment (e.g., 19 counts in superseding indictment).
domain: MultiDefendantIndictment
range: nonNegativeInteger

investigation status
type: DatatypeProperty
comment: Current status of CAC investigation (active, suspended, closed, referred).
domain: CACInvestigation
range: string

involves offender
type: ObjectProperty
comment: Links an event to an offender role.
domain: ChildSexualAbuseEvent
range: OffenderRole

involves victim
type: ObjectProperty
comment: Links an event to a victim role.
domain: ChildSexualAbuseEvent
range: VictimRole

leads conspiracy
type: ObjectProperty
comment: Links individual to conspiracy they lead or direct.
domain: Person
range: ConspiracyToCommitCSA

legal instrument
type: ObjectProperty
comment: Links a legal process action to its legal instrument (e.g., search warrant, subpoena).
domain: LegalProcessAction

occurs during phase
type: ObjectProperty
comment: Links an action to the investigation phase during which it occurs.
domain: Action
range: Phase

participates in conspiracy
type: ObjectProperty
comment: Links individual to conspiracy they participate in.
domain: Person
range: ConspiracyToCommitCSA

phase duration
type: DatatypeProperty
comment: Duration of investigation phase.
domain: Phase
range: duration

phase progress
type: DatatypeProperty
comment: Progress percentage within current investigation phase (0.0-1.0).
domain: Phase
range: decimal

produces artifact
type: ObjectProperty
comment: Links an event to a digital artifact it produces.
domain: ChildSexualAbuseEvent
range: DigitalArtifact

rescued victim
type: ObjectProperty
comment: Links a victim rescue action to the rescued victim.
domain: VictimRescueAction
range: Person

results in indictment
type: ObjectProperty
comment: Links conspiracy to indictment resulting from investigation.
domain: ConspiracyToCommitCSA
range: MultiDefendantIndictment

severity level
type: DatatypeProperty
comment: The severity level of an incident (0-3, mapping to NorRating/EUROPOL scales).
domain: ChildSexualAbuseEvent
range: integer

submitted to
type: ObjectProperty
comment: Links an unknown victim submission to the target database.
domain: UnknownVictimSubmission

targets service
type: ObjectProperty
comment: Links a legal process action to the digital service it targets.
domain: LegalProcessAction
range: DigitalService

transitions to
type: ObjectProperty
comment: Links one investigation phase to the next phase in sequence.
domain: Phase
range: Phase

uses channel
type: ObjectProperty
comment: Links an event to a digital service or communication channel.
domain: ChildSexualAbuseEvent
range: DigitalService

uses classification
type: ObjectProperty
comment: Links a CSAM curation action to the classification system used.
domain: CSAMCurationAction

Age Based Vulnerability
type: Class
comment: Exploitation of victim's young age and limited ability to resist or escape.
subclass of: VulnerabilityExploitation

Apartment Isolation
type: Class
comment: Use of apartment or residential unit for victim isolation and exploitation.
subclass of: LocationIsolation

Blunt Object Threats
type: Class
comment: Use of blunt objects as weapons to threaten and control victim.
subclass of: WeaponBasedCoercion

Clothing Disguise
type: Class
comment: Use of specific clothing to alter appearance or blend into environment.
subclass of: DisguiseBasedConcealment

Compliance Enforcement
type: Class
comment: Methods used to enforce victim compliance with perpetrator demands.
subclass of: VictimControlMechanism

Controlled Environment Exploitation
type: Class
comment: Exploitation in environment controlled by perpetrator to prevent escape or discovery.
subclass of: LocationBasedExploitation

Delayed Disclosure
type: Class
comment: Delayed disclosure due to trauma, threats, or other factors.
subclass of: PostAbductionReporting

Escape Attempt
type: Class
comment: Victim's attempts to escape during or after abduction.
subclass of: VictimAbductionResponse

Exploitation Scene Evidence
type: Class
comment: Physical evidence collected from exploitation location.
subclass of: ObservableObject

Fire Escape Entry
type: Class
comment: Forcing victim to climb fire escapes to enter buildings through windows.
subclass of: ForcedLocationEntry

Firearm Threats
type: Class
comment: Use of firearm to threaten and control victim during abduction.
subclass of: WeaponBasedCoercion

Hooded Concealment
type: Class
comment: Use of hooded clothing to partially conceal identity.
subclass of: FacialConcealment

Humiliation Based Exploitation
type: Class
comment: Exploitation designed to humiliate and degrade victim beyond sexual assault.
subclass of: AbductionExploitationPattern

Immediate Disclosure
type: Class
comment: Immediate disclosure of abduction and assault upon release or escape.
subclass of: PostAbductionReporting

Immediate Exploitation
type: Class
comment: Sexual exploitation occurring immediately following abduction without delay.
subclass of: AbductionExploitationPattern

Implied Weapon Threats
type: Class
comment: Threats suggesting weapon possession without displaying actual weapon.
subclass of: WeaponBasedCoercion

Isolated Child Targeting
type: Class
comment: Targeting children who are alone without adult supervision or companions.
subclass of: VictimTargetingPattern

Isolation Vulnerability
type: Class
comment: Exploitation of victim being alone without potential helpers or witnesses.
subclass of: VulnerabilityExploitation

Knife Threats
type: Class
comment: Use of knife or bladed weapon to threaten and control victim.
subclass of: WeaponBasedCoercion

Mask Concealment
type: Class
comment: Use of masks or face coverings to hide identity.
subclass of: FacialConcealment

Movement Restriction
type: Class
comment: Physical or psychological restriction of victim movement and escape attempts.
subclass of: VictimControlMechanism

Physical Force with Weapon
type: Class
comment: Combination of physical force and weapon use to control victim.
subclass of: WeaponBasedCoercion

Physical Intimidation
type: Class
comment: Use of physical presence and intimidation to control victim behavior.
subclass of: VictimControlMechanism

Public Space Abduction
type: Class
comment: Abduction occurring in public spaces such as parks, playgrounds, or commercial areas.
subclass of: StrangerAbduction

Random Victim Selection
type: Class
comment: Selection of victim based on opportunity rather than specific targeting or grooming.
subclass of: OpportunisticPredation

Ritualized Exploitation
type: Class
comment: Exploitation following specific ritualized patterns (forced showering, specific commands).
subclass of: AbductionExploitationPattern

Routine Activity Targeting
type: Class
comment: Targeting children during predictable routine activities (school, recreation, errands).
subclass of: VictimTargetingPattern

School Route Abduction
type: Class
comment: Abduction of child while traveling to or from school or educational activities.
subclass of: StreetLevelAbduction

School Route Targeting
type: Class
comment: Targeting children on routes to or from school when they are alone and vulnerable.
subclass of: VictimTargetingPattern

Secondary Location Control
type: Class
comment: Movement of victim to secondary location for enhanced control and exploitation.
subclass of: LocationIsolation

Silence Enforcement
type: Class
comment: Specific threats or actions to prevent victim from calling for help.
subclass of: ThreatBasedControl

Size Based Vulnerability
type: Class
comment: Exploitation of victim's small physical size relative to perpetrator.
subclass of: VulnerabilityExploitation

Ski Mask Concealment
type: Class
comment: Use of ski mask or balaclava to conceal identity during approach.
subclass of: FacialConcealment

Surveillance Evidence
type: Class
comment: Video or photographic surveillance evidence of abduction or related activity.
subclass of: ObservableObject

Survival Behavior
type: Class
comment: Victim behavior focused on survival and minimizing harm.
subclass of: VictimAbductionResponse

Unconventional Entry
type: Class
comment: Use of non-standard entry methods to avoid detection or surveillance.
subclass of: ForcedLocationEntry

Vehicle Concealment
type: Class
comment: Use of vehicles to conceal approach or provide mobile concealment.
subclass of: DisguiseBasedConcealment

Verbal Threats
type: Class
comment: Use of verbal threats to maintain victim compliance.
subclass of: ThreatBasedControl

Weapon Display Intimidation
type: Class
comment: Display of weapon to intimidate victim into compliance without direct threats.
subclass of: WeaponBasedCoercion

Window Entry
type: Class
comment: Forcing victim to enter location through windows rather than doors.
subclass of: ForcedLocationEntry

Witness Evidence
type: Class
comment: Witness testimony regarding abduction or suspicious activity.
subclass of: ObservableObject

abduction duration
type: DatatypeProperty
comment: Duration of abduction from initial contact to victim release in hours.
domain: StrangerAbduction
range: decimal

abduction location
type: DatatypeProperty
comment: Specific location where abduction occurred.
domain: StrangerAbduction
range: string

access difficulty
type: DatatypeProperty
comment: Difficulty of accessing exploitation location (easy, moderate, difficult).
domain: ForcedLocationEntry
range: string

approach method
type: DatatypeProperty
comment: Method used to approach victim (direct_confrontation, deception, force).
domain: StrangerAbduction
range: string

compliance reason
type: DatatypeProperty
comment: Primary reason for victim compliance (fear, weapon_threat, physical_force).
domain: ComplianceUnderThreat
range: string

concealment level
type: DatatypeProperty
comment: Level of identity concealment (partial, full, complete).
domain: DisguiseBasedConcealment
range: string

conceals identity with
type: ObjectProperty
comment: Links perpetrator to disguise items used for concealment.
domain: Person
range: DisguiseEvidence

discloses to
type: ObjectProperty
comment: Links disclosure to person or agency receiving disclosure.
domain: PostAbductionReporting
range: Person

disclosure method
type: DatatypeProperty
comment: Method of disclosure (family, police, school, medical).
domain: PostAbductionReporting
range: string

disguise effectiveness
type: DatatypeProperty
comment: Effectiveness of disguise in preventing identification.
domain: DisguiseBasedConcealment
range: string

disguise type
type: DatatypeProperty
comment: Type of disguise used (ski_mask, hood, mask, clothing, vehicle).
domain: DisguiseBasedConcealment
range: string

documents abduction
type: ObjectProperty
comment: Links evidence to abduction it documents.
domain: ObservableObject
range: StrangerAbduction

employs coercion
type: ObjectProperty
comment: Links abduction to coercion methods employed.
domain: StrangerAbduction
range: WeaponBasedCoercion

entry method
type: DatatypeProperty
comment: Method used to enter exploitation location (fire_escape, window, door, roof).
domain: ForcedLocationEntry
range: string

escalates to
type: ObjectProperty
comment: Links abduction to exploitation pattern that follows.
domain: StrangerAbduction
range: AbductionExploitationPattern

escape routes
type: DatatypeProperty
comment: Number and accessibility of potential escape routes from location.
domain: LocationIsolation
range: string

evidence recovery rate
type: DatatypeProperty
comment: Percentage of expected evidence successfully recovered.
domain: StrangerAbductionInvestigation
range: decimal

exercises control
type: ObjectProperty
comment: Links perpetrator to control mechanisms they employ.
domain: Person
range: VictimControlMechanism

exhibits vulnerability
type: ObjectProperty
comment: Links victim to vulnerability they exhibit.
domain: Person
range: VulnerabilityExploitation

exploits vulnerability
type: ObjectProperty
comment: Links abduction to victim vulnerability being exploited.
domain: StrangerAbduction
range: VulnerabilityExploitation

facilitates exploitation
type: ObjectProperty
comment: Links abduction methods to exploitation they facilitate.
domain: StrangerAbduction
range: AbductionExploitationPattern

forces entry to
type: ObjectProperty
comment: Links abduction to forced entry into exploitation location.
domain: StrangerAbduction
range: ForcedLocationEntry

investigates abduction
type: ObjectProperty
comment: Links investigation to abduction being investigated.
domain: StrangerAbductionInvestigation
range: StrangerAbduction

investigation duration
type: DatatypeProperty
comment: Duration of investigation from report to resolution in days.
domain: StrangerAbductionInvestigation
range: decimal

isolates at
type: ObjectProperty
comment: Links abduction to location used for victim isolation.
domain: StrangerAbduction
range: LocationIsolation

location isolation level
type: DatatypeProperty
comment: Level of isolation of exploitation location (high, moderate, low).
domain: LocationIsolation
range: string

occurs at
type: ObjectProperty
comment: Links abduction to location where it occurs.
domain: StrangerAbduction
range: Location

opportunity window
type: DatatypeProperty
comment: Duration of opportunity window for abduction in minutes.
domain: OpportunityBasedTargeting
range: decimal

perpetrates abduction
type: ObjectProperty
comment: Links perpetrator to stranger abduction they commit.
domain: Person
range: StrangerAbduction

recovered from
type: ObjectProperty
comment: Links evidence to location where it was recovered.
domain: ObservableObject
range: Location

reporting delay
type: DatatypeProperty
comment: Time delay between incident and reporting in hours.
domain: PostAbductionReporting
range: decimal

reports abduction
type: ObjectProperty
comment: Links victim to abduction reporting they make.
domain: Person
range: PostAbductionReporting

resistance level
type: DatatypeProperty
comment: Level of victim resistance (none, minimal, moderate, strong).
domain: VictimAbductionResponse
range: string

resists abduction
type: ObjectProperty
comment: Links victim to resistance efforts against abduction.
domain: Person
range: InitialResistance

responds to
type: ObjectProperty
comment: Links victim response to abduction they are responding to.
domain: VictimAbductionResponse
range: StrangerAbduction

supports charge
type: ObjectProperty
comment: Links abduction evidence to criminal charges it supports.
domain: AbductionSceneEvidence
range: ObservableObject

surveillance duration
type: DatatypeProperty
comment: Duration of pre-abduction surveillance if any, in days.
domain: VictimTargetingPattern
range: decimal

targeting criteria
type: DatatypeProperty
comment: Criteria used for victim selection (age, size, isolation, opportunity).
domain: VictimTargetingPattern
range: string

targets victim
type: ObjectProperty
comment: Links targeting pattern to victim being targeted.
domain: VictimTargetingPattern
range: Person

threat effectiveness
type: DatatypeProperty
comment: Effectiveness of threats in controlling victim behavior.
domain: WeaponBasedCoercion
range: string

threat specificity
type: DatatypeProperty
comment: Specificity of threats made (vague, specific, detailed, graphic).
domain: WeaponBasedCoercion
range: string

threatens with
type: ObjectProperty
comment: Links perpetrator to weapon used for threats.
domain: Person
range: WeaponEvidence

time of day
type: DatatypeProperty
comment: Time of day when abduction occurred (morning, afternoon, evening, night).
domain: StrangerAbduction
range: string

transitions to
type: ObjectProperty
comment: Links abduction location to exploitation location.
domain: Location
range: Location

triggers investigation
type: ObjectProperty
comment: Links victim reporting to investigation it triggers.
domain: PostAbductionReporting
range: StrangerAbductionInvestigation

uses disguise
type: ObjectProperty
comment: Links abduction to disguise methods used.
domain: StrangerAbduction
range: DisguiseBasedConcealment

uses weapon
type: ObjectProperty
comment: Links abduction to weapon used for coercion.
domain: StrangerAbduction
range: WeaponEvidence

victim activity
type: DatatypeProperty
comment: Activity victim was engaged in when abducted (walking_to_school, playing, shopping).
domain: StrangerAbduction
range: string

victims of
type: ObjectProperty
comment: Links victim to stranger abduction they experience.
domain: Person
range: StrangerAbduction

weapon displayed
type: DatatypeProperty
comment: Whether weapon was visibly displayed to victim.
domain: WeaponBasedCoercion
range: boolean

weapon type
type: DatatypeProperty
comment: Type of weapon used for coercion (knife, firearm, blunt_object, implied).
domain: WeaponBasedCoercion
range: string

witness count
type: DatatypeProperty
comment: Number of witnesses identified during investigation.
domain: StrangerAbductionInvestigation
range: nonNegativeInteger

AI-CSAM Investigation Shape
type: NodeShape
comment: Enhanced validation shape for AI-CSAM investigation instances with comprehensive gUFO Event and Situation validation.
property:
  has value: Event
  message: AI-CSAM investigations must be instances of gUFO Event
  path: type
property:
  datatype: dateTime
  max count: 1
  message: AI-CSAM investigation must specify start time.
  min count: 1
  path: startTime
property:
  datatype: string
  in: low
  in: moderate
  in: high
  in: extreme
  max count: 1
  message: Investigation challenge level must be from the allowed list.
  min count: 0
  path: investigationChallengeLevel
property:
  datatype: string
  in: none
  in: low
  in: moderate
  in: high
  in: impossible
  max count: 1
  message: Victim identification difficulty must be from the allowed list.
  min count: 0
  path: victimIdentificationDifficulty
property:
  datatype: string
  in: legislation_gaps
  in: jurisdiction_issues
  in: evidence_admissibility
  in: prosecution_complexity
  in: international_cooperation
  max count: 5
  message: Legal framework challenges must be from the allowed list.
  min count: 0
  path: legalFrameworkChallenges
property:
  datatype: string
  in: low
  in: moderate
  in: high
  in: extreme
  max count: 1
  message: Prosecution difficulty must be from the allowed list.
  min count: 0
  path: prosecutionDifficulty
rule: SPARQLRule
  construct: INSERT { $this a cacontology-ai:SituationInvolvementError . } WHERE { $this a cacontology-ai:AICSAMInvestigation . $this cacontology-ai:investigationChallengeLevel ?level . FILTER(?level IN ("high", "extreme")) FILTER NOT EXISTS { $this cacontology-ai:involvesSituation ?situation . ?situation a gufo:Situation . } }
  message: Complex AI-CSAM investigations should involve gUFO Situations
  prefixes: ai-generated#
  severity: Violation
target class: AICSAMInvestigation

AI Content Detection Shape
type: NodeShape
comment: Enhanced validation shape for AI content detection instances with comprehensive gUFO Event validation.
property:
  has value: Event
  message: AI content detection must be instances of gUFO Event
  path: type
property:
  datatype: dateTime
  max count: 1
  message: AI content detection must specify start time.
  min count: 1
  path: startTime
property:
  datatype: decimal
  max count: 1
  max inclusive: 1.0
  message: Detection confidence must be between 0.0 and 1.0.
  min count: 0
  min inclusive: 0.0
  path: detectionConfidence
property:
  datatype: string
  in: neural_network
  in: statistical_analysis
  in: artifact_detection
  in: metadata_analysis
  in: hybrid_approach
  max count: 1
  message: Detection method must be from the allowed list.
  min count: 0
  path: detectionMethod
property:
  datatype: decimal
  max count: 1
  max inclusive: 3600.0
  message: Processing time must be between 0.1 and 3600 seconds.
  min count: 0
  min inclusive: 0.1
  path: processingTime
property:
  datatype: string
  in: accepted
  in: challenged
  in: rejected
  in: unclear
  max count: 1
  message: Evidence admissibility must be from the allowed list.
  min count: 0
  path: evidenceAdmissibility
property:
  datatype: dateTime
  message: Detection must have timestamp using gUFO temporal framework
  min count: 1
  path: detectionTimePoint
rule: SPARQLRule
  construct: INSERT { $this a cacontology-ai:RoleValidationError . } WHERE { $this a cacontology-ai:AIContentDetection . $this uco-action:performer ?performer . FILTER NOT EXISTS { ?performer cacontology-ai:playsRole ?role . ?role a gufo:Role . ?role rdfs:subClassOf* cacontology-ai:AIForensicAnalyst . } }
  message: AI detection must be performed by entities with appropriate gUFO Roles
  prefixes: ai-generated#
  severity: Violation
target class: AIContentDetection

AI Content Generation Shape
type: NodeShape
comment: Enhanced validation shape for AI content generation instances with comprehensive gUFO Event validation.
property:
  has value: Event
  message: AI content generation must be instances of gUFO Event
  path: type
property:
  datatype: dateTime
  max count: 1
  message: AI content generation must specify start time.
  min count: 1
  path: startTime
property:
  datatype: dateTime
  max count: 1
  message: AI content generation may specify end time.
  min count: 0
  path: endTime
property:
  datatype: string
  in: text-to-image
  in: image-to-image
  in: style_transfer
  in: face_swap
  in: age_progression
  in: video_generation
  max count: 1
  message: Generation technique must be from the allowed list.
  min count: 0
  path: generationTechnique
property:
  datatype: string
  in: basic
  in: intermediate
  in: advanced
  in: expert
  max count: 1
  message: Generation complexity must be from the allowed list.
  min count: 0
  path: generationComplexity
property:
  datatype: string
  in: basic
  in: intermediate
  in: advanced
  in: expert
  max count: 1
  message: Technical expertise required must be from the allowed list.
  min count: 0
  path: technicalExpertiseRequired
property:
  datatype: duration
  max count: 1
  message: Generation duration should use gUFO temporal framework
  min count: 0
  path: generationDuration
rule: SPARQLRule
  construct: INSERT { $this a cacontology-ai:TemporalInconsistencyError . } WHERE { $this uco-core:startTime ?start . $this uco-core:endTime ?end . FILTER(?end <= ?start) }
  message: Generation end time must be after start time
  prefixes: ai-generated#
  severity: Violation
target class: AIContentGeneration

AI Content Investigation Situation Shape
type: NodeShape
comment: SHACL shape for AI content investigation situations with comprehensive gUFO Situation validation.
property:
  has value: Situation
  message: AI content investigation situations must be instances of gUFO Situation
  path: type
rule: SPARQLRule
  construct: INSERT { $this a cacontology-ai:StakeholderValidationError . } WHERE { $this a cacontology-ai:AIContentInvestigationSituation . { SELECT $this (COUNT(?participant) AS ?participantCount) WHERE { $this cacontology-ai:hasParticipant ?participant . } GROUP BY $this } FILTER(?participantCount < 2) }
  message: Investigation situations must involve multiple stakeholders
  prefixes: ai-generated#
  severity: Violation
target class: AIContentInvestigationSituation

AI Detection Phase Shape
type: NodeShape
comment: SHACL shape for AI detection phases with anti-rigid gUFO Phase validation.
property:
  has value: Phase
  message: AI detection phases must be instances of anti-rigid gUFO Phase
  path: type
property:
  datatype: dateTime
  message: Detection phases must have begin timestamps
  min count: 1
  path: beginTimePoint
rule: SPARQLRule
  construct: INSERT { $this a cacontology-ai:AntiRigidityError . } WHERE { $this a cacontology-ai:AIDetectionPhase . FILTER NOT EXISTS { $this cacontology-gufo:hasAntiRigidityConstraint ?constraint . } }
  message: AI detection phases must demonstrate anti-rigidity (can change based on detection results)
  prefixes: ai-generated#
  severity: Violation
target class: AIDetectionPhase

AI Detection Tool Shape
type: NodeShape
comment: Enhanced validation shape for AI detection tool instances with gUFO Object validation.
property:
  has value: Object
  message: AI detection tools must be instances of gUFO Object
  path: type
property:
  datatype: string
  max count: 1
  max length: 100
  message: AI detection tool must have a name (2-100 characters).
  min count: 1
  min length: 2
  path: name
property:
  datatype: string
  max count: 1
  message: Tool version must follow semantic versioning pattern (e.g., '1.0', '2.1.3').
  min count: 0
  path: version
  pattern: ^[0-9]+\.[0-9]+(\.[0-9]+)?$
property:
  datatype: decimal
  max count: 1
  max inclusive: 1.0
  message: False positive rate must be between 0.0 and 1.0.
  min count: 0
  min inclusive: 0.0
  path: falsePositiveRate
target class: AIDetectionTool

AI Forensic Analyst Shape
type: NodeShape
comment: SHACL shape for AI forensic analyst roles with anti-rigid gUFO Role validation.
property:
  has value: Role
  message: AI forensic analysts must be instances of anti-rigid gUFO Role
  path: type
rule: SPARQLRule
  construct: INSERT { $this a cacontology-ai:CompetencyValidationError . } WHERE { $this a cacontology-ai:AIForensicAnalyst . FILTER NOT EXISTS { $this cacontology-ai:hasCompetency ?competency . ?competency cacontology-ai:competencyType "ai_content_analysis" . } }
  message: AI forensic analysts must demonstrate specialized competencies
  prefixes: ai-generated#
  severity: Violation
target class: AIForensicAnalyst

AI-Generated CSAM Shape
type: NodeShape
comment: Enhanced validation shape for AI-generated CSAM instances with comprehensive gUFO Object validation.
property:
  has value: Object
  message: AI-generated CSAM must be instances of gUFO Object
  path: type
property:
  datatype: string
  in: fully_synthetic
  in: partially_altered
  in: minimally_modified
  in: hybrid
  max count: 1
  message: Artificialness level must be from the allowed list.
  min count: 1
  path: artificialnessLevel
property:
  datatype: boolean
  max count: 1
  message: Must specify whether real victim is depicted.
  min count: 1
  path: realVictimDepicted
property:
  datatype: string
  in: low
  in: medium
  in: high
  in: photorealistic
  max count: 1
  message: Rendering quality must be from the allowed list.
  min count: 0
  path: renderingQuality
property:
  datatype: string
  in: Stable Diffusion
  in: GAN
  in: VAE
  in: Transformer
  in: DALL-E
  in: Midjourney
  in: Custom Model
  in: Unknown
  max count: 1
  message: AI model used must be from the allowed list.
  min count: 0
  path: aiModelUsed
property:
  datatype: dateTime
  message: AI-generated content must have creation timestamp using gUFO temporal framework
  min count: 1
  path: creationTimePoint
rule: SPARQLRule
  construct: INSERT { $this a cacontology-ai:GenerationProcessError . } WHERE { $this a cacontology-ai:AIGeneratedCSAM . FILTER NOT EXISTS { $this cacontology-ai:generatedUsing ?generation . ?generation a gufo:Event . } }
  message: AI-generated CSAM must be linked to a gUFO Event generation process
  prefixes: ai-generated#
  severity: Violation
target class: AIGeneratedCSAM

AI Generation Cross Reference Shape
type: NodeShape
comment: Enhanced validation that AI-generated content has associated gUFO Event generation processes.
sparql:
  message: AI-generated CSAM should have an associated gUFO Event generation process.
  select: SELECT $this WHERE { $this a cacontology-ai:AIGeneratedCSAM . FILTER NOT EXISTS { $this cacontology-ai:generatedUsing ?generation . ?generation a cacontology-ai:AIContentGeneration . ?generation a gufo:Event . } }
target class: AIGeneratedCSAM

AI Model Analyst
type: Class
comment: Anti-rigid role of specialist identifying and analyzing AI models used for content generation.
subclass of: Role
subclass of: AIForensicAnalyst

Age Progression
type: Class
comment: AI technique for artificially aging or de-aging subjects in content, potentially creating illegal material from legal content. Enhanced as gUFO Event.
subclass of: Event
subclass of: AIContentGeneration

Anti-Rigidity Validation Shape
type: NodeShape
comment: Validation of anti-rigidity constraints for gUFO Phases in AI-CSAM contexts.
sparql:
  message: Anti-rigid phases must demonstrate changeability based on context
  select: SELECT $this WHERE { $this a gufo:Phase . ?this rdfs:subClassOf* cacontology-ai:AIDetectionPhase . FILTER NOT EXISTS { $this cacontology-gufo:hasAntiRigidityConstraint ?constraint . } }
target class: AIDetectionPhase
target class: ContentGenerationPhase
target class: ForensicAnalysisPhase

Biometric Inconsistency Analysis
type: Class
comment: Analysis of biometric inconsistencies in AI-generated content, such as unnatural eye movements or facial feature distortions. Enhanced as gUFO Event.
subclass of: Event
subclass of: SyntheticMediaAnalysis

Content Generation Phase Shape
type: NodeShape
comment: SHACL shape for content generation phases with anti-rigid gUFO Phase validation.
property:
  has value: Phase
  message: Content generation phases must be instances of anti-rigid gUFO Phase
  path: type
rule: SPARQLRule
  construct: INSERT { $this a cacontology-ai:PhaseSequenceError . } WHERE { $this a cacontology-ai:ContentGenerationPhase . ?nextPhase cacontology-ai:followsPhase $this . ?nextPhase a cacontology-ai:AIDetectionPhase . $this cacontology-gufo:endTimePoint ?thisEnd . ?nextPhase cacontology-gufo:beginTimePoint ?nextStart . FILTER(?nextStart <= ?thisEnd) }
  message: Generation phases must follow logical sequence
  prefixes: ai-generated#
  severity: Violation
target class: ContentGenerationPhase

Cross-Platform Detection Situation
type: Class
comment: Situation involving detection and analysis of AI-generated content across multiple platforms and technologies.
subclass of: Situation
subclass of: AIContentInvestigationSituation

Deepfake CSAM Shape
type: NodeShape
comment: Enhanced validation shape for deepfake CSAM instances with gUFO Object validation and manipulation tracking.
property:
  has value: true
  message: Deepfake CSAM must involve real victim imagery.
  path: realVictimDepicted
property:
  datatype: dateTime
  message: Deepfake content must have manipulation timestamp
  min count: 1
  path: manipulationTimePoint
rule: SPARQLRule
  construct: INSERT { $this a cacontology-ai:TemporalInconsistencyError . } WHERE { $this cacontology-gufo:manipulationTimePoint ?manipTime . $this cacontology-gufo:creationTimePoint ?createTime . FILTER(?manipTime <= ?createTime) }
  message: Manipulation time must be after original content creation
  prefixes: ai-generated#
  severity: Violation
target class: DeepfakeCSAM

Deepfake Detection
type: Class
comment: Specialized analysis for detecting deepfake technology use in content, including face replacement and manipulation. Enhanced as gUFO Event.
subclass of: Event
subclass of: AIContentDetection

Deepfake Detection Specialist
type: Class
comment: Anti-rigid role of specialist focused on detecting and analyzing deepfake technology use.
subclass of: Role
subclass of: AIForensicAnalyst

Deepfake Detection Tool
type: Class
comment: Tool specifically designed to identify deepfake content and face manipulation techniques. Enhanced as gUFO Object.
subclass of: Object
subclass of: AIDetectionTool

Detection Sequence Validation Shape
type: NodeShape
comment: Enhanced validation that detection gUFO Events occur after content generation gUFO Events.
sparql:
  message: AI content detection gUFO Events should occur after content generation gUFO Events.
  select: SELECT $this WHERE { $this a cacontology-ai:AIContentDetection ; a gufo:Event ; cacontology-gufo:detectionTimePoint ?detectionTime . ?content cacontology-ai:detectedBy $this ; cacontology-ai:generatedUsing ?generation . ?generation a gufo:Event ; cacontology-gufo:aiGenerationTimePoint ?generationTime . FILTER (?detectionTime < ?generationTime) }
target class: AIContentDetection

Detection Tool Cross Reference Shape
type: NodeShape
comment: Enhanced validation that AI detection processes use appropriate gUFO Object tools.
sparql:
  message: AI content detection should use gUFO Object detection tools.
  select: SELECT $this WHERE { $this a cacontology-ai:AIContentDetection . FILTER NOT EXISTS { $this cacontology-ai:usesDetectionTool ?tool . ?tool a cacontology-ai:AIDetectionTool . ?tool a gufo:Object . } }
target class: AIContentDetection

Face Swapping
type: Class
comment: AI technique for replacing faces in existing content with different faces, potentially placing victims in abusive scenarios. Enhanced as gUFO Event.
subclass of: Event
subclass of: AIContentGeneration

Forensic Integrity Validation Shape
type: NodeShape
comment: Validation of forensic integrity for AI content detection processes.
sparql:
  message: High-confidence AI detection must use multiple detection methods for forensic integrity
  select: SELECT $this WHERE { $this cacontology-ai:detectionConfidence ?confidence . FILTER(?confidence > 0.9) { SELECT $this (COUNT(?method) AS ?methodCount) WHERE { $this cacontology-ai:detectionMethod ?method . } GROUP BY $this } FILTER(?methodCount < 2) }
target class: AIContentDetection

gUFO Data Quality Shape
type: NodeShape
comment: Enhanced data quality validation for AI-related gUFO entities with foundational ontology compliance.
rule: SPARQLRule
  construct: INSERT { $this a cacontology-ai:FoundationalTypeError . } WHERE { $this a ?aiType . ?aiType rdfs:subClassOf* cacontology-ai:AIGeneratedCSAM . FILTER NOT EXISTS { $this a ?gufoType . ?gufoType rdfs:subClassOf* gufo:Object . } }
  message: AI entities must be properly typed as gUFO foundational entities
  prefixes: ai-generated#
  severity: Violation
target class: AICSAMInvestigation
target class: AIContentDetection
target class: AIContentGeneration
target class: AIDetectionTool
target class: AIGeneratedCSAM

gUFO Temporal Validation Shape
type: NodeShape
comment: Enhanced temporal consistency validation for AI-related gUFO Events using gUFO temporal framework.
sparql:
  message: gUFO Events must maintain temporal consistency with begin/end timepoints.
  select: SELECT $this WHERE { $this a gufo:Event . $this cacontology-gufo:beginTimePoint ?begin . $this cacontology-gufo:endTimePoint ?end . FILTER (?begin >= ?end) }
target class: AICSAMInvestigation
target class: AIContentDetection
target class: AIContentGeneration
target class: GenerationSourceTracking
target class: ModelIdentification
target class: TrainingDataAnalysis

Hybrid CSAM Shape
type: NodeShape
comment: Enhanced validation shape for hybrid CSAM instances with gUFO Object composition validation.
property:
  has value: hybrid
  message: Hybrid CSAM must have hybrid artificialness level.
  path: artificialnessLevel
target class: HybridCSAM

Image Generation
type: Class
comment: Generation of static images using AI models such as diffusion models, GANs, or other generative techniques. Enhanced as gUFO Event.
subclass of: Event
subclass of: AIContentGeneration

Metadata Analysis Tool
type: Class
comment: Tool for analyzing metadata patterns that may indicate AI generation or manipulation. Enhanced as gUFO Object.
subclass of: Object
subclass of: AIDetectionTool

Model Training Shape
type: NodeShape
comment: Enhanced validation shape for model training instances with gUFO Event validation and training phases.
rule: SPARQLRule
  construct: INSERT { $this a cacontology-ai:PhaseValidationError . } WHERE { $this a cacontology-ai:ModelTraining . FILTER NOT EXISTS { $this cacontology-ai:hasPhase ?phase . ?phase a cacontology-ai:ContentGenerationPhase . } }
  message: Model training should involve generation phases
  prefixes: ai-generated#
  severity: Violation
target class: ModelTraining

Nudification Shape
type: NodeShape
comment: Validation shape for nudification actions producing synthetic nudity, consistent with AI generation process modeling.
property:
  datatype: string
  max count: 1
  message: Nudification technique, if present, must be a string.
  min count: 0
  path: nudificationTechnique
property:
  message: Nudification action should produce at least one result via uco-action:result.
  min count: 1
  path: result
target class: Nudification

Nudification Tool Shape
type: NodeShape
comment: Validation shape for tools capable of AI-enabled nudification (synthetic nudity).
target class: NudificationTool

Nudified CSAM Shape
type: NodeShape
comment: Validation shape for nudified CSAM outputs.
property:
  max count: 1
  message: Nudified content may link to at most one source media via cacontology-ai:nudifiedFrom.
  min count: 0
  path: nudifiedFrom
target class: NudifiedCSAM

Synthetic Image Detector
type: Class
comment: Tool for detecting synthetically generated images using machine learning classifiers. Enhanced as gUFO Object.
subclass of: Object
subclass of: AIDetectionTool

Synthetic Media Analysis Shape
type: NodeShape
comment: Enhanced validation shape for synthetic media analysis instances with gUFO Event and specialist role validation.
property:
  class: Person
  max count: 1
  message: Synthetic media analysis must specify performing analyst.
  min count: 1
  path: performer
property:
  datatype: dateTime
  message: Analysis completion should use gUFO temporal framework
  min count: 0
  path: analysisCompletionTimePoint
rule: SPARQLRule
  construct: INSERT { $this a cacontology-ai:SpecialistQualificationError . } WHERE { $this a cacontology-ai:SyntheticMediaAnalysis . $this uco-action:performer ?performer . FILTER NOT EXISTS { ?performer cacontology-ai:playsRole cacontology-ai:SyntheticMediaExaminer . } }
  message: Synthetic media analysis must be performed by qualified specialists
  prefixes: ai-generated#
  severity: Violation
target class: SyntheticMediaAnalysis

Synthetic Media CSAM Shape
type: NodeShape
comment: Enhanced validation shape for synthetic media CSAM instances with gUFO Object validation.
property:
  has value: fully_synthetic
  message: Synthetic media CSAM must be fully synthetic.
  path: artificialnessLevel
rule: SPARQLRule
  construct: INSERT { $this a cacontology-ai:SyntheticContentError . } WHERE { $this cacontology-ai:artificialnessLevel "fully_synthetic" . $this cacontology-ai:realVictimDepicted true . }
  message: Fully synthetic content cannot depict real victims
  prefixes: ai-generated#
  severity: Violation
target class: SyntheticMediaCSAM

Synthetic Media Examiner Shape
type: NodeShape
comment: SHACL shape for synthetic media examiner roles with specialized gUFO Role validation.
rule: SPARQLRule
  construct: INSERT { $this a cacontology-ai:SpecializedCompetencyError . } WHERE { $this a cacontology-ai:SyntheticMediaExaminer . FILTER NOT EXISTS { $this cacontology-ai:hasCompetency ?competency . ?competency cacontology-ai:competencyType "synthetic_media_analysis" . } }
  message: Synthetic media examiners must have synthetic media analysis competency
  prefixes: ai-generated#
  severity: Violation
target class: SyntheticMediaExaminer

Technical Analysis Situation Shape
type: NodeShape
comment: SHACL shape for technical analysis situations with coordination validation.
rule: SPARQLRule
  construct: INSERT { $this a cacontology-ai:CoordinationValidationError . } WHERE { $this a cacontology-ai:TechnicalAnalysisSituation . FILTER NOT EXISTS { $this cacontology-ai:hasParticipant ?expert . ?expert cacontology-ai:playsRole ?role . ?role rdfs:subClassOf* cacontology-ai:AIForensicAnalyst . } FILTER NOT EXISTS { $this cacontology-ai:hasParticipant ?legal . ?legal cacontology-ai:playsRole ?legalRole . ?legalRole cacontology-ai:roleType "legal_specialist" . } }
  message: Technical analysis situations must coordinate between experts and legal teams
  prefixes: ai-generated#
  severity: Violation
target class: TechnicalAnalysisSituation

Video Generation
type: Class
comment: Generation of video content using AI models capable of creating temporal sequences and motion. Enhanced as gUFO Event.
subclass of: Event
subclass of: AIContentGeneration

analyzes training data
type: ObjectProperty
comment: Links investigation to training data analysis performed.
domain: AICSAMInvestigation
range: TrainingDataAnalysis

artifacts detected
type: DatatypeProperty
comment: Specific artifacts indicating AI generation (compression_anomalies, facial_inconsistencies, lighting_errors).
domain: ArtifactAnalysis
range: string

based on model
type: ObjectProperty
comment: Links generation process to the AI model used.
domain: AIContentGeneration
range: ObservableObject

challenges legal framework
type: ObjectProperty
comment: Links AI-CSAM to legal framework challenges it creates.
domain: AIGeneratedCSAM
range: ObservableObject

complicates victim identification
type: ObjectProperty
comment: Links AI-generated content to victim identification processes it affects.
domain: AIGeneratedCSAM
range: Action

detected by
type: ObjectProperty
comment: Links AI-generated content to detection analysis performed.
domain: AIGeneratedCSAM
range: AIContentDetection

generated using
type: ObjectProperty
comment: Links AI-generated content to the generation process used.
domain: AIGeneratedCSAM
range: AIContentGeneration

requires specialized prosecution
type: ObjectProperty
comment: Links AI-CSAM investigation to specialized prosecution approaches needed.
domain: AICSAMInvestigation
range: Action

reveals artifacts
type: ObjectProperty
comment: Links detection analysis to artifacts discovered.
domain: AIContentDetection
range: ObservableObject

source traceability
type: DatatypeProperty
comment: Degree to which generation source can be traced (untraceable, limited, moderate, high).
domain: GenerationSourceTracking
range: string

subject of investigation
type: ObjectProperty
comment: Links AI-generated content to investigations examining it.
domain: AIGeneratedCSAM
range: AICSAMInvestigation

traces to source
type: ObjectProperty
comment: Links source tracking to identified origin or creator.
domain: GenerationSourceTracking
range: Identity

uses detection tool
type: ObjectProperty
comment: Links detection process to tools used for analysis.
domain: AIContentDetection
range: AIDetectionTool

uses nudification tool
type: ObjectProperty
source: Community & Intelligence Beyond Detection (Global Emancipation Network), 2026-02-10.
comment: Links a nudification process to the nudification tool/functionality used.
domain: Nudification
range: NudificationTool
sub property of: utilizesTool

Exposure Mitigation Measure Shape
type: NodeShape
comment: Validates exposure mitigation measures with a controlled mitigationType vocabulary.
property:
  datatype: string
  in: hash_only_review
  in: blurred_preview
  in: progressive_reveal
  in: frame_sampling
  in: audio_removed
  in: other
  max count: 1
  message: Exposure mitigation measure must have mitigationType from allowed list.
  min count: 1
  path: mitigationType
target class: ExposureMitigationMeasure

Manual Classification Exposure Mitigation Shape
type: NodeShape
comment: Ensures that any exposure mitigation referenced from manual classification actions is properly typed.
property:
  class: ExposureMitigationMeasure
  message: usesExposureMitigation values must be ExposureMitigationMeasure instances.
  min count: 0
  path: usesExposureMitigation
target class: ManualClassificationAction

Occupational Harm Shape
type: NodeShape
comment: Validates occupational harm situations with optional harmSeverity.
property:
  datatype: string
  in: low
  in: medium
  in: high
  in: unknown
  max count: 1
  message: Occupational harm severity must be from allowed list when present.
  min count: 0
  path: harmSeverity
target class: OccupationalHarm

Person Occupational Harm Shape
type: NodeShape
comment: Ensures that any occupational harm referenced from persons is properly typed.
property:
  class: OccupationalHarm
  message: experiencesOccupationalHarm values must be OccupationalHarm instances.
  min count: 0
  path: experiencesOccupationalHarm
target class: Person

Secondary Traumatic Stress
type: Class
source: Community & Intelligence Beyond Detection (Global Emancipation Network), 2026-02-10.
comment: Occupational stress reactions arising from indirect exposure to others' trauma, including exposure through content review and investigative materials.
subclass of: OccupationalHarm

Vicarious Trauma
type: Class
source: Community & Intelligence Beyond Detection (Global Emancipation Network), 2026-02-10.
comment: A form of occupational harm in which repeated exposure to traumatic material produces trauma-like impacts in the reviewer.
subclass of: OccupationalHarm

Anti-Rigidity Validation Shape
type: NodeShape
comment: Validation of anti-rigidity constraints for gUFO Phases in asset forfeiture contexts.
sparql:
  message: Anti-rigid phases must demonstrate changeability based on forfeiture context
  select: SELECT $this WHERE { $this a gufo:Phase . ?this rdfs:subClassOf* cacontology-asset-forfeiture:AssetIdentificationPhase . FILTER NOT EXISTS { $this cacontology-gufo:hasAntiRigidityConstraint ?constraint . } }
target class: AssetIdentificationPhase
target class: LegalProceedingsPhase
target class: RecoveryPhase
target class: RestraintPhase

Asset Forfeiture Action Shape
type: NodeShape
comment: Enhanced validation shape for asset forfeiture actions with comprehensive gUFO Event validation.
property:
  has value: Event
  message: Asset forfeiture actions must be instances of gUFO Event
  path: type
property:
  datatype: dateTime
  max count: 1
  message: Asset forfeiture action must specify begin time using gUFO temporal framework
  min count: 1
  path: forfeitureBeginTime
property:
  datatype: dateTime
  max count: 1
  message: Asset forfeiture action may specify end time using gUFO temporal framework
  min count: 0
  path: forfeitureEndTime
property:
  class: ObservableObject
  message: Asset forfeiture action must target at least one asset
  min count: 1
  path: targetedAsset
property:
  class: CriminalAssetsConfiscationTaskforce
  max count: 1
  message: Asset forfeiture action may involve CACT
  min count: 0
  path: involvesTaskforce
property:
  message: Asset forfeiture action must be related to criminal charges
  min count: 1
  path: relatedCriminalCharges
property:
  class: Phase
  max count: 1
  message: Asset forfeiture action may specify current operational phase
  min count: 0
  path: currentPhase
rule: SPARQLRule
  construct: INSERT { $this a cacontology-asset-forfeiture:TemporalInconsistencyError . } WHERE { $this cacontology-gufo:forfeitureBeginTime ?begin . $this cacontology-gufo:forfeitureEndTime ?end . FILTER(?end <= ?begin) }
  message: Forfeiture end time must be after begin time
  prefixes: asset-forfeiture#
  severity: Violation
target class: AssetForfeitureAction

Asset Forfeiture Officer Shape
type: NodeShape
comment: SHACL shape for asset forfeiture officer roles with anti-rigid gUFO Role validation.
property:
  has value: Role
  message: Asset forfeiture officers must be instances of anti-rigid gUFO Role
  path: type
rule: SPARQLRule
  construct: INSERT { $this a cacontology-asset-forfeiture:CompetencyValidationError . } WHERE { $this a cacontology-asset-forfeiture:AssetForfeitureOfficer . FILTER NOT EXISTS { $this cacontology-asset-forfeiture:hasCompetency ?competency . ?competency cacontology-asset-forfeiture:competencyType "asset_forfeiture" . } }
  message: Asset forfeiture officers must have appropriate training and certification
  prefixes: asset-forfeiture#
  severity: Violation
target class: AssetForfeitureOfficer

Asset Identification Phase Shape
type: NodeShape
comment: SHACL shape for asset identification phases with anti-rigid gUFO Phase validation.
property:
  has value: Phase
  message: Asset identification phases must be instances of anti-rigid gUFO Phase
  path: type
property:
  datatype: dateTime
  message: Phase may specify transition times
  min count: 0
  path: phaseTransitionTime
rule: SPARQLRule
  construct: INSERT { $this a cacontology-asset-forfeiture:AntiRigidityError . } WHERE { $this a cacontology-asset-forfeiture:AssetIdentificationPhase . FILTER NOT EXISTS { $this cacontology-gufo:hasAntiRigidityConstraint ?constraint . } }
  message: Asset identification phases must demonstrate anti-rigidity (duration varies based on complexity)
  prefixes: asset-forfeiture#
  severity: Violation
target class: AssetIdentificationPhase

Asset Targeting Cross Reference Shape
type: NodeShape
comment: Enhanced validation that asset forfeiture actions target appropriate gUFO Object assets.
sparql:
  message: Asset forfeiture actions should target gUFO Object assets with established ownership.
  select: SELECT $this WHERE { $this a cacontology-asset-forfeiture:AssetForfeitureAction . $this cacontology-asset-forfeiture:targetedAsset ?asset . FILTER NOT EXISTS { ?asset a gufo:Object . ?asset uco-observable:propertyOwner ?owner . } }
target class: AssetForfeitureAction

Asset Valuation Expert Shape
type: NodeShape
comment: SHACL shape for asset valuation expert roles with specialized gUFO Role validation.
rule: SPARQLRule
  construct: INSERT { $this a cacontology-asset-forfeiture:QualificationError . } WHERE { $this a cacontology-asset-forfeiture:AssetValuationExpert . FILTER NOT EXISTS { $this cacontology-asset-forfeiture:hasQualification ?qualification . ?qualification cacontology-asset-forfeiture:qualificationType "professional_valuation" . } }
  message: Asset valuation experts must have professional qualifications
  prefixes: asset-forfeiture#
  severity: Violation
target class: AssetValuationExpert

CACT Investigation Shape
type: NodeShape
comment: Enhanced validation shape for CACT investigations with gUFO Event validation and investigation phases.
property:
  has value: Event
  message: CACT investigations must be instances of gUFO Event
  path: type
property:
  datatype: dateTime
  max count: 1
  message: CACT investigation must specify begin time
  min count: 1
  path: investigationBeginTime
property:
  datatype: dateTime
  max count: 1
  message: CACT investigation may specify end time
  min count: 0
  path: investigationEndTime
property:
  class: CriminalAssetsConfiscationTaskforce
  max count: 1
  message: CACT investigation must be performed by CACT
  min count: 1
  path: performer
target class: CACTInvestigation

Complete Forfeiture Shape
type: NodeShape
comment: Enhanced validation shape for complete forfeiture with gUFO Object validation.
rule: SPARQLRule
  construct: INSERT { $this a cacontology-asset-forfeiture:CourtAuthorizationError . } WHERE { $this a cacontology-asset-forfeiture:CompleteForfeiture . FILTER NOT EXISTS { $this cacontology-asset-forfeiture:hasCourtAuthorization ?authorization . ?authorization cacontology-asset-forfeiture:authorizationType "complete_forfeiture" . } }
  message: Complete forfeiture must have court authorization
  prefixes: asset-forfeiture#
  severity: Violation
target class: CompleteForfeiture

Consent Order
type: Class
comment: Court order agreed to by parties for financial penalty payment. Enhanced as gUFO Object.
subclass of: Object
subclass of: ForfeitureOutcome

Criminal Assets Confiscation Taskforce Shape
type: NodeShape
comment: Enhanced validation shape for CACT with gUFO Organization validation and operational framework validation.
property:
  has value: Organization
  message: CACT must be instance of gUFO Organization
  path: type
property:
  datatype: string
  max count: 1
  max length: 200
  message: CACT must have a name (5-200 characters)
  min count: 1
  min length: 5
  path: name
rule: SPARQLRule
  construct: INSERT { $this a cacontology-asset-forfeiture:AuthorityValidationError . } WHERE { $this a cacontology-asset-forfeiture:CriminalAssetsConfiscationTaskforce . FILTER NOT EXISTS { $this cacontology-asset-forfeiture:hasLegalAuthority ?authority . ?authority cacontology-asset-forfeiture:authorityType "asset_confiscation" . } }
  message: CACT must have appropriate legal authority for asset confiscation
  prefixes: asset-forfeiture#
  severity: Violation
target class: CriminalAssetsConfiscationTaskforce

Financial Account Shape
type: NodeShape
comment: Enhanced validation shape for financial accounts with gUFO Object validation and financial verification.
property:
  has value: Object
  message: Financial account must be instance of gUFO Object
  path: type
property:
  datatype: decimal
  max count: 1
  message: Account funds must be non-negative
  min count: 0
  min inclusive: 0.0
  path: accountFunds
property:
  datatype: string
  max count: 1
  message: Financial account must specify institution
  min count: 1
  min length: 2
  path: financialInstitution
rule: SPARQLRule
  construct: INSERT { $this a cacontology-asset-forfeiture:FinancialVerificationError . } WHERE { $this a cacontology-asset-forfeiture:FinancialAccount . FILTER NOT EXISTS { $this cacontology-asset-forfeiture:hasVerification ?verification . ?verification cacontology-asset-forfeiture:verificationType "institutional_records" . } }
  message: Financial accounts must be verified through financial institution records
  prefixes: asset-forfeiture#
  severity: Violation
target class: FinancialAccount

Financial Penalty Action Shape
type: NodeShape
comment: Enhanced validation shape for financial penalty actions with gUFO Event penalty modeling.
property:
  datatype: decimal
  max count: 1
  message: Financial penalty amount must be positive
  min count: 1
  min exclusive: 0.0
  path: financialPenaltyAmount
property:
  datatype: dateTime
  max count: 1
  message: Financial penalty action must specify imposition time
  min count: 1
  path: penaltyImpositionTime
target class: FinancialPenaltyAction

Forensic Accountant Shape
type: NodeShape
comment: SHACL shape for forensic accountant roles with specialized gUFO Role validation.
rule: SPARQLRule
  construct: INSERT { $this a cacontology-asset-forfeiture:ExpertiseValidationError . } WHERE { $this a cacontology-asset-forfeiture:ForensicAccountant . FILTER NOT EXISTS { $this cacontology-asset-forfeiture:hasExpertise ?expertise . ?expertise cacontology-asset-forfeiture:expertiseType "financial_analysis" . } }
  message: Forensic accountants must have financial analysis expertise
  prefixes: asset-forfeiture#
  severity: Violation
target class: ForensicAccountant

gUFO Data Quality Shape
type: NodeShape
comment: Enhanced data quality validation for asset forfeiture gUFO entities with foundational ontology compliance.
rule: SPARQLRule
  construct: INSERT { $this a cacontology-asset-forfeiture:FoundationalTypeError . } WHERE { $this a ?assetType . ?assetType rdfs:subClassOf* cacontology-asset-forfeiture:AssetForfeitureAction . FILTER NOT EXISTS { $this a ?gufoType . ?gufoType rdfs:subClassOf* gufo:Event . } }
  message: Asset forfeiture entities must be properly typed as gUFO foundational entities
  prefixes: asset-forfeiture#
  severity: Violation
target class: AssetForfeitureAction
target class: CriminalAssetsConfiscationTaskforce
target class: FinancialAccount
target class: ResidentialProperty
target class: TechnicalEquipment

gUFO Temporal Validation Shape
type: NodeShape
comment: Enhanced temporal consistency validation for asset forfeiture gUFO Events using gUFO temporal framework.
sparql:
  message: gUFO Events must maintain temporal consistency with begin/end timepoints.
  select: SELECT $this WHERE { $this a gufo:Event . $this cacontology-gufo:forfeitureBeginTime ?begin . $this cacontology-gufo:forfeitureEndTime ?end . FILTER (?begin >= ?end) }
target class: AssetAssessmentAction
target class: AssetForfeitureAction
target class: CACTInvestigation

Instrument of Offense
type: Class
comment: Assets used as instruments in the commission of child exploitation offenses. Enhanced as gUFO Object.
subclass of: Object
subclass of: LegalBasisForForfeiture

Jurisdictional Coordination Shape
type: NodeShape
comment: SHACL shape for jurisdictional coordination situations with comprehensive gUFO Situation validation.
property:
  has value: Situation
  message: Jurisdictional coordination must be instance of gUFO Situation
  path: type
property:
  datatype: dateTime
  max count: 1
  message: Jurisdictional coordination must specify begin time
  min count: 1
  path: coordinationBeginTime
rule: SPARQLRule
  construct: INSERT { $this a cacontology-asset-forfeiture:CoordinationValidationError . } WHERE { $this a cacontology-asset-forfeiture:JurisdictionalCoordination . { SELECT $this (COUNT(?authority) AS ?authorityCount) WHERE { $this cacontology-asset-forfeiture:hasParticipant ?authority . ?authority a gufo:Organization . ?authority cacontology-asset-forfeiture:organizationType "legal_authority" . } GROUP BY $this } FILTER(?authorityCount < 2) }
  message: Jurisdictional coordination must involve multiple legal authorities
  prefixes: asset-forfeiture#
  severity: Violation
target class: JurisdictionalCoordination

Legal Counsel
type: Class
comment: Legal counsel specialized in asset forfeiture law and proceedings. Enhanced as anti-rigid gUFO Role.
subclass of: Role
has anti rigidity constraint: Role assignment changes based on jurisdictional requirements and case complexity

Legal Integrity Validation Shape
type: NodeShape
comment: Validation of legal integrity for asset forfeiture proceedings.
sparql:
  message: High-value asset forfeiture must have proper legal authorization and documentation
  select: SELECT $this WHERE { $this cacontology-asset-forfeiture:targetedAsset ?asset . ?asset cacontology-asset-forfeiture:estimatedValue ?value . FILTER(?value > 100000) FILTER NOT EXISTS { $this cacontology-asset-forfeiture:hasLegalAuthorization ?authorization . ?authorization cacontology-asset-forfeiture:authorizationType "court_order" . } }
target class: AssetForfeitureAction

Legal Proceedings Phase Shape
type: NodeShape
comment: SHACL shape for legal proceedings phases with anti-rigid gUFO Phase validation.
rule: SPARQLRule
  construct: INSERT { $this a cacontology-asset-forfeiture:CourtInvolvementError . } WHERE { $this a cacontology-asset-forfeiture:LegalProceedingsPhase . FILTER NOT EXISTS { $this cacontology-asset-forfeiture:involvesCourtProceeding ?proceeding . ?proceeding a cacontology-asset-forfeiture:LegalProceedingsSituation . } }
  message: Legal proceedings phase must involve court proceedings
  prefixes: asset-forfeiture#
  severity: Violation
target class: LegalProceedingsPhase

Legal Proceedings Situation Shape
type: NodeShape
comment: SHACL shape for legal proceedings situations with multi-party validation.
rule: SPARQLRule
  construct: INSERT { $this a cacontology-asset-forfeiture:LegalParticipationError . } WHERE { $this a cacontology-asset-forfeiture:LegalProceedingsSituation . FILTER NOT EXISTS { $this cacontology-asset-forfeiture:hasParticipant ?court . ?court a cacontology-asset-forfeiture:StateSupremeCourt . } FILTER NOT EXISTS { $this cacontology-asset-forfeiture:hasParticipant ?counsel . ?counsel cacontology-asset-forfeiture:playsRole cacontology-asset-forfeiture:LegalCounsel . } }
  message: Legal proceedings must involve courts, legal counsel, and enforcement agencies
  prefixes: asset-forfeiture#
  severity: Violation
target class: LegalProceedingsSituation

Multi-State Forfeiture Shape
type: NodeShape
comment: Enhanced validation shape for multi-state forfeiture with gUFO Situation validation and jurisdictional coordination.
property:
  has value: Situation
  message: Multi-state forfeiture must be instance of gUFO Situation
  path: type
rule: SPARQLRule
  construct: INSERT { $this a cacontology-asset-forfeiture:JurisdictionalError . } WHERE { $this a cacontology-asset-forfeiture:MultiStateForfeiture . { SELECT $this (COUNT(DISTINCT ?jurisdiction) AS ?jurisdictionCount) WHERE { $this cacontology-asset-forfeiture:involvesJurisdiction ?jurisdiction . } GROUP BY $this } FILTER(?jurisdictionCount < 2) }
  message: Multi-state forfeiture must involve multiple jurisdictions
  prefixes: asset-forfeiture#
  severity: Violation
target class: MultiStateForfeiture

Non-Profit Offender Assets
type: Class
comment: Assets of offenders who were not accused of profiting from their crimes, representing first-of-kind forfeiture precedent. Enhanced as gUFO Object.
subclass of: Object
subclass of: LegalBasisForForfeiture

Partial Forfeiture Shape
type: NodeShape
comment: Enhanced validation shape for partial forfeiture with gUFO Object validation and percentage constraints.
property:
  datatype: decimal
  max count: 1
  max exclusive: 100.0
  message: Forfeiture percentage must be between 0 and 100
  min count: 1
  min exclusive: 0.0
  path: forfeiturePercentage
rule: SPARQLRule
  construct: INSERT { $this a cacontology-asset-forfeiture:JustificationError . } WHERE { $this a cacontology-asset-forfeiture:PartialForfeiture . FILTER NOT EXISTS { $this cacontology-asset-forfeiture:hasLegalJustification ?justification . ?justification cacontology-asset-forfeiture:justificationType "partial_forfeiture" . } }
  message: Partial forfeiture must have legal justification for percentage
  prefixes: asset-forfeiture#
  severity: Violation
target class: PartialForfeiture

Phase Sequence Validation Shape
type: NodeShape
comment: Enhanced validation that asset forfeiture gUFO Events follow logical phase sequences.
sparql:
  message: Asset forfeiture actions should follow logical phase sequences with proper temporal ordering.
  select: SELECT $this WHERE { $this a cacontology-asset-forfeiture:AssetForfeitureAction . $this cacontology-asset-forfeiture:currentPhase ?currentPhase . $this cacontology-asset-forfeiture:previousPhase ?prevPhase . ?currentPhase cacontology-gufo:phaseTransitionTime ?currentTime . ?prevPhase cacontology-gufo:phaseTransitionTime ?prevTime . FILTER (?currentTime <= ?prevTime) }
target class: AssetForfeitureAction

Precedent Validation Shape
type: NodeShape
comment: Validation of precedent-setting asset forfeiture cases.
sparql:
  message: Precedent-setting cases must have enhanced documentation and legal review
  select: SELECT $this WHERE { $this cacontology-asset-forfeiture:precedentSetting true . FILTER NOT EXISTS { $this cacontology-asset-forfeiture:hasEnhancedDocumentation ?documentation . ?documentation cacontology-asset-forfeiture:documentationType "precedent_analysis" . } }
target class: AssetForfeitureAction

Proceeds of Crime
type: Class
comment: Assets that are proceeds or benefits derived from child exploitation offenses. Enhanced as gUFO Object.
subclass of: Object
subclass of: LegalBasisForForfeiture

Property Forfeiture Action Shape
type: NodeShape
comment: Enhanced validation shape for property forfeiture actions with gUFO Event completion validation.
property:
  datatype: dateTime
  max count: 1
  message: Property forfeiture action must specify completion time
  min count: 1
  path: forfeitureCompletionTime
property:
  class: ForfeitureOutcome
  max count: 1
  message: Property forfeiture action must specify outcome
  min count: 1
  path: forfeitureOutcome
target class: PropertyForfeitureAction

Property Manager
type: Class
comment: Specialist responsible for managing restrained and forfeited property. Enhanced as anti-rigid gUFO Role.
subclass of: Role
has anti rigidity constraint: Role changes based on property type and management requirements

Property Restraint Action Shape
type: NodeShape
comment: Enhanced validation shape for property restraint actions with gUFO Event validation and restraint temporal modeling.
property:
  datatype: dateTime
  max count: 1
  message: Property restraint action must specify restraint begin time
  min count: 1
  path: restraintBeginTime
rule: SPARQLRule
  construct: INSERT { $this a cacontology-asset-forfeiture:PhaseTransitionError . } WHERE { $this a cacontology-asset-forfeiture:PropertyRestraintAction . FILTER NOT EXISTS { $this cacontology-asset-forfeiture:currentPhase ?phase . ?phase a cacontology-asset-forfeiture:RestraintPhase . } }
  message: Property restraint should transition to restraint phase
  prefixes: asset-forfeiture#
  severity: Violation
target class: PropertyRestraintAction

Recovery Phase Shape
type: NodeShape
comment: SHACL shape for recovery phases with anti-rigid gUFO Phase validation.
rule: SPARQLRule
  construct: INSERT { $this a cacontology-asset-forfeiture:LegalCompletionError . } WHERE { $this a cacontology-asset-forfeiture:RecoveryPhase . ?action cacontology-asset-forfeiture:currentPhase $this . FILTER NOT EXISTS { ?action cacontology-asset-forfeiture:previousPhase ?prev . ?prev a cacontology-asset-forfeiture:LegalProceedingsPhase . ?prev cacontology-asset-forfeiture:phaseStatus "completed" . } }
  message: Recovery phase must have completed legal proceedings
  prefixes: asset-forfeiture#
  severity: Violation
target class: RecoveryPhase

Residential Property Shape
type: NodeShape
comment: Enhanced validation shape for residential property with gUFO Object validation and property assessment.
property:
  has value: Object
  message: Residential property must be instance of gUFO Object
  path: type
property:
  datatype: decimal
  max count: 1
  message: Market value must be positive
  min count: 0
  min exclusive: 0.0
  path: marketValue
property:
  class: Person
  message: Residential property must have at least one owner
  min count: 1
  path: propertyOwner
rule: SPARQLRule
  construct: INSERT { $this a cacontology-asset-forfeiture:AssessmentRecommendation . } WHERE { $this cacontology-asset-forfeiture:marketValue ?value . FILTER(?value > 500000) FILTER NOT EXISTS { $this cacontology-asset-forfeiture:hasAssessment ?assessment . ?assessment cacontology-asset-forfeiture:assessmentType "professional" . } }
  message: High-value residential property should have professional assessment
  prefixes: asset-forfeiture#
  severity: Warning
target class: ResidentialProperty

Restraint Phase Shape
type: NodeShape
comment: SHACL shape for restraint phases with anti-rigid gUFO Phase validation.
property:
  has value: Phase
  message: Restraint phases must be instances of anti-rigid gUFO Phase
  path: type
rule: SPARQLRule
  construct: INSERT { $this a cacontology-asset-forfeiture:PhaseSequenceError . } WHERE { $this a cacontology-asset-forfeiture:RestraintPhase . ?action cacontology-asset-forfeiture:currentPhase $this . FILTER NOT EXISTS { ?action cacontology-asset-forfeiture:previousPhase ?prev . ?prev a cacontology-asset-forfeiture:AssetIdentificationPhase . } }
  message: Restraint phase should follow asset identification phase
  prefixes: asset-forfeiture#
  severity: Violation
target class: RestraintPhase

State Supreme Court
type: Class
comment: State Supreme Court with jurisdiction over forfeiture proceedings. Enhanced as gUFO Organization for judicial institution modeling.
comment: gUFO Organization: Judicial institutions with authoritative legal powers and procedural frameworks.
subclass of: Organization

Taskforce Involvement Cross Reference Shape
type: NodeShape
comment: Enhanced validation that asset forfeiture actions involve appropriate gUFO Organization taskforces.
sparql:
  message: Asset forfeiture actions should involve active gUFO Organization taskforces.
  select: SELECT $this WHERE { $this a cacontology-asset-forfeiture:AssetForfeitureAction . $this cacontology-asset-forfeiture:involvesTaskforce ?taskforce . FILTER NOT EXISTS { ?taskforce a gufo:Organization . ?taskforce cacontology-asset-forfeiture:organizationStatus "active" . } }
target class: AssetForfeitureAction

Technical Equipment Shape
type: NodeShape
comment: Enhanced validation shape for technical equipment with gUFO Object validation and forensic verification.
property:
  has value: Object
  message: Technical equipment must be instance of gUFO Object
  path: type
property:
  datatype: string
  in: camera_equipment
  in: drone
  in: scuba_diving_gear
  in: computer_equipment
  in: mobile_device
  in: storage_device
  in: other
  max count: 1
  message: Equipment type must be from the allowed list
  min count: 1
  path: equipmentType
rule: SPARQLRule
  construct: INSERT { $this a cacontology-asset-forfeiture:ForensicVerificationError . } WHERE { $this a cacontology-asset-forfeiture:TechnicalEquipment . FILTER NOT EXISTS { $this cacontology-asset-forfeiture:hasForensicVerification ?verification . ?verification cacontology-asset-forfeiture:verificationType "equipment_analysis" . } }
  message: Technical equipment must have forensic verification for forfeiture
  prefixes: asset-forfeiture#
  severity: Violation
target class: TechnicalEquipment

Vehicle
type: Class
comment: Vehicle used in or purchased with proceeds from child exploitation offenses. Enhanced as gUFO Object for vehicle asset modeling.
subclass of: Object
subclass of: ObservableObject

assigned role
type: ObjectProperty
comment: Links a person to their assigned forfeiture role. gUFO Role modeling for dynamic assignment.
domain: Person
range: Role

court jurisdiction
type: DatatypeProperty
comment: Court jurisdiction for forfeiture proceedings (e.g., 'NSW', 'VIC', 'SA'). Enhanced with gUFO Situation context.
range: string
has validation constraint: Jurisdiction must be valid Australian state or territory code

estimated value
type: DatatypeProperty
comment: Estimated total value of restrained assets (e.g., $30,000). Enhanced with gUFO Object aggregation.
range: decimal
has validation constraint: Estimated value should be based on professional assessment

forfeiture date
type: DatatypeProperty
comment: Use cacontology-gufo:forfeitureCompletionTime for gUFO temporal consistency
comment: Date when property was forfeited to the Commonwealth. Superseded by gUFO temporal framework.
domain: PropertyForfeitureAction
range: dateTime
deprecated: true

has phase transition
type: ObjectProperty
comment: Links asset forfeiture action to phase transition events.
domain: AssetForfeitureAction
range: Event

involves coordination
type: ObjectProperty
comment: Links forfeiture action to coordination situations involving multiple jurisdictions.
domain: AssetForfeitureAction
range: JurisdictionalCoordination

item count
type: DatatypeProperty
comment: Number of household items forfeited (e.g., 48 household items). Enhanced with gUFO Object quantification.
domain: HouseholdItems
range: nonNegativeInteger
has validation constraint: Item count must be verified through inventory documentation

plays role
type: ObjectProperty
comment: Links an entity to a role it plays in forfeiture operations.
range: Role

precedent setting
type: DatatypeProperty
comment: Indicates whether this forfeiture set a legal precedent (e.g., first restraint of non-profit offender home). Enhanced with gUFO precedential significance.
domain: AssetForfeitureAction
range: boolean
has validation constraint: Precedent status must be legally verified and documented

restraint date
type: DatatypeProperty
comment: Use cacontology-gufo:restraintBeginTime for gUFO temporal consistency
comment: Date when property restraint order was issued. Superseded by gUFO temporal framework.
domain: PropertyRestraintAction
range: dateTime
deprecated: true

Anatomy Focused Exploitation
type: Class
comment: Exploitation focused on body parts and anatomy under guise of athletic training. Enhanced as gUFO Event.
subclass of: Event
subclass of: SexualEducationExploitation

Anti-Rigidity Validation Shape
type: NodeShape
comment: Validation of anti-rigidity constraints for gUFO Phases in athletic exploitation contexts.
sparql:
  message: Anti-rigid phases must demonstrate changeability based on athletic exploitation context
  select: SELECT $this WHERE { $this a gufo:Phase . { { $this a cacontology-athletic:GroomingPhase . } UNION { $this a cacontology-athletic:AuthorityEstablishmentPhase . } UNION { $this a cacontology-athletic:PhysicalCoercionPhase . } UNION { $this a cacontology-athletic:ExploitationPhase . } UNION { $this a cacontology-athletic:DiscoveryPhase . } } FILTER NOT EXISTS { $this cacontology-gufo:hasAntiRigidityConstraint ?constraint . } }
target class: AuthorityEstablishmentPhase
target class: DiscoveryPhase
target class: ExploitationPhase
target class: GroomingPhase
target class: PhysicalCoercionPhase

Assistant Coach Role
type: Class
comment: Assistant coaching role with delegated authority over specific training aspects. Enhanced as anti-rigid gUFO Role.
subclass of: Role
subclass of: AthleticCoachRole
has anti rigidity constraint: Role scope varies based on delegation and specialization areas

Athletic Coach Role Shape
type: NodeShape
comment: Enhanced validation shape for athletic coach roles with anti-rigid gUFO Role validation.
property:
  has value: Role
  message: Athletic coach roles must be instances of anti-rigid gUFO Role
  path: type
property:
  datatype: decimal
  max count: 1
  max inclusive: 50.0
  message: Coaching experience must be between 0 and 50 years.
  min count: 0
  min inclusive: 0.0
  path: coachingExperience
property:
  datatype: string
  max count: 1
  message: Age group coached must be in format like '12-14', '15', 'under_18', or 'over_21'.
  min count: 1
  path: ageGroupCoached
  pattern: ^[0-9]+-[0-9]+$|^[0-9]+$|^under_[0-9]+$|^over_[0-9]+$
property:
  datatype: string
  max count: 1
  max length: 200
  message: Institutional affiliation must be between 1 and 200 characters.
  min count: 0
  min length: 1
  path: institutionalAffiliation
rule: SPARQLRule
  construct: INSERT { $this a cacontology-athletic:CoachCompetencyError . } WHERE { $this a cacontology-athletic:AthleticCoachRole . FILTER NOT EXISTS { $this cacontology-athletic:hasCompetency ?competency . ?competency cacontology-athletic:competencyType "athletic_coaching" . } }
  message: Athletic coach roles must have appropriate training and certification
  prefixes: athletic#
  severity: Violation
target class: AthleticCoachRole

Athletic Coaching Exploitation Shape
type: NodeShape
comment: Enhanced validation shape for athletic coaching exploitation with comprehensive gUFO Event validation.
property:
  has value: Event
  message: Athletic coaching exploitation must be instances of gUFO Event
  path: type
property:
  datatype: dateTime
  max count: 1
  message: Athletic coaching exploitation must specify begin time using gUFO temporal framework
  min count: 1
  path: exploitationBeginTime
property:
  datatype: string
  in: travel
  in: school
  in: club
  in: recreational
  in: competitive
  in: elite
  in: youth_league
  in: select
  max count: 1
  message: Athletic coaching exploitation must specify exactly one team type from the allowed list.
  min count: 1
  path: teamType
property:
  datatype: dateTime
  max count: 1
  message: Athletic coaching exploitation may specify end time using gUFO temporal framework
  min count: 0
  path: exploitationEndTime
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 50
  message: Team size must be between 1 and 50 players.
  min count: 1
  min inclusive: 1
  path: teamSize
property:
  class: AthleticCoachRole
  message: Athletic coaching exploitation must involve at least one coaching role
  min count: 1
  path: holdsCoachingRole
property:
  class: Phase
  max count: 1
  message: Athletic coaching exploitation may specify current operational phase
  min count: 0
  path: currentPhase
property:
  datatype: string
  in: baseball
  in: basketball
  in: soccer
  in: football
  in: tennis
  in: swimming
  in: track
  in: volleyball
  in: wrestling
  in: gymnastics
  in: hockey
  in: lacrosse
  in: softball
  in: golf
  in: cross_country
  in: other
  max count: 1
  message: Athletic coaching exploitation must specify exactly one sport type from the allowed list.
  min count: 1
  path: sportType
rule: SPARQLRule
  construct: INSERT { $this a cacontology-athletic:TemporalInconsistencyError . } WHERE { $this cacontology-gufo:exploitationBeginTime ?begin . $this cacontology-gufo:exploitationEndTime ?end . FILTER(?end <= ?begin) }
  message: Exploitation end time must be after begin time
  prefixes: athletic#
  severity: Violation
target class: AthleticCoachingExploitation

Athletic Contact Escalation
type: Class
comment: Escalation of physical contact within legitimate athletic training context. Enhanced as gUFO Event.
subclass of: Event
subclass of: PhysicalContactEscalation

Athletic Exploitation Cross Reference Shape
type: NodeShape
comment: Enhanced validation that athletic coaching exploitation involves appropriate gUFO foundational entities.
sparql:
  message: Athletic coaching exploitation should involve gUFO Role coaches and occur in gUFO Object facilities.
  select: SELECT $this WHERE { $this a cacontology-athletic:AthleticCoachingExploitation . FILTER NOT EXISTS { { $this cacontology-athletic:holdsCoachingRole ?role . ?role a gufo:Role . } UNION { $this cacontology-athletic:occursInFacility ?facility . ?facility a gufo:Object . } } }
target class: AthleticCoachingExploitation

Athletic Exploitation Discovery Shape
type: NodeShape
comment: Enhanced validation shape for athletic exploitation discovery with gUFO Event validation.
property:
  has value: Event
  message: Athletic exploitation discovery must be instances of gUFO Event
  path: type
property:
  datatype: dateTime
  max count: 1
  message: Athletic exploitation discovery must specify begin time
  min count: 1
  path: discoveryBeginTime
property:
  datatype: dateTime
  max count: 1
  message: Athletic exploitation discovery may specify reporting time
  min count: 0
  path: reportingTime
target class: AthleticExploitationDiscovery

Athletic Facility Exploitation Shape
type: NodeShape
comment: Enhanced validation shape for athletic facility exploitation with gUFO Event validation and facility Object modeling.
property:
  has value: Event
  message: Athletic facility exploitation must be instances of gUFO Event
  path: type
property:
  datatype: string
  in: gym
  in: field
  in: court
  in: pool
  in: track
  in: locker_room
  in: training_room
  in: weight_room
  in: other
  max count: 1
  message: Facility type must be from the allowed list.
  min count: 1
  path: facilityType
rule: SPARQLRule
  construct: INSERT { $this a cacontology-athletic:FacilityAccessError . } WHERE { $this a cacontology-athletic:AthleticFacilityExploitation . $this cacontology-athletic:occursInFacility ?facility . FILTER NOT EXISTS { ?facility a gufo:Object . ?facility cacontology-athletic:facilityStatus "accessible" . } }
  message: Athletic facility exploitation must occur in verified and accessible facilities
  prefixes: athletic#
  severity: Violation
target class: AthleticFacilityExploitation

Athletic Facility Shape
type: NodeShape
comment: Enhanced validation shape for athletic facilities with gUFO Object validation.
property:
  has value: Object
  message: Athletic facilities must be instances of gUFO Object
  path: type
property:
  datatype: string
  max count: 1
  max length: 100
  message: Athletic facility must have a name (3-100 characters)
  min count: 1
  min length: 3
  path: name
target class: AthleticFacility

Athletic Field Exploitation
type: Class
comment: Exploitation on outdoor athletic fields, courts, and sports venues. Enhanced as gUFO Event.
subclass of: Event
subclass of: AthleticFacilityExploitation

Athletic Opportunity Threats
type: Class
comment: Threats to athletic opportunities, advancement, and sports career prospects. Enhanced as gUFO Situation.
subclass of: Situation
subclass of: TeamDynamicsExploitation

Authority Establishment Phase Shape
type: NodeShape
comment: SHACL shape for authority establishment phases with anti-rigid gUFO Phase validation.
property:
  has value: Phase
  message: Authority establishment phases must be instances of anti-rigid gUFO Phase
  path: type
rule: SPARQLRule
  construct: INSERT { $this a cacontology-athletic:PhaseSequenceError . } WHERE { $this a cacontology-athletic:AuthorityEstablishmentPhase . ?exploitation cacontology-athletic:currentPhase $this . FILTER NOT EXISTS { ?exploitation cacontology-athletic:previousPhase ?prev . ?prev a cacontology-athletic:GroomingPhase . } }
  message: Authority establishment phase should follow grooming phase
  prefixes: athletic#
  severity: Violation
target class: AuthorityEstablishmentPhase

Coaching Integrity Validation Shape
type: NodeShape
comment: Validation of coaching integrity for athletic exploitation cases.
sparql:
  message: Athletic coaching exploitation involving multiple athletes must have enhanced documentation
  select: SELECT $this WHERE { $this a cacontology-athletic:AthleticCoachingExploitation . $this cacontology-athletic:teamSize ?size . FILTER(?size > 10) FILTER NOT EXISTS { $this cacontology-athletic:hasEnhancedDocumentation ?documentation . ?documentation cacontology-athletic:documentationType "multi_victim_analysis" . } }
target class: AthleticCoachingExploitation

Community Based Reporting
type: Class
comment: Reporting through community and parent networks rather than direct victim disclosure. Enhanced as gUFO Event.
subclass of: Event
subclass of: AthleticExploitationDiscovery

Conditioning Coercion Shape
type: NodeShape
comment: Enhanced validation shape for conditioning coercion with gUFO Event validation.
property:
  datatype: string
  in: running_drills
  in: endurance_training
  in: strength_training
  in: agility_drills
  in: conditioning_circuits
  in: sprint_training
  in: cardio_exercises
  in: fitness_tests
  in: other
  max count: 1
  message: Conditioning coercion must specify exactly one conditioning type from the allowed list.
  min count: 1
  path: conditioningType
target class: ConditioningCoercion

Discovery Phase Shape
type: NodeShape
comment: SHACL shape for discovery phases with anti-rigid gUFO Phase validation.
rule: SPARQLRule
  construct: INSERT { $this a cacontology-athletic:DiscoveryMechanismError . } WHERE { $this a cacontology-athletic:DiscoveryPhase . ?exploitation cacontology-athletic:currentPhase $this . FILTER NOT EXISTS { ?exploitation cacontology-athletic:hasDiscoveryEvent ?discovery . ?discovery a cacontology-athletic:AthleticExploitationDiscovery . } }
  message: Discovery phase must involve documented discovery mechanism
  prefixes: athletic#
  severity: Violation
target class: DiscoveryPhase

Dual Coaching Role Exploitation Shape
type: NodeShape
comment: Enhanced validation shape for dual coaching role exploitation with gUFO Role multiplicity validation.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 10
  message: Dual coaching role exploitation must specify between 2 and 10 roles.
  min count: 1
  min inclusive: 2
  path: multipleRoles
rule: SPARQLRule
  construct: INSERT { $this a cacontology-athletic:DualRoleValidationError . } WHERE { $this a cacontology-athletic:DualCoachingRoleExploitation . { SELECT $this (COUNT(DISTINCT ?role) AS ?roleCount) WHERE { $this cacontology-athletic:holdsCoachingRole ?role . } GROUP BY $this } FILTER (?roleCount < 2) }
  message: Dual coaching role exploitation must involve at least 2 different coaching roles
  prefixes: athletic#
  severity: Violation
target class: DualCoachingRoleExploitation

Exercise Compliance Coercion
type: Class
comment: Exercise continuation contingent on sexual compliance and exposure demands. Enhanced as gUFO Event.
subclass of: Event
subclass of: PhysicalTrainingCoercion

Exhaustion Based Coercion Shape
type: NodeShape
comment: Enhanced validation shape for exhaustion-based coercion with gUFO Event validation.
property:
  datatype: string
  in: mild
  in: moderate
  in: severe
  in: extreme
  max count: 1
  message: Exhaustion level must be one of: mild, moderate, severe, extreme.
  min count: 1
  path: exhaustionLevel
target class: ExhaustionBasedCoercion

Exploitation Phase Shape
type: NodeShape
comment: SHACL shape for exploitation phases with anti-rigid gUFO Phase validation.
rule: SPARQLRule
  construct: INSERT { $this a cacontology-athletic:ExploitationReadinessError . } WHERE { $this a cacontology-athletic:ExploitationPhase . ?exploitation cacontology-athletic:currentPhase $this . FILTER NOT EXISTS { ?exploitation cacontology-athletic:previousPhase ?authPhase . ?authPhase a cacontology-athletic:AuthorityEstablishmentPhase . ?authPhase cacontology-athletic:phaseStatus "completed" . } }
  message: Exploitation phase must have established authority and coercion mechanisms
  prefixes: athletic#
  severity: Violation
target class: ExploitationPhase

gUFO Data Quality Shape
type: NodeShape
comment: Enhanced data quality validation for athletic exploitation gUFO entities with foundational ontology compliance.
rule: SPARQLRule
  construct: INSERT { $this a cacontology-athletic:FoundationalTypeError . } WHERE { { $this a ?exploitationType . ?exploitationType rdfs:subClassOf* cacontology-athletic:AthleticCoachingExploitation . FILTER NOT EXISTS { $this a gufo:Event . } } UNION { $this a ?roleType . ?roleType rdfs:subClassOf* cacontology-athletic:AthleticCoachRole . FILTER NOT EXISTS { $this a gufo:Role . } } UNION { $this a ?facilityType . ?facilityType rdfs:subClassOf* cacontology-athletic:AthleticFacility . FILTER NOT EXISTS { $this a gufo:Object . } } UNION { $this a ?situationType . ?situationType rdfs:subClassOf* cacontology-athletic:TeamBasedExploitation . FILTER NOT EXISTS { $this a gufo:Situation . } } }
  message: Athletic exploitation entities must be properly typed as gUFO foundational entities
  prefixes: athletic#
  severity: Violation
target class: AthleticCoachRole
target class: AthleticCoachingExploitation
target class: AthleticFacility
target class: TeamBasedExploitation

gUFO Temporal Validation Shape
type: NodeShape
comment: Enhanced temporal consistency validation for athletic exploitation gUFO Events using gUFO temporal framework.
sparql:
  message: gUFO Events must maintain temporal consistency with begin/end timepoints.
  select: SELECT $this WHERE { $this a gufo:Event . { { $this cacontology-gufo:exploitationBeginTime ?begin . $this cacontology-gufo:exploitationEndTime ?end . } UNION { $this cacontology-gufo:coercionBeginTime ?begin . $this cacontology-gufo:coercionEndTime ?end . } UNION { $this cacontology-gufo:escalationBeginTime ?begin . $this cacontology-gufo:escalationPeakTime ?end . } UNION { $this cacontology-gufo:discoveryBeginTime ?begin . $this cacontology-gufo:reportingTime ?end . } } FILTER (?begin >= ?end) }
target class: AthleticCoachingExploitation
target class: AthleticExploitationDiscovery
target class: PhysicalContactEscalation
target class: PhysicalTrainingCoercion

Grooming Phase Shape
type: NodeShape
comment: SHACL shape for grooming phases with anti-rigid gUFO Phase validation.
property:
  has value: Phase
  message: Grooming phases must be instances of anti-rigid gUFO Phase
  path: type
property:
  datatype: dateTime
  message: Phase may specify transition times
  min count: 0
  path: phaseTransitionTime
rule: SPARQLRule
  construct: INSERT { $this a cacontology-athletic:AntiRigidityError . } WHERE { $this a cacontology-athletic:GroomingPhase . FILTER NOT EXISTS { $this cacontology-gufo:hasAntiRigidityConstraint ?constraint . } }
  message: Grooming phases must demonstrate anti-rigidity (duration varies based on team dynamics)
  prefixes: athletic#
  severity: Violation
target class: GroomingPhase

Group Exploitation Dynamics
type: Class
comment: Exploitation using team group dynamics, peer pressure, and collective authority. Enhanced as gUFO Situation.
subclass of: Situation
subclass of: TeamDynamicsExploitation

Gym Exploitation
type: Class
comment: Exploitation in gymnasium and indoor athletic facilities. Enhanced as gUFO Event.
subclass of: Event
subclass of: AthleticFacilityExploitation

Head Coach Role Shape
type: NodeShape
comment: Enhanced validation shape for head coach roles with leadership gUFO Role validation.
rule: SPARQLRule
  construct: INSERT { $this a cacontology-athletic:LeadershipCompetencyError . } WHERE { $this a cacontology-athletic:HeadCoachRole . FILTER NOT EXISTS { $this cacontology-athletic:hasCompetency ?competency . ?competency cacontology-athletic:competencyType "team_leadership" . } }
  message: Head coach roles must demonstrate leadership competency
  prefixes: athletic#
  severity: Violation
target class: HeadCoachRole

Inappropriate Sexual Education
type: Class
comment: Use of sexual topics and education as exploitation method disguised as coaching. Enhanced as gUFO Event.
subclass of: Event
subclass of: SexualEducationExploitation

Institutional Employment Termination
type: Class
comment: Employment termination following discovery of athletic coaching exploitation. Enhanced as gUFO Event.
subclass of: Event
subclass of: Action
has temporal property: terminationTime

Institutional Oversight Validation Shape
type: NodeShape
comment: Validation of institutional oversight for school-based athletic exploitation.
sparql:
  message: School athletic exploitation must involve appropriate institutional oversight evaluation
  select: SELECT $this WHERE { $this a cacontology-athletic:SchoolAthleticExploitation . FILTER NOT EXISTS { $this cacontology-athletic:hasInstitutionalReview ?review . ?review cacontology-athletic:reviewType "oversight_evaluation" . } }
target class: SchoolAthleticExploitation

Legitimate Contact Exploitation
type: Class
comment: Exploitation of legitimate athletic physical contact for sexual purposes. Enhanced as gUFO Event.
subclass of: Event
subclass of: PhysicalContactEscalation

Locker Room Exploitation
type: Class
comment: Exploitation in locker rooms and changing areas with privacy expectations. Enhanced as gUFO Event.
subclass of: Event
subclass of: AthleticFacilityExploitation

Masturbation Discussion Exploitation
type: Class
comment: Exploitation through extensive masturbation discussions during athletic training. Enhanced as gUFO Event.
subclass of: Event
subclass of: SexualEducationExploitation

Material Benefit Coercion Shape
type: NodeShape
comment: Enhanced validation shape for material benefit coercion with gUFO Situation validation.
property:
  datatype: string
  in: equipment
  in: uniforms
  in: opportunities
  in: privileges
  in: scholarships
  in: awards
  in: recognition
  in: travel
  in: training
  in: other
  max count: 1
  message: Material benefit type must be from the allowed list.
  min count: 1
  path: materialBenefitType
target class: MaterialBenefitCoercion

Over Clothing to Under Clothing Escalation
type: Class
comment: Progression from over-clothing to under-clothing contact during athletic activities. Enhanced as gUFO Event.
subclass of: Event
subclass of: PhysicalContactEscalation

Parent Network Discovery Shape
type: NodeShape
comment: Enhanced validation shape for parent network discovery with gUFO Event validation.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 100
  message: Parent network size must be between 1 and 100.
  min count: 1
  min inclusive: 1
  path: parentNetworkSize
target class: ParentNetworkDiscovery

Phase Sequence Validation Shape
type: NodeShape
comment: Enhanced validation that athletic exploitation gUFO Events follow logical phase sequences.
sparql:
  message: Athletic exploitation should follow logical phase sequences with proper temporal ordering.
  select: SELECT $this WHERE { $this a cacontology-athletic:AthleticCoachingExploitation . $this cacontology-athletic:currentPhase ?currentPhase . $this cacontology-athletic:previousPhase ?prevPhase . ?currentPhase cacontology-gufo:phaseTransitionTime ?currentTime . ?prevPhase cacontology-gufo:phaseTransitionTime ?prevTime . FILTER (?currentTime <= ?prevTime) }
target class: AthleticCoachingExploitation

Physical Coercion Phase Shape
type: NodeShape
comment: SHACL shape for physical coercion phases with anti-rigid gUFO Phase validation.
rule: SPARQLRule
  construct: INSERT { $this a cacontology-athletic:CoercionDocumentationError . } WHERE { $this a cacontology-athletic:PhysicalCoercionPhase . ?exploitation cacontology-athletic:currentPhase $this . FILTER NOT EXISTS { ?exploitation cacontology-athletic:employsTrainingCoercion ?coercion . ?coercion a cacontology-athletic:PhysicalTrainingCoercion . } }
  message: Physical coercion phase must involve documented physical training coercion
  prefixes: athletic#
  severity: Violation
target class: PhysicalCoercionPhase

Physical Endurance Exploitation
type: Class
comment: Exploitation of physical endurance requirements and athletic performance demands. Enhanced as gUFO Event.
subclass of: Event
subclass of: PhysicalTrainingCoercion

Physical Training Coercion Shape
type: NodeShape
comment: Enhanced validation shape for physical training coercion with comprehensive gUFO Event validation.
property:
  has value: Event
  message: Physical training coercion must be instances of gUFO Event
  path: type
property:
  datatype: dateTime
  max count: 1
  message: Physical training coercion must specify begin time using gUFO temporal framework
  min count: 1
  path: coercionBeginTime
property:
  datatype: dateTime
  max count: 1
  message: Physical training coercion may specify end time using gUFO temporal framework
  min count: 0
  path: coercionEndTime
target class: PhysicalTrainingCoercion

Pubic Hair Focused Exploitation
type: Class
comment: Specific exploitation focused on pubic hair viewing and discussion. Enhanced as gUFO Event.
subclass of: Event
subclass of: SexualEducationExploitation

Rumor Circulation Discovery Shape
type: NodeShape
comment: Enhanced validation shape for rumor circulation discovery with gUFO Event validation.
property:
  datatype: decimal
  max count: 1
  max inclusive: 365.0
  message: Rumor circulation duration must be between 1 and 365 days.
  min count: 1
  min inclusive: 1.0
  path: rumorCirculationDuration
target class: RumorCirculationDiscovery

School Athletic Coach Role
type: Class
comment: Coaching role within school-based athletic programs with institutional authority. Enhanced as anti-rigid gUFO Role.
subclass of: Role
subclass of: AthleticCoachRole
has anti rigidity constraint: Role changes based on school policies and institutional oversight

School Based Investigation
type: Class
comment: Investigation initiated by educational institution following exploitation reports. Enhanced as gUFO Event.
subclass of: Event
subclass of: Investigation
has temporal property: investigationBeginTime
has temporal property: investigationEndTime

Sexual Topic Grooming
type: Class
comment: Grooming through inappropriate sexual discussions during athletic activities. Enhanced as gUFO Event.
subclass of: Event
subclass of: SexualEducationExploitation

Sports Context Physical Abuse
type: Class
comment: Physical abuse within sports training context disguised as coaching. Enhanced as gUFO Event.
subclass of: Event
subclass of: PhysicalContactEscalation

Team Based Exploitation Shape
type: NodeShape
comment: Enhanced validation shape for team-based exploitation with comprehensive gUFO Situation validation.
property:
  has value: Situation
  message: Team based exploitation must be instances of gUFO Situation
  path: type
rule: SPARQLRule
  construct: INSERT { $this a cacontology-athletic:TeamParticipationError . } WHERE { $this a cacontology-athletic:TeamBasedExploitation . { SELECT $this (COUNT(?member) AS ?memberCount) WHERE { $this cacontology-athletic:participatesInSituation ?member . } GROUP BY $this } FILTER(?memberCount < 2) }
  message: Team based exploitation must involve multiple team members
  prefixes: athletic#
  severity: Violation
target class: TeamBasedExploitation

Team Dynamics Validation Shape
type: NodeShape
comment: Enhanced validation that team-based exploitation involves appropriate gUFO Situation coordination.
sparql:
  message: Team based exploitation must involve gUFO Situation coordination with multiple participants.
  select: SELECT $this WHERE { $this a cacontology-athletic:TeamBasedExploitation . $this a gufo:Situation . { SELECT $this (COUNT(?participant) AS ?participantCount) WHERE { $this cacontology-athletic:participatesInSituation ?participant . } GROUP BY $this } FILTER (?participantCount < 2) }
target class: TeamBasedExploitation

Team Membership Coercion Shape
type: NodeShape
comment: Enhanced validation shape for team membership coercion with gUFO Situation validation.
property:
  datatype: string
  in: vague
  in: specific
  in: detailed
  in: explicit
  max count: 1
  message: Threat specificity must be one of: vague, specific, detailed, explicit.
  min count: 1
  path: threatSpecificity
target class: TeamMembershipCoercion

Team Selection Coercion
type: Class
comment: Use of team selection and roster decisions for sexual coercion and compliance. Enhanced as gUFO Situation.
subclass of: Situation
subclass of: TeamDynamicsExploitation

Training Based Touching
type: Class
comment: Inappropriate touching disguised as athletic training and coaching instruction. Enhanced as gUFO Event.
subclass of: Event
subclass of: PhysicalContactEscalation

Training Camp Exploitation
type: Class
comment: Exploitation during intensive training camps or extended athletic sessions. Enhanced as gUFO Event.
subclass of: Event
subclass of: AthleticFacilityExploitation
has temporal property: trainingCampBeginTime
has temporal property: trainingCampEndTime

Training Drill Coercion
type: Class
comment: Use of training drills and exercises for exploitation demands and sexual compliance. Enhanced as gUFO Event.
subclass of: Event
subclass of: PhysicalTrainingCoercion

Travel Team Coach Role Shape
type: NodeShape
comment: Enhanced validation shape for travel team coach roles with specialized gUFO Role validation.
rule: SPARQLRule
  construct: INSERT { $this a cacontology-athletic:TravelExperienceRecommendation . } WHERE { $this a cacontology-athletic:TravelTeamCoachRole . $this cacontology-athletic:coachingExperience ?experience . FILTER(?experience < 2.0) FILTER NOT EXISTS { $this cacontology-athletic:hasTravelTeamExperience ?travelExp . ?travelExp cacontology-athletic:experienceLevel "sufficient" . } }
  message: Travel team coaches should have appropriate travel team experience
  prefixes: athletic#
  severity: Warning
target class: TravelTeamCoachRole

Travel Team Exploitation Shape
type: NodeShape
comment: Enhanced validation shape for travel team exploitation with gUFO Event validation and enhanced authority modeling.
property:
  has value: travel
  message: Travel team exploitation must specify 'travel' as team type
  path: teamType
rule: SPARQLRule
  construct: INSERT { $this a cacontology-athletic:AuthorityDocumentationWarning . } WHERE { $this a cacontology-athletic:TravelTeamExploitation . FILTER NOT EXISTS { $this cacontology-athletic:holdsCoachingRole ?role . ?role cacontology-athletic:authorityLevel "enhanced" . } }
  message: Travel team exploitation should have enhanced coach authority documentation
  prefixes: athletic#
  severity: Violation
target class: TravelTeamExploitation

coaches team
type: ObjectProperty
comment: Links coach to team they coach. Enhanced with gUFO Role-Organization relationships.
domain: Person
range: Organization
has relationship constraint: Coaching relationship must be officially documented

has phase transition
type: ObjectProperty
comment: Links athletic exploitation to phase transition events.
domain: AthleticCoachingExploitation
range: Event

occurs in facility
type: ObjectProperty
comment: Links exploitation to athletic facility where it occurs. Enhanced with gUFO Object location.
domain: AthleticCoachingExploitation
range: Location
has relationship constraint: Facility must be verified and accessible

participates in situation
type: ObjectProperty
comment: Links entities to team dynamics situations they participate in.
range: TeamDynamicsExploitation

plays on team
type: ObjectProperty
comment: Links player to team they participate in. Enhanced with gUFO participation modeling.
domain: Person
range: Organization
has relationship constraint: Team participation must be verified through records

practice frequency
type: DatatypeProperty
comment: Frequency of practice sessions per week. Enhanced with gUFO Event frequency modeling.
domain: AthleticCoachingExploitation
range: decimal
has validation constraint: Practice frequency must be realistic for sport and age group

utilizes athletic space
type: ObjectProperty
comment: Links facility exploitation to specific athletic space used. Enhanced with gUFO Object utilization.
domain: AthleticFacilityExploitation
range: Location
has relationship constraint: Athletic space must be documented and accessible

Active Investigation Phase Shape
type: NodeShape
comment: SHACL shape for active investigation phases with anti-rigid gUFO Phase validation.
rule: SPARQLRule
  construct: INSERT { $this a cacontology-case:PhaseSequenceError . } WHERE { $this a cacontology-case:ActiveInvestigationPhase . ?caseManagement cacontology-case:currentPhase $this . FILTER NOT EXISTS { ?caseManagement cacontology-case:previousPhase ?prev . ?prev a cacontology-case:CaseInitiationPhase . } }
  message: Active investigation phase should follow case initiation phase
  prefixes: case-management#
  severity: Violation
target class: ActiveInvestigationPhase

Administrative Review
type: Class
comment: Administrative review of case management, resource allocation, and procedural compliance. Enhanced as gUFO Event.
comment: gUFO Event: Administrative review processes with procedural evaluation.
subclass of: Event
subclass of: CaseReview

Analyst Assignment
type: Class
comment: Assignment of analysts for data analysis, intelligence gathering, and technical support. Enhanced as gUFO Event linking to anti-rigid gUFO Role.
comment: gUFO Event: Analyst assignment processes with analytical responsibilities.
subclass of: Event
subclass of: CaseAssignment

Anti-Rigidity Validation Shape
type: NodeShape
comment: Validation of anti-rigidity constraints for gUFO Phases in case management contexts.
sparql:
  message: Anti-rigid phases must demonstrate changeability based on case management context
  select: SELECT $this WHERE { $this a gufo:Phase . { { $this a cacontology-case:CaseInitiationPhase . } UNION { $this a cacontology-case:ActiveInvestigationPhase . } UNION { $this a cacontology-case:ProsecutionPreparationPhase . } UNION { $this a cacontology-case:CourtProceedingsPhase . } UNION { $this a cacontology-case:DispositionPhase . } } FILTER NOT EXISTS { $this cacontology-gufo:hasAntiRigidityConstraint ?constraint . } }
target class: ActiveInvestigationPhase
target class: CaseInitiationPhase
target class: CourtProceedingsPhase
target class: DispositionPhase
target class: ProsecutionPreparationPhase

Arrest Warrant
type: Class
comment: Legal documentation for arrest warrants including applications, approvals, and execution records. Enhanced as gUFO Object.
comment: gUFO Object: Arrest warrant documents with legal authorization properties.
subclass of: Object
subclass of: CaseDocumentation

Case Analyst Role
type: Class
comment: Role responsible for case analysis, intelligence gathering, and data processing. Enhanced as anti-rigid gUFO Role.
comment: gUFO Role (Anti-Rigid): Analyst roles with flexible specialization based on case needs.
subclass of: Role
has anti rigidity constraint: Role specialization varies based on case type and analytical requirements

Case Assignment Shape
type: NodeShape
comment: Enhanced validation shape for case assignment with comprehensive gUFO Event validation and Role relationships.
property:
  has value: Event
  message: Case assignment must be instances of gUFO Event
  path: type
property:
  datatype: dateTime
  max count: 1
  message: Case assignment must specify begin time using gUFO temporal framework
  min count: 1
  path: assignmentBeginTime
property:
  datatype: dateTime
  max count: 1
  message: Case assignment may specify end time using gUFO temporal framework
  min count: 0
  path: assignmentEndTime
property:
  datatype: string
  in: primary_investigator
  in: secondary_investigator
  in: lead_detective
  in: analyst
  in: supervisor
  in: prosecutor
  max count: 1
  message: Case assignment must specify assignment type from the allowed list.
  min count: 1
  path: assignmentType
property:
  class: Role
  message: Case assignment may specify assigned gUFO Role
  min count: 0
  path: assignedToRole
target class: CaseAssignment

Case Documentation Shape
type: NodeShape
comment: Enhanced validation shape for case documentation with gUFO Object validation.
property:
  has value: Object
  message: Case documentation must be instances of gUFO Object
  path: type
property:
  datatype: string
  in: case_report
  in: evidence_log
  in: interview_notes
  in: search_warrant
  in: arrest_warrant
  in: court_filing
  in: expert_report
  max count: 1
  message: Case documentation must specify document type from the allowed list.
  min count: 1
  path: documentType
property:
  datatype: string
  in: draft
  in: review
  in: approved
  in: filed
  in: sealed
  in: archived
  in: destroyed
  max count: 1
  message: Case documentation must specify document status from the allowed list.
  min count: 1
  path: documentStatus
target class: CaseDocumentation

Case Duration Metrics
type: Class
comment: Metrics tracking case duration from opening to closure across different stages. Enhanced as gUFO Object.
comment: gUFO Object: Duration metrics with measurable temporal characteristics.
subclass of: Object
subclass of: CaseMetrics

Case Initiation Phase Shape
type: NodeShape
comment: SHACL shape for case initiation phases with anti-rigid gUFO Phase validation.
property:
  has value: Phase
  message: Case initiation phases must be instances of anti-rigid gUFO Phase
  path: type
property:
  datatype: dateTime
  message: Phase may specify transition times
  min count: 0
  path: phaseTransitionTime
rule: SPARQLRule
  construct: INSERT { $this a cacontology-case:AntiRigidityError . } WHERE { $this a cacontology-case:CaseInitiationPhase . FILTER NOT EXISTS { $this cacontology-gufo:hasAntiRigidityConstraint ?constraint . } }
  message: Case initiation phases must demonstrate anti-rigidity (duration varies based on case complexity)
  prefixes: case-management#
  severity: Violation
target class: CaseInitiationPhase

Case Management Cross Reference Shape
type: NodeShape
comment: Enhanced validation that case management involves appropriate gUFO foundational entities.
sparql:
  message: Case management should involve gUFO Role assignments, Event workflows, and Object documentation.
  select: SELECT $this WHERE { $this a cacontology-case:CaseManagement . FILTER NOT EXISTS { { $this cacontology-case:hasAssignment ?assignment . ?assignment a gufo:Event . } UNION { $this cacontology-case:followsWorkflow ?workflow . ?workflow a gufo:Event . } UNION { $this cacontology-case:hasDocumentation ?doc . ?doc a gufo:Object . } } }
target class: CaseManagement

Case Management Shape
type: NodeShape
comment: Enhanced validation shape for case management with comprehensive gUFO Object validation.
property:
  has value: Object
  message: Case management must be instances of gUFO Object
  path: type
property:
  datatype: string
  in: critical
  in: high
  in: medium
  in: low
  in: routine
  in: administrative
  max count: 1
  message: Case management must specify case priority from the allowed list.
  min count: 1
  path: casePriority
property:
  class: Phase
  max count: 1
  message: Case management may specify current operational phase
  min count: 0
  path: currentPhase
property:
  datatype: string
  in: open
  in: active
  in: pending
  in: suspended
  in: closed
  in: archived
  in: transferred
  in: merged
  max count: 1
  message: Case management must specify case status from the allowed list.
  min count: 1
  path: caseStatus
rule: SPARQLRule
  construct: INSERT { $this a cacontology-case:ObjectConsistencyError . } WHERE { $this a cacontology-case:CaseManagement . FILTER NOT EXISTS { $this a gufo:Object . $this cacontology-case:caseStatus ?status . $this cacontology-case:casePriority ?priority . } }
  message: Case management must have proper gUFO Object properties
  prefixes: case-management#
  severity: Violation
target class: CaseManagement

Case Manager Role Shape
type: NodeShape
comment: Enhanced validation shape for case manager roles with anti-rigid gUFO Role validation.
property:
  has value: Role
  message: Case manager roles must be instances of anti-rigid gUFO Role
  path: type
rule: SPARQLRule
  construct: INSERT { $this a cacontology-case:RoleCompetencyError . } WHERE { $this a cacontology-case:CaseManagerRole . FILTER NOT EXISTS { $this cacontology-case:hasCompetency ?competency . ?competency cacontology-case:competencyType "case_management" . } }
  message: Case manager roles must have appropriate management competency
  prefixes: case-management#
  severity: Violation
target class: CaseManagerRole

Case Prosecutor Role
type: Class
comment: Role responsible for legal review, charging decisions, and prosecution activities. Enhanced as anti-rigid gUFO Role.
comment: gUFO Role (Anti-Rigid): Prosecutor roles with flexible involvement based on case legal requirements.
subclass of: Role
has anti rigidity constraint: Role involvement varies based on case legal complexity and jurisdiction

Case Report
type: Class
comment: Formal case report documenting investigation findings, evidence, and recommendations. Enhanced as gUFO Object.
comment: gUFO Object: Case report documents with measurable characteristics and content properties.
subclass of: Object
subclass of: CaseDocumentation

Case Review Shape
type: NodeShape
comment: Enhanced validation shape for case review with gUFO Event validation.
property:
  has value: Event
  message: Case review must be instances of gUFO Event
  path: type
property:
  datatype: dateTime
  max count: 1
  message: Case review must specify begin time
  min count: 1
  path: reviewBeginTime
property:
  datatype: dateTime
  max count: 1
  message: Case review may specify end time
  min count: 0
  path: reviewEndTime
property:
  datatype: string
  in: supervisory_review
  in: peer_review
  in: quality_assurance
  in: legal_review
  in: administrative_review
  in: external_review
  max count: 1
  message: Case review must specify review type from the allowed list.
  min count: 1
  path: reviewType
target class: CaseReview

Case Workflow Shape
type: NodeShape
comment: Enhanced validation shape for case workflow with comprehensive gUFO Event validation.
property:
  has value: Event
  message: Case workflow must be instances of gUFO Event
  path: type
property:
  datatype: dateTime
  max count: 1
  message: Case workflow must specify begin time using gUFO temporal framework
  min count: 1
  path: workflowBeginTime
property:
  datatype: dateTime
  max count: 1
  message: Case workflow may specify end time using gUFO temporal framework
  min count: 0
  path: workflowEndTime
property:
  datatype: string
  in: intake
  in: initial_review
  in: investigation
  in: evidence_analysis
  in: prosecution_review
  in: court_proceedings
  in: disposition
  max count: 1
  message: Case workflow must specify workflow stage from the allowed list.
  min count: 1
  path: workflowStage
rule: SPARQLRule
  construct: INSERT { $this a cacontology-case:TemporalInconsistencyError . } WHERE { $this cacontology-gufo:workflowBeginTime ?begin . $this cacontology-gufo:workflowEndTime ?end . FILTER(?end <= ?begin) }
  message: Workflow end time must be after begin time
  prefixes: case-management#
  severity: Violation
target class: CaseWorkflow

Cold Case Management
type: Class
comment: Management protocols for cold cases including periodic review and new evidence integration. Enhanced as gUFO Situation for cold case coordination.
comment: gUFO Situation: Cold case coordination contexts with periodic review cycles and evidence reanalysis.
subclass of: Situation
subclass of: CaseManagement

Complex Case Management
type: Class
comment: Specialized management for complex cases involving multiple offenses, victims, or extensive evidence. Enhanced as gUFO Situation for complexity coordination.
comment: gUFO Situation: Complex coordination contexts with multiple participants and evidence management requirements.
subclass of: Situation
subclass of: CaseManagement

Cost Per Case Metrics
type: Class
comment: Financial metrics tracking costs associated with case investigation and prosecution. Enhanced as gUFO Object.
comment: gUFO Object: Cost metrics with financial measurement properties.
subclass of: Object
subclass of: CaseMetrics

Court Filing
type: Class
comment: Legal documents filed with courts including motions, briefs, and procedural filings. Enhanced as gUFO Object.
comment: gUFO Object: Court filing documents with legal procedural properties.
subclass of: Object
subclass of: CaseDocumentation

Evidence Log
type: Class
comment: Comprehensive log of all evidence collected, analyzed, and maintained for the case. Enhanced as gUFO Object.
comment: gUFO Object: Evidence log documents with systematic tracking properties.
subclass of: Object
subclass of: CaseDocumentation

Expert Report
type: Class
comment: Expert analysis reports including forensic findings, psychological evaluations, and technical assessments. Enhanced as gUFO Object.
comment: gUFO Object: Expert report documents with analytical and assessment properties.
subclass of: Object
subclass of: CaseDocumentation

External Review
type: Class
comment: External review by independent parties for oversight, audit, or specialized expertise. Enhanced as gUFO Event.
comment: gUFO Event: External review processes with independent evaluation.
subclass of: Event
subclass of: CaseReview

gUFO Data Quality Shape
type: NodeShape
comment: Enhanced data quality validation for case management gUFO entities with foundational ontology compliance.
rule: SPARQLRule
  construct: INSERT { $this a cacontology-case:FoundationalTypeError . } WHERE { { $this a ?managementType . ?managementType rdfs:subClassOf* cacontology-case:CaseManagement . FILTER NOT EXISTS { $this a gufo:Object . } } UNION { $this a ?workflowType . ?workflowType rdfs:subClassOf* cacontology-case:CaseWorkflow . FILTER NOT EXISTS { $this a gufo:Event . } } UNION { $this a ?assignmentType . ?assignmentType rdfs:subClassOf* cacontology-case:CaseAssignment . FILTER NOT EXISTS { $this a gufo:Event . } } UNION { $this a ?docType . ?docType rdfs:subClassOf* cacontology-case:CaseDocumentation . FILTER NOT EXISTS { $this a gufo:Object . } } UNION { $this a ?reviewType . ?reviewType rdfs:subClassOf* cacontology-case:CaseReview . FILTER NOT EXISTS { $this a gufo:Event . } } }
  message: Case management entities must be properly typed as gUFO foundational entities
  prefixes: case-management#
  severity: Violation
target class: CaseAssignment
target class: CaseDocumentation
target class: CaseManagement
target class: CaseReview
target class: CaseWorkflow

gUFO Temporal Validation Shape
type: NodeShape
comment: Enhanced temporal consistency validation for case management gUFO Events using gUFO temporal framework.
sparql:
  message: gUFO Events must maintain temporal consistency with begin/end timepoints.
  select: SELECT $this WHERE { $this a gufo:Event . { { $this cacontology-gufo:workflowBeginTime ?begin . $this cacontology-gufo:workflowEndTime ?end . } UNION { $this cacontology-gufo:assignmentBeginTime ?begin . $this cacontology-gufo:assignmentEndTime ?end . } UNION { $this cacontology-gufo:reviewBeginTime ?begin . $this cacontology-gufo:reviewEndTime ?end . } UNION { $this cacontology-gufo:closureBeginTime ?begin . $this cacontology-gufo:closureTime ?end . } } FILTER (?begin >= ?end) }
target class: CaseAssignment
target class: CaseClosure
target class: CaseReview
target class: CaseWorkflow

High Priority Case Management
type: Class
comment: Enhanced management protocols for critical and high-priority cases requiring expedited processing. Enhanced as gUFO Situation for priority coordination.
comment: gUFO Situation: High-priority coordination contexts with enhanced resource allocation and expedited procedures.
subclass of: Situation
subclass of: CaseManagement

Intake Workflow Shape
type: NodeShape
comment: Enhanced validation shape for intake workflow with gUFO Event validation and specialized temporal modeling.
property:
  datatype: dateTime
  max count: 1
  message: Intake workflow must specify intake begin time
  min count: 1
  path: intakeBeginTime
property:
  datatype: dateTime
  max count: 1
  message: Intake workflow may specify triage completion time
  min count: 0
  path: triageCompletionTime
target class: IntakeWorkflow

Interview Notes
type: Class
comment: Documentation of interviews conducted with victims, witnesses, and suspects. Enhanced as gUFO Object.
comment: gUFO Object: Interview documentation with content and temporal properties.
subclass of: Object
subclass of: CaseDocumentation

Lead Investigator Role
type: Class
comment: Primary investigator role with leadership responsibilities for case investigation. Enhanced as anti-rigid gUFO Role.
comment: gUFO Role (Anti-Rigid): Lead investigator roles with flexible authority based on case requirements.
subclass of: Role
has anti rigidity constraint: Role scope varies based on case complexity and team structure

Legal Review
type: Class
comment: Legal review of case materials, procedures, and prosecution readiness. Enhanced as gUFO Event.
comment: gUFO Event: Legal review processes with prosecutorial evaluation.
subclass of: Event
subclass of: CaseReview

Multi Jurisdictional Case Management Shape
type: NodeShape
comment: Enhanced validation shape for multi-jurisdictional case management with gUFO Situation validation.
property:
  has value: Situation
  message: Multi-jurisdictional case management must be instances of gUFO Situation
  path: type
rule: SPARQLRule
  construct: INSERT { $this a cacontology-case:JurisdictionCoordinationError . } WHERE { $this a cacontology-case:MultiJurisdictionalCaseManagement . { SELECT $this (COUNT(?jurisdiction) AS ?jurisdictionCount) WHERE { $this cacontology-case:participatesInManagement ?jurisdiction . ?jurisdiction a cacontology-case:JurisdictionalEntity . } GROUP BY $this } FILTER(?jurisdictionCount < 2) }
  message: Multi-jurisdictional case management must involve multiple jurisdictions
  prefixes: case-management#
  severity: Violation
target class: MultiJurisdictionalCaseManagement

Peer Review
type: Class
comment: Peer review process for case methodology, analysis, and conclusions. Enhanced as gUFO Event.
comment: gUFO Event: Peer review processes with collaborative evaluation.
subclass of: Event
subclass of: CaseReview

Primary Investigator Assignment
type: Class
comment: Lead investigator assignment with primary responsibility for case management and coordination. Enhanced as gUFO Event linking to anti-rigid gUFO Role.
comment: gUFO Event: Primary investigator assignment processes with leadership responsibilities.
subclass of: Event
subclass of: InvestigatorAssignment

Prosecutor Assignment
type: Class
comment: Assignment of prosecutors for legal review, charging decisions, and court representation. Enhanced as gUFO Event linking to anti-rigid gUFO Role.
comment: gUFO Event: Prosecutor assignment processes with legal responsibilities.
subclass of: Event
subclass of: CaseAssignment

Quality Assurance Review
type: Class
comment: Systematic quality assurance review ensuring compliance with standards and procedures. Enhanced as gUFO Event.
comment: gUFO Event: Quality assurance processes with compliance evaluation.
subclass of: Event
subclass of: CaseReview

Quality Score Metrics
type: Class
comment: Quality assessment metrics evaluating case management effectiveness and outcomes. Enhanced as gUFO Object.
comment: gUFO Object: Quality metrics with assessment measurement properties.
subclass of: Object
subclass of: CaseMetrics

Resolution Rate Metrics
type: Class
comment: Metrics tracking case resolution rates including conviction and closure statistics. Enhanced as gUFO Object.
comment: gUFO Object: Resolution metrics with statistical measurement properties.
subclass of: Object
subclass of: CaseMetrics

Resource Utilization Metrics
type: Class
comment: Metrics tracking resource allocation and utilization efficiency across cases. Enhanced as gUFO Object.
comment: gUFO Object: Resource metrics with efficiency measurement properties.
subclass of: Object
subclass of: CaseMetrics

Search Warrant
type: Class
comment: Legal documentation for search warrants including applications, approvals, and execution records. Enhanced as gUFO Object.
comment: gUFO Object: Legal warrant documents with authorization and execution properties.
subclass of: Object
subclass of: CaseDocumentation

Secondary Investigator Assignment
type: Class
comment: Supporting investigator assignment providing specialized skills or additional resources. Enhanced as gUFO Event linking to anti-rigid gUFO Role.
comment: gUFO Event: Secondary investigator assignment processes with supporting responsibilities.
subclass of: Event
subclass of: InvestigatorAssignment

Supervisor Assignment
type: Class
comment: Supervisory assignment for case oversight, quality assurance, and administrative guidance. Enhanced as gUFO Event linking to anti-rigid gUFO Role.
comment: gUFO Event: Supervisor assignment processes with oversight responsibilities.
subclass of: Event
subclass of: CaseAssignment

Supervisory Review
type: Class
comment: Formal supervisory review of case progress, decisions, and quality standards. Enhanced as gUFO Event.
comment: gUFO Event: Supervisory review processes with evaluation outcomes.
subclass of: Event
subclass of: CaseReview

Workflow Integrity Validation Shape
type: NodeShape
comment: Validation of workflow integrity for case management.
sparql:
  message: Case management involving multiple phases must have enhanced coordination documentation
  select: SELECT $this WHERE { $this a cacontology-case:CaseManagement . { SELECT $this (COUNT(?phase) AS ?phaseCount) WHERE { $this cacontology-case:currentPhase ?phase . } GROUP BY $this } FILTER(?phaseCount > 3) FILTER NOT EXISTS { $this cacontology-case:hasEnhancedDocumentation ?documentation . ?documentation cacontology-case:documentationType "multi_phase_coordination" . } }
target class: CaseManagement

access level
type: DatatypeProperty
comment: Access level for case information (public, restricted, confidential, classified, need_to_know, compartmented).
domain: CaseTracking
range: string

appeal status
type: DatatypeProperty
comment: Status of any appeals (no_appeal, appeal_pending, appeal_denied, appeal_granted, remanded, overturned).
domain: CaseClosure
range: string

approved by
type: ObjectProperty
comment: Links documentation to approving authority.
domain: CaseDocumentation
range: Person

archival date
type: DatatypeProperty
comment: Date when case materials were archived.
domain: CaseClosure
range: dateTime

archived at
type: ObjectProperty
comment: Links case closure to archival location.
domain: CaseClosure
range: UcoObject

assigned by
type: ObjectProperty
comment: Links assignment to assigning authority.
domain: CaseAssignment
range: Person

assigned investigator
type: DatatypeProperty
comment: Name or identifier of the assigned investigator.
domain: CaseManagement
range: string

assigned to
type: ObjectProperty
comment: Links assignment to assigned personnel.
domain: CaseAssignment
range: Person

assignment date
type: DatatypeProperty
comment: Date when the assignment was made.
domain: CaseAssignment
range: dateTime

assignment status
type: DatatypeProperty
comment: Status of the assignment (active, inactive, transferred, completed, suspended, terminated).
domain: CaseAssignment
range: string

benchmark value
type: DatatypeProperty
comment: Benchmark or target value for the metric.
domain: CaseMetrics
range: decimal

benchmarked against
type: ObjectProperty
comment: Links metrics to benchmark standards.
domain: CaseMetrics
range: CaseMetrics

case close date
type: DatatypeProperty
comment: Date when the case was officially closed.
domain: CaseManagement
range: dateTime

case open date
type: DatatypeProperty
comment: Date when the case was officially opened.
domain: CaseManagement
range: dateTime

case type
type: DatatypeProperty
comment: Type of case (possession, distribution, production, trafficking, exploitation, grooming, sextortion, multi_offense).
domain: CaseManagement
range: string

caseload count
type: DatatypeProperty
comment: Number of active cases assigned to the investigator.
domain: InvestigatorAssignment
range: nonNegativeInteger

certification level
type: DatatypeProperty
comment: Certification level of the investigator (basic, intermediate, advanced, expert, specialized, master).
domain: InvestigatorAssignment
range: string

classification level
type: DatatypeProperty
comment: Security classification level (unclassified, law_enforcement_sensitive, confidential, restricted, classified, top_secret).
domain: CaseDocumentation
range: string

closed by
type: ObjectProperty
comment: Links case closure to closing authority.
domain: CaseClosure
range: Person

closure date
type: DatatypeProperty
comment: Date when the case was closed.
domain: CaseClosure
range: dateTime

closure reason
type: DatatypeProperty
comment: Reason for case closure (conviction, plea_agreement, dismissal, insufficient_evidence, statute_limitations, death_of_suspect, administrative_closure).
domain: CaseClosure
range: string

conducts review
type: ObjectProperty
comment: Links reviewer to review process.
domain: Person
range: CaseReview

creation date
type: DatatypeProperty
comment: Date when the document was created.
domain: CaseDocumentation
range: dateTime

documented by
type: ObjectProperty
comment: Links documentation to creating personnel.
domain: CaseDocumentation
range: Person

final disposition
type: DatatypeProperty
comment: Final legal disposition (guilty_verdict, not_guilty_verdict, plea_guilty, plea_no_contest, charges_dropped, case_dismissed, no_charges_filed).
domain: CaseClosure
range: string

follows stage
type: ObjectProperty
comment: Links workflow stage to preceding stage.
domain: CaseWorkflow
range: CaseWorkflow

follows workflow
type: ObjectProperty
comment: Links case to workflow stages and processes. Enhanced with gUFO Event sequence modeling.
domain: CaseManagement
range: CaseWorkflow
has relationship constraint: Workflow relationship must maintain temporal consistency

generates metrics
type: ObjectProperty
comment: Links case to performance metrics and analytics.
domain: CaseManagement
range: CaseMetrics

has assignment
type: ObjectProperty
comment: Links case to personnel assignments. Enhanced with gUFO Role assignment relationships.
domain: CaseManagement
range: CaseAssignment
has relationship constraint: Assignment relationship must be active and verified

has documentation
type: ObjectProperty
comment: Links case to associated documentation.
domain: CaseManagement
range: CaseDocumentation

has phase transition
type: ObjectProperty
comment: Links case management to phase transition events.
domain: CaseManagement
range: Event

holds role
type: ObjectProperty
comment: Links person to case management role they hold. Enhanced with gUFO Role assignment.
domain: Person
range: Role
has relationship constraint: Role assignment must be active and verified

investigator experience
type: DatatypeProperty
comment: Years of experience of the assigned investigator.
domain: InvestigatorAssignment
range: decimal

jurisdiction level
type: DatatypeProperty
comment: Level of jurisdiction (local, state, federal, multi_state, international, joint_jurisdiction).
domain: CaseManagement
range: string

last modified
type: DatatypeProperty
comment: Date when the document was last modified.
domain: CaseDocumentation
range: dateTime

last update
type: DatatypeProperty
comment: Date and time of the last update to case tracking.
domain: CaseTracking
range: dateTime

manages case
type: ObjectProperty
comment: Links case management to specific investigations. Enhanced with gUFO Object-Event relationships.
domain: CaseManagement
range: Investigation
has relationship constraint: Case management relationship must be officially documented

measurement unit
type: DatatypeProperty
comment: Unit of measurement (days, hours, percentage, count, dollars, score, ratio).
domain: CaseMetrics
range: string

measures performance
type: ObjectProperty
comment: Links metrics to performance measurement targets.
domain: CaseMetrics
range: UcoObject

metric type
type: DatatypeProperty
comment: Type of metric (case_duration, resolution_rate, conviction_rate, resource_utilization, cost_per_case, quality_score).
domain: CaseMetrics
range: string

metric value
type: DatatypeProperty
comment: Numerical value of the metric.
domain: CaseMetrics
range: decimal

participates in management
type: ObjectProperty
comment: Links entities to case management situations they participate in.
range: CaseManagement

precedes stage
type: ObjectProperty
comment: Links workflow stage to subsequent stage.
domain: CaseWorkflow
range: CaseWorkflow

recommendations count
type: DatatypeProperty
comment: Number of recommendations made during the review.
domain: CaseReview
range: nonNegativeInteger

reporting period
type: DatatypeProperty
comment: Period for metric reporting (daily, weekly, monthly, quarterly, annually, case_based).
domain: CaseMetrics
range: string

results in closure
type: ObjectProperty
comment: Links case to closure information and final disposition.
domain: CaseManagement
range: CaseClosure

retention period
type: DatatypeProperty
comment: Document retention period in days.
domain: CaseDocumentation
range: decimal

review date
type: DatatypeProperty
comment: Date when the review was conducted.
domain: CaseReview
range: dateTime

review outcome
type: DatatypeProperty
comment: Outcome of the review (approved, approved_with_conditions, requires_revision, rejected, escalated, deferred).
domain: CaseReview
range: string

reviewed by
type: ObjectProperty
comment: Links documentation to reviewing personnel.
domain: CaseDocumentation
range: Person

reviewer role
type: DatatypeProperty
comment: Role of the reviewer (supervisor, senior_investigator, prosecutor, legal_counsel, quality_assurance, external_expert).
domain: CaseReview
range: string

reviews case
type: ObjectProperty
comment: Links review to case being reviewed.
domain: CaseReview
range: CaseManagement

specialization
type: DatatypeProperty
comment: Area of specialization (digital_forensics, undercover_operations, victim_services, legal_analysis, technical_analysis, general_investigation).
domain: CaseAssignment
range: string

stage duration
type: DatatypeProperty
comment: Duration of the workflow stage in days.
domain: CaseWorkflow
range: decimal

stage end date
type: DatatypeProperty
comment: Date when the workflow stage ended.
domain: CaseWorkflow
range: dateTime

stage outcome
type: DatatypeProperty
comment: Outcome of the workflow stage (completed, pending, escalated, transferred, suspended, terminated).
domain: CaseWorkflow
range: string

stage start date
type: DatatypeProperty
comment: Date when the workflow stage began.
domain: CaseWorkflow
range: dateTime

supervised by
type: ObjectProperty
comment: Links assignment to supervising personnel.
domain: CaseAssignment
range: Person

tracked by
type: ObjectProperty
comment: Links case to tracking systems and processes.
domain: CaseManagement
range: CaseTracking

tracking number
type: DatatypeProperty
comment: Unique tracking number for the case.
domain: CaseTracking
range: string

tracking system
type: DatatypeProperty
comment: System used for tracking (local_system, state_system, federal_system, ncmec_system, multi_system, custom_system).
domain: CaseTracking
range: string

undergoes review
type: ObjectProperty
comment: Links case to review processes.
domain: CaseManagement
range: CaseReview

update frequency
type: DatatypeProperty
comment: Frequency of updates (real_time, daily, weekly, bi_weekly, monthly, as_needed).
domain: CaseTracking
range: string

workload percentage
type: DatatypeProperty
comment: Percentage of workload allocated to this assignment.
domain: CaseAssignment
range: decimal

Active Custody Phase Shape
type: NodeShape
comment: Validates active custody phases.
property:
  message: Active custody phase must have begin point
  min count: 1
  path: hasCustodyBeginPoint
target class: ActiveCustodyPhase

Authority Abuse
type: SubKind
type: Class
comment: Abuse of authority position to exploit or harm children. Modeled as gUFO SubKind with authority relationship violations.
subclass of: TrustViolation

gUFO Authority Figure Shape
type: NodeShape
comment: Validates authority figures as anti-rigid gUFO roles.
property:
  has value: Role
  message: Authority figure must be typed as gUFO Role (anti-rigid sortal)
  min count: 1
  path: type
target class: AuthorityFigure

Authority Position Shape
type: NodeShape
comment: Validation shape for authority position instances.
property:
  datatype: string
  in: educational
  in: religious
  in: recreational
  in: medical
  in: legal
  in: social_services
  in: family
  in: community
  max count: 1
  message: Authority position must specify position type from the allowed list.
  min count: 1
  path: positionType
property:
  datatype: string
  in: low
  in: moderate
  in: high
  in: absolute
  in: institutional
  in: legal
  max count: 1
  message: Authority position must specify authority level from the allowed list.
  min count: 1
  path: authorityLevel
property:
  datatype: decimal
  max count: 1
  max inclusive: 50.0
  message: Position duration must be between 0 and 50 years.
  min count: 0
  min inclusive: 0.0
  path: positionDuration
target class: AuthorityPosition

Authority Role Exclusivity Shape
type: NodeShape
comment: Validates authority role exclusivity constraints.
sparql:
  message: Person cannot simultaneously hold conflicting authority roles in same custodial context
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/custodial#
      prefix: cacontology-custodial
  select: SELECT ?this WHERE { ?this cacontology-custodial:hasAuthority ?role1 ; cacontology-custodial:hasAuthority ?role2 . ?role1 a cacontology-custodial:Guardian . ?role2 a cacontology-custodial:Teacher . ?custodialRel1 cacontology-custodial:involvesCustodian ?this . ?custodialRel2 cacontology-custodial:involvesCustodian ?this . ?custodialRel1 cacontology-custodial:involvesChild ?child . ?custodialRel2 cacontology-custodial:involvesChild ?child . FILTER (?role1 != ?role2) }
target class: Person

Authorization Process Shape
type: NodeShape
comment: Validation shape for authorization process instances.
property:
  datatype: string
  in: employment
  in: volunteer
  in: contractor
  in: temporary
  in: emergency
  in: provisional
  in: full
  max count: 1
  message: Authorization process must specify authorization type from the allowed list.
  min count: 1
  path: authorizationType
property:
  datatype: string
  in: pending
  in: approved
  in: denied
  in: suspended
  in: revoked
  in: expired
  in: conditional
  max count: 1
  message: Authorization process must specify status from the allowed list.
  min count: 1
  path: authorizationStatus
target class: AuthorizationProcess

Babysitter
type: Role
type: Class
comment: Individual temporarily caring for children in parents' absence. Modeled as anti-rigid gUFO Role with temporary scope.
subclass of: AuthorityFigure

Background Check Shape
type: NodeShape
comment: Validation shape for background check instances.
property:
  datatype: string
  in: criminal_history
  in: employment_verification
  in: reference_check
  in: education_verification
  in: comprehensive
  in: basic
  in: enhanced
  max count: 1
  message: Background check must specify check type from the allowed list.
  min count: 1
  path: checkType
property:
  datatype: string
  in: passed
  in: failed
  in: conditional
  in: pending
  in: incomplete
  in: expired
  max count: 1
  message: Background check must specify result from the allowed list.
  min count: 1
  path: checkResult
property:
  datatype: dateTime
  max count: 1
  message: Background check must specify check date.
  min count: 1
  path: checkDate
property:
  datatype: dateTime
  max count: 1
  message: Background check may have an expiration date.
  min count: 0
  path: expirationDate
target class: BackgroundCheck

Background Check Validity Shape
type: NodeShape
comment: Validates background check temporal consistency.
sparql:
  message: Check date must be before expiration date when both are specified.
  select: SELECT $this WHERE { $this cacontology-custodial:checkDate ?checkDate ; cacontology-custodial:expirationDate ?expiration . FILTER (?checkDate >= ?expiration) }
target class: BackgroundCheck

Breach of Care
type: SubKind
type: Class
comment: Failure to provide appropriate care while in custodial role. Modeled as gUFO SubKind with care obligation failures.
subclass of: TrustViolation

Caregiver Relationship Shape
type: NodeShape
comment: Validation shape for caregiver relationship instances.
property:
  datatype: string
  in: full_care
  in: partial_care
  in: supervision
  in: transportation
  in: educational_support
  in: medical_care
  in: temporary_care
  in: emergency_care
  max count: 1
  message: Caregiver relationship must specify caregiving responsibilities from the allowed list.
  min count: 1
  path: caregivingResponsibilities
property:
  datatype: string
  in: constant
  in: frequent
  in: periodic
  in: minimal
  in: none
  in: as_needed
  max count: 1
  message: Caregiver relationship must specify supervision level from the allowed list.
  min count: 1
  path: supervisionLevel
target class: CaregiverRelationship

Childcare Provider
type: Role
type: Class
comment: Professional childcare or daycare provider. Modeled as anti-rigid gUFO Role with professional care obligations.
subclass of: AuthorityFigure

Coach
type: Role
type: Class
comment: Sports or activity coach with authority over young participants. Modeled as anti-rigid gUFO Role with activity-based authority.
subclass of: AuthorityFigure

Custodial Abuse
type: SubKind
type: Class
comment: Abuse committed by someone in custodial or caregiving role. Modeled as gUFO SubKind of TrustViolation with role-based context.
subclass of: TrustViolation

Custodial Crisis Situation
type: Class
comment: Emergency situation requiring immediate custodial intervention. Modeled as gUFO Situation with crisis characteristics.
subclass of: Situation

Custodial Cross Reference Shape
type: NodeShape
comment: Validates cross-references between custodial relationships and related entities.
sparql:
  message: Custodial relationship must involve both a custodian and a child.
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/custodial#
      prefix: cacontology-custodial
  select: SELECT ?this WHERE { ?this a cacontology-custodial:CustodialRelationship . FILTER NOT EXISTS { ?this cacontology-custodial:involvesCustodian ?custodian ; cacontology-custodial:involvesChild ?child . } }
target class: CustodialRelationship

Custodial gUFO Foundational Type Consistency Shape
type: NodeShape
comment: Validates proper gUFO foundational typing for custodial entities.
sparql:
  message: All custodial gUFO entities must have proper foundational typing
  prefixes:
    declare:
      namespace: http://purl.org/nemo/gufo#
      prefix: gufo
    declare:
      namespace: https://cacontology.projectvic.org/custodial#
      prefix: cacontology-custodial
  select: PREFIX gufo: <http://purl.org/nemo/gufo#> PREFIX cacontology-custodial: <https://cacontology.projectvic.org/custodial#> SELECT ?entity WHERE { { ?entity a cacontology-custodial:CustodialRelationship . FILTER NOT EXISTS { ?entity a gufo:Object . } } UNION { ?entity a cacontology-custodial:PositionOfTrust . FILTER NOT EXISTS { ?entity a gufo:Role . } } UNION { ?entity a cacontology-custodial:TrustViolation . FILTER NOT EXISTS { ?entity a gufo:Event . } } UNION { ?entity a cacontology-custodial:ActiveCustodyPhase . FILTER NOT EXISTS { ?entity a gufo:Phase . } } }
target node: CustodialRelationship

Custodial Participation Shape
type: NodeShape
comment: Validates coherent participation in custodial relationships.
sparql:
  message: Custodial relationship must have coherent role and event participation
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/custodial#
      prefix: cacontology-custodial
    declare:
      namespace: http://purl.org/nemo/gufo#
      prefix: gufo
  select: SELECT ?this WHERE { ?this cacontology-custodial:involvesCustodian ?custodian . ?custodian cacontology-custodial:hasAuthority ?authorityRole . FILTER NOT EXISTS { ?authorityRole a gufo:Role . } }
target class: CustodialRelationship

gUFO Custodial Relationship Shape
type: NodeShape
comment: Validates custodial relationship instances with gUFO foundational constraints.
property:
  has value: Kind
  message: Custodial relationship must be typed as gUFO Kind
  min count: 1
  path: type
property:
  has value: Object
  message: Custodial relationship must be typed as gUFO Object
  min count: 1
  path: type
property:
  datatype: dateTimeStamp
  max count: 1
  message: Custodial relationship can have at most one begin point
  path: hasCustodyBeginPoint
property:
  datatype: dateTimeStamp
  max count: 1
  message: Custodial relationship can have at most one end point
  path: hasCustodyEndPoint
property:
  class: Phase
  max count: 1
  message: Custodial relationship must be in exactly one phase
  min count: 1
  path: inCustodyPhase
sparql:
  message: Custody begin point must precede end point
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/custodial#
      prefix: cacontology-custodial
  select: PREFIX cacontology-custodial: <https://cacontology.projectvic.org/custodial#> SELECT ?this WHERE { ?this cacontology-custodial:hasCustodyBeginPoint ?begin ; cacontology-custodial:hasCustodyEndPoint ?end . FILTER (?begin >= ?end) }
target class: CustodialRelationship

Custodial Relationship Shape
type: NodeShape
comment: Validation shape for custodial relationship instances.
property:
  datatype: string
  in: none
  in: minimal
  in: moderate
  in: high
  in: complete
  in: absolute
  max count: 1
  message: Custodial relationship must specify trust level from the allowed list.
  min count: 1
  path: trustLevel
property:
  datatype: string
  in: none
  in: supervised
  in: limited_unsupervised
  in: unsupervised
  in: unrestricted
  in: unsupervised_opportunity
  max count: 1
  message: Custodial relationship must specify access level from the allowed list.
  min count: 1
  path: accessLevel
property:
  datatype: decimal
  max count: 1
  max inclusive: 50.0
  message: Relationship duration must be between 0 and 50 years.
  min count: 0
  min inclusive: 0.0
  path: relationshipDuration
property:
  datatype: dateTime
  max count: 1
  message: Custodial relationship may have a start time.
  min count: 0
  path: startTime
property:
  datatype: dateTime
  max count: 1
  message: Custodial relationship may have an end time.
  min count: 0
  path: endTime
property:
  datatype: string
  in: parent
  in: guardian
  in: babysitter
  in: teacher
  in: coach
  in: mentor
  in: caregiver
  in: family_friend
  in: relative
  in: foster_parent
  in: step_parent
  in: neighbor
  max count: 1
  message: Custodial relationship must specify type from the allowed list.
  min count: 1
  path: relationshipType
target class: CustodialRelationship

gUFO Custodial Situation Shape
type: NodeShape
comment: Validates custodial situations with gUFO constraints.
property:
  has value: Situation
  message: Custodial situation must be typed as gUFO Situation
  min count: 1
  path: type
target class: Situation

Custodial Temporal Consistency Shape
type: NodeShape
comment: Validates temporal consistency across custodial relationships and events.
sparql:
  message: Trust violations must occur within active custody timeframe
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/custodial#
      prefix: cacontology-custodial
  select: SELECT ?this WHERE { ?this cacontology-custodial:hasCustodyBeginPoint ?custodyBegin ; cacontology-custodial:hasCustodyEndPoint ?custodyEnd . ?violation cacontology-custodial:violatesRelationship ?this ; cacontology-custodial:hasViolationBeginPoint ?violationBegin . FILTER (?violationBegin < ?custodyBegin || ?violationBegin > ?custodyEnd) }
target class: CustodialRelationship

gUFO Custody Phase Shape
type: NodeShape
comment: Validates custody phases as anti-rigid gUFO phases.
property:
  has value: Phase
  message: Custody phase must be typed as gUFO Phase (anti-rigid sortal)
  min count: 1
  path: type
sparql:
  message: Custody phases must follow valid transition sequence
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/custodial#
      prefix: cacontology-custodial
  select: PREFIX cacontology-custodial: <https://cacontology.projectvic.org/custodial#> SELECT ?this WHERE { ?relationship cacontology-custodial:hasCustodyPhase ?this ; cacontology-custodial:hasCustodyPhase ?nextPhase . ?this cacontology-custodial:precedesCustodyPhase ?nextPhase ; cacontology-custodial:hasCustodyEndPoint ?end1 . ?nextPhase cacontology-custodial:hasCustodyBeginPoint ?begin2 . FILTER (?end1 > ?begin2) }
target class: Phase

Data Quality Shape
type: NodeShape
comment: Validates data quality for custodial relationships.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Label should be between 5 and 200 characters when provided.
  min count: 0
  min length: 5
  path: label
property:
  datatype: string
  max count: 1
  max length: 1000
  message: Comment should be between 10 and 1000 characters when provided.
  min count: 0
  min length: 10
  path: comment
target class: CustodialRelationship

Emergency Custody
type: Phase
type: Class
comment: Temporary custody arrangement due to emergency circumstances. Modeled as anti-rigid gUFO Phase with crisis response characteristics.
subclass of: CustodyArrangement

Familial Relationship
type: SubKind
type: Class
comment: Family-based relationship with natural or assumed custodial responsibilities. Modeled as gUFO SubKind with inherent care obligations.
subclass of: CustodialRelationship

Family Friend
type: Role
type: Class
comment: Friend of family with trusted access to children. Modeled as anti-rigid gUFO Role with social trust basis.
subclass of: AuthorityFigure

Formal Custody
type: SubKind
type: Class
comment: Legally established custody arrangement with court orders or official documentation. Modeled as gUFO SubKind with legal foundation.
subclass of: CustodyArrangement

Guardian
type: Role
type: Class
comment: Legal or appointed guardian responsible for child's welfare. Modeled as anti-rigid gUFO Role with legal authority.
subclass of: AuthorityFigure

Informal Custody
type: SubKind
type: Class
comment: Informal custody arrangement without legal documentation. Modeled as gUFO SubKind with social agreement basis.
subclass of: CustodyArrangement

InvolvesChildShape
type: PropertyShape
class: Person
description: Links custodial relationship to child
max count: 1
min count: 1
name: involves child
path: involvesChild

InvolvesCustodianShape
type: PropertyShape
class: Person
description: Links custodial relationship to custodian
max count: 1
min count: 1
name: involves custodian
path: involvesCustodian

Mentor
type: Role
type: Class
comment: Adult mentor or role model with trusted relationship with child. Modeled as anti-rigid gUFO Role with developmental basis.
subclass of: AuthorityFigure

Neighbor Relationship Shape
type: NodeShape
comment: Validation shape for neighbor relationship instances.
property:
  datatype: string
  in: same_building
  in: same_floor
  in: adjacent_unit
  in: same_block
  in: same_neighborhood
  in: nearby
  max count: 1
  message: Neighbor relationship must specify residential proximity from the allowed list.
  min count: 1
  path: residentialProximity
property:
  datatype: string
  in: daily
  in: weekly
  in: monthly
  in: occasional
  in: rare
  in: regular
  in: irregular
  max count: 1
  message: Access frequency must be from the allowed list.
  min count: 0
  path: accessFrequency
target class: NeighborRelationship

gUFO Position of Trust Shape
type: NodeShape
comment: Validates position of trust with gUFO anti-rigid role constraints.
property:
  has value: Role
  message: Position of trust must be typed as gUFO Role (anti-rigid sortal)
  min count: 1
  path: type
property:
  datatype: dateTimeStamp
  max count: 1
  message: Position of trust can have at most one begin point
  path: hasRoleBeginPoint
property:
  datatype: dateTimeStamp
  max count: 1
  message: Position of trust can have at most one end point
  path: hasRoleEndPoint
sparql:
  message: Role begin point must precede end point
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/custodial#
      prefix: cacontology-custodial
  select: PREFIX cacontology-custodial: <https://cacontology.projectvic.org/custodial#> SELECT ?this WHERE { ?this cacontology-custodial:hasRoleBeginPoint ?begin ; cacontology-custodial:hasRoleEndPoint ?end . FILTER (?begin >= ?end) }
target class: PositionOfTrust

Position of Trust Shape
type: NodeShape
comment: Validation shape for position of trust instances.
property:
  datatype: string
  in: institutional
  in: professional
  in: personal
  in: legal
  in: community
  in: religious
  in: educational
  max count: 1
  message: Position of trust must specify trust basis from the allowed list.
  min count: 1
  path: trustBasis
property:
  datatype: string
  in: limited
  in: moderate
  in: broad
  in: comprehensive
  in: absolute
  max count: 1
  message: Position of trust must specify trust scope from the allowed list.
  min count: 1
  path: trustScope
target class: PositionOfTrust

Probationary Custody Phase
type: Phase
type: Class
comment: Phase when custodial relationship is under evaluation or supervision. Modeled as anti-rigid gUFO Phase.
subclass of: CustodialRelationship

Professional Care Relationship
type: SubKind
type: Class
comment: Professional relationship involving child care or supervision duties. Modeled as gUFO SubKind with professional obligations.
subclass of: CustodialRelationship

Relative
type: Role
type: Class
comment: Family member in position of trust or authority over child. Modeled as anti-rigid gUFO Role with familial basis.
subclass of: AuthorityFigure

RequiresAuthorizationShape
type: PropertyShape
class: AuthorizationProcess
description: Links position to required authorization
min count: 0
name: requires authorization
path: requiresAuthorization

Residential Proximity Access Shape
type: NodeShape
comment: Validation shape for residential proximity access instances.
property:
  datatype: string
  in: same_floor
  in: same_building
  in: adjacent_building
  in: same_complex
  in: same_street
  in: same_block
  max count: 1
  message: Proximity access must specify proximity type from the allowed list.
  min count: 1
  path: proximityType
property:
  datatype: string
  in: apartment_building
  in: condominium
  in: townhouse
  in: single_family
  in: duplex
  in: mobile_home
  in: dormitory
  max count: 1
  message: Building type must be from the allowed list.
  min count: 0
  path: buildingType
target class: ResidentialProximityAccess

ResultsInSupervisionFailureShape
type: PropertyShape
class: SupervisionFailure
description: Links abuse to supervision failure
min count: 0
name: results in supervision failure
path: resultsInSupervisionFailure

SubjectToBackgroundCheckShape
type: PropertyShape
class: BackgroundCheck
description: Links person to background check
min count: 0
name: subject to background check
path: subjectToBackgroundCheck

Supervision Breakdown Situation
type: Class
comment: Situation where supervision systems have failed or become inadequate. Modeled as gUFO Situation with system failure characteristics.
subclass of: Situation

Supervision Failure Shape
type: NodeShape
comment: Validation shape for supervision failure instances.
property:
  datatype: string
  in: inadequate_oversight
  in: absent_supervision
  in: negligent_supervision
  in: failed_monitoring
  in: policy_violation
  in: procedural_failure
  max count: 1
  message: Supervision failure must specify failure type from the allowed list.
  min count: 1
  path: failureType
property:
  datatype: string
  in: minor
  in: moderate
  in: severe
  in: critical
  in: catastrophic
  max count: 1
  message: Supervision failure must specify severity from the allowed list.
  min count: 1
  path: failureSeverity
property:
  datatype: string
  max count: 1
  max length: 500
  message: Contributing factors should be between 10 and 500 characters when provided.
  min count: 0
  min length: 10
  path: contributingFactors
target class: SupervisionFailure

Suspended Custody Phase
type: Phase
type: Class
comment: Phase when custodial relationship is temporarily suspended but not terminated. Modeled as anti-rigid gUFO Phase.
subclass of: CustodialRelationship

Teacher
type: Role
type: Class
comment: Educational professional with authority over students. Modeled as anti-rigid gUFO Role with institutional authority.
subclass of: AuthorityFigure

Temporal Validation Shape
type: NodeShape
comment: Validates temporal consistency in custodial relationships.
sparql:
  message: Start time must be before end time when both are specified.
  select: SELECT $this WHERE { $this uco-core:startTime ?start ; uco-core:endTime ?end . FILTER (?start >= ?end) }
target class: CustodialRelationship

Temporary Custody
type: Phase
type: Class
comment: Short-term custody arrangement or supervision of a child. Modeled as anti-rigid gUFO Phase with temporal boundaries.
subclass of: CustodialRelationship

Terminated Custody Phase Shape
type: NodeShape
comment: Validates terminated custody phases.
property:
  message: Terminated custody phase must have end point
  min count: 1
  path: hasCustodyEndPoint
target class: TerminatedCustodyPhase

Trust Breach Situation Shape
type: NodeShape
comment: Validates trust breach situations.
sparql:
  message: Trust breach situation must be created by trust violation event
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/custodial#
      prefix: cacontology-custodial
  select: SELECT ?this WHERE { ?this a cacontology-custodial:TrustBreachSituation . FILTER NOT EXISTS { ?violation a cacontology-custodial:TrustViolation ; cacontology-custodial:createsCustodialSituation ?this . } }
target class: TrustBreachSituation

Trust Level Consistency Shape
type: NodeShape
comment: Validates trust level consistency in violations.
sparql:
  message: Trust level after violation should not be higher than before violation.
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/custodial#
      prefix: cacontology-custodial
  select: SELECT ?this WHERE { ?this cacontology-custodial:trustLevelBefore ?before ; cacontology-custodial:trustLevelAfter ?after . FILTER ( (?before = "none" && ?after IN ("minimal", "moderate", "high", "complete", "absolute")) || (?before = "minimal" && ?after IN ("moderate", "high", "complete", "absolute")) || (?before = "moderate" && ?after IN ("high", "complete", "absolute")) || (?before = "high" && ?after IN ("complete", "absolute")) || (?before = "complete" && ?after = "absolute") ) }
target class: TrustViolation

gUFO Trust Violation Shape
type: NodeShape
comment: Validates trust violations as gUFO events with temporal boundaries.
property:
  has value: Event
  message: Trust violation must be typed as gUFO Event
  min count: 1
  path: type
property:
  datatype: dateTimeStamp
  max count: 1
  message: Trust violation can have at most one begin point
  path: hasViolationBeginPoint
property:
  datatype: dateTimeStamp
  max count: 1
  message: Trust violation can have at most one end point
  path: hasViolationEndPoint
property:
  class: AuthorityFigure
  message: Trust violation must be perpetrated by authority figure
  min count: 1
  path: perpetratedBy
sparql:
  message: Violation begin point must precede end point
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/custodial#
      prefix: cacontology-custodial
  select: PREFIX cacontology-custodial: <https://cacontology.projectvic.org/custodial#> SELECT ?this WHERE { ?this cacontology-custodial:hasViolationBeginPoint ?begin ; cacontology-custodial:hasViolationEndPoint ?end . FILTER (?begin >= ?end) }
target class: TrustViolation

Trust Violation Shape
type: NodeShape
comment: Validation shape for trust violation instances.
property:
  datatype: string
  in: minor
  in: moderate
  in: severe
  in: extreme
  in: catastrophic
  max count: 1
  message: Trust violation must specify severity from the allowed list.
  min count: 1
  path: violationSeverity
property:
  datatype: string
  in: none
  in: minimal
  in: moderate
  in: high
  in: complete
  in: absolute
  max count: 1
  message: Trust level before violation must be from the allowed list.
  min count: 0
  path: trustLevelBefore
property:
  datatype: string
  in: none
  in: minimal
  in: moderate
  in: high
  in: complete
  in: absolute
  max count: 1
  message: Trust level after violation must be from the allowed list.
  min count: 0
  path: trustLevelAfter
property:
  datatype: string
  in: exploitation
  in: abuse
  in: neglect
  in: abandonment
  in: betrayal
  in: manipulation
  in: coercion
  max count: 1
  message: Trust violation must specify violation type from the allowed list.
  min count: 1
  path: violationType
target class: TrustViolation

ViolatesPositionShape
type: PropertyShape
class: PositionOfTrust
description: Links abuse to position of trust violated
min count: 0
name: violates position
path: violatesPosition

Visitation Arrangement
type: SubKind
type: Class
comment: Scheduled visitation or contact arrangement with child. Modeled as gUFO SubKind with temporal scheduling patterns.
subclass of: CustodyArrangement

Vulnerability Exposure Situation
type: Class
comment: Situation where child vulnerability factors create elevated risk. Modeled as gUFO Situation with protection need characteristics.
subclass of: Situation

aggravating factor
type: ObjectProperty
comment: Links trust violation to criminal offense as aggravating factor. Enhanced with gUFO causal patterns.
domain: TrustViolation
range: Crime

authority scope
type: DatatypeProperty
comment: Scope of authority (physical_care, educational, medical, financial, legal).
domain: PositionOfTrust
range: string

authorization level
type: DatatypeProperty
comment: Level of authorization granted (basic, intermediate, full, emergency).
domain: CustodialAuthorization
range: string

breach duration
type: DatatypeProperty
comment: Duration of trust violation in days.
domain: TrustViolation
range: integer

check scope
type: DatatypeProperty
comment: Scope of background check (criminal, employment, reference, comprehensive).
domain: BackgroundCheck
range: string

check status
type: DatatypeProperty
comment: Status of background check (passed, failed, pending, waived).
domain: BackgroundCheck
range: string

consent scope
type: DatatypeProperty
comment: Scope of activities covered by consent (general_care, specific_activities, emergency_care).
domain: ParentalConsent
range: string

consent status
type: DatatypeProperty
comment: Status of parental consent (given, withdrawn, conditional, disputed).
domain: ParentalConsent
range: string

creates custodial situation
type: ObjectProperty
comment: Links custodial event to situation it creates or modifies. Enhanced with gUFO causation patterns.
domain: TrustViolation
range: Situation
sub property of: createsSituation

custody duration
type: DatatypeProperty
comment: Duration of custody arrangement in days.
domain: CustodyArrangement
range: integer

custody schedule
type: DatatypeProperty
comment: Schedule or pattern of custody (weekdays, weekends, alternating, specific_dates).
domain: CustodyArrangement
range: string

custody type
type: DatatypeProperty
comment: Type of custody (legal, physical, joint, sole, temporary).
domain: CustodyArrangement
range: string

has authority
type: ObjectProperty
comment: Links authority figure to their authority position. Enhanced with gUFO role patterns.
domain: Person
range: AuthorityFigure

has custody phase
type: ObjectProperty
comment: Links custodial relationship to all phases it has experienced. Enhanced with gUFO phase history.
domain: CustodialRelationship
range: Phase
sub property of: hasPhase

holds position of
type: ObjectProperty
comment: Links individual to position of trust or authority they hold. Enhanced with gUFO role instantiation patterns.
domain: Person
range: PositionOfTrust

involves parent
type: ObjectProperty
comment: Links custodial arrangement to the parent or legal guardian. Enhanced with gUFO participation patterns.
domain: CustodyArrangement
range: Person
sub property of: participatedIn

occurs in custodial situation
type: ObjectProperty
comment: Links custodial event to situation in which it occurs. Enhanced with gUFO situation modeling.
domain: TrustViolation
range: Situation
sub property of: occursInSituation

relationship frequency
type: DatatypeProperty
comment: Frequency of contact or care (daily, weekly, monthly, occasional).
domain: CustodialRelationship
range: string

relationship intimacy
type: DatatypeProperty
comment: Level of closeness in relationship (distant, moderate, close, very_close).
domain: CustodialRelationship
range: string

relevant to investigation
type: ObjectProperty
comment: Links custodial relationship to ICAC investigation. Enhanced with gUFO relevance patterns.
domain: CustodialRelationship
range: Investigation

subject to
type: ObjectProperty
comment: Links child to authority figure who has control over them. Enhanced with gUFO role relationships.
domain: Person
range: AuthorityFigure

violates relationship
type: ObjectProperty
comment: Links trust violation to the custodial relationship that was violated. Enhanced with gUFO event impact patterns.
domain: TrustViolation
range: CustodialRelationship

violation pattern
type: DatatypeProperty
comment: Pattern of violation (isolated, repeated, escalating, systematic).
domain: TrustViolation
range: string

vulnerability factor
type: DatatypeProperty
comment: Factors that increase child's vulnerability (isolation, dependency, trust, fear).
domain: CustodialRelationship
range: string

gUFO Automated Detection Action Shape
type: NodeShape
comment: Validates automated detection action instances with gUFO Event constraints.
property:
  has value: Event
  message: Automated detection action must be typed as gUFO Event
  min count: 1
  path: type
property:
  datatype: dateTime
  max count: 1
  message: Automated detection action must specify start time
  min count: 1
  path: startTime
property:
  class: MachineLearningDetectionTool
  max count: 1
  message: Automated detection action must specify the ML tool used
  min count: 1
  path: instrument
property:
  datatype: decimal
  max count: 1
  max inclusive: 1.0
  message: Confidence score must be between 0.0 and 1.0
  min count: 0
  min inclusive: 0.0
  path: confidenceScore
target class: AutomatedDetectionAction

COPINE Classification gUFO Shape
type: NodeShape
comment: Validates COPINE classification concept instances with gUFO enhancements.
property:
  max count: 1
  max length: 100
  message: COPINE classification must have a preferred label (5-100 characters)
  min count: 1
  min length: 5
  path: prefLabel
property:
  max count: 1
  max length: 500
  message: COPINE classification must have a definition (10-500 characters)
  min count: 1
  min length: 10
  path: definition
property:
  has value: COPINEClassificationScheme
  max count: 1
  message: COPINE classification must be in the COPINE Classification Scheme
  min count: 1
  path: inScheme
target node: copine-1
target node: copine-10
target node: copine-4
target node: copine-7
target node: copine-8

Classification Action Result Cross Reference Shape
type: NodeShape
comment: Validates that classification actions produce classification results.
sparql:
  message: Manual classification action should produce classification results
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/detection#
      prefix: cacontology-detection
  select: SELECT ?this WHERE { ?this a cacontology-detection:ManualClassificationAction . FILTER NOT EXISTS { ?this uco-action:result ?result . ?result a cacontology-detection:ClassificationResult . } }
target class: ManualClassificationAction

Classification Result Object Shape
type: NodeShape
comment: Validates classification result instances with gUFO Object constraints.
property:
  has value: Object
  message: Classification result must be typed as gUFO Object
  min count: 1
  path: type
property:
  datatype: dateTime
  max count: 1
  message: Classification result must specify creation time
  min count: 1
  path: createdTime
property:
  datatype: integer
  max count: 1
  max inclusive: 25
  message: Age estimate must be between 0 and 25 years when specified
  min count: 0
  min inclusive: 0
  path: ageEstimate
property:
  datatype: integer
  max count: 1
  max inclusive: 5
  message: Tanner stage must be between 1 and 5 when specified
  min count: 0
  min inclusive: 1
  path: tannerStage
target class: ClassificationResult

gUFO Classification Scheme Shape
type: NodeShape
comment: Validates classification schemes as gUFO Objects.
property:
  has value: Object
  message: Classification scheme must be typed as gUFO Object
  min count: 1
  path: type
target class: COPINEClassificationScheme
target class: SARClassificationScheme
target class: TannerScaleScheme

Confidence Score Validation Shape
type: NodeShape
comment: Validates confidence score consistency and reasonableness.
sparql:
  message: High confidence scores should correlate with positive detection decisions
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/detection#
      prefix: cacontology-detection
  select: PREFIX cacontology-detection: <https://cacontology.projectvic.org/detection#> SELECT ?this WHERE { ?this cacontology-detection:confidenceScore ?score ; cacontology-detection:reviewDecision "false_positive" . FILTER (?score > 0.8) }
target class: AutomatedDetectionAction
target class: DetectionResult

gUFO Content Hashing Action Shape
type: NodeShape
comment: Validates content hashing action instances with gUFO Event constraints.
property:
  has value: Event
  message: Content hashing action must be typed as gUFO Event
  min count: 1
  path: type
property:
  datatype: dateTime
  max count: 1
  message: Content hashing action must specify start time
  min count: 1
  path: startTime
property:
  class: ContentHashingTool
  max count: 1
  message: Content hashing action must specify the hashing tool used
  min count: 1
  path: instrument
target class: ContentHashingAction

gUFO Content Hashing Tool Shape
type: NodeShape
comment: Validates content hashing tool instances with gUFO foundational constraints.
property:
  has value: Object
  message: Content hashing tool must be typed as gUFO Object
  min count: 1
  path: type
property:
  datatype: string
  max count: 1
  message: Tool version must follow semantic versioning pattern (e.g., '1.0', '2.1.3')
  min count: 0
  path: version
  pattern: ^[0-9]+\.[0-9]+(\.[0-9]+)?$
target class: ContentHashingTool

Database Match Input Cross Reference Shape
type: NodeShape
comment: Validates that database match actions have hash inputs.
sparql:
  message: Database match action should have hash inputs for comparison
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/detection#
      prefix: cacontology-detection
  select: PREFIX cacontology-detection: <https://cacontology.projectvic.org/detection#> PREFIX uco-action: <https://ontology.unifiedcyberontology.org/uco/action/> PREFIX uco-types: <https://ontology.unifiedcyberontology.org/uco/types/> SELECT ?this WHERE { ?this a cacontology-detection:DatabaseMatchAction . FILTER NOT EXISTS { ?this uco-action:object ?hash . ?hash a ?hashType . FILTER (?hashType IN ( cacontology-detection:PhotoDNAHash, cacontology-detection:PerceptualHash, uco-types:Hash )) } }
target class: DatabaseMatchAction

gUFO Detection Action Shape
type: NodeShape
comment: Validates detection actions as gUFO Events with temporal boundaries.
property:
  datatype: dateTimeStamp
  max count: 1
  message: Detection action can have at most one end point
  path: hasDetectionEndPoint
property:
  has value: Event
  message: Detection action must be typed as gUFO Event
  min count: 1
  path: type
property:
  datatype: dateTimeStamp
  max count: 1
  message: Detection action can have at most one begin point
  path: hasDetectionBeginPoint
sparql:
  message: Detection begin point must precede end point
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/detection#
      prefix: cacontology-detection
  select: PREFIX cacontology-detection: <https://cacontology.projectvic.org/detection#> SELECT ?this WHERE { ?this cacontology-detection:hasDetectionBeginPoint ?begin ; cacontology-detection:hasDetectionEndPoint ?end . FILTER (?begin >= ?end) }
target class: AutomatedDetectionAction
target class: ContentHashingAction
target class: DatabaseMatchAction
target class: FalsePositiveAnalysisAction
target class: ManualClassificationAction
target class: RiskStratificationAction

Detection Action Result Cross Reference Shape
type: NodeShape
comment: Validates that detection actions produce appropriate results.
sparql:
  message: Automated detection action should produce detection results
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/detection#
      prefix: cacontology-detection
  select: PREFIX cacontology-detection: <https://cacontology.projectvic.org/detection#> PREFIX uco-action: <https://ontology.unifiedcyberontology.org/uco/action/> SELECT ?this WHERE { ?this a cacontology-detection:AutomatedDetectionAction . FILTER NOT EXISTS { ?this uco-action:result ?result . ?result a cacontology-detection:DetectionResult . } }
target class: AutomatedDetectionAction

Detection Data Quality Shape
type: NodeShape
comment: Validates data quality for detection tool entities.
property:
  datatype: string
  max count: 1
  max length: 100
  message: Tool name must be between 2 and 100 characters
  min count: 1
  min length: 2
  path: name
property:
  datatype: string
  max count: 1
  max length: 1000
  message: Tool description should be between 10 and 1000 characters when provided
  min count: 0
  min length: 10
  path: description
target class: ContentHashingTool
target class: DatabaseMatchingTool
target class: MachineLearningDetectionTool
target class: ManualReviewTool

Detection gUFO Foundational Type Consistency Shape
type: NodeShape
comment: Validates proper gUFO foundational typing for detection entities.
sparql:
  message: All detection gUFO entities must have proper foundational typing
  prefixes:
    declare:
      namespace: http://purl.org/nemo/gufo#
      prefix: gufo
    declare:
      namespace: https://cacontology.projectvic.org/detection#
      prefix: cacontology-detection
  select: PREFIX gufo: <http://purl.org/nemo/gufo#> PREFIX cacontology-detection: <https://cacontology.projectvic.org/detection#> SELECT ?entity WHERE { { ?entity a cacontology-detection:ContentHashingTool . FILTER NOT EXISTS { ?entity a gufo:Object . } } UNION { ?entity a cacontology-detection:AutomatedDetectionAction . FILTER NOT EXISTS { ?entity a gufo:Event . } } UNION { ?entity a cacontology-detection:ContentAnalystRole . FILTER NOT EXISTS { ?entity a gufo:Role . } } UNION { ?entity a cacontology-detection:InitialDetectionPhase . FILTER NOT EXISTS { ?entity a gufo:Phase . } } UNION { ?entity a cacontology-detection:DetectionResult . FILTER NOT EXISTS { ?entity a gufo:Object . } } }
target node: ContentHashingTool

gUFO Detection Phase Shape
type: NodeShape
comment: Validates detection phases as anti-rigid gUFO phases.
property:
  has value: Phase
  message: Detection phase must be typed as gUFO Phase (anti-rigid sortal)
  min count: 1
  path: type
property:
  datatype: dateTimeStamp
  max count: 1
  message: Detection phase can have at most one begin point
  path: hasPhaseBeginPoint
property:
  datatype: dateTimeStamp
  max count: 1
  message: Detection phase can have at most one end point
  path: hasPhaseEndPoint
sparql:
  message: Phase begin point must precede end point
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/detection#
      prefix: cacontology-detection
  select: SELECT ?this WHERE { ?this cacontology-detection:hasPhaseBeginPoint ?begin ; cacontology-detection:hasPhaseEndPoint ?end . FILTER (?begin >= ?end) }
target class: HashComparisonPhase
target class: InitialDetectionPhase
target class: ManualReviewPhase
target class: ReportingPhase
target class: ValidationPhase

Detection Phase Sequence Shape
type: NodeShape
comment: Validates proper sequencing of detection phases.
sparql:
  message: Detection phases must follow logical workflow sequence
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/detection#
      prefix: cacontology-detection
  select: PREFIX cacontology-detection: <https://cacontology.projectvic.org/detection#> SELECT ?this WHERE { ?this a cacontology-detection:ManualReviewPhase ; cacontology-detection:hasPhaseBeginPoint ?manualStart . ?initialPhase a cacontology-detection:InitialDetectionPhase ; cacontology-detection:hasPhaseEndPoint ?initialEnd . FILTER (?manualStart < ?initialEnd) }
target class: Phase

gUFO Detection Result Shape
type: NodeShape
comment: Validates detection results as gUFO Objects.
property:
  has value: Object
  message: Detection result must be typed as gUFO Object
  min count: 1
  path: type
target class: ClassificationResult
target class: DetectionResult

Detection Result Object Shape
type: NodeShape
comment: Validates detection result instances with gUFO Object constraints.
property:
  has value: Object
  message: Detection result must be typed as gUFO Object
  min count: 1
  path: type
property:
  datatype: decimal
  max count: 1
  max inclusive: 1.0
  message: Detection result must have a confidence score between 0.0 and 1.0
  min count: 1
  min inclusive: 0.0
  path: confidenceScore
property:
  datatype: dateTime
  max count: 1
  message: Detection result must specify creation time
  min count: 1
  path: createdTime
target class: DetectionResult

gUFO Detection Role Shape
type: NodeShape
comment: Validates detection roles as anti-rigid gUFO roles.
property:
  has value: Role
  message: Detection role must be typed as gUFO Role (anti-rigid sortal)
  min count: 1
  path: type
property:
  datatype: dateTimeStamp
  max count: 1
  message: Detection role can have at most one begin point
  path: hasRoleBeginPoint
property:
  datatype: dateTimeStamp
  max count: 1
  message: Detection role can have at most one end point
  path: hasRoleEndPoint
sparql:
  message: Role begin point must precede end point
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/detection#
      prefix: cacontology-detection
  select: PREFIX cacontology-detection: <https://cacontology.projectvic.org/detection#> SELECT ?this WHERE { ?this cacontology-detection:hasRoleBeginPoint ?begin ; cacontology-detection:hasRoleEndPoint ?end . FILTER (?begin >= ?end) }
target class: ContentAnalystRole
target class: HashAnalystRole
target class: MachineLearningSpecialistRole
target class: QualityAssuranceAnalystRole

Detection Role Participation Shape
type: NodeShape
comment: Validates detection role participation constraints.
sparql:
  message: Person in detection role must participate in appropriate detection actions
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/detection#
      prefix: cacontology-detection
    declare:
      namespace: http://purl.org/nemo/gufo#
      prefix: gufo
  select: PREFIX cacontology-detection: <https://cacontology.projectvic.org/detection#> PREFIX gufo: <http://purl.org/nemo/gufo#> PREFIX uco-action: <https://ontology.unifiedcyberontology.org/uco/action/> SELECT ?this WHERE { ?this gufo:playsRole ?role . ?role a cacontology-detection:ContentAnalystRole . FILTER NOT EXISTS { ?action a cacontology-detection:ManualClassificationAction ; uco-action:performer ?this . } }
target class: Person

gUFO Detection Situation Shape
type: NodeShape
comment: Validates detection situations with gUFO constraints.
property:
  has value: Situation
  message: Detection situation must be typed as gUFO Situation
  min count: 1
  path: type
target class: CrossPlatformDetectionSituation
target class: FalsePositiveManagementSituation
target class: MassContentAnalysisSituation

Detection Temporal Consistency Shape
type: NodeShape
comment: Validates temporal consistency across detection events and phases.
sparql:
  message: Detection actions must occur within active detection phase timeframe
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/detection#
      prefix: cacontology-detection
    declare:
      namespace: http://purl.org/nemo/gufo#
      prefix: gufo
  select: PREFIX cacontology-detection: <https://cacontology.projectvic.org/detection#> PREFIX gufo: <http://purl.org/nemo/gufo#> SELECT ?this WHERE { ?this cacontology-detection:hasDetectionBeginPoint ?detectionBegin . ?phase a cacontology-detection:InitialDetectionPhase ; cacontology-detection:hasPhaseBeginPoint ?phaseBegin ; cacontology-detection:hasPhaseEndPoint ?phaseEnd . ?this gufo:occursInPhase ?phase . FILTER (?detectionBegin < ?phaseBegin || ?detectionBegin > ?phaseEnd) }
target class: AutomatedDetectionAction

gUFO Detection Tool Shape
type: NodeShape
comment: Validates detection tools as gUFO Objects with foundational constraints.
property:
  has value: Object
  message: Detection tool must be typed as gUFO Object
  min count: 1
  path: type
property:
  datatype: string
  max count: 1
  max length: 100
  message: Detection tool must have a name (2-100 characters)
  min count: 1
  min length: 2
  path: name
target class: ContentHashingTool
target class: DatabaseMatchingTool
target class: MachineLearningDetectionTool
target class: ManualReviewTool

Detection Workflow Temporal Shape
type: NodeShape
comment: Validates temporal workflow progression in detection processes.
sparql:
  message: Manual classification should follow automated detection
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/detection#
      prefix: cacontology-detection
  select: PREFIX cacontology-detection: <https://cacontology.projectvic.org/detection#> PREFIX uco-core: <https://ontology.unifiedcyberontology.org/uco/core/> PREFIX uco-action: <https://ontology.unifiedcyberontology.org/uco/action/> SELECT ?this WHERE { ?this a cacontology-detection:ManualClassificationAction ; uco-core:startTime ?manualTime . ?autoDetection a cacontology-detection:AutomatedDetectionAction ; uco-core:startTime ?autoTime ; uco-action:object ?content . ?this uco-action:object ?content . FILTER (?manualTime < ?autoTime) }
target class: ManualClassificationAction

gUFO Hash Artifact Shape
type: NodeShape
comment: Validates hash artifacts as gUFO Objects.
property:
  has value: Object
  message: Hash artifact must be typed as gUFO Object
  min count: 1
  path: type
target class: PerceptualHash
target class: PhotoDNAHash

Hash Format Validation Shape
type: NodeShape
comment: Validates hash format and consistency.
property:
  datatype: dateTime
  max count: 1
  message: Hash creation time should be specified when available
  min count: 0
  path: createdTime
target class: PerceptualHash
target class: PhotoDNAHash

Hashing Action Result Cross Reference Shape
type: NodeShape
comment: Validates that hashing actions produce hash artifacts.
sparql:
  message: Content hashing action should produce hash results
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/detection#
      prefix: cacontology-detection
  select: PREFIX cacontology-detection: <https://cacontology.projectvic.org/detection#> PREFIX uco-action: <https://ontology.unifiedcyberontology.org/uco/action/> PREFIX uco-types: <https://ontology.unifiedcyberontology.org/uco/types/> SELECT ?this WHERE { ?this a cacontology-detection:ContentHashingAction . FILTER NOT EXISTS { ?this uco-action:result ?hash . ?hash a ?hashType . FILTER (?hashType IN ( cacontology-detection:PhotoDNAHash, cacontology-detection:PerceptualHash, uco-types:Hash )) } }
target class: ContentHashingAction

gUFO Machine Learning Detection Tool Shape
type: NodeShape
comment: Validates machine learning detection tool instances with gUFO foundational constraints.
property:
  has value: Object
  message: ML detection tool must be typed as gUFO Object
  min count: 1
  path: type
property:
  datatype: string
  max count: 1
  max length: 50
  message: Model version should be 1-50 characters when specified
  min count: 0
  min length: 1
  path: modelVersion
property:
  datatype: decimal
  max count: 1
  max inclusive: 1.0
  message: Detection threshold must be between 0.0 and 1.0
  min count: 0
  min inclusive: 0.0
  path: detectionThreshold
target class: MachineLearningDetectionTool

gUFO Manual Classification Action Shape
type: NodeShape
comment: Validates manual classification action instances with gUFO Event constraints.
property:
  has value: Event
  message: Manual classification action must be typed as gUFO Event
  min count: 1
  path: type
property:
  datatype: dateTime
  max count: 1
  message: Manual classification action must specify start time
  min count: 1
  path: startTime
property:
  class: Person
  max count: 1
  message: Manual classification action must specify the person performing the review
  min count: 1
  path: performer
property:
  datatype: string
  in: confirmed_csam
  in: not_csam
  in: requires_further_review
  in: inconclusive
  in: false_positive
  max count: 1
  message: Review decision must be from the allowed list
  min count: 0
  path: reviewDecision
target class: ManualClassificationAction

Mass Content Analysis Situation Shape
type: NodeShape
comment: Validates mass content analysis situations.
sparql:
  message: Mass content analysis situation must involve multiple detection actions
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/detection#
      prefix: cacontology-detection
    declare:
      namespace: http://purl.org/nemo/gufo#
      prefix: gufo
  select: PREFIX cacontology-detection: <https://cacontology.projectvic.org/detection#> PREFIX gufo: <http://purl.org/nemo/gufo#> SELECT ?this WHERE { ?this a cacontology-detection:MassContentAnalysisSituation . { SELECT ?this (COUNT(?action) as ?actionCount) WHERE { ?action gufo:occursInSituation ?this . ?action a cacontology-detection:AutomatedDetectionAction . } GROUP BY ?this } FILTER (?actionCount < 10) }
target class: MassContentAnalysisSituation

gUFO Perceptual Hash Shape
type: NodeShape
comment: Validates perceptual hash instances with gUFO foundational constraints.
property:
  has value: Object
  message: Perceptual hash must be typed as gUFO Object
  min count: 1
  path: type
property:
  datatype: string
  max count: 1
  max length: 128
  message: Perceptual hash value must be a hexadecimal string (8-128 characters)
  min count: 1
  min length: 8
  path: perceptualHashValue
  pattern: ^[0-9A-Fa-f]+$
property:
  datatype: string
  in: pHash
  in: aHash
  in: dHash
  in: wHash
  in: colorHash
  in: blockHash
  max count: 1
  message: Hash algorithm must be from the allowed list
  min count: 1
  path: hashAlgorithm
target class: PerceptualHash

gUFO PhotoDNA Hash Shape
type: NodeShape
comment: Validates PhotoDNA hash instances with gUFO foundational constraints.
property:
  has value: Object
  message: PhotoDNA hash must be typed as gUFO Object
  min count: 1
  path: type
property:
  datatype: string
  max count: 1
  max length: 128
  message: PhotoDNA value must be a hexadecimal string (32-128 characters)
  min count: 1
  min length: 32
  path: photoDNAValue
  pattern: ^[0-9A-Fa-f]+$
target class: PhotoDNAHash

Risk Stratification Action Shape
type: NodeShape
comment: Validates risk stratification actions that produce explainable prioritization outputs.
property:
  message: Risk stratification action must produce at least one risk stratification result.
  min count: 1
  path: producesRiskStratificationResult
property:
  message: Risk stratification action may link to a detection result it stratifies.
  min count: 0
  path: stratifiesDetectionResult
target class: RiskStratificationAction

Risk Stratification Result Shape
type: NodeShape
comment: Validates risk stratification result artifacts with optional tier/score and explainability rationale.
property:
  datatype: string
  in: critical
  in: high
  in: medium
  in: low
  in: unknown
  max count: 1
  message: Risk tier must be one of: critical/high/medium/low/unknown (when present).
  min count: 0
  path: riskTier
property:
  datatype: decimal
  max count: 1
  message: Risk score must be a decimal when present.
  min count: 0
  path: riskScore
property:
  datatype: string
  max count: 1
  message: Risk rationale must be a string when present.
  min count: 0
  path: riskRationale
target class: RiskStratificationResult

SAR Classification gUFO Shape
type: NodeShape
comment: Validates SAR classification concept instances with gUFO enhancements.
property:
  max count: 1
  max length: 100
  message: SAR classification must have a preferred label (5-100 characters)
  min count: 1
  min length: 5
  path: prefLabel
property:
  max count: 1
  max length: 500
  message: SAR classification must have a definition (10-500 characters)
  min count: 1
  min length: 10
  path: definition
property:
  has value: SARClassificationScheme
  max count: 1
  message: SAR classification must be in the SAR Classification Scheme
  min count: 1
  path: inScheme
target node: sar-1
target node: sar-2
target node: sar-3
target node: sar-4
target node: sar-5

COPINE classification
type: ObjectProperty
comment: Links content to its COPINE classification level.
range: COPINEClassificationScheme

detected content
type: ObjectProperty
comment: Links a detection action to the content that was analyzed.
domain: AutomatedDetectionAction
range: ObservableObject

detection duration
type: DatatypeProperty
comment: Duration of detection action from start to completion.
domain: AutomatedDetectionAction
range: duration

false positive reason
type: DatatypeProperty
comment: The reason why content was determined to be a false positive.
domain: FalsePositiveAnalysisAction
range: string

generated hash
type: ObjectProperty
comment: Links a hashing action to the hash that was generated.
domain: ContentHashingAction
range: Hash

match type
type: DatatypeProperty
comment: The type of match found (e.g., 'exact', 'near-duplicate', 'variant').
domain: DatabaseMatchAction
range: string

matched database
type: ObjectProperty
comment: Links a match action to the database that contained the matching hash.
domain: DatabaseMatchAction
range: ObservableObject

phase duration
type: DatatypeProperty
comment: Duration of detection phase.
domain: Phase
range: duration

reviewed by
type: ObjectProperty
comment: Links a classification action to the person who performed the review.
domain: ManualClassificationAction
range: Identity

risk result for
type: ObjectProperty
source: Community & Intelligence Beyond Detection (Global Emancipation Network), 2026-02-10.
comment: Links a risk stratification result to the observable object it pertains to (e.g., detected content, a tip artifact, or another observable signal).
domain: RiskStratificationResult
range: ObservableObject

role duration
type: DatatypeProperty
comment: Duration of individual's detection role.
domain: Role
range: duration

SAR classification
type: ObjectProperty
comment: Links content to its SAR (1-5) classification level.
range: SARClassificationScheme

similarity score
type: DatatypeProperty
comment: The similarity score for perceptual hash matches (0.0-1.0).
range: decimal

Academic Term Phase
type: Class
comment: Anti-rigid phase representing academic terms during which exploitation may occur.
subclass of: Phase
has anti rigidity constraint: Phase changes with academic calendar
has temporal property: beginTimePoint
has temporal property: duration
has temporal property: endTimePoint

Administrator Role
type: Class
comment: Administrative role within educational institution with oversight responsibilities. Enhanced as anti-rigid gUFO Role.
subclass of: Role
subclass of: EducatorRole

After Hours Classroom Exploitation
type: Class
comment: Exploitation occurring in classroom setting outside normal school hours. Enhanced as gUFO Object.
subclass of: Object
subclass of: ClassroomExploitationContext

Assignment Completion Exploitation
type: Class
comment: Exploitation occurring while student is completing assignments or homework in classroom. Enhanced as gUFO Object.
subclass of: Object
subclass of: ClassroomExploitationContext

Counselor Role
type: Class
comment: Counseling role providing guidance and support to students. Enhanced as anti-rigid gUFO Role.
subclass of: Role
subclass of: EducatorRole

Cross Institutional Investigation Situation
type: Class
comment: Situation requiring coordination between multiple educational institutions, law enforcement, and regulatory bodies.
subclass of: Situation
subclass of: EducationalExploitationSituation

Elite Educational Institution
type: Class
comment: High-status educational institution with selective admission and affluent student body. Enhanced as gUFO Organization.
subclass of: Organization
subclass of: EducationalInstitution

Employment Phase
type: Class
comment: Anti-rigid phase representing educator's employment period during which exploitation occurs.
subclass of: Phase
has anti rigidity constraint: Phase varies based on employment status and contract

Exploitation Escalation Phase
type: Class
comment: Anti-rigid phase representing escalation of exploitative behavior over time.
subclass of: Phase
has anti rigidity constraint: Phase changes based on exploitation severity and duration

Gym Teacher Role
type: Class
comment: Physical education teacher role with student interaction in athletic contexts. Enhanced as anti-rigid gUFO Role.
subclass of: Role
subclass of: TeacherRole

Immediate Physical Contact Exploitation
type: Class
comment: Sexual exploitation involving immediate physical contact without prior grooming or relationship building. Enhanced as gUFO Event.
subclass of: Event
subclass of: TeacherStudentExploitation

Independent School
type: Class
comment: Private independent school, often with elite status and specialized educational programs. Enhanced as gUFO Organization.
subclass of: Organization
subclass of: EducationalInstitution

Institutional Response Situation
type: Class
comment: Situation involving institutional response to exploitation allegations, including investigation, disciplinary action, and prevention measures.
subclass of: Situation
subclass of: EducationalExploitationSituation

Intermediate School
type: Class
comment: Intermediate or middle school serving grades 6-8, typically ages 11-14. Enhanced as gUFO Organization.
subclass of: Organization
subclass of: PublicSchool

Investigation Phase
type: Class
comment: Anti-rigid phase representing institutional or legal investigation of exploitation allegations.
subclass of: Phase
has anti rigidity constraint: Phase changes based on investigation progress and findings

Math Teacher Role
type: Class
comment: Mathematics teacher role with specialized subject matter expertise. Enhanced as anti-rigid gUFO Role.
subclass of: Role
subclass of: TeacherRole
has anti rigidity constraint: Role specialization can change over time

Middle School
type: Class
comment: Middle school serving grades 6-8 or similar intermediate grade levels. Enhanced as gUFO Organization.
subclass of: Organization
subclass of: PublicSchool

Multi-Victim Exploitation Situation
type: Class
comment: Situation involving multiple victims across multiple institutions or time periods.
subclass of: Situation
subclass of: EducationalExploitationSituation

One on One Academic Exploitation
type: Class
comment: Exploitation during individual academic assistance or tutoring sessions. Enhanced as gUFO Object.
subclass of: Object
subclass of: ClassroomExploitationContext

Position of Trust Exploitation
type: Class
comment: Exploitation leveraging educator's position of trust and authority over students. Enhanced as gUFO Event.
subclass of: Event
subclass of: EducatorPerpetratedExploitation

Private School
type: Class
comment: Private educational institution with tuition-based funding. Enhanced as gUFO Organization.
subclass of: Organization
subclass of: EducationalInstitution

Substitute Teacher Role
type: Class
comment: Temporary teaching role covering for regular teachers. Enhanced as anti-rigid gUFO Role with temporary status.
subclass of: Role
subclass of: TeacherRole
has anti rigidity constraint: Temporary role with variable duration and assignment

Test Taking Exploitation
type: Class
comment: Exploitation occurring while student is taking tests or examinations. Enhanced as gUFO Object.
subclass of: Object
subclass of: ClassroomExploitationContext

academic activity
type: DatatypeProperty
comment: Type of academic activity during which exploitation occurred.
domain: ClassroomExploitationContext
range: string

access level
type: DatatypeProperty
comment: Level of access to students and institutional resources.
domain: EducatorRole
range: string

activates mandatory reporting
type: ObjectProperty
comment: Links disclosure to mandatory reporting activation.
domain: VictimDisclosureToStaff
range: SchoolStaffReporting

actual age
type: DatatypeProperty
comment: Actual age of perpetrator.
domain: AgeDeception
range: nonNegativeInteger

addresses vulnerability
type: ObjectProperty
comment: Links safeguarding measure to vulnerability it addresses.
domain: InstitutionalSafeguarding
range: InstitutionalVulnerability

assignment type
type: DatatypeProperty
comment: Type of assignment on which harassment was written.
domain: WrittenHarassmentEvidence
range: string

attends institution
type: ObjectProperty
comment: Links student victim to educational institution they attend.
domain: Person
range: EducationalInstitution

bail amount
type: DatatypeProperty
comment: Bail amount set for defendant.
domain: ChildSexualExploitationCharge
range: decimal

body part touched
type: DatatypeProperty
comment: Specific body part inappropriately touched.
domain: OpportunisticTouching
range: string

bond amount
type: DatatypeProperty
comment: Bond amount alternative to cash bail.
domain: ChildSexualExploitationCharge
range: decimal

charge count
type: DatatypeProperty
comment: Number of charges filed.
domain: ChildSexualExploitationCharge
range: nonNegativeInteger

charge degree
type: DatatypeProperty
comment: Degree of criminal charge (first, second, third).
domain: ChildSexualExploitationCharge
range: string

charges defendant
type: ObjectProperty
comment: Links criminal charge to defendant being charged.
domain: ChildSexualExploitationCharge
range: Person

classroom number
type: DatatypeProperty
comment: Classroom number or identifier where exploitation occurred.
domain: ClassroomExploitationContext
range: string

collects evidence
type: ObjectProperty
comment: Links investigation to evidence collected.
domain: EducationalInstitutionInvestigation
range: ObservableObject

communicates via
type: ObjectProperty
comment: Links exploitation to communication platform used.
domain: EducatorPerpetratedExploitation
range: ObservableObject

contact duration
type: DatatypeProperty
comment: Duration of physical contact in seconds.
domain: PhysicalContactPattern
range: decimal

contact frequency
type: DatatypeProperty
comment: Frequency of inappropriate physical contact incidents.
domain: PhysicalContactPattern
range: string

contact type
type: DatatypeProperty
comment: Type of inappropriate physical contact.
domain: PhysicalContactPattern
range: string

coordinates with
type: ObjectProperty
comment: Links investigation to coordinating agencies.
domain: EducationalInstitutionInvestigation
range: Organization

corroborates account
type: ObjectProperty
comment: Links evidence to victim account it corroborates.
domain: ObservableObject
range: VictimAccountEvidence

deceives victim
type: ObjectProperty
comment: Links impersonation to victim being deceived.
domain: DigitalImpersonation
range: Person

deception duration
type: DatatypeProperty
comment: Duration of impersonation in months.
domain: DigitalImpersonation
range: decimal

degradation level
type: DatatypeProperty
comment: Level of degradation in written comments (mild, moderate, severe).
domain: DegradingWrittenComments
range: string

degrades victim
type: ObjectProperty
comment: Links degrading comments to victim being degraded.
domain: DegradingWrittenComments
range: Person

discloses to
type: ObjectProperty
comment: Links victim disclosure to staff member receiving disclosure.
domain: VictimDisclosureToStaff
range: Person

disclosure method
type: DatatypeProperty
comment: Method used by victim to disclose exploitation.
domain: VictimDisclosureToStaff
range: string

documents exploitation
type: ObjectProperty
comment: Links evidence to exploitation it documents.
domain: DigitalCommunicationEvidence
range: EducatorPerpetratedExploitation

documents harassment
type: ObjectProperty
comment: Links written harassment evidence to harassment it documents.
domain: WrittenHarassmentEvidence
range: WrittenHarassment

during activity
type: ObjectProperty
comment: Links exploitation to specific academic activity.
domain: AcademicActivityExploitation
range: Action

educator age
type: DatatypeProperty
comment: Age of educator at time of exploitation.
domain: EducatorRole
range: nonNegativeInteger

employed at
type: ObjectProperty
comment: Links educator to institution where they were employed.
domain: Person
range: EducationalInstitution

employment duration
type: DatatypeProperty
comment: Duration of employment at educational institution in months.
domain: EducatorRole
range: decimal

enhanced by
type: ObjectProperty
comment: Links charge to enhancement factors.
domain: ChildSexualExploitationCharge
range: UcoObject

escalates to
type: ObjectProperty
comment: Links initial contact to escalated contact patterns.
domain: PhysicalContactPattern
range: PhysicalContactPattern

evidence location
type: DatatypeProperty
comment: Location where evidence was found or collected.
domain: ObservableObject
range: string

evidence type
type: DatatypeProperty
comment: Type of evidence collected.
domain: ObservableObject
range: string

exploitation duration
type: DatatypeProperty
comment: Duration of exploitation activity in months.
domain: EducatorPerpetratedExploitation
range: decimal

exploitation location
type: DatatypeProperty
comment: Primary location where exploitation occurred.
domain: EducatorPerpetratedExploitation
range: string

exploitation method
type: DatatypeProperty
comment: Primary method used for exploitation (digital, physical, combined).
domain: EducatorPerpetratedExploitation
range: string

exploits isolation
type: ObjectProperty
comment: Links exploitation to isolation vulnerability.
domain: ClassroomBasedExploitation
range: ClassroomIsolationVulnerability

exploits position
type: ObjectProperty
comment: Links exploitation to educator position being exploited.
domain: EducatorPerpetratedExploitation
range: EducatorRole

exploits vulnerability
type: ObjectProperty
comment: Links targeting to vulnerability being exploited.
domain: VulnerableStudentTargeting
range: InstitutionalVulnerability

fake account count
type: DatatypeProperty
comment: Number of fake accounts used for impersonation.
domain: MultipleAccountDeception
range: nonNegativeInteger

followed by supervision
type: ObjectProperty
comment: Links sentence to post-release supervision period.
domain: UseOfChildInSexualPerformance
range: PostReleaseSuperVision

force level
type: DatatypeProperty
comment: Level of force used in physical contact (minimal, moderate, significant).
domain: ForcibleTouching
range: string

forcibly touches
type: ObjectProperty
comment: Links forcible touching to victim.
domain: ForcibleTouching
range: Person

grade level
type: DatatypeProperty
comment: Grade level taught by educator.
domain: TeacherRole
range: string

grade range
type: DatatypeProperty
comment: Grade range served by institution (e.g., 6-8, K-12).
domain: EducationalInstitution
range: string

harassment content
type: DatatypeProperty
comment: Content of written harassment message or comment.
domain: WrittenHarassment
range: string

harassment frequency
type: DatatypeProperty
comment: Frequency of written harassment incidents.
domain: WrittenHarassment
range: string

harassment medium
type: DatatypeProperty
comment: Medium used for written harassment (assignment, test, note).
domain: WrittenHarassment
range: string

has vulnerability
type: ObjectProperty
comment: Links institution to vulnerability factors present.
domain: EducationalInstitution
range: InstitutionalVulnerability

identifies vulnerability
type: ObjectProperty
comment: Links targeting to vulnerability identification.
domain: StudentVictimTargeting
range: InstitutionalVulnerability

impersonated age
type: DatatypeProperty
comment: Age claimed during impersonation.
domain: AgeDeception
range: nonNegativeInteger

impersonates age
type: ObjectProperty
comment: Links impersonation to age deception.
domain: DigitalImpersonation
range: AgeDeception

implements safeguarding
type: ObjectProperty
comment: Links institution to safeguarding measures implemented.
domain: EducationalInstitution
range: InstitutionalSafeguarding

institution count
type: DatatypeProperty
comment: Number of educational institutions involved in exploitation.
domain: CrossInstitutionalExploitation
range: nonNegativeInteger

institution location
type: DatatypeProperty
comment: Geographic location of educational institution.
domain: EducationalInstitution
range: string

institution reputation
type: DatatypeProperty
comment: Reputation level of institution (elite, prestigious, standard).
domain: EducationalInstitution
range: string

institution type
type: DatatypeProperty
comment: Type of educational institution (independent, public, private, elite).
domain: EducationalInstitution
range: string

interviews victim
type: ObjectProperty
comment: Links investigation to victim interviews.
domain: EducationalInstitutionInvestigation
range: Person

intimidates student
type: ObjectProperty
comment: Links academic intimidation to student being intimidated.
domain: AcademicIntimidation
range: Person

investigates exploitation
type: ObjectProperty
comment: Links investigation to exploitation being investigated.
domain: EducationalInstitutionInvestigation
range: EducatorPerpetratedExploitation

involves physical contact
type: ObjectProperty
comment: Links exploitation to physical contact patterns.
domain: EducatorPerpetratedExploitation
range: PhysicalContactPattern

involves written harassment
type: ObjectProperty
comment: Links exploitation to written harassment activities.
domain: EducatorPerpetratedExploitation
range: WrittenHarassment

isolation level
type: DatatypeProperty
comment: Level of isolation during exploitation (alone, few_students, class_present).
domain: ClassroomExploitationContext
range: string

leverages academic power
type: ObjectProperty
comment: Links exploitation to academic power vulnerability.
domain: AcademicActivityExploitation
range: AcademicPowerVulnerability

linked to location
type: ObjectProperty
comment: Links IP address evidence to physical location.
domain: IPAddressEvidence
range: Location

maintains multiple accounts
type: ObjectProperty
comment: Links impersonation to multiple account deception.
domain: DigitalImpersonation
range: MultipleAccountDeception

mandatory reporting triggered
type: DatatypeProperty
comment: Whether mandatory reporting requirements were triggered.
domain: SchoolStaffReporting
range: boolean

maximum sentence
type: DatatypeProperty
comment: Maximum possible sentence for charge in years.
domain: ChildSexualExploitationCharge
range: decimal

notifies principal
type: ObjectProperty
comment: Links staff reporting to principal notification.
domain: SchoolStaffReporting
range: PrincipalNotification

occurs in context
type: ObjectProperty
comment: Links exploitation to classroom or institutional context.
domain: EducatorPerpetratedExploitation
range: ClassroomExploitationContext

platform used
type: DatatypeProperty
comment: Digital platform used for impersonation and exploitation.
domain: DigitalImpersonation
range: string

police response time
type: DatatypeProperty
comment: Time from notification to police response in hours.
domain: PoliceNotification
range: decimal

provided by
type: ObjectProperty
comment: Links victim account evidence to victim who provided it.
domain: VictimAccountEvidence
range: Person

provides evidence
type: ObjectProperty
comment: Links exploitation to evidence it provides.
domain: EducatorPerpetratedExploitation
range: ObservableObject

receives report
type: ObjectProperty
comment: Links staff member to report they receive.
domain: Person
range: VictimDisclosureToStaff

reporting delay
type: DatatypeProperty
comment: Time delay between incident and reporting in days.
domain: SchoolStaffReporting
range: decimal

reporting staff role
type: DatatypeProperty
comment: Role of staff member who received initial report.
domain: SchoolStaffReporting
range: string

reports to
type: ObjectProperty
comment: Links victim to staff member they report to.
domain: Person
range: Person

requires registration
type: ObjectProperty
comment: Links conviction to sex offender registration requirement.
domain: ChildSexualExploitationCharge
domain: UseOfChildInSexualPerformance
range: SexOffenderRegistration

results in charge
type: ObjectProperty
comment: Links exploitation to criminal charges filed.
comment: Links exploitation to legal charges filed.
domain: EducatorPerpetratedExploitation
range: ChildSexualExploitationCharge
range: UseOfChildInSexualPerformance

school address
type: DatatypeProperty
comment: Physical address of educational institution.
domain: EducationalInstitution
range: string

selects victim
type: ObjectProperty
comment: Links targeting strategy to selected victim.
domain: StudentVictimTargeting
range: Person

sends content
type: ObjectProperty
comment: Links perpetrator to content sent to victims.
domain: Person
range: ObservableObject

sentence length
type: DatatypeProperty
comment: Length of prison sentence in years.
domain: UseOfChildInSexualPerformance
range: decimal

solicits from
type: ObjectProperty
comment: Links solicitation to victim being solicited.
domain: SexualPerformanceSolicitation
range: Person

student population
type: DatatypeProperty
comment: Total number of students enrolled at institution.
domain: EducationalInstitution
range: nonNegativeInteger

students present
type: DatatypeProperty
comment: Number of other students present during exploitation.
domain: ClassroomExploitationContext
range: nonNegativeInteger

subject taught
type: DatatypeProperty
comment: Academic subject taught by educator.
domain: TeacherRole
range: string

supervision duration
type: DatatypeProperty
comment: Duration of post-release supervision in years.
domain: PostReleaseSuperVision
range: decimal

takes place in
type: ObjectProperty
comment: Links exploitation to specific classroom or location.
domain: ClassroomBasedExploitation
range: Location

target age range
type: DatatypeProperty
comment: Age range of targeted victims.
domain: AgeSpecificTargeting
range: string

target gender
type: DatatypeProperty
comment: Gender preference in victim targeting.
domain: StudentVictimTargeting
range: string

targeting method
type: DatatypeProperty
comment: Method used to identify and target victims.
domain: StudentVictimTargeting
range: string

targets age group
type: ObjectProperty
comment: Links age-specific targeting to targeted age group.
domain: AgeSpecificTargeting
range: Person

targets student
type: ObjectProperty
comment: Links targeting activity to student victim.
domain: StudentVictimTargeting
range: Person

targets victim
type: ObjectProperty
comment: Links exploitation to victim targeting strategy.
domain: EducatorPerpetratedExploitation
range: StudentVictimTargeting

time of day
type: DatatypeProperty
comment: Time of day when exploitation occurred.
domain: ClassroomExploitationContext
range: string

touches victim
type: ObjectProperty
comment: Links physical contact to victim being touched.
domain: PhysicalContactPattern
range: Person

triggers police notification
type: ObjectProperty
comment: Links principal notification to police notification.
domain: PrincipalNotification
range: PoliceNotification

uses impersonation
type: ObjectProperty
comment: Links exploitation to digital impersonation method used.
comment: Links exploitation to digital impersonation methods.
domain: EducatorPerpetratedExploitation
range: DigitalImpersonation

uses method
type: ObjectProperty
comment: Links exploitation to specific methods used.
domain: EducatorPerpetratedExploitation
range: Action

victim count
type: DatatypeProperty
comment: Number of victims involved in exploitation.
domain: EducatorPerpetratedExploitation
range: nonNegativeInteger

vulnerability factor
type: DatatypeProperty
comment: Specific vulnerability factor exploited in targeting.
domain: VulnerableStudentTargeting
range: string

witnesses exploitation
type: ObjectProperty
comment: Links witness testimony to exploitation witnessed.
domain: WitnessTestimonyEvidence
range: EducatorPerpetratedExploitation

written content
type: DatatypeProperty
comment: Content of written harassment evidence.
domain: WrittenHarassmentEvidence
range: string

written on
type: ObjectProperty
comment: Links written harassment to academic material it was written on.
domain: WrittenHarassment
range: ObservableObject

years of experience
type: DatatypeProperty
comment: Years of teaching or educational experience.
domain: EducatorRole
range: decimal

Accelerationist Group
type: SubKind
type: Class
comment: Extremist group with accelerationist goals seeking to hasten societal collapse through criminal activities including child exploitation.
subclass of: NihilisticViolentExtremismNetwork

AlternateAccountSystemShape
type: NodeShape
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 50
  message: Alt account system must have 1-50 accounts per member.
  min inclusive: 1
  path: altAccountCount
target class: AlternateAccountSystem

Animal Abuse Coercion
type: EventType
type: Class
comment: Coercion of victims to abuse pets or animals as part of exploitation and control.
subclass of: Event
subclass of: ExtremeDegradationCoercion

ChildExploitationEnterpriseShape
type: NodeShape
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 10
  message: Enterprise must have 1-10 leaders.
  min inclusive: 1
  path: leadershipCount
property:
  datatype: string
  max count: 1
  max length: 500
  message: Membership requirements must be 10-500 characters.
  min length: 10
  path: membershipRequirements
property:
  class: EnterpriseHierarchy
  max count: 1
  message: Enterprise must have exactly one hierarchy.
  min count: 1
  path: hasHierarchy
target class: ChildExploitationEnterprise

CoercionSeverityConsistencyShape
type: NodeShape
sparql:
  message: Extreme coercion severity must have degradation level of severe or extreme.
  prefixes: extremist-enterprises#
  select: SELECT $this WHERE { $this cacontology-enterprises:coercionSeverity "extreme" . $this rdf:type/rdfs:subClassOf* cacontology-enterprises:ExtremeDegradationCoercion . $this cacontology-enterprises:degradationLevel ?degradationLevel . FILTER (?degradationLevel NOT IN ("severe", "extreme", "inhuman")) }
target class: SelfHarmCoercion

Content Curation Action
type: EventType
type: Class
comment: Action of curating and organizing exploitative content for enterprise purposes.
subclass of: Event
subclass of: Action

ContentCurrencyBusinessRule
type: NodeShape
message: Content currency systems with 5+ items must support membership advancement.
rule:
  condition:
    property:
      min count: 5
      path: usesAsCurrency
  consequence:
    property:
      has value: MembershipAdvancementSystem
      path: type
target class: ContentCurrencySystem

ContentCurrencySystemShape
type: NodeShape
property:
  class: Lorebook
  message: Content currency system must use at least one lorebook as currency.
  min count: 1
  path: usesAsCurrency
target class: ContentCurrencySystem

ContentEditingProcessShape
type: NodeShape
property:
  datatype: string
  in: poor
  in: basic
  in: good
  in: professional
  max count: 1
  message: Editing quality must be valid level.
  path: editingQuality
target class: ContentEditingProcess

ContentValueAssessmentShape
type: NodeShape
property:
  datatype: decimal
  max count: 1
  max inclusive: 10.0
  message: Content value must be between 0.0 and 10.0.
  min inclusive: 0.0
  path: contentValue
target class: ContentValueAssessment

CovertEmployeeOperationShape
type: NodeShape
property:
  datatype: string
  in: poor
  in: fair
  in: good
  in: excellent
  max count: 1
  message: Evidence quality must be valid level.
  path: evidenceQuality
target class: CovertEmployeeOperation

CrossPlatformCoordinationShape
type: NodeShape
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 20
  message: Cross-platform coordination must involve 2-20 platforms.
  min inclusive: 2
  path: platformCount
target class: CrossPlatformCoordination

Cyber Extremist Network
type: SubKind
type: Class
comment: Extremist network operating primarily through digital platforms and encrypted communications.
subclass of: NihilisticViolentExtremismNetwork

EncryptedChannelInfiltrationShape
type: NodeShape
property:
  datatype: decimal
  max count: 1
  max inclusive: 1095.0
  message: Infiltration duration must be between 1 and 1,095 days.
  min inclusive: 1.0
  path: infiltrationDuration
target class: EncryptedChannelInfiltration

EncryptedChannelNetworkShape
type: NodeShape
property:
  datatype: string
  in: basic
  in: strong
  in: military_grade
  max count: 1
  message: Encryption level must be valid level.
  path: encryptionLevel
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 100
  message: Encrypted network must have 1-100 channels.
  min inclusive: 1
  path: channelCount
target class: EncryptedChannelNetwork

EnterpriseHierarchyBusinessRule
type: NodeShape
message: Enterprises with 3+ leaders must have formal leadership structure.
rule:
  condition:
    property:
      min inclusive: 3
      path: leadershipCount
  consequence:
    property:
      has value: LeadershipStructure
      path: hasHierarchy
target class: ChildExploitationEnterprise

EnterpriseHierarchyShape
type: NodeShape
property:
  datatype: string
  in: simple
  in: moderate
  in: complex
  in: highly_complex
  max count: 1
  message: Hierarchy complexity must be valid level.
  path: hierarchyComplexity
target class: EnterpriseHierarchy

EnterpriseLeadershipValidationShape
type: NodeShape
property:
  class: Person
  message: Enterprise leader role must be held by at least one person.
  min count: 1
  path:
    inverse path: holdsLeadershipRole
target node: EnterpriseLeaderRole

ExtremeDegradationCoercionShape
type: NodeShape
property:
  datatype: string
  in: moderate
  in: severe
  in: extreme
  in: inhuman
  max count: 1
  message: Degradation level must be valid level.
  path: degradationLevel
target class: ExtremeDegradationCoercion

GufoCoercionEventValidation
type: NodeShape
sparql:
  message: Coercion events must create situations and involve participant objects.
  prefixes: gufo#
  prefixes: extremist-enterprises#
  prefixes: identity
  select: SELECT $this WHERE { $this rdf:type cacontology-enterprises:SelfHarmCoercion . $this rdf:type gufo:Event . FILTER NOT EXISTS { { $this cacontology-enterprises:createsVictimizationSituation ?situation . ?situation rdf:type gufo:Situation . } UNION { ?person uco-identity:Person . ?person cacontology-enterprises:participatesInCoercion $this . } } }
target class: SelfHarmCoercion

GufoCollectionMembershipRule
type: NodeShape
property:
  message: gUFO Collections must have at least one member.
  min count: 1
  path:
    inverse path: isCollectionMemberOf
target class: Collection

GufoComponentValidationShape
type: NodeShape
property:
  class: Object
  message: Network components must be gUFO Objects.
  path: hasNetworkComponent
target class: NihilisticViolentExtremismNetwork

GufoEnterpriseStructureValidation
type: NodeShape
sparql:
  message: Enterprise as functional complex must have proper part-whole relationships with its hierarchy.
  prefixes: gufo#
  prefixes: extremist-enterprises#
  select: SELECT $this WHERE { $this rdf:type cacontology-enterprises:ChildExploitationEnterprise . $this rdf:type gufo:FunctionalComplex . $this cacontology-enterprises:hasHierarchy ?hierarchy . FILTER NOT EXISTS { ?hierarchy gufo:isComponentOf $this . } }
target class: ChildExploitationEnterprise

GufoEventDurationRule
type: NodeShape
sparql:
  message: gUFO Events with both begin and end dates must have positive duration.
  prefixes: gufo#
  select: SELECT $this WHERE { $this rdf:type gufo:Event . $this gufo:hasBeginPointInXSDDateTimeStamp ?begin . $this gufo:hasEndPointInXSDDateTimeStamp ?end . FILTER (?end <= ?begin) }
target class: Event

GufoEventTemporalExistenceRule
type: NodeShape
property:
  message: gUFO Events must have at least one temporal beginning point.
  min count: 1
  path:
    alternative path: hasBeginPointInXSDDateTimeStamp
    alternative path: hasCoercionEventBeginDate
    alternative path: hasInvestigationBeginDate
target class: Event

GufoEventTemporalShape
type: NodeShape
property:
  datatype: dateTimeStamp
  max count: 1
  message: Coercion event must have at most one begin date.
  path: hasCoercionEventBeginDate
target class: SelfHarmCoercion

GufoEventTypeValidationShape
type: NodeShape
property:
  has value: Class
  message: gUFO Event Types must be OWL classes.
  min count: 1
  path: type
target class: EventType

GufoFunctionalComplexPartRule
type: NodeShape
property:
  message: gUFO Functional Complexes must have at least one component or member.
  min count: 1
  path:
    alternative path: isComponentOf
    alternative path: hasNetworkComponent
    alternative path: hasMember
target class: FunctionalComplex

GufoKindIdentityBusinessRule
type: NodeShape
sparql:
  message: gUFO Kinds cannot be subclasses of other Kinds - violates identity principle.
  prefixes: gufo#
  select: SELECT $this WHERE { $this rdf:type gufo:Kind . $this rdfs:subClassOf ?superKind . ?superKind rdf:type gufo:Kind . FILTER ($this != ?superKind) }
target class: Kind

GufoKindValidationShape
type: NodeShape
property:
  has value: Class
  message: gUFO Kinds must be OWL classes.
  min count: 1
  path: type
target class: Kind

GufoMembershipValidationShape
type: NodeShape
property:
  class: Person
  message: Enterprise must have at least 2 members.
  min count: 2
  path: hasMember
target class: ChildExploitationEnterprise

GufoModeInherentRule
type: NodeShape
property:
  class: Object
  message: gUFO Intrinsic Modes must inhere in at least one Object.
  min count: 1
  path:
    inverse path:
      alternative path: hasMode
      alternative path: hasEncryptionCapability
      alternative path: hasRecruitmentMode
target class: IntrinsicMode

GufoModeValidationShape
type: NodeShape
property:
  class: IntrinsicMode
  max count: 1
  message: Encrypted network can have at most one encryption capability mode.
  path: hasEncryptionCapability
target class: EncryptedChannelNetwork

GufoNetworkCellValidation
type: NodeShape
sparql:
  message: Network cells must be proper components of their parent network.
  prefixes: gufo#
  prefixes: extremist-enterprises#
  select: SELECT $this WHERE { $this rdf:type cacontology-enterprises:ExtremistNetworkCell . ?network cacontology-enterprises:hasNetworkCell $this . FILTER NOT EXISTS { $this gufo:isComponentOf ?network . } }
target class: ExtremistNetworkCell

GufoObjectExistenceRule
type: NodeShape
property:
  message: gUFO Objects should have temporal existence markers when applicable.
  path:
    alternative path: hasBeginPointInXSDDateTimeStamp
    alternative path: hasEndPointInXSDDateTimeStamp
target class: Object

GufoParticipationValidationShape
type: NodeShape
property:
  class: SelfHarmCoercion
  message: Person participation in coercion must link to valid coercion events.
  path: participatesInCoercion
property:
  class: ContentBasedRecruitment
  message: Person participation in recruitment must link to valid recruitment events.
  path: participatesInRecruitment
target class: Person

GufoQualityInherentRule
type: NodeShape
property:
  class: Object
  message: gUFO Qualities must inhere in at least one Object.
  min count: 1
  path:
    inverse path:
      alternative path: hasQuality
      alternative path: hasNetworkNotorietyQuality
target class: Quality

GufoQualityValidationShape
type: NodeShape
property:
  class: Quality
  max count: 1
  message: Network can have at most one notoriety quality.
  path: hasNetworkNotorietyQuality
target class: NihilisticViolentExtremismNetwork

GufoRelatorMediationRule
type: NodeShape
sparql:
  message: gUFO Relators must mediate relationships between at least two distinct objects.
  prefixes: gufo#
  select: SELECT $this WHERE { $this rdf:type gufo:Relator . FILTER NOT EXISTS { $this gufo:mediates ?obj1 . $this gufo:mediates ?obj2 . FILTER (?obj1 != ?obj2) } }
target class: Relator

GufoRelatorValidationShape
type: NodeShape
property:
  class: Relator
  message: Enterprise must have at least one leadership relator.
  min count: 1
  path: hasLeadershipRelation
property:
  class: Relator
  message: Exploitation enterprise must have at least one exploitation relator.
  min count: 1
  path: hasExploitationRelation
target class: ChildExploitationEnterprise

GufoRoleAntiRigidityRule
type: NodeShape
sparql:
  message: gUFO Roles are anti-rigid and cannot be essential to their instances.
  prefixes: gufo#
  select: SELECT $this WHERE { $this rdf:type gufo:Role . $this rdfs:subClassOf ?kind . ?kind rdf:type gufo:Kind . }
target class: Role

GufoRoleInstantiationValidation
type: NodeShape
sparql:
  message: Enterprise roles must be properly instantiated by persons within enterprise context.
  prefixes: gufo#
  prefixes: extremist-enterprises#
  prefixes: identity
  select: SELECT $this WHERE { $this rdf:type cacontology-enterprises:EnterpriseRole . $this rdf:type gufo:Role . FILTER NOT EXISTS { ?person rdf:type uco-identity:Person . ?person ?roleProperty $this . ?enterprise cacontology-enterprises:hasMember ?person . ?enterprise rdf:type cacontology-enterprises:ChildExploitationEnterprise . } }
target class: EnterpriseRole

GufoRoleValidationShape
type: NodeShape
property:
  has value: Class
  message: gUFO Roles must be OWL classes.
  min count: 1
  path: type
target class: Role

GufoSituationFactualRule
type: NodeShape
sparql:
  message: gUFO Situations must be factual and include at least one object or event.
  prefixes: gufo#
  select: SELECT $this WHERE { $this rdf:type gufo:Situation . FILTER NOT EXISTS { { ?object gufo:participatesIn $this . } UNION { ?event gufo:occursDuring $this . } UNION { $this gufo:includesObject ?object . } UNION { $this gufo:includesEvent ?event . } } }
target class: Situation

GufoSituationValidationShape
type: NodeShape
property:
  class: Situation
  message: Enterprise must operate in valid gUFO Situations.
  path: operatesInSituation
target class: ChildExploitationEnterprise

GufoTemporalConsistencyShape
type: NodeShape
property:
  datatype: dateTimeStamp
  max count: 1
  message: Enterprise must have at most one operational begin date.
  path: hasOperationalBeginDate
property:
  datatype: dateTimeStamp
  max count: 1
  message: Enterprise must have at most one operational end date.
  path: hasOperationalEndDate
sparql:
  message: Operational end date must be after begin date.
  prefixes: extremist-enterprises#
  select: SELECT $this WHERE { $this cacontology-enterprises:hasOperationalBeginDate ?begin . $this cacontology-enterprises:hasOperationalEndDate ?end . FILTER (?end <= ?begin) }
target class: ChildExploitationEnterprise

GufoTemporalConsistencyValidation
type: NodeShape
sparql:
  message: Enterprise temporal boundaries must be consistent with member participation events.
  prefixes: gufo#
  prefixes: extremist-enterprises#
  select: SELECT $this WHERE { $this cacontology-enterprises:hasOperationalBeginDate ?begin . $this cacontology-enterprises:hasOperationalEndDate ?end . $this cacontology-enterprises:hasMember ?member . ?member cacontology-enterprises:participatesInCoercion ?event . ?event cacontology-enterprises:hasCoercionEventBeginDate ?eventDate . FILTER (?eventDate < ?begin || ?eventDate > ?end) }
target class: ChildExploitationEnterprise

GufoVictimizationSituationShape
type: NodeShape
property:
  class: Situation
  message: Self-harm coercion must create at least one victimization situation.
  min count: 1
  path: createsVictimizationSituation
target class: SelfHarmCoercion

IdentityCorrelationAnalysisShape
type: NodeShape
property:
  datatype: decimal
  max count: 1
  max inclusive: 1.0
  message: Identity correlation accuracy must be between 0.0 and 1.0.
  min inclusive: 0.0
  path: identityCorrelationAccuracy
target class: IdentityCorrelationAnalysis

InnerCoreAccessValidationShape
type: NodeShape
property:
  class: Person
  message: Inner core must have at least one participating member.
  min count: 1
  path:
    inverse path: participatesInInnerCore
target class: InnerCore

Inner Core Member Role
type: Role
type: Class
comment: Role of member within enterprise inner core with access to restricted channels and advanced operations.
subclass of: EnterpriseRole

InnerCoreShape
type: NodeShape
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 50
  message: Inner core must have 1-50 members.
  min inclusive: 1
  path: innerCoreSize
target class: InnerCore

InvestigationQualityBusinessRule
type: NodeShape
message: High accuracy identity correlation (90%+) must produce good or excellent evidence quality.
rule:
  condition:
    property:
      min inclusive: 0.9
      path: identityCorrelationAccuracy
  consequence:
    property:
      in: good
      in: excellent
      path: evidenceQuality
target class: IdentityCorrelationAnalysis

LorebookContentValidationShape
type: NodeShape
property:
  class: ObservableObject
  message: Lorebook must contain at least one piece of victim content.
  min count: 1
  path: containsVictimContent
target class: Lorebook

LorebookShape
type: NodeShape
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 10000
  message: Lorebook must contain 1-10,000 items.
  min inclusive: 1
  path: contentVolumeItems
property:
  datatype: string
  in: basic
  in: moderate
  in: advanced
  in: professional
  max count: 1
  message: Compilation complexity must be valid level.
  path: compilationComplexity
property:
  datatype: string
  in: low
  in: moderate
  in: high
  in: notorious
  max count: 1
  message: Content notoriety must be valid level.
  path: contentNotoriety
target class: Lorebook

MembershipAdvancementSystemShape
type: NodeShape
property:
  datatype: string
  max count: 1
  max length: 500
  message: Advancement criteria must be 10-500 characters.
  min length: 10
  path: advancementCriteria
target class: MembershipAdvancementSystem

MembershipTierShape
type: NodeShape
property:
  datatype: string
  in: novice
  in: member
  in: advanced
  in: inner_core
  in: leader
  max count: 1
  message: Membership level must be valid tier.
  path: membershipLevel
property:
  datatype: string
  in: restricted
  in: basic
  in: enhanced
  in: privileged
  in: full
  max count: 1
  message: Access level must be valid level.
  path: accessLevel
target class: MembershipTier

Mental Health Vulnerability Targeting
type: EventType
type: Class
comment: Targeting of minors with mental health challenges and psychological vulnerabilities.
subclass of: Event
subclass of: VulnerablePopulationTargeting

Name Cutting Coercion
type: EventType
type: Class
comment: Coercion of victims to cut enterprise member names into their bodies as ownership marking.
subclass of: Event
subclass of: SelfHarmCoercion

NetworkMappingInvestigationShape
type: NodeShape
property:
  datatype: decimal
  max count: 1
  max inclusive: 1.0
  message: Network mapping completeness must be between 0.0 and 1.0.
  min inclusive: 0.0
  path: networkMappingCompleteness
target class: NetworkMappingInvestigation

NetworkSizeConsistencyShape
type: NodeShape
sparql:
  message: Network size must be consistent with inner core size and leadership count.
  prefixes: extremist-enterprises#
  select: SELECT $this WHERE { $this cacontology-enterprises:networkSize ?networkSize . $this cacontology-enterprises:operatesEnterprise ?enterprise . ?enterprise cacontology-enterprises:hasInnerCore ?innerCore . ?innerCore cacontology-enterprises:innerCoreSize ?innerCoreSize . ?enterprise cacontology-enterprises:leadershipCount ?leadershipCount . FILTER (?networkSize < (?innerCoreSize + ?leadershipCount)) }
target class: NihilisticViolentExtremismNetwork

NihilisticViolentExtremismNetworkShape
type: NodeShape
property:
  datatype: nonNegativeInteger
  max count: 1
  message: NVE network must have at least 2 members.
  min inclusive: 2
  path: networkSize
property:
  datatype: string
  in: local
  in: national
  in: international
  max count: 1
  message: Operational scope must be local, national, or international.
  path: operationalScope
property:
  datatype: string
  in: nihilistic
  in: accelerationist
  in: anarchist
  in: mixed
  max count: 1
  message: Ideological framework must be recognized extremist ideology.
  path: ideologicalFramework
property:
  datatype: string
  in: low
  in: moderate
  in: high
  in: international
  max count: 1
  message: Network notoriety must be valid level.
  path: networkNotoriety
target class: NihilisticViolentExtremismNetwork

PlatformCoordinationConsistencyShape
type: NodeShape
sparql:
  message: Platform count must be consistent with encrypted channel count.
  prefixes: extremist-enterprises#
  select: SELECT $this WHERE { $this cacontology-enterprises:platformCount ?platformCount . ?enterprise cacontology-enterprises:coordinatesAcrossPlatforms $this . ?enterprise cacontology-enterprises:utilizesEncryptedChannels ?encryptedNetwork . ?encryptedNetwork cacontology-enterprises:channelCount ?channelCount . FILTER (?channelCount < ?platformCount) }
target class: CrossPlatformCoordination

Platform Migration Strategy
type: EventType
type: Class
comment: Strategy for migrating operations between platforms when accounts are terminated or restricted.
subclass of: Event
subclass of: Action

Private Group Management
type: EventType
type: Class
comment: Management of private groups and channels with restricted access for enterprise operations.
subclass of: Event
subclass of: Action

Recruitment Hierarchy
type: SubKind
type: Class
comment: Hierarchy governing recruitment of new members based on content quality and notoriety.
subclass of: EnterpriseHierarchy

SelfHarmCoercionShape
type: NodeShape
property:
  datatype: string
  in: moderate
  in: severe
  in: extreme
  in: life_threatening
  max count: 1
  message: Coercion severity must be valid level.
  path: coercionSeverity
property:
  datatype: string
  in: cutting
  in: burning
  in: bruising
  in: other
  max count: 1
  message: Self-harm type must be valid type.
  path: selfHarmType
property:
  datatype: decimal
  max count: 1
  max inclusive: 1.0
  message: Coercion effectiveness must be between 0.0 and 1.0.
  min inclusive: 0.0
  path: coercionEffectiveness
target class: SelfHarmCoercion

Self Immolation Coercion
type: EventType
type: Class
comment: Coercion of victims to set themselves on fire or engage in burning activities.
subclass of: Event
subclass of: SelfHarmCoercion

Sibling Abuse Coercion
type: EventType
type: Class
comment: Coercion of victims to abuse siblings or family members as part of exploitation.
subclass of: Event
subclass of: ExtremeDegradationCoercion

SocialEngineeringCampaignShape
type: NodeShape
property:
  datatype: string
  in: basic
  in: intermediate
  in: advanced
  in: sophisticated
  max count: 1
  message: Social engineering complexity must be valid level.
  path: socialEngineeringComplexity
target class: SocialEngineeringCampaign

Suicide Coercion
type: EventType
type: Class
comment: Coercion of victims toward suicide as ultimate form of exploitation and control.
subclass of: Event
subclass of: ExtremeDegradationCoercion

TrustBuildingProcessShape
type: NodeShape
property:
  datatype: decimal
  max count: 1
  max inclusive: 365.0
  message: Trust building duration must be between 0.1 and 365 days.
  min inclusive: 0.1
  path: trustBuildingDuration
target class: TrustBuildingProcess

Victim Content Compilation
type: SubKind
type: Class
comment: Organized compilation of content obtained from specific victim through exploitation and coercion.
subclass of: Lorebook

Victim Profile Development
type: EventType
type: Class
comment: Development of detailed victim profiles including vulnerabilities and exploitation opportunities.
subclass of: Event
subclass of: Action

VulnerablePopulationTargetingShape
type: NodeShape
property:
  datatype: string
  in: mental_health
  in: isolation
  in: trauma
  in: substance_abuse
  in: financial
  in: social
  max count: 1
  message: Vulnerability type must be valid type.
  path: vulnerabilityType
property:
  datatype: string
  in: broad
  in: focused
  in: precise
  in: surgical
  max count: 1
  message: Targeting precision must be valid level.
  path: targetingPrecision
target class: VulnerablePopulationTargeting

builds victim trust
type: ObjectProperty
comment: Links social engineering to trust building process.
domain: SocialEngineeringCampaign
range: TrustBuildingProcess

coerces into self harm
type: ObjectProperty
comment: Links enterprise role to victims coerced into self-harm.
domain: EnterpriseRole
range: Person

compiles content
type: ObjectProperty
comment: Links compilation system to content it compiles.
domain: ContentCompilationSystem
range: ObservableObject

coordinates across platforms
type: ObjectProperty
comment: Links enterprise to cross-platform coordination activities.
domain: ChildExploitationEnterprise
range: CrossPlatformCoordination

coordinates activities
type: ObjectProperty
comment: Links coordinator to activities they coordinate.
domain: CoordinatorRole
range: Action

correlates evidence
type: ObjectProperty
comment: Links investigation to evidence correlation performed.
domain: CrossPlatformEvidenceCorrelation
range: ObservableObject

exploits victim
type: ObjectProperty
comment: Links enterprise role to victims they exploit.
domain: EnterpriseRole
range: Person

has formation event
type: ObjectProperty
comment: Links network to the event of its formation.
domain: NihilisticViolentExtremismNetwork
range: Event

has inner core
type: ObjectProperty
comment: Links enterprise to its inner core structure.
domain: ChildExploitationEnterprise
range: InnerCore

has network cell
type: ObjectProperty
comment: Links extremist network to its operational cells.
domain: NihilisticViolentExtremismNetwork
range: ExtremistNetworkCell

has operational period
type: ObjectProperty
comment: Links enterprise to its operational time period.
domain: ChildExploitationEnterprise
range: Event

historically depends on
type: ObjectProperty
comment: Captures historical dependence between enterprise events and prior enabling events.
domain: Event
range: Event

identifies network member
type: ObjectProperty
comment: Links investigation to network members identified.
domain: IdentityCorrelationAnalysis
range: Person

infiltrates network
type: ObjectProperty
comment: Links covert operation to network being infiltrated.
domain: CovertEmployeeOperation
range: NihilisticViolentExtremismNetwork

maintains alt accounts
type: ObjectProperty
comment: Links enterprise member to alternate accounts they maintain.
domain: Person
range: AlternateAccountSystem

manages private groups
type: ObjectProperty
comment: Links coordinator to private groups they manage.
domain: CoordinatorRole
range: ObservableObject

maps network structure
type: ObjectProperty
comment: Links mapping investigation to network structure mapped.
domain: NetworkMappingInvestigation
range: EnterpriseHierarchy

operates enterprise
type: ObjectProperty
comment: Links network to child exploitation enterprise it operates.
domain: NihilisticViolentExtremismNetwork
range: ChildExploitationEnterprise

produces lorebook
type: ObjectProperty
comment: Links content producer to lorebook they create.
domain: ContentProducerRole
range: Lorebook

recruits members
type: ObjectProperty
comment: Links recruitment specialist to members they recruit.
domain: RecruitmentSpecialistRole
range: Person

targets vulnerability
type: ObjectProperty
comment: Links targeting action to specific vulnerability exploited.
domain: VulnerablePopulationTargeting
range: UcoObject

utilizes encrypted channels
type: ObjectProperty
comment: Links enterprise to encrypted channel networks used.
domain: ChildExploitationEnterprise
range: EncryptedChannelNetwork

Acquisition Phase
type: Phase
type: Class
comment: Phase involving forensic acquisition of digital evidence.
subclass of: ForensicAcquisitionAction

Advanced Search Technique
type: Class
comment: Specialized search techniques for locating digital evidence.
subclass of: Action

Analysis Phase
type: Phase
type: Class
comment: Phase involving detailed forensic analysis of acquired evidence.
subclass of: TimelineAnalysisAction

Automated Content Analysis Shape
type: NodeShape
comment: Validation shape for automated content analysis instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 100.0
  message: Automation percentage must be between 0.0 and 100.0.
  min count: 1
  min inclusive: 0.0
  path: automationPercentage
property:
  datatype: decimal
  max count: 1
  max inclusive: 1000000.0
  message: Processing speed must be between 1.0 and 1000000.0 files per hour.
  min count: 0
  min inclusive: 1.0
  path: processingSpeed
property:
  datatype: decimal
  max count: 1
  max inclusive: 1.0
  message: False positive rate must be between 0.0 and 1.0.
  min count: 0
  min inclusive: 0.0
  path: falsePositiveRate
target class: AutomatedContentAnalysis

Behavioral Fingerprinting Shape
type: NodeShape
comment: Validation shape for behavioral fingerprinting instances.
property:
  datatype: dateTime
  max count: 1
  message: Behavioral fingerprinting must specify start time.
  min count: 1
  path: startTime
target class: BehavioralFingerprinting

Chain of Custody Action Shape
type: NodeShape
property:
  datatype: dateTimeStamp
  max count: 1
  message: Chain of custody transfer must have exactly one begin timestamp (gUFO temporal)
  min count: 1
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: dateTimeStamp
  max count: 1
  message: Chain of custody transfer must have at most one end timestamp (gUFO temporal)
  path: hasEndPointInXSDDateTimeStamp
property:
  datatype: dateTime
  max count: 1
  message: A chain of custody action must have exactly one start time
  min count: 1
  path: startTime
property:
  class: UcoObject
  max count: 1
  message: A chain of custody action must specify exactly one transferring party
  min count: 1
  path: custodyTransferredFrom
property:
  class: UcoObject
  max count: 1
  message: A chain of custody action must specify exactly one receiving party
  min count: 1
  path: custodyTransferredTo
property:
  datatype: string
  in: analysis
  in: storage
  in: transport
  in: examination
  in: disposal
  in: court-presentation
  max count: 1
  message: Custody reason must be from allowed list: analysis, storage, transport, examination, disposal, court-presentation
  min count: 1
  path: custodyReason
property:
  datatype: string
  in: maintained
  in: compromised
  in: unknown
  max count: 1
  message: Custody integrity must be maintained, compromised, or unknown (gUFO quality aspect)
  path: custodyIntegrity
target class: ChainOfCustodyAction

ChainOfCustodyIntegrityBusinessRule
type: NodeShape
sparql:
  message: Chain of custody gaps compromise evidence integrity
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/forensics#
      prefix: cacontology-forensics
    declare:
      namespace: https://ontology.unifiedcyberontology.org/uco/core/
      prefix: uco-core
  select: SELECT $this WHERE { $this uco-core:startTime ?thisStart . ?previousAction uco-core:endTime ?previousEnd . ?previousAction cacontology-forensics:custodyTransferredTo ?transferee . $this cacontology-forensics:custodyTransferredFrom ?transferee . FILTER (?thisStart > (?previousEnd + "PT1H"^^xsd:duration)) }
target class: ChainOfCustodyAction

ChainOfCustodyTemporalOrderingShape
type: NodeShape
sparql:
  message: Chain of custody actions must maintain temporal ordering (gUFO temporal succession)
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/forensics#
      prefix: cacontology-forensics
    declare:
      namespace: https://ontology.unifiedcyberontology.org/uco/core/
      prefix: uco-core
  select: SELECT $this WHERE { $this uco-core:startTime ?thisTime . ?previousAction uco-core:endTime ?previousTime . ?previousAction cacontology-forensics:custodyTransferredTo ?transferee . $this cacontology-forensics:custodyTransferredFrom ?transferee . FILTER (?thisTime < ?previousTime) }
target class: ChainOfCustodyAction

Cross Platform Correlation Shape
type: NodeShape
comment: Validation shape for cross platform correlation instances.
property:
  datatype: dateTime
  max count: 1
  message: Cross platform correlation must specify start time.
  min count: 1
  path: startTime
property:
  class: Tool
  message: Cross platform correlation must specify at least one analysis tool.
  min count: 1
  path: usesTool
target class: CrossPlatformCorrelation

Cross Reference Analysis
type: Class
comment: Cross-referencing of digital evidence across multiple cases and international databases for victim identification.
subclass of: VictimIdentificationProcess

Custody Document Shape
type: NodeShape
property:
  datatype: dateTime
  max count: 1
  message: A custody document must have exactly one creation time
  min count: 1
  path: createdTime
property:
  datatype: dateTimeStamp
  max count: 1
  message: Custody document must have creation timestamp (gUFO temporal)
  min count: 1
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: string
  in: evidence-receipt
  in: custody-transfer
  in: examination-log
  in: disposal-certificate
  max count: 1
  message: Document type must be evidence-receipt, custody-transfer, examination-log, or disposal-certificate
  path: documentType
property:
  datatype: string
  in: draft
  in: final
  in: archived
  in: destroyed
  max count: 1
  message: Document status must be draft, final, archived, or destroyed (gUFO mode aspect)
  path: documentStatus
target class: CustodyDocument

Data Quality Shape
type: NodeShape
comment: Validates data quality for forensic entities.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Label should be between 5 and 200 characters when provided.
  min count: 0
  min length: 5
  path: label
property:
  datatype: string
  max count: 1
  max length: 1000
  message: Comment should be between 10 and 1000 characters when provided.
  min count: 0
  min length: 10
  path: comment
target class: ForensicAcquisitionAction
target class: ForensicImage
target class: MassDigitalEvidenceProcessing

Electronic Storage Device Detection Shape
type: NodeShape
comment: Validation shape for electronic storage device detection instances.
property:
  datatype: string
  in: k9_detection
  in: manual_search
  in: electronic_scanning
  in: x_ray_scanning
  in: metal_detection
  in: thermal_imaging
  max count: 1
  message: Detection method must be from the allowed list.
  min count: 1
  path: detectionMethod
property:
  datatype: decimal
  max count: 1
  max inclusive: 1.0
  message: Detection accuracy must be between 0.0 and 1.0.
  min count: 0
  min inclusive: 0.0
  path: detectionAccuracy
target class: ElectronicStorageDeviceDetection

Evidence Custodian Role Shape
type: NodeShape
property:
  datatype: dateTimeStamp
  max count: 1
  message: Evidence custodian role must have begin timestamp (gUFO temporal)
  min count: 1
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: dateTimeStamp
  max count: 1
  message: Evidence custodian role may have end timestamp (gUFO temporal)
  path: hasEndPointInXSDDateTimeStamp
property:
  has value: custodian
  message: An evidence custodian role must have kindOfRelationship value 'custodian'
  path: kindOfRelationship
property:
  datatype: string
  max count: 1
  message: Custody authority should be specified (gUFO quality aspect)
  path: custodyAuthority
property:
  datatype: string
  in: full
  in: limited
  in: read-only
  in: none
  max count: 1
  message: Access level must be full, limited, read-only, or none (gUFO mode aspect)
  path: accessLevel
target class: EvidenceCustodianRole

Evidence Triage System Shape
type: NodeShape
comment: Validation shape for evidence triage system instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 1.0
  message: Triage accuracy must be between 0.0 and 1.0.
  min count: 1
  min inclusive: 0.0
  path: triageAccuracy
property:
  datatype: string
  in: critical
  in: high
  in: medium
  in: low
  in: unknown
  max count: 1
  message: Priority classification must be from the allowed list.
  min count: 1
  path: priorityClassification
target class: EvidenceTriageSystem

Evidence Verification Action Extended Shape
type: NodeShape
comment: Extended validation shape for evidence verification action instances.
property:
  datatype: dateTime
  max count: 1
  message: Evidence verification must specify verification time.
  min count: 1
  path: startTime
property:
  class: Tool
  max count: 1
  message: Evidence verification must specify verification tool used.
  min count: 1
  path: usesTool
target class: EvidenceVerificationAction

Evidence Verification Action Shape
type: NodeShape
property:
  datatype: dateTimeStamp
  max count: 1
  message: Evidence verification must have exactly one begin timestamp (gUFO temporal)
  min count: 1
  path: hasBeginPointInXSDDateTimeStamp
property:
  class: UcoObject
  message: An evidence verification action must specify at least one object being verified
  min count: 1
  path: object
property:
  class: UcoObject
  message: An evidence verification action must include at least one verification hash
  min count: 1
  path: verificationHash
property:
  datatype: string
  in: MD5
  in: SHA1
  in: SHA256
  in: SHA512
  in: CRC32
  message: Verification method must be specified from allowed hash algorithms
  min count: 1
  path: verificationMethod
property:
  datatype: string
  in: verified
  in: failed
  in: incomplete
  max count: 1
  message: Verification result must be verified, failed, or incomplete (gUFO quality aspect)
  path: verificationResult
target class: EvidenceVerificationAction

EvidenceVerificationCompletenessBusinessRule
type: NodeShape
sparql:
  message: Failed evidence verification requires re-acquisition
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/forensics#
      prefix: cacontology-forensics
  select: SELECT $this WHERE { $this cacontology-forensics:verificationResult "failed" . FILTER NOT EXISTS { ?reacquisition rdf:type cacontology-forensics:ForensicAcquisitionAction . ?reacquisition cacontology-forensics:evidenceSeized ?evidence . $this uco-core:object ?evidence . } }
target class: EvidenceVerificationAction

ExaminerCertificationBusinessRule
type: NodeShape
sparql:
  message: Critical evidence acquisition requires certified examiner
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/forensics#
      prefix: cacontology-forensics
  select: SELECT $this WHERE { $this cacontology-forensics:acquisitionQuality "excellent" . $this cacontology-forensics:examinedBy ?examiner . ?examiner cacontology-forensics:certificationLevel ?level . FILTER (?level = "trainee") }
target class: ForensicAcquisitionAction

Forensic Acquisition Action Extended Shape
type: NodeShape
comment: Extended validation shape for forensic acquisition action instances.
property:
  datatype: string
  in: physical
  in: logical
  in: live
  in: chip_off
  in: jtag
  in: selective
  max count: 1
  message: Forensic acquisition must specify acquisition method from the allowed list.
  min count: 1
  path: acquisitionMethod
property:
  datatype: boolean
  max count: 1
  message: Forensic acquisition must specify if write blocking was used.
  min count: 1
  path: writeBlockingUsed
property:
  datatype: dateTime
  max count: 1
  message: Forensic acquisition must specify start time.
  min count: 1
  path: startTime
property:
  datatype: dateTime
  max count: 1
  message: Forensic acquisition may specify end time.
  min count: 0
  path: endTime
target class: ForensicAcquisitionAction

Forensic Acquisition Action Shape
type: NodeShape
property:
  datatype: dateTimeStamp
  max count: 1
  message: Forensic acquisition must have exactly one begin timestamp (gUFO temporal)
  min count: 1
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: dateTimeStamp
  max count: 1
  message: Forensic acquisition must have at most one end timestamp (gUFO temporal)
  path: hasEndPointInXSDDateTimeStamp
property:
  class: Tool
  message: A forensic acquisition action must specify at least one tool used
  min count: 1
  path: usesTool
property:
  datatype: string
  in: physical
  in: logical
  in: live
  in: remote
  in: network
  max count: 1
  message: Acquisition method must be one of: physical, logical, live, remote, network
  min count: 1
  path: acquisitionMethod
property:
  datatype: boolean
  max count: 1
  message: A forensic acquisition action must specify whether write-blocking was used
  min count: 1
  path: writeBlockingUsed
property:
  class: UcoObject
  message: A forensic acquisition action must specify at least one evidence item seized
  min count: 1
  path: evidenceSeized
property:
  class: ForensicImage
  message: A forensic acquisition action must produce at least one forensic copy
  min count: 1
  path: forensicCopy
property:
  datatype: string
  in: excellent
  in: good
  in: acceptable
  in: poor
  max count: 1
  message: Acquisition quality must be excellent, good, acceptable, or poor (gUFO quality aspect)
  path: acquisitionQuality
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Acquisition completeness must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: acquisitionCompleteness
target class: ForensicAcquisitionAction

Forensic Acquisition Cross Reference Shape
type: NodeShape
comment: Validates cross-references between forensic acquisition and related entities.
sparql:
  message: Forensic acquisition must have tool, evidence seized, and forensic copy.
  select: SELECT $this WHERE { $this a cacontology-forensics:ForensicAcquisitionAction . FILTER NOT EXISTS { $this uco-action:usesTool ?tool ; cacontology-forensics:evidenceSeized ?evidence ; cacontology-forensics:forensicCopy ?copy . } }
target class: ForensicAcquisitionAction

ForensicActionTemporalShape
type: NodeShape
property:
  datatype: dateTimeStamp
  max count: 1
  message: Forensic action must have at most one begin timestamp (gUFO temporal constraint)
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: dateTimeStamp
  max count: 1
  message: Forensic action must have at most one end timestamp (gUFO temporal constraint)
  path: hasEndPointInXSDDateTimeStamp
sparql:
  message: Forensic action end time must be after begin time (gUFO temporal ordering)
  prefixes:
    declare:
      namespace: http://purl.org/nemo/gufo#
      prefix: gufo
  select: SELECT $this WHERE { $this gufo:hasBeginPointInXSDDateTimeStamp ?beginTime . $this gufo:hasEndPointInXSDDateTimeStamp ?endTime . FILTER (?endTime <= ?beginTime) }
target class: Event

ForensicEventParticipationShape
type: NodeShape
property:
  message: Every forensic event must have at least one participant (gUFO participation)
  min count: 1
  path:
    alternative path: examinedBy
    alternative path: performedBy
    alternative path: witnessedBy
    alternative path: authorizedBy
target class: Event

ForensicEventTypeValidationShape
type: NodeShape
message: Every forensic EventType must extend gufo:Event
property:
  has value: EventType
  min count: 1
  path: type
property:
  class: Event
  min count: 1
  path: subClassOf
target class: EventType

Forensic Examiner Role Shape
type: NodeShape
property:
  datatype: dateTimeStamp
  max count: 1
  message: Forensic examiner role must have begin timestamp (gUFO temporal)
  min count: 1
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: dateTimeStamp
  max count: 1
  message: Forensic examiner role may have end timestamp (gUFO temporal)
  path: hasEndPointInXSDDateTimeStamp
property:
  has value: examiner
  message: A forensic examiner role must have kindOfRelationship value 'examiner'
  path: kindOfRelationship
property:
  datatype: string
  in: trainee
  in: certified
  in: senior
  in: expert
  max count: 1
  message: Certification level must be trainee, certified, senior, or expert (gUFO quality aspect)
  path: certificationLevel
property:
  datatype: string
  max count: 1
  message: Specialization area should be specified (gUFO quality aspect)
  path: specializationArea
target class: ForensicExaminerRole

ForensicFunctionalComplexValidationShape
type: NodeShape
message: Forensic tools must be properly classified as gUFO FunctionalComplex
property:
  has value: FunctionalComplex
  min count: 1
  path: type
target class: FunctionalComplex

Forensic Image Extended Shape
type: NodeShape
comment: Extended validation shape for forensic image instances with comprehensive digital evidence requirements.
property:
  datatype: string
  in: physical_imaging
  in: logical_imaging
  in: live_imaging
  in: chip_off
  in: jtag
  in: selective_imaging
  max count: 1
  message: Forensic image must specify acquisition method from the allowed list.
  min count: 1
  path: acquisitionMethod
property:
  datatype: dateTime
  max count: 1
  message: Forensic image must specify creation time.
  min count: 1
  path: createdTime
property:
  datatype: boolean
  max count: 1
  message: Forensic image must specify if write blocking was used.
  min count: 1
  path: writeBlockingUsed
property:
  datatype: decimal
  max count: 1
  max inclusive: 1000000000000.0
  message: Image size must be between 0 and 1TB (in bytes).
  min count: 0
  min inclusive: 0.0
  path: sizeInBytes
target class: ForensicImage

Forensic Image Shape
type: NodeShape
property:
  datatype: dateTimeStamp
  max count: 1
  message: Forensic image must have creation timestamp (gUFO temporal)
  min count: 1
  path: hasBeginPointInXSDDateTimeStamp
property:
  class: UcoObject
  message: A forensic image must have at least one verification hash
  min count: 1
  path: verificationHash
property:
  class: UcoObject
  message: A forensic image must have at least one source hash for verification
  min count: 1
  path: sourceHash
property:
  datatype: string
  in: E01
  in: DD
  in: AFF
  in: VMDK
  in: VHD
  max count: 1
  message: Image format must be E01, DD, AFF, VMDK, or VHD
  path: imageFormat
property:
  datatype: boolean
  max count: 1
  message: Must specify if compression was used (gUFO quality aspect)
  path: compressionUsed
property:
  datatype: string
  in: verified
  in: corrupted
  in: unknown
  max count: 1
  message: Image integrity must be verified, corrupted, or unknown (gUFO quality aspect)
  path: imageIntegrity
target class: ForensicImage

ForensicInvestigationCompositionShape
type: NodeShape
property:
  class: Event
  message: Forensic investigation must have at least one forensic action (gUFO part-whole)
  min count: 1
  path: hasForensicAction
target class: ForensicInvestigation

ForensicKindValidationShape
type: NodeShape
message: Every forensic Kind must be declared as rdf:type gufo:Kind
property:
  has value: Kind
  min count: 1
  path: type
target class: Kind

ForensicRoleValidationShape
type: NodeShape
message: Forensic roles are anti-rigid and cannot be subclasses of rigid Kinds
not:
  property:
    class: Kind
    path: subClassOf
property:
  has value: Role
  min count: 1
  path: type
target class: Role

Forensic Tool Shape
type: NodeShape
property:
  datatype: string
  max count: 1
  message: A forensic tool must have exactly one name
  min count: 1
  path: name
property:
  datatype: string
  max count: 1
  message: Tool version should be specified (gUFO quality aspect)
  path: toolVersion
property:
  datatype: string
  in: validated
  in: approved
  in: testing
  in: deprecated
  max count: 1
  message: Validation status must be validated, approved, testing, or deprecated (gUFO mode aspect)
  path: validationStatus
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Tool reliability must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: toolReliability
target class: ForensicImagingTool
target class: HashingTool
target class: MemoryForensicTool
target class: MobileForensicTool
target class: NetworkForensicTool

ForensicToolValidationBusinessRule
type: NodeShape
sparql:
  message: Critical forensic acquisitions must use validated tools
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/forensics#
      prefix: cacontology-forensics
    declare:
      namespace: https://ontology.unifiedcyberontology.org/uco/action/
      prefix: uco-action
  select: SELECT $this WHERE { $this cacontology-forensics:acquisitionQuality "excellent" . $this uco-action:usesTool ?tool . ?tool cacontology-forensics:validationStatus ?status . FILTER (?status != "validated") }
target class: ForensicAcquisitionAction

HasVerificationHashShape
type: PropertyShape
class: UcoObject
description: Links forensic artifacts to verification hashes
min count: 1
name: has verification hash
path: verificationHash

Hidden Device Recovery Shape
type: NodeShape
comment: Validation shape for hidden device recovery instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 1000
  message: Devices recovered must be between 1 and 1000.
  min count: 1
  min inclusive: 1
  path: devicesRecovered
property:
  datatype: dateTime
  max count: 1
  message: Hidden device recovery must specify start time.
  min count: 1
  path: startTime
target class: HiddenDeviceRecovery

Image Analysis for Victim ID Shape
type: NodeShape
comment: Validation shape for image analysis for victim identification instances.
property:
  class: Tool
  message: Image analysis for victim ID must specify at least one analysis tool.
  min count: 1
  path: usesTool
property:
  datatype: dateTime
  max count: 1
  message: Image analysis must specify analysis time.
  min count: 1
  path: startTime
target class: ImageAnalysisForVictimID

K9 Assisted Forensics Shape
type: NodeShape
comment: Validation shape for K9 assisted forensics instances.
property:
  datatype: boolean
  max count: 1
  message: K9 assisted forensics must specify if K9 assistance was provided.
  min count: 1
  path: k9AssistanceProvided
property:
  datatype: dateTime
  max count: 1
  message: K9 assisted forensics must specify start time.
  min count: 1
  path: startTime
target class: K9AssistedForensics

Mass Digital Evidence Processing Shape
type: NodeShape
comment: Validation shape for mass digital evidence processing instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 10000.0
  message: Evidence volume must be between 0.001 and 10000 terabytes.
  min count: 1
  min inclusive: 0.001
  path: evidenceVolumeTerabytes
property:
  datatype: decimal
  max count: 1
  max inclusive: 1000.0
  message: Files processed must be between 0.001 and 1000 million.
  min count: 0
  min inclusive: 0.001
  path: filesProcessedMillions
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 3650
  message: Processing timeframe must be between 1 and 3650 days (10 years).
  min count: 1
  min inclusive: 1
  path: processingTimeframeDays
property:
  datatype: dateTime
  max count: 1
  message: Mass processing must specify start time.
  min count: 1
  path: startTime
target class: MassDigitalEvidenceProcessing

Mass Processing Validation Shape
type: NodeShape
comment: Validates mass digital evidence processing consistency.
sparql:
  message: Large evidence volumes should have reasonable processing timeframes.
  select: SELECT $this WHERE { $this cacontology-forensics:evidenceVolumeTerabytes ?volume ; cacontology-forensics:processingTimeframeDays ?days . FILTER (?volume > 100.0 && ?days < 30) }
target class: MassDigitalEvidenceProcessing

Memory Dump
type: Class
comment: A snapshot of volatile system memory captured for forensic analysis.
subclass of: Object
subclass of: ObservableObject

Metadata Correlation
type: Class
comment: Correlation analysis of metadata across multiple files and platforms.
subclass of: ContentCorrelationAnalysis

Metadata Extraction Action Shape
type: NodeShape
property:
  datatype: dateTimeStamp
  max count: 1
  message: Metadata extraction must have exactly one begin timestamp (gUFO temporal)
  min count: 1
  path: hasBeginPointInXSDDateTimeStamp
property:
  class: UcoObject
  message: A metadata extraction action must specify at least one source object
  min count: 1
  path: object
property:
  class: Tool
  message: A metadata extraction action must specify at least one extraction tool used
  min count: 1
  path: usesTool
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Extraction completeness must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: extractionCompleteness
property:
  datatype: string
  max count: 1
  message: Metadata types extracted should be specified (gUFO quality aspect)
  path: metadataTypes
target class: MetadataExtractionAction

Mobile Forensic Tool Extended Shape
type: NodeShape
comment: Extended validation shape for mobile forensic tool instances.
property:
  datatype: string
  max count: 1
  max length: 100
  message: Mobile forensic tool must specify name (3-100 characters).
  min count: 1
  min length: 3
  path: name
property:
  datatype: string
  max count: 1
  max length: 50
  message: Tool version should be 1-50 characters when provided.
  min count: 0
  min length: 1
  path: version
target class: MobileForensicTool

Network Capture
type: Class
comment: A capture of network traffic packets for forensic analysis.
subclass of: Object
subclass of: ObservableObject

ProducesForensicImageShape
type: PropertyShape
class: ForensicImage
description: Links acquisition to forensic image produced
min count: 1
name: produces forensic image
path: forensicCopy

Recovered File Extended Shape
type: NodeShape
comment: Extended validation shape for recovered file instances.
property:
  datatype: string
  in: file_carving
  in: undelete_utility
  in: hex_editor
  in: specialized_software
  in: hardware_recovery
  in: manual_reconstruction
  max count: 1
  message: Recovered file must specify recovery method from the allowed list.
  min count: 1
  path: recoveryMethod
property:
  datatype: string
  max count: 1
  max length: 255
  message: Recovered file must specify file name (1-255 characters).
  min count: 1
  min length: 1
  path: fileName
property:
  datatype: string
  max count: 1
  max length: 1000
  message: Recovered file must specify file path (1-1000 characters).
  min count: 1
  min length: 1
  path: filePath
property:
  datatype: dateTime
  max count: 1
  message: Recovered file may specify creation time.
  min count: 0
  path: createdTime
property:
  datatype: dateTime
  max count: 1
  message: Recovered file may specify modification time.
  min count: 0
  path: modifiedTime
target class: RecoveredFile

Recovered File Shape
type: NodeShape
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Recovery confidence must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: recoveryConfidence
property:
  datatype: string
  in: complete
  in: partial
  in: corrupted
  max count: 1
  message: Data integrity must be complete, partial, or corrupted (gUFO quality aspect)
  path: dataIntegrity
property:
  datatype: dateTimeStamp
  max count: 1
  message: Recovered file may have recovery timestamp (gUFO temporal)
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: string
  in: undelete
  in: carving
  in: slack-space
  in: unallocated-space
  in: registry-recovery
  max count: 1
  message: Recovery method must be from allowed list: undelete, carving, slack-space, unallocated-space, registry-recovery
  min count: 1
  path: recoveryMethod
target class: RecoveredFile

Reporting Phase
type: Phase
type: Class
comment: Phase involving preparation of forensic reports and findings.
subclass of: Action

Scalable Hash Analysis Shape
type: NodeShape
comment: Validation shape for scalable hash analysis instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 10000.0
  message: Hash database size must be between 0.001 and 10000 million entries.
  min count: 1
  min inclusive: 0.001
  path: hashDatabaseSize
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 10000000
  message: Hash matches found must be between 0 and 10 million.
  min count: 0
  min inclusive: 0
  path: hashMatchesFound
target class: ScalableHashAnalysis

TemporalConsistencyBusinessRule
type: NodeShape
sparql:
  message: Timeline analysis must have sufficient temporal accuracy for evidence quality
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/forensics#
      prefix: cacontology-forensics
  select: SELECT $this WHERE { $this cacontology-forensics:timelineScope "comprehensive" . $this cacontology-forensics:temporalAccuracy ?accuracy . FILTER (?accuracy < 0.9) }
target class: TimelineAnalysisAction

Temporal Pattern Analysis Shape
type: NodeShape
comment: Validation shape for temporal pattern analysis instances.
property:
  datatype: dateTime
  max count: 1
  message: Temporal pattern analysis must specify start time.
  min count: 1
  path: startTime
property:
  datatype: dateTime
  max count: 1
  message: Temporal pattern analysis may specify end time.
  min count: 0
  path: endTime
target class: TemporalPatternAnalysis

Temporal Validation Shape
type: NodeShape
comment: Validates temporal consistency in forensic actions.
sparql:
  message: Acquisition start time must be before end time when both are specified.
  select: SELECT $this WHERE { $this uco-core:startTime ?start ; uco-core:endTime ?end . FILTER (?start >= ?end) }
target class: ForensicAcquisitionAction

Testimony Phase
type: Phase
type: Class
comment: Phase involving expert testimony and courtroom presentation.
subclass of: Action

Timeline Analysis Action Shape
type: NodeShape
property:
  datatype: dateTimeStamp
  max count: 1
  message: Timeline analysis must have exactly one begin timestamp (gUFO temporal)
  min count: 1
  path: hasBeginPointInXSDDateTimeStamp
property:
  class: UcoObject
  message: A timeline analysis action must include at least one timeline event
  min count: 1
  path: timelineEvent
property:
  class: Tool
  message: A timeline analysis action must specify at least one analysis tool used
  min count: 1
  path: usesTool
property:
  datatype: string
  in: file-system
  in: application
  in: network
  in: memory
  in: comprehensive
  max count: 1
  message: Timeline scope must be file-system, application, network, memory, or comprehensive
  path: timelineScope
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Temporal accuracy must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: temporalAccuracy
target class: TimelineAnalysisAction

UsesForensicToolShape
type: PropertyShape
class: Tool
description: Links forensic actions to tools used
min count: 1
name: uses forensic tool
path: usesTool

Verification Timing Shape
type: NodeShape
comment: Validates evidence verification timing.
sparql:
  message: Evidence verification should occur after acquisition.
  select: SELECT $this WHERE { ?acquisition cacontology-forensics:forensicCopy ?image . ?image cacontology-forensics:verificationHash ?hash . $this uco-core:object ?hash ; uco-core:startTime ?verificationTime . ?acquisition uco-core:startTime ?acquisitionTime . FILTER (?verificationTime < ?acquisitionTime) }
target class: EvidenceVerificationAction

Victim Identification Process Shape
type: NodeShape
comment: Validation shape for victim identification process instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 10000
  message: Victims identified count must be between 0 and 10000.
  min count: 0
  min inclusive: 0
  path: victimsIdentifiedCount
property:
  datatype: string
  max count: 1
  max length: 100
  message: Victim geographic origin should be 2-100 characters when provided.
  min count: 0
  min length: 2
  path: victimGeographicOrigin
property:
  datatype: string
  in: toddlers
  in: children
  in: teenagers
  in: toddlers_to_children
  in: children_to_teenagers
  in: toddlers_to_teenagers
  in: unknown
  max count: 1
  message: Victim age range must be from the allowed list.
  min count: 0
  path: victimAgeRange
property:
  datatype: dateTime
  max count: 1
  message: Victim identification process must specify start time.
  min count: 1
  path: startTime
target class: VictimIdentificationProcess

Victim Identification Specialist
type: Role
type: Class
comment: Role of specialist focused on identifying child victims from digital evidence.
subclass of: Role

Victim Removal Action
type: Class
comment: Action taken to remove identified victims from further harm and exploitation.
subclass of: Event
subclass of: Action

Write Blocking Validation Shape
type: NodeShape
comment: Validates write blocking usage in forensic acquisitions.
sparql:
  message: Physical acquisitions should use write blocking.
  select: SELECT $this WHERE { $this cacontology-forensics:acquisitionMethod "physical" ; cacontology-forensics:writeBlockingUsed false . }
target class: ForensicAcquisitionAction

analyses user behavior
type: ObjectProperty
comment: Links processing to user behavior forensic analysis.
domain: MassDigitalEvidenceProcessing
range: UserBehaviorForensics

analyzes communication patterns
type: ObjectProperty
comment: Links user behavior analysis to communication pattern analysis.
domain: UserBehaviorForensics
range: CommunicationPatternAnalysis

analyzes network traffic
type: ObjectProperty
comment: Links user behavior analysis to network traffic analysis.
domain: UserBehaviorForensics
range: NetworkTrafficAnalysis

analyzes temporal patterns
type: ObjectProperty
comment: Links content correlation to temporal pattern analysis.
domain: ContentCorrelationAnalysis
range: TemporalPatternAnalysis

arrests resulting
type: DatatypeProperty
comment: Number of arrests resulting from forensic investigations (e.g., 654 for SA JACET).
range: nonNegativeInteger

behavior patterns identified
type: DatatypeProperty
comment: Number of distinct behavior patterns identified in user analysis.
domain: UserBehaviorForensics
range: nonNegativeInteger

behavioral fingerprints created
type: DatatypeProperty
comment: Number of unique behavioral fingerprints created from analysis.
domain: BehavioralFingerprinting
range: nonNegativeInteger

case exhibit number
type: DatatypeProperty
comment: The official exhibit number assigned to evidence for legal proceedings.
range: string

communication graph complexity
type: DatatypeProperty
comment: Complexity measure of communication graph analysis (simple, moderate, complex, highly_complex).
domain: CommunicationPatternAnalysis
range: string

coordinates international processing
type: ObjectProperty
comment: Links mass processing to international evidence processing coordination.
domain: MassDigitalEvidenceProcessing
range: InternationalEvidenceProcessing

correlates across platforms
type: ObjectProperty
comment: Links analysis to cross-platform correlation performed.
domain: ContentCorrelationAnalysis
range: CrossPlatformCorrelation

correlates content
type: ObjectProperty
comment: Links automated analysis to content correlation analysis.
domain: AutomatedContentAnalysis
range: ContentCorrelationAnalysis

correlation latency
type: DatatypeProperty
comment: Average latency for real-time correlation analysis in milliseconds.
domain: RealTimeCorrelation
range: decimal

correlation strength
type: DatatypeProperty
comment: Strength of content correlation found (weak, moderate, strong, very_strong).
domain: ContentCorrelationAnalysis
range: string

creates behavioral fingerprints
type: ObjectProperty
comment: Links user behavior analysis to fingerprinting performed.
domain: UserBehaviorForensics
range: BehavioralFingerprinting

cross-border data sharing
type: DatatypeProperty
comment: Whether cross-border data sharing protocols are enabled.
domain: InternationalEvidenceProcessing
range: boolean

cross-platform matches
type: DatatypeProperty
comment: Number of matches found across different platforms.
domain: CrossPlatformCorrelation
range: nonNegativeInteger

data transfer volume
type: DatatypeProperty
comment: Volume of data transfers analyzed in terabytes.
domain: NetworkTrafficAnalysis
range: decimal

databases integrated
type: DatatypeProperty
comment: Number of international databases integrated for intelligence correlation.
domain: DatabaseIntelligenceIntegration
range: nonNegativeInteger

discovers networks
type: ObjectProperty
comment: Links content correlation to criminal networks discovered.
domain: ContentCorrelationAnalysis
range: ObservableObject

distributes processing
type: ObjectProperty
comment: Links mass processing to distributed processing systems.
domain: MassDigitalEvidenceProcessing
range: DistributedForensicProcessing

enables real-time correlation
type: ObjectProperty
comment: Links automated analysis to real-time correlation capabilities.
domain: AutomatedContentAnalysis
range: RealTimeCorrelation

evidence location
type: DatatypeProperty
comment: The physical or logical location where evidence was found (e.g., 'bedroom computer', 'cloud storage', 'mobile device').
range: string

feature vectors used
type: DatatypeProperty
comment: Number of feature vectors used in machine learning analysis.
domain: MachineLearningCorrelation
range: nonNegativeInteger

fingerprint accuracy
type: DatatypeProperty
comment: Accuracy of behavioral fingerprint matching (0.0-1.0).
domain: BehavioralFingerprinting
range: decimal

forensic labs involved
type: DatatypeProperty
comment: Number of forensic laboratories involved in international evidence processing.
domain: InternationalEvidenceProcessing
range: nonNegativeInteger

forensic phase duration
type: DatatypeProperty
comment: Duration of forensic phase.
domain: Phase
range: duration

forensic report
type: ObjectProperty
comment: Links a forensic action to its associated report or documentation.
range: ObservableObject

generates real-time alerts
type: ObjectProperty
comment: Links real-time correlation to alerts generated.
domain: RealTimeCorrelation
range: ObservableObject

generates triage results
type: ObjectProperty
comment: Links triage system to results generated.
domain: EvidenceTriageSystem
range: ObservableObject

geographic distribution
type: DatatypeProperty
comment: Geographic distribution of processing nodes (countries involved).
domain: DistributedForensicProcessing
range: string

geographic radius
type: DatatypeProperty
comment: Geographic radius of correlation analysis in kilometers.
domain: GeospatialCorrelation
range: decimal

geospatial accuracy
type: DatatypeProperty
comment: Accuracy of geospatial correlation analysis in meters.
domain: GeospatialCorrelation
range: decimal

has forensic phase begin point
type: DatatypeProperty
comment: Temporal begin point for forensic phase.
domain: Phase
range: dateTimeStamp
sub property of: hasBeginPointInXSDDateTimeStamp

has forensic phase end point
type: DatatypeProperty
comment: Temporal end point for forensic phase.
domain: Phase
range: dateTimeStamp
sub property of: hasEndPointInXSDDateTimeStamp

has role begin point
type: DatatypeProperty
comment: Temporal begin point for forensic role.
domain: Role
range: dateTimeStamp
sub property of: hasBeginPointInXSDDateTimeStamp

has role end point
type: DatatypeProperty
comment: Temporal end point for forensic role.
domain: Role
range: dateTimeStamp
sub property of: hasEndPointInXSDDateTimeStamp

identifies cross-platform activity
type: ObjectProperty
comment: Links cross-platform analysis to activities identified.
domain: CrossPlatformCorrelation
range: ObservableObject

identifies geographic clusters
type: ObjectProperty
comment: Links geospatial analysis to geographic clusters identified.
domain: GeospatialCorrelation
range: ObservableObject

identifies network anomalies
type: ObjectProperty
comment: Links network analysis to anomalies identified.
domain: NetworkTrafficAnalysis
range: ObservableObject

identifies patterns
type: ObjectProperty
comment: Links user behavior analysis to patterns identified.
domain: UserBehaviorForensics
range: ObservableObject

identifies temporal clusters
type: ObjectProperty
comment: Links temporal analysis to time-based clusters identified.
domain: TemporalPatternAnalysis
range: ObservableObject

integrates intelligence databases
type: ObjectProperty
comment: Links mass processing to database intelligence integration.
domain: MassDigitalEvidenceProcessing
range: DatabaseIntelligenceIntegration

intelligence hits
type: DatatypeProperty
comment: Number of intelligence hits found across integrated databases.
domain: DatabaseIntelligenceIntegration
range: nonNegativeInteger

investigation duration
type: DatatypeProperty
comment: Duration of extended investigation (e.g., 'weeks', 'months', 'years').
domain: ExtendedInvestigationTimeline
range: string

involves forensic lab
type: ObjectProperty
comment: Links international processing to participating forensic laboratories.
domain: InternationalEvidenceProcessing
range: Organization

location points analyzed
type: DatatypeProperty
comment: Number of location points included in geospatial analysis.
domain: GeospatialCorrelation
range: nonNegativeInteger

ML model accuracy
type: DatatypeProperty
comment: Accuracy of machine learning correlation models (0.0-1.0).
domain: MachineLearningCorrelation
range: decimal

network connections found
type: DatatypeProperty
comment: Number of network connections identified through content correlation.
domain: ContentCorrelationAnalysis
range: nonNegativeInteger

network sessions analyzed
type: DatatypeProperty
comment: Number of network sessions included in traffic analysis.
domain: NetworkTrafficAnalysis
range: nonNegativeInteger

parallel processing enabled
type: DatatypeProperty
comment: Whether parallel processing capabilities are enabled.
domain: DistributedForensicProcessing
range: boolean

performs geospatial analysis
type: ObjectProperty
comment: Links evidence processing to geospatial correlation analysis.
domain: MassDigitalEvidenceProcessing
range: GeospatialCorrelation

performs hash analysis
type: ObjectProperty
comment: Links automated analysis to scalable hash analysis systems.
domain: AutomatedContentAnalysis
range: ScalableHashAnalysis

platform correlation score
type: DatatypeProperty
comment: Correlation score across platforms (0.0-1.0).
domain: CrossPlatformCorrelation
range: decimal

platforms analyzed
type: DatatypeProperty
comment: Number of platforms included in cross-platform correlation analysis.
domain: CrossPlatformCorrelation
range: nonNegativeInteger

processes evidence
type: ObjectProperty
comment: Links mass processing system to evidence being processed.
domain: MassDigitalEvidenceProcessing
range: ObservableObject

processing nodes
type: DatatypeProperty
comment: Number of processing nodes used in distributed forensic processing.
domain: DistributedForensicProcessing
range: nonNegativeInteger

produces intelligence
type: ObjectProperty
comment: Links forensic analysis to intelligence products generated.
domain: MassDigitalEvidenceProcessing
range: ObservableObject

queries intelligence database
type: ObjectProperty
comment: Links integration to specific databases queried.
domain: DatabaseIntelligenceIntegration
range: ObservableObject

query response time
type: DatatypeProperty
comment: Average response time for database queries in seconds.
domain: DatabaseIntelligenceIntegration
range: decimal

real-time alerts
type: DatatypeProperty
comment: Number of real-time alerts generated from correlation analysis.
domain: RealTimeCorrelation
range: nonNegativeInteger

referrals received
type: DatatypeProperty
comment: Number of referrals received from national and international law enforcement (e.g., 677 for SA JACET).
range: nonNegativeInteger

risk levels assigned
type: DatatypeProperty
comment: Number of users assigned risk levels through behavioral analysis.
domain: UserBehaviorForensics
range: nonNegativeInteger

search warrant assisted
type: DatatypeProperty
comment: Whether detection dog assisted in search warrant execution.
domain: DetectionDogAssist
range: boolean

shares processing load
type: ObjectProperty
comment: Links distributed processing to load sharing arrangements.
domain: DistributedForensicProcessing
range: Organization

standardized processing
type: DatatypeProperty
comment: Whether standardized international processing protocols are used.
domain: InternationalEvidenceProcessing
range: boolean

streaming data rate
type: DatatypeProperty
comment: Rate of streaming data processing in MB per second.
domain: RealTimeCorrelation
range: decimal

suspicious connections identified
type: DatatypeProperty
comment: Number of suspicious network connections identified.
domain: NetworkTrafficAnalysis
range: nonNegativeInteger

temporal patterns identified
type: DatatypeProperty
comment: Number of distinct temporal patterns identified.
domain: TemporalPatternAnalysis
range: nonNegativeInteger

temporal resolution
type: DatatypeProperty
comment: Temporal resolution of analysis (seconds, minutes, hours, days).
domain: TemporalPatternAnalysis
range: string

time range analyzed
type: DatatypeProperty
comment: Time range covered by temporal pattern analysis in days.
domain: TemporalPatternAnalysis
range: decimal

training data size
type: DatatypeProperty
comment: Size of training dataset used for ML correlation in millions of records.
domain: MachineLearningCorrelation
range: decimal

trains correlation model
type: ObjectProperty
comment: Links ML correlation to model training performed.
domain: MachineLearningCorrelation
range: ObservableObject

triages evidence
type: ObjectProperty
comment: Links automated analysis to evidence triage systems.
domain: AutomatedContentAnalysis
range: EvidenceTriageSystem

user accounts analyzed
type: DatatypeProperty
comment: Number of user accounts analyzed in mass processing (nearly 2 million for Kidflix operation).
domain: UserBehaviorForensics
range: nonNegativeInteger

utilises system
type: ObjectProperty
comment: Links processing action to automated systems used.
domain: MassDigitalEvidenceProcessing
range: AutomatedContentAnalysis

utilizes machine learning
type: ObjectProperty
comment: Links correlation analysis to machine learning methods used.
domain: ContentCorrelationAnalysis
range: MachineLearningCorrelation

Alcohol Facilitated Grooming
type: Class
comment: Grooming using alcohol to impair victim judgment and reduce resistance.
subclass of: SubstanceFacilitatedGrooming

BoundaryTestingProgressionBusinessRule
type: NodeShape
sparql:
  message: High severity boundary violations require victim compliance response
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/grooming#
      prefix: cacontology-grooming
  select: SELECT $this WHERE { $this cacontology-grooming:boundaryViolationSeverity ?severity ; cacontology-grooming:victimResponse ?response . FILTER (?severity >= 8 && ?response = "resistance") }
target class: BoundaryTesting

Boundary Testing Shape
type: NodeShape
comment: Validation shape for boundary testing behavior instances with gUFO integration.
property:
  datatype: string
  in: gradual_escalation
  in: sudden_violation
  in: repeated_testing
  in: permission_seeking
  in: normalization
  in: desensitization
  max count: 1
  message: Boundary testing must specify testing method from the allowed list.
  min count: 1
  path: testingMethod
property:
  datatype: string
  in: resistance
  in: acceptance
  in: confusion
  in: compliance
  in: withdrawal
  in: normalization
  max count: 1
  message: Victim response must be from the allowed list (gUFO quality aspect).
  min count: 0
  path: victimResponse
property:
  datatype: integer
  max count: 1
  max inclusive: 10
  message: Boundary violation severity must be between 1 and 10 (gUFO quality aspect)
  min inclusive: 1
  path: boundaryViolationSeverity
property:
  datatype: dateTimeStamp
  max count: 1
  message: Boundary testing may have begin timestamp (gUFO temporal)
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: string
  in: physical
  in: emotional
  in: sexual
  in: privacy
  in: authority
  in: social
  in: digital
  max count: 1
  message: Boundary testing must specify boundary type from the allowed list.
  min count: 1
  path: boundaryType
target class: BoundaryTesting

Communication Tactics Shape
type: NodeShape
comment: Validation shape for communication tactics instances with gUFO integration.
property:
  datatype: dateTimeStamp
  max count: 1
  message: Communication tactics may have begin timestamp (gUFO temporal)
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: string
  in: text_messaging
  in: voice_calls
  in: video_calls
  in: social_media
  in: gaming_platforms
  in: email
  in: anonymous_chat
  in: encrypted_messaging
  max count: 1
  message: Communication tactics must specify method from the allowed list.
  min count: 1
  path: communicationMethod
property:
  datatype: string
  in: sporadic
  in: weekly
  in: daily
  in: multiple_daily
  in: constant
  in: on_demand
  max count: 1
  message: Communication frequency must be from the allowed list (gUFO quality aspect).
  min count: 0
  path: communicationFrequency
property:
  datatype: string
  in: friendly
  in: caring
  in: romantic
  in: sexual
  in: threatening
  in: manipulative
  in: controlling
  max count: 1
  message: Communication tone must be from the allowed list (gUFO quality aspect).
  min count: 0
  path: communicationTone
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Communication effectiveness must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: communicationEffectiveness
target class: CommunicationTactics

Emotional Vulnerability Shape
type: NodeShape
comment: Validation shape for emotional vulnerability instances with gUFO integration.
property:
  datatype: string
  in: loneliness
  in: depression
  in: anxiety
  in: low_self_esteem
  in: anger
  in: confusion
  in: grief
  in: trauma_response
  max count: 1
  message: Emotional vulnerability must specify emotional state from the allowed list (gUFO quality aspect).
  min count: 1
  path: emotionalState
property:
  datatype: string
  in: attention
  in: validation
  in: acceptance
  in: love
  in: security
  in: understanding
  in: belonging
  in: control
  max count: 1
  message: Emotional need must be from the allowed list (gUFO quality aspect).
  min count: 0
  path: emotionalNeed
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Emotional intensity must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: emotionalIntensity
target class: EmotionalVulnerability

EscalationConsistencyBusinessRule
type: NodeShape
sparql:
  message: Rapid escalation should have short duration and high predictability
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/grooming#
      prefix: cacontology-grooming
  select: SELECT $this WHERE { $this cacontology-grooming:escalationSpeed "very_fast" ; cacontology-grooming:escalationDuration ?duration ; cacontology-grooming:escalationPredictability ?predictability . FILTER (?duration > 30.0 || ?predictability < 0.7) }
target class: EscalationPattern

Escalation Pattern Shape
type: NodeShape
comment: Validation shape for escalation pattern instances with gUFO integration.
property:
  datatype: dateTimeStamp
  max count: 1
  message: Escalation pattern may have begin timestamp (gUFO temporal)
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: dateTimeStamp
  max count: 1
  message: Escalation pattern may have end timestamp (gUFO temporal)
  path: hasEndPointInXSDDateTimeStamp
property:
  datatype: string
  in: gradual
  in: rapid
  in: stepped
  in: cyclical
  in: irregular
  in: sudden
  in: systematic
  max count: 1
  message: Escalation pattern must specify escalation type from the allowed list.
  min count: 1
  path: escalationType
property:
  datatype: string
  in: very_slow
  in: slow
  in: moderate
  in: fast
  in: very_fast
  in: immediate
  max count: 1
  message: Escalation pattern must specify escalation speed from the allowed list (gUFO quality aspect).
  min count: 1
  path: escalationSpeed
property:
  datatype: decimal
  max count: 1
  max inclusive: 365.0
  message: Escalation duration must be between 0 and 365 days.
  min count: 0
  min inclusive: 0.0
  path: escalationDuration
property:
  datatype: decimal
  max count: 1
  max inclusive: 1.0
  message: Pattern confidence must be between 0.0 and 1.0 (gUFO quality aspect).
  min count: 0
  min inclusive: 0.0
  path: patternConfidence
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Escalation predictability must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: escalationPredictability
target class: EscalationPattern

Exploitation Phase
type: Phase
type: Class
comment: Final phase involving direct sexual exploitation and abuse.
subclass of: GroomingBehavior

ExploitsVulnerabilityShape
type: PropertyShape
class: VictimVulnerability
description: Links grooming to victim vulnerability being exploited (gUFO aspect exploitation)
min count: 0
name: exploits vulnerability
path: exploitsVulnerability

FollowsPatternShape
type: PropertyShape
class: EscalationPattern
description: Links grooming to escalation pattern followed (gUFO temporal pattern)
min count: 0
name: follows pattern
path: followsPattern

Graphic Conversation Grooming
type: Class
comment: Grooming involving progressively graphic sexual conversations.
subclass of: SexualContentExchangeGrooming

Grooming Behavior Shape
type: NodeShape
comment: Validation shape for grooming behavior instances with gUFO integration.
property:
  datatype: dateTimeStamp
  max count: 1
  message: Grooming behavior may have begin timestamp (gUFO temporal)
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: dateTimeStamp
  max count: 1
  message: Grooming behavior may have end timestamp (gUFO temporal)
  path: hasEndPointInXSDDateTimeStamp
property:
  datatype: string
  in: initial_contact
  in: trust_building
  in: isolation
  in: dependency_creation
  in: sexual_introduction
  in: maintenance
  in: control
  max count: 1
  message: Grooming behavior must specify grooming stage from the allowed list.
  min count: 1
  path: groomingStage
property:
  datatype: string
  in: attention_giving
  in: gift_giving
  in: special_treatment
  in: isolation_tactics
  in: boundary_testing
  in: sexual_content_introduction
  in: secrecy_enforcement
  in: threat_making
  max count: 1
  message: Grooming behavior must specify behavior type from the allowed list.
  min count: 1
  path: behaviorType
property:
  datatype: string
  in: single_occurrence
  in: occasional
  in: frequent
  in: daily
  in: multiple_daily
  in: constant
  max count: 1
  message: Behavior frequency must be from the allowed list (gUFO quality aspect).
  min count: 0
  path: behaviorFrequency
property:
  datatype: string
  in: low
  in: moderate
  in: high
  in: extreme
  in: overwhelming
  max count: 1
  message: Behavior intensity must be from the allowed list (gUFO quality aspect).
  min count: 0
  path: behaviorIntensity
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Grooming effectiveness must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: groomingEffectiveness
property:
  datatype: string
  in: subtle
  in: moderate
  in: obvious
  in: aggressive
  in: extreme
  in: coercive
  max count: 1
  message: Manipulation level must be from allowed list (gUFO quality aspect)
  path: manipulationLevel
property:
  datatype: dateTime
  max count: 1
  message: Grooming behavior may have a start time.
  min count: 0
  path: startTime
property:
  datatype: dateTime
  max count: 1
  message: Grooming behavior may have an end time.
  min count: 0
  path: endTime
target class: GroomingBehavior

GroomingBehaviorTemporalShape
type: NodeShape
property:
  datatype: dateTimeStamp
  max count: 1
  message: Grooming behavior must have at most one begin timestamp (gUFO temporal)
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: dateTimeStamp
  max count: 1
  message: Grooming behavior must have at most one end timestamp (gUFO temporal)
  path: hasEndPointInXSDDateTimeStamp
sparql:
  message: Grooming behavior end time must be after begin time (gUFO temporal ordering)
  prefixes:
    declare:
      namespace: http://purl.org/nemo/gufo#
      prefix: gufo
  select: SELECT $this WHERE { $this gufo:hasBeginPointInXSDDateTimeStamp ?beginTime . $this gufo:hasEndPointInXSDDateTimeStamp ?endTime . FILTER (?endTime <= ?beginTime) }
target class: Event

Grooming Data Quality Shape
type: NodeShape
comment: Validates data quality for grooming behaviors with gUFO quality aspects.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Label should be between 5 and 200 characters when provided.
  min count: 0
  min length: 5
  path: label
property:
  datatype: string
  max count: 1
  max length: 1000
  message: Comment should be between 10 and 1000 characters when provided.
  min count: 0
  min length: 10
  path: comment
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Data confidence must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: dataConfidence
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Analysis completeness must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: analysisCompleteness
target class: GroomingBehavior

GroomingEventParticipationShape
type: NodeShape
property:
  message: Every grooming event must have at least one participant (gUFO participation)
  min count: 1
  path:
    alternative path: targetsVictim
    alternative path: performedBy
    alternative path: witnessedBy
    alternative path: facilitatedBy
target class: Event

GroomingEventTypeValidationShape
type: NodeShape
message: Every grooming EventType must extend gufo:Event
property:
  has value: EventType
  min count: 1
  path: type
property:
  class: Event
  min count: 1
  path: subClassOf
target class: EventType

GroomingPhaseValidationShape
type: NodeShape
message: Grooming phases are anti-rigid and cannot be subclasses of rigid Kinds
not:
  property:
    class: Kind
    path: subClassOf
property:
  has value: Phase
  min count: 1
  path: type
target class: Phase

GroomingProcessCompositionShape
type: NodeShape
property:
  class: Event
  message: Grooming process must have at least one grooming behavior (gUFO part-whole)
  min count: 1
  path: hasGroomingBehavior
target class: GroomingProcess

GroomingRoleValidationShape
type: NodeShape
message: Grooming roles are anti-rigid and cannot be subclasses of rigid Kinds
not:
  property:
    class: Kind
    path: subClassOf
property:
  has value: Role
  min count: 1
  path: type
target class: Role

Grooming Temporal Validation Shape
type: NodeShape
comment: Validates temporal consistency in grooming behaviors with gUFO integration.
sparql:
  message: Start time must be before end time when both are specified (gUFO temporal consistency)
  prefixes:
    declare:
      namespace: https://ontology.unifiedcyberontology.org/uco/core/
      prefix: uco-core
  select: SELECT $this WHERE { $this uco-core:startTime ?start ; uco-core:endTime ?end . FILTER (?start >= ?end) }
sparql:
  message: gUFO temporal boundaries must be consistent with UCO temporal properties
  prefixes:
    declare:
      namespace: http://purl.org/nemo/gufo#
      prefix: gufo
    declare:
      namespace: https://ontology.unifiedcyberontology.org/uco/core/
      prefix: uco-core
  select: SELECT $this WHERE { $this gufo:hasBeginPointInXSDDateTimeStamp ?gufoBegin ; uco-core:startTime ?ucoStart . FILTER (?gufoBegin != ?ucoStart) }
target class: GroomingBehavior

Immediate Exploitation Attempt
type: Class
comment: Attempt to immediately exploit victim without extended grooming or relationship building.
subclass of: RapidEscalationGrooming

Inappropriate Gift
type: Class
comment: Offer or provision of gifts, money, or favors as part of grooming process.
subclass of: Object
subclass of: ObservableObject

Initial Contact Phase
type: Phase
type: Class
comment: First phase of grooming involving initial contact and relationship establishment.
subclass of: GroomingBehavior

Isolation Behavior
type: Class
comment: Attempts to separate child from parents, friends, or other support systems.
subclass of: GroomingBehavior

Isolation Phase
type: Phase
type: Class
comment: Phase aimed at separating victim from support systems and creating dependency.
subclass of: GroomingBehavior

Isolation Tactics Shape
type: NodeShape
comment: Validation shape for isolation tactics instances with gUFO integration.
property:
  datatype: dateTimeStamp
  max count: 1
  message: Isolation tactics may have begin timestamp (gUFO temporal)
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: string
  in: physical_separation
  in: emotional_manipulation
  in: relationship_interference
  in: activity_restriction
  in: communication_control
  in: social_undermining
  in: dependency_creation
  max count: 1
  message: Isolation tactics must specify method from the allowed list.
  min count: 1
  path: isolationMethod
property:
  datatype: string
  in: ineffective
  in: partially_effective
  in: effective
  in: highly_effective
  in: complete
  max count: 1
  message: Isolation effectiveness must be from the allowed list (gUFO quality aspect).
  min count: 0
  path: isolationEffectiveness
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Isolation progress rate must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: isolationProgressRate
target class: IsolationTactics

LeadsToMeetingShape
type: PropertyShape
class: PhysicalMeetingArrangement
description: Links grooming to physical meeting arrangement (gUFO causal relationship)
min count: 0
name: leads to meeting
path: leadsToMeeting

Location Specific Grooming
type: Class
comment: Grooming that references or prepares for specific physical locations.
subclass of: GroomingBehavior

Maintenance Phase
type: Phase
type: Class
comment: Ongoing phase to maintain control and continue exploitation.
subclass of: GroomingBehavior

Marijuana Facilitated Grooming
type: Class
comment: Grooming using marijuana to reduce victim inhibitions and facilitate exploitation.
subclass of: SubstanceFacilitatedGrooming

Normalization Behavior
type: Class
comment: Gradual introduction of sexual topics to normalize inappropriate behavior.
subclass of: GroomingBehavior

Normalization Grooming
type: Class
comment: Grooming technique to normalize sexual conversations and content sharing.
subclass of: SexualContentExchangeGrooming

Offline Control Establishment
type: Class
comment: Establishing control over victim in preparation for physical contact.
subclass of: ManipulationPattern

Online Grooming Situation
type: Class
comment: Overall situation encompassing the grooming relationship and interactions.
subclass of: Situation

OnlineOfflineTransitionBusinessRule
type: NodeShape
sparql:
  message: High transition likelihood requires completed trust building and isolation phases
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/grooming#
      prefix: cacontology-grooming
  select: SELECT $this WHERE { $this cacontology-grooming:transitionLikelihood ?likelihood . FILTER (?likelihood > 0.8) FILTER NOT EXISTS { ?trustBuilding rdf:type cacontology-grooming:TrustBuilding ; cacontology-grooming:trustLevel "complete" . ?isolation rdf:type cacontology-grooming:IsolationTactics ; cacontology-grooming:isolationEffectiveness "highly_effective" . } }
target class: OnlineToOfflineProgression

Online Predation Situation
type: Class
comment: Active situation where predator is engaging with potential victims.
subclass of: Situation

Online Predator
type: Role
type: Class
comment: Individual who engages in grooming behavior toward children online. Age-at-time for this offender MAY be captured via cacontology-temporal:AgeAtTimeSituation instances when age-gap and legal-capacity reasoning is required.
subclass of: Person
equivalent class: OffenderRole

Online to Offline Progression Shape
type: NodeShape
comment: Validation shape for online to offline progression instances with gUFO integration.
property:
  datatype: dateTimeStamp
  max count: 1
  message: Online to offline progression must have begin timestamp (gUFO temporal)
  min count: 1
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 365
  message: Online to offline progression duration must be between 1 and 365 days.
  min count: 1
  min inclusive: 1
  path: progressionDuration
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 10
  message: Progression stages must be between 2 and 10 when specified.
  min count: 0
  min inclusive: 2
  path: progressionStages
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Transition likelihood must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: transitionLikelihood
target class: OnlineToOfflineProgression

Prey Behavior Pattern
type: Class
comment: Pattern of targeting vulnerable children or specific victim characteristics.
subclass of: GroomingPattern

Privileged Victim Targeting
type: Class
comment: Targeting of victims from privileged backgrounds who may be less likely to report.
subclass of: EliteInstitutionTargeting

Reciprocity Grooming
type: Class
comment: Grooming technique encouraging victim to reciprocate with sexual content.
subclass of: SexualContentExchangeGrooming

Secrecy Request
type: Class
comment: Instruction to keep communication or relationship secret from parents or authorities.
subclass of: GroomingMessage

Sexual Consequence Game Business Rule
type: NodeShape
comment: Business rule: when multiple juveniles participate in a sexual consequence game, a gameContext SHOULD be recorded (Utah Christensen case modeling).
sparql:
  message: Sexual consequence games with more than one juvenile participant SHOULD specify a gameContext (e.g., sleepover, peer_group).
  select: SELECT $this WHERE { $this cacontology-grooming:participantCount ?count . FILTER (?count > 1) FILTER NOT EXISTS { $this cacontology-grooming:gameContext ?ctx . } }
target class: SexualConsequenceGameGrooming

Sexual Consequence Game Grooming Shape
type: NodeShape
comment: Validation shape for physical-space 'sexual consequence game' grooming behaviors (Utah Christensen case), ensuring participant count and game context are captured for analytics.
property:
  datatype: nonNegativeInteger
  max count: 1
  message: Sexual consequence game grooming should record at least one juvenile participant when participantCount is provided.
  min count: 0
  min inclusive: 1
  path: participantCount
property:
  datatype: string
  in: sleepover
  in: peer_group
  in: family_gathering
  in: youth_activity
  max count: 1
  message: Game context, when provided, must be one of: sleepover, peer_group, family_gathering, youth_activity.
  min count: 0
  path: gameContext
property:
  datatype: string
  max count: 1
  max length: 500
  message: Rule structure description, when provided, should be between 10 and 500 characters.
  min count: 0
  min length: 10
  path: ruleStructureDescription
target class: SexualConsequenceGameGrooming

Sexual Solicitation
type: Class
comment: Message explicitly requesting sexual activity, images, or meetings from a child.
subclass of: GroomingMessage

Sexualization Phase
type: Phase
type: Class
comment: Phase involving introduction of sexual content and normalization of inappropriate behavior.
subclass of: GroomingBehavior

Social Vulnerability Shape
type: NodeShape
comment: Validation shape for social vulnerability instances with gUFO integration.
property:
  datatype: string
  in: none
  in: mild
  in: moderate
  in: severe
  in: complete
  in: self_imposed
  max count: 1
  message: Social vulnerability must specify isolation level from the allowed list (gUFO quality aspect).
  min count: 1
  path: socialIsolation
property:
  datatype: string
  in: strong
  in: adequate
  in: limited
  in: minimal
  in: absent
  in: dysfunctional
  max count: 1
  message: Social support must be from the allowed list (gUFO quality aspect).
  min count: 0
  path: socialSupport
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Social connectedness must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: socialConnectedness
target class: SocialVulnerability

Street Based Grooming
type: Class
comment: Grooming that begins with street-based contact and recruitment.
subclass of: PhysicalSpaceGrooming

TargetsVictimShape
type: PropertyShape
class: Person
description: Links grooming behavior to victim being targeted (gUFO participation)
min count: 0
name: targets victim
path: targetsVictim

Teenage Impersonation Grooming
type: Class
comment: Grooming involving impersonation of teenage peer to gain victim trust.
subclass of: PeerPersonaGrooming

TrustBuildingEffectivenessBusinessRule
type: NodeShape
sparql:
  message: High trust development rate requires consistent communication tactics
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/grooming#
      prefix: cacontology-grooming
  select: SELECT $this WHERE { $this cacontology-grooming:trustDevelopmentRate ?rate ; cacontology-grooming:usesCommunication ?comm . ?comm cacontology-grooming:communicationFrequency ?freq . FILTER (?rate > 0.8 && ?freq IN ("sporadic", "weekly")) }
target class: TrustBuilding

Trust Building Phase
type: Phase
type: Class
comment: Phase focused on building emotional connection and trust with victim.
subclass of: GroomingBehavior

Trust Building Shape
type: NodeShape
comment: Validation shape for trust building behavior instances with gUFO integration.
property:
  datatype: dateTimeStamp
  max count: 1
  message: Trust building may have begin timestamp (gUFO temporal)
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: string
  in: active_listening
  in: emotional_support
  in: shared_interests
  in: special_attention
  in: gift_giving
  in: privilege_granting
  in: secret_sharing
  in: understanding_persona
  max count: 1
  message: Trust building must specify method from the allowed list.
  min count: 1
  path: trustBuildingMethod
property:
  datatype: string
  in: minimal
  in: developing
  in: moderate
  in: strong
  in: complete
  in: absolute
  max count: 1
  message: Trust level must be from the allowed list (gUFO quality aspect).
  min count: 0
  path: trustLevel
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Trust development rate must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: trustDevelopmentRate
target class: TrustBuilding

Trust Through Anonymity
type: Class
comment: Building trust by appearing less threatening through anonymous contact.
subclass of: TrustBuildingBehavior

Unverified User Profile
type: Class
comment: User account with minimal or no identity verification enabling anonymous contact.
subclass of: Account

UsesCommunicationShape
type: PropertyShape
class: CommunicationTactics
description: Links grooming to communication tactics used (gUFO participation in communication event)
min count: 0
name: uses communication
path: usesCommunication

Vehicle Based Grooming
type: Class
comment: Grooming that uses vehicles for isolation and exploitation.
subclass of: PhysicalSpaceGrooming

Victim Compliance in Physical Meeting
type: Class
comment: Victim's agreement or compliance with arranged physical meeting.
subclass of: VictimResponse

Victim Vulnerability Shape
type: NodeShape
comment: Validation shape for victim vulnerability instances with gUFO integration.
property:
  datatype: dateTimeStamp
  max count: 1
  message: Vulnerability may have begin timestamp (gUFO temporal)
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: string
  in: emotional
  in: social
  in: economic
  in: physical
  in: psychological
  in: developmental
  in: situational
  in: digital
  max count: 1
  message: Victim vulnerability must specify vulnerability type from the allowed list.
  min count: 1
  path: vulnerabilityType
property:
  datatype: string
  in: low
  in: moderate
  in: high
  in: severe
  in: extreme
  in: critical
  max count: 1
  message: Victim vulnerability must specify vulnerability level from the allowed list (gUFO quality aspect).
  min count: 1
  path: vulnerabilityLevel
property:
  datatype: decimal
  max count: 1
  max inclusive: 20.0
  message: Vulnerability duration must be between 0 and 20 years.
  min count: 0
  min inclusive: 0.0
  path: vulnerabilityDuration
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Exploitability score must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: exploitabilityScore
property:
  datatype: string
  in: stable
  in: fluctuating
  in: increasing
  in: decreasing
  in: episodic
  max count: 1
  message: Vulnerability stability must be from allowed list (gUFO mode aspect)
  path: vulnerabilityStability
target class: VictimVulnerability

Victim Vulnerability Situation
type: Class
comment: Circumstances that make a child more susceptible to grooming.
subclass of: Situation

VulnerabilityAspectValidationShape
type: NodeShape
message: Victim vulnerabilities must be properly classified as gUFO Aspects
property:
  has value: Aspect
  min count: 1
  path: type
target class: Aspect

VulnerabilityExploitationBusinessRule
type: NodeShape
sparql:
  message: High manipulation grooming behaviors must target critical vulnerabilities
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/grooming#
      prefix: cacontology-grooming
  select: SELECT $this WHERE { $this cacontology-grooming:manipulationLevel "extreme" ; cacontology-grooming:exploitsVulnerability ?vulnerability . ?vulnerability cacontology-grooming:vulnerabilityLevel ?level . FILTER (?level NOT IN ("severe", "extreme", "critical")) }
target class: GroomingBehavior

accelerates trust
type: ObjectProperty
comment: Links grooming to trust-building mechanism being accelerated.
domain: AcceleratedTrustExploitation
range: TrustBuildingBehavior

accounts used
type: DatatypeProperty
comment: Number of fake accounts used in grooming process.
domain: MultipleAccountGrooming
range: nonNegativeInteger

administration method
type: DatatypeProperty
comment: Method of substance administration (offered, forced, shared, deceptive).
domain: SubstanceInducedVulnerabilityGrooming
range: string

anonymous contact method
type: DatatypeProperty
comment: Method used for anonymous initial contact (random_messaging, response_to_post, platform_matching, profile_browsing).
domain: AnonymousInitiation
range: string

behavior duration
type: DatatypeProperty
comment: Length of time grooming behavior continued (in days).
domain: GroomingBehavior
range: integer

bypasses phase
type: ObjectProperty
comment: Links rapid escalation to traditional grooming phase being bypassed.
domain: RapidEscalationGrooming
range: GroomingPhase

commercial offer type
type: DatatypeProperty
comment: Type of commercial sexual activity offered (stripping, prostitution, escort_services).
domain: ExplicitCommercialOfferGrooming
range: string

contact frequency
type: DatatypeProperty
comment: How often communication occurs (daily, several_times_daily, weekly).
domain: GroomingBehavior
range: string

content type
type: DatatypeProperty
comment: Type of content in grooming message (text, image, video, audio).
comment: Type of sexual content exchanged (images, videos, text).
domain: GroomingMessage
domain: SexualContentExchangeGrooming
range: string

crosses state boundaries
type: DatatypeProperty
comment: Whether arranged meeting involves crossing state lines.
domain: InterstateTransportPlan
range: boolean

distress indicators
type: DatatypeProperty
comment: Signs of distress in victim's responses.
domain: VictimResponse
range: string

economic incentive amount
type: DatatypeProperty
comment: Specific monetary amount mentioned in economic incentive.
domain: EconomicIncentiveGrooming
range: decimal

emotional tone
type: DatatypeProperty
comment: Emotional approach used in message (caring, threatening, manipulative, seductive).
domain: GroomingMessage
range: string

escalation rate
type: DatatypeProperty
comment: Speed of escalation from initial contact to explicit content (days).
domain: EscalationPattern
range: integer

escalation timeframe
type: DatatypeProperty
comment: Time from initial contact to exploitation attempt in hours.
domain: RapidEscalationGrooming
range: decimal

evidence value
type: DatatypeProperty
comment: Assessment of grooming behavior's value as evidence (high, medium, low).
domain: GroomingBehavior
range: string

exchanges content
type: ObjectProperty
comment: Links grooming to sexual content being exchanged.
domain: SexualContentExchangeGrooming
range: ObservableObject

exhibits pattern
type: ObjectProperty
comment: Links grooming behavior to an identifiable pattern.
domain: GroomingBehavior
range: GroomingPattern

explicitness level
type: DatatypeProperty
comment: Level of sexual explicitness in content (none, suggestive, explicit, graphic).
domain: GroomingMessage
range: string

exploits opportunity
type: ObjectProperty
comment: Links opportunistic grooming to specific opportunity being exploited.
domain: OpportunisticGrooming
range: UcoObject

exploits reputation
type: ObjectProperty
comment: Links grooming to institutional reputation being exploited.
domain: ReputationBasedSilencing
range: EducationalInstitution

facilitates with substance
type: ObjectProperty
comment: Links grooming to substance used for facilitation.
domain: SubstanceFacilitatedGrooming
range: ObservableObject

grooming phase duration
type: DatatypeProperty
comment: Duration of grooming phase.
domain: Phase
range: duration

has grooming phase begin point
type: DatatypeProperty
comment: Temporal begin point for grooming phase.
domain: Phase
range: dateTimeStamp
sub property of: hasBeginPointInXSDDateTimeStamp

has grooming phase end point
type: DatatypeProperty
comment: Temporal end point for grooming phase.
domain: Phase
range: dateTimeStamp
sub property of: hasEndPointInXSDDateTimeStamp

has role begin point
type: DatatypeProperty
comment: Temporal begin point for grooming role.
domain: Role
range: dateTimeStamp
sub property of: hasBeginPointInXSDDateTimeStamp

has role end point
type: DatatypeProperty
comment: Temporal end point for grooming role.
domain: Role
range: dateTimeStamp
sub property of: hasEndPointInXSDDateTimeStamp

has vulnerability
type: ObjectProperty
comment: Links child victim to specific vulnerabilities that may be exploited.
domain: ChildVictim
range: VictimVulnerability

identity verification required
type: DatatypeProperty
comment: Whether platform requires identity verification for messaging.
domain: AnonymousPlatformContact
range: boolean

impairment level
type: DatatypeProperty
comment: Level of victim impairment from substances (mild, moderate, severe).
domain: ImpairmentBasedGrooming
range: string

impersonated role
type: DatatypeProperty
comment: Role impersonated during grooming (student, peer, teenager).
domain: PeerPersonaGrooming
range: string

impersonates role
type: ObjectProperty
comment: Links grooming to role being impersonated.
domain: PeerPersonaGrooming
range: Role

initial contact pretense
type: DatatypeProperty
comment: False reason given for initial contact (shared_interests, age_misrepresentation, help_offering, casual_conversation).
domain: AnonymousInitiation
range: string

initiation method
type: DatatypeProperty
comment: Method used to initiate sexual content exchange.
domain: InitiatorContentSending
range: string

institution prestige
type: DatatypeProperty
comment: Prestige level of targeted institution (elite, prestigious, standard).
domain: EliteInstitutionTargeting
range: string

institutions targeted
type: DatatypeProperty
comment: Number of educational institutions from which victims were targeted.
domain: CrossInstitutionalGrooming
range: nonNegativeInteger

involves interstate transport
type: ObjectProperty
comment: Links travel arrangement to interstate transportation planning.
domain: TravelArrangement
range: InterstateTransportPlan

leverages position
type: ObjectProperty
comment: Links grooming to educator position being leveraged.
domain: PositionOfTrustGrooming
range: EducatorRole

manipulation technique
type: DatatypeProperty
comment: Specific psychological manipulation technique employed.
domain: ManipulationPattern
range: string

meeting location specified
type: DatatypeProperty
comment: Whether specific physical meeting location was arranged.
domain: PhysicalMeetingArrangement
range: boolean

monetization timeframe
type: DatatypeProperty
comment: Proposed timeframe for monetization (immediate, same_day, within_week).
domain: ImmediateMonetizationGrooming
range: string

occurs in space
type: ObjectProperty
comment: Links physical space grooming to location where it occurs.
domain: PhysicalSpaceGrooming
range: Location

opportunity type
type: DatatypeProperty
comment: Type of opportunity exploited (vulnerability, isolation, need_for_help).
domain: OpportunisticGrooming
range: string

physical location
type: DatatypeProperty
comment: Type of physical location used for grooming (street, vehicle, isolated_area).
domain: PhysicalSpaceGrooming
range: string

platform anonymity level
type: DatatypeProperty
comment: Level of anonymity provided by platform (full_anonymous, guest_allowed, minimal_verification, verified_only).
domain: AnonymousPlatformContact
range: string

primary platform
type: ObjectProperty
comment: Main digital platform where grooming communication occurred.
domain: GroomingBehavior
range: DigitalService

progresses to physical meeting
type: ObjectProperty
comment: Links online grooming to physical meeting arrangements.
domain: GroomingBehavior
range: PhysicalMeetingArrangement

proposition explicitness
type: DatatypeProperty
comment: Level of explicitness in trafficking proposition (subtle, direct, explicit, blunt).
domain: DirectTraffickingPropositionGrooming
range: string

prosecution relevance
type: DatatypeProperty
comment: Relevance of grooming evidence to prosecution case.
domain: GroomingBehavior
range: string

recruitment directness
type: DatatypeProperty
comment: Level of directness in recruitment approach (subtle, moderate, direct, blunt).
domain: BluntRecruitmentGrooming
range: string

requests secrecy
type: DatatypeProperty
comment: Whether grooming involves requests to keep relationship secret.
domain: GroomingBehavior
range: boolean

role playing tactic
type: DatatypeProperty
comment: False role claimed by predator (peer, mentor, romantic_interest, authority_figure).
domain: GroomingBehavior
range: string

same day progression
type: DatatypeProperty
comment: Whether grooming progressed from contact to exploitation within same day.
domain: SameDayProgression
range: boolean

seeking help
type: DatatypeProperty
comment: Whether victim attempted to seek help or report the contact.
domain: VictimResponse
range: boolean

skipped phases
type: DatatypeProperty
comment: Traditional grooming phases that were bypassed (trust_building, isolation, normalization).
domain: SkippedGroomingPhases
range: string

substance type
type: DatatypeProperty
comment: Type of substance used to facilitate grooming (alcohol, marijuana, other_drugs).
domain: SubstanceFacilitatedGrooming
range: string

targets institution
type: ObjectProperty
comment: Links grooming to educational institution being targeted.
domain: CrossInstitutionalGrooming
range: EducationalInstitution

time of contact
type: DatatypeProperty
comment: Typical time of day when contact occurs (morning, afternoon, evening, late_night).
domain: GroomingBehavior
range: string

transition speed
type: DatatypeProperty
comment: Speed of transition from public to private space (immediate, rapid, gradual).
domain: PublicToPrivateGrooming
range: string

transitions to location
type: ObjectProperty
comment: Links public-to-private grooming to exploitation location.
domain: PublicToPrivateGrooming
range: Location

transportation proposed
type: DatatypeProperty
comment: Type of transportation proposed for meeting (predator_travel, victim_travel, mutual_meeting_point).
domain: TravelArrangement
range: string

trust exploitation speed
type: DatatypeProperty
comment: Speed of trust exploitation (immediate, rapid, accelerated).
domain: AcceleratedTrustExploitation
range: string

uses gifts
type: DatatypeProperty
comment: Whether grooming involves offering gifts or money.
domain: GroomingBehavior
range: boolean

uses threats
type: DatatypeProperty
comment: Whether grooming involves threats or intimidation.
domain: GroomingBehavior
range: boolean

utilizes platform feature
type: ObjectProperty
comment: Links anonymous contact to specific platform features that enable anonymity.
domain: AnonymousPlatformContact
range: PlatformAnonymityFeature

victim compliance
type: DatatypeProperty
comment: Level of victim compliance with requests (resistant, hesitant, compliant, eager).
domain: VictimResponse
range: string

victim impact
type: DatatypeProperty
comment: Assessment of psychological impact on victim (minimal, moderate, severe, extreme).
domain: GroomingBehavior
range: string

Age At Time Situation Shape
type: NodeShape
property:
  class: Person
  max count: 1
  message: AgeAtTimeSituation must be linked to exactly one person via cacontology-temporal:ageSubject.
  min count: 1
  path: ageSubject
property:
  datatype: decimal
  max count: 1
  message: AgeAtTimeSituation must have exactly one non-negative numeric age value in years via cacontology-temporal:hasAgeInYears.
  min count: 1
  min inclusive: 0.0
  path: hasAgeInYears
property:
  datatype: dateTimeStamp
  max count: 1
  message: AgeAtTimeSituation must have a begin timestamp (when the attributed age becomes valid).
  min count: 1
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: dateTimeStamp
  max count: 1
  message: AgeAtTimeSituation may have at most one end timestamp (when the attributed age ceases to be valid).
  path: hasEndPointInXSDDateTimeStamp
property:
  has value: Age
  max count: 1
  message: AgeAtTimeSituation, when specifying a quality type, MUST use cacontology-temporal:Age via cacontology-temporal:concernsAgeQuality (a subproperty of gufo:concernsQualityType).
  path: concernsAgeQuality
sparql:
  message: For AgeAtTimeSituation, the begin timestamp must be strictly earlier than the end timestamp when both are present.
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/temporal#
      prefix: cacontology-temporal
    declare:
      namespace: http://purl.org/nemo/gufo#
      prefix: gufo
  select: SELECT ?this WHERE { ?this gufo:hasBeginPointInXSDDateTimeStamp ?begin . ?this gufo:hasEndPointInXSDDateTimeStamp ?end . FILTER (?begin >= ?end) }
target class: AgeAtTimeSituation

CSAM Incident Shape
type: NodeShape
property:
  has value: SubKind
  message: CSAM Incident must be gUFO SubKind
  min count: 1
  path: type
property:
  message: CSAM incident must have digital artifact facets
  min count: 1
  path: hasFacet
target class: CSAMIncident

Child Sexual Abuse Event Shape
type: NodeShape
property:
  has value: Kind
  message: Child Sexual Abuse Event must be gUFO Kind
  min count: 1
  path: type
sparql:
  message: Criminal event must involve victim and offender roles
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/gufo#
      prefix: cacontology-gufo
  select: SELECT ?this WHERE { ?this a cacontology-gufo:ChildSexualAbuseEvent . FILTER NOT EXISTS { ?victimRole a cacontology-gufo:VictimRole ; cacontology-gufo:participatesInEvent ?this . } FILTER NOT EXISTS { ?offenderRole a cacontology-gufo:OffenderRole ; cacontology-gufo:participatesInEvent ?this . } }
target class: ChildSexualAbuseEvent

Completed Phase Shape
type: NodeShape
property:
  message: Completed phase must have end point
  min count: 1
  path: hasPhaseEndPoint
target class: CompletedPhase

gUFO Event Shape
type: NodeShape
property:
  has value: Event
  message: Event must be typed as gUFO Event
  min count: 1
  path: type
property:
  datatype: dateTimeStamp
  max count: 1
  message: Event can have at most one begin point
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: dateTimeStamp
  max count: 1
  message: Event can have at most one end point
  path: hasEndPointInXSDDateTimeStamp
target class: Event

gUFO Foundational Type Consistency Shape
type: NodeShape
sparql:
  message: All gUFO entities must have proper foundational typing
  prefixes:
    declare:
      namespace: http://purl.org/nemo/gufo#
      prefix: gufo
  select: SELECT ?entity WHERE { { ?entity a gufo:Kind . FILTER NOT EXISTS { ?entity a gufo:Object . } } UNION { ?entity a gufo:Phase . FILTER NOT EXISTS { ?entity a gufo:AntiRigidType . } } UNION { ?entity a gufo:Role . FILTER NOT EXISTS { ?entity a gufo:AntiRigidType . } } UNION { ?entity a gufo:Event . FILTER NOT EXISTS { ?entity a gufo:Perdurant . } } UNION { ?entity a gufo:Situation . FILTER NOT EXISTS { ?entity a gufo:SituationType . } } }
target node: Investigation

Grooming Solicitation Shape
type: NodeShape
property:
  has value: SubKind
  message: Grooming Solicitation must be gUFO SubKind
  min count: 1
  path: type
property:
  message: Grooming must involve at least victim and offender
  min count: 2
  path: participatesInEvent
target class: GroomingSolicitation

Initial Phase Shape
type: NodeShape
property:
  message: Initial phase must have begin point
  min count: 1
  path: hasPhaseBeginPoint
target class: InitialPhase

Investigation Active Situation Shape
type: NodeShape
sparql:
  message: Active investigation situation must correspond to active phase
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/gufo#
      prefix: cacontology-gufo
  select: SELECT ?this WHERE { ?this a cacontology-gufo:InvestigationActiveSituation . ?investigation cacontology-gufo:inPhase ?phase . FILTER NOT EXISTS { ?phase a cacontology-gufo:AnalysisPhase . } FILTER NOT EXISTS { ?phase a cacontology-gufo:LegalProcessPhase . } FILTER NOT EXISTS { ?phase a cacontology-gufo:EvidencePhase . } FILTER NOT EXISTS { ?phase a cacontology-gufo:ResolutionPhase . } }
target class: InvestigationActiveSituation

Investigation Completeness Shape
type: NodeShape
sparql:
  message: Investigation must have coherent role and event participation
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/gufo#
      prefix: cacontology-gufo
    declare:
      namespace: https://cacontology.projectvic.org/gufo#
      prefix: cacontology-gufo
  select: PREFIX cacontology-gufo: <https://cacontology.projectvic.org/gufo#> PREFIX gufo: <http://purl.org/nemo/gufo#> SELECT ?this WHERE { ?this cacontology-gufo:hasRole ?role . ?role cacontology-gufo:participatesInInvestigation ?this . FILTER NOT EXISTS { ?role cacontology-gufo:participatesInEvent ?event . ?event a gufo:Event . } }
target class: Investigation

gUFO Investigation Shape
type: NodeShape
property:
  has value: Kind
  message: Investigation must be typed as gUFO Kind
  min count: 1
  path: type
property:
  class: Phase
  max count: 1
  message: Investigation must be in exactly one phase
  min count: 1
  path: inPhase
property:
  class: Role
  message: Investigation must have at least one role
  min count: 1
  path: hasRole
target class: Investigation

Investigation Temporal Consistency Shape
type: NodeShape
sparql:
  message: Investigation events must occur within phase timeframes
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/gufo#
      prefix: cacontology-gufo
    declare:
      namespace: http://purl.org/nemo/gufo#
      prefix: gufo
  select: SELECT ?this WHERE { ?this cacontology-gufo:hasPhase ?phase . ?phase cacontology-gufo:hasPhaseBeginPoint ?phaseBegin ; cacontology-gufo:hasPhaseEndPoint ?phaseEnd . ?event cacontology-gufo:occursInSituation ?situation . ?event gufo:hasBeginPointInXSDDateTimeStamp ?eventBegin . FILTER (?eventBegin < ?phaseBegin || ?eventBegin > ?phaseEnd) }
target class: Investigation

Offender Role Shape
type: NodeShape
property:
  message: Offender role must have begin point (when offense started)
  min count: 1
  path: hasRoleBeginPoint
target class: OffenderRole

gUFO Phase Shape
type: NodeShape
property:
  has value: Phase
  message: Phase must be typed as gUFO Phase (anti-rigid sortal)
  min count: 1
  path: type
property:
  datatype: dateTimeStamp
  max count: 1
  message: Phase can have at most one begin point
  path: hasPhaseBeginPoint
property:
  datatype: dateTimeStamp
  max count: 1
  message: Phase can have at most one end point
  path: hasPhaseEndPoint
sparql:
  message: Phase begin point must precede end point
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/gufo#
      prefix: cacontology-gufo
  select: PREFIX cacontology-gufo: <https://cacontology.projectvic.org/gufo#> SELECT ?this WHERE { ?this cacontology-gufo:hasPhaseBeginPoint ?begin ; cacontology-gufo:hasPhaseEndPoint ?end . FILTER (?begin >= ?end) }
target class: Phase

Phase Transition Shape
type: NodeShape
sparql:
  message: Investigation phases must follow valid transition sequence
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/gufo#
      prefix: cacontology-gufo
  select: SELECT ?this WHERE { ?this cacontology-gufo:hasPhase ?phase1 ; cacontology-gufo:hasPhase ?phase2 . ?phase1 cacontology-gufo:precedesPhase ?phase2 ; cacontology-gufo:hasPhaseEndPoint ?end1 . ?phase2 cacontology-gufo:hasPhaseBeginPoint ?begin2 . FILTER (?end1 > ?begin2) }
target class: Investigation

Receive Cybertip Event Shape
type: NodeShape
property:
  message: Receive cybertip event must have at least one facet
  min count: 1
  path: hasFacet
property:
  class: InvestigationPendingSituation
  message: Receive cybertip should occur in pending situation
  path: occursInSituation
target class: ReceiveCybertipEvent

Review Cybertip Event Shape
type: NodeShape
property:
  class: InvestigatorRole
  message: Review cybertip event must have investigator performer
  min count: 1
  path: performer
target class: ReviewCybertipEvent

Role Exclusivity Shape
type: NodeShape
sparql:
  message: Person cannot simultaneously be victim and offender in same investigation
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/gufo#
      prefix: cacontology-gufo
  select: SELECT ?this WHERE { ?this cacontology-gufo:playsRole ?victimRole ; cacontology-gufo:playsRole ?offenderRole . ?victimRole a cacontology-gufo:VictimRole ; cacontology-gufo:participatesInInvestigation ?investigation . ?offenderRole a cacontology-gufo:OffenderRole ; cacontology-gufo:participatesInInvestigation ?investigation . }
target class: Person

gUFO Role Shape
type: NodeShape
property:
  has value: Role
  message: Role must be typed as gUFO Role (anti-rigid sortal)
  min count: 1
  path: type
property:
  datatype: dateTimeStamp
  max count: 1
  message: Role can have at most one begin point
  path: hasRoleBeginPoint
property:
  datatype: dateTimeStamp
  max count: 1
  message: Role can have at most one end point
  path: hasRoleEndPoint
property:
  class: Investigation
  message: Role must participate in at least one investigation
  min count: 0
  path: participatesInInvestigation
target class: Role

Sextortion Shape
type: NodeShape
property:
  has value: SubKind
  message: Sextortion must be gUFO SubKind
  min count: 1
  path: type
target class: Sextortion

gUFO Situation Shape
type: NodeShape
property:
  has value: Situation
  message: Situation must be typed as gUFO Situation
  min count: 1
  path: type
target class: Situation

Victim Rescue Event Shape
type: NodeShape
property:
  class: RescuerRole
  message: Victim rescue event must have rescuer performer
  min count: 1
  path: performer
property:
  class: Situation
  message: Rescue event should create situation
  path: createsSituation
target class: VictimRescueEvent

Victim Role Shape
type: NodeShape
property:
  message: Victim role must have begin point (when victimization started)
  min count: 1
  path: hasRoleBeginPoint
target class: VictimRole

academic year begin time point
type: DatatypeProperty
comment: Temporal point when academic year begins using gUFO temporal framework.
domain: EducationalInstitution
range: dateTime
temporal constraint: Must precede academic year end timepoint

AI generation time point
type: DatatypeProperty
comment: Temporal point when AI content generation occurred using gUFO temporal framework.
domain: AIContentGeneration
range: dateTime
temporal constraint: Must precede detection timepoint

employment termination time point
type: DatatypeProperty
comment: Temporal point when educator's employment was terminated using gUFO temporal framework.
domain: EducatorRole
range: dateTime

exploitation duration
type: DatatypeProperty
comment: Duration of exploitation period using gUFO temporal framework.
domain: EducatorPerpetratedExploitation
range: duration

exploitation first incident time point
type: DatatypeProperty
comment: Temporal point when first exploitation incident occurred using gUFO temporal framework.
domain: EducatorPerpetratedExploitation
range: dateTime

institutional reporting time point
type: DatatypeProperty
comment: Temporal point when exploitation was reported to educational institution using gUFO temporal framework.
domain: EducationalExploitationSituation
range: dateTime

AI Generated Content Module Integration
type: LowPriorityModule
comment: Specialized module for AI-generated CSAM requiring gUFO Artifact Generation and AI Process patterns.
has integration pattern: AIGenerationPattern
has integration pattern: SyntheticArtifactPattern
has integration priority: 3
has integration timeline: P45D

Extremist Enterprises Module Integration
type: LowPriorityModule
comment: Specialized module for extremist organizations requiring gUFO Criminal Organization and Ideology patterns.
has integration pattern: CriminalOrganizationPattern
has integration pattern: IdeologyPattern
has integration priority: 3
has integration timeline: P45D

Forensics Module Integration
type: HighPriorityModule
comment: Critical module for evidence handling requiring gUFO Object/Artifact modeling patterns and temporal evidence lifecycle.
has integration pattern: EvidenceObjectPattern
has integration pattern: ForensicsLifecyclePattern
has integration priority: 1
has integration timeline: P30D

International Module Integration
type: MediumPriorityModule
comment: Important module for international coordination requiring gUFO Cross-Border and Treaty patterns.
has integration pattern: CrossBorderPattern
has integration pattern: TreatyPattern
has integration priority: 2
has integration timeline: P45D

Multi-Jurisdiction Module Integration
type: HighPriorityModule
comment: Critical module for cross-jurisdictional coordination requiring gUFO Situation modeling and institutional roles.
has integration pattern: CoordinationSituationPattern
has integration pattern: InstitutionalRolePattern
has integration priority: 1
has integration timeline: P45D

Phase 3 Wave 1 Implementation
type: Class
comment: First wave implementing high-priority modules (forensics, multi-jurisdiction, sentencing, taskforce).
has integration timeline: P120D

Phase 3 Wave 2 Implementation
type: Class
comment: Second wave implementing medium-priority modules (specialized units, registry, prevention, international).
has integration timeline: P135D

Phase 3 Wave 3 Implementation
type: Class
comment: Third wave implementing low-priority modules (AI content, extremist enterprises, advanced features).
has integration timeline: P90D

Prevention Module Integration
type: MediumPriorityModule
comment: Important module for prevention activities requiring gUFO Preventive Action and Educational patterns.
has integration pattern: EducationalPattern
has integration pattern: PreventiveActionPattern
has integration priority: 2
has integration timeline: P30D

Sentencing Module Integration
type: HighPriorityModule
comment: Critical module for legal outcomes requiring gUFO Event modeling and legal phase patterns.
has integration pattern: JudicialPhasePattern
has integration pattern: LegalEventPattern
has integration priority: 1
has integration timeline: P30D

Sex Offender Registry Module Integration
type: MediumPriorityModule
comment: Important module for offender tracking requiring gUFO Registration and Compliance patterns.
has integration pattern: CompliancePattern
has integration pattern: RegistrationPattern
has integration priority: 2
has integration timeline: P30D

Specialized Units Module Integration
type: MediumPriorityModule
comment: Important module for specialized capabilities requiring gUFO Role specialization and capability modeling.
has integration pattern: CapabilityPattern
has integration pattern: SpecializedRolePattern
has integration priority: 2
has integration timeline: P30D

Taskforce Module Integration
type: HighPriorityModule
comment: Critical module for organizational structure requiring gUFO Organization and Role modeling.
has integration pattern: OrganizationalPattern
has integration pattern: TaskforceRolePattern
has integration priority: 1
has integration timeline: P30D

Total Phase 3 Implementation
type: Class
comment: Complete Phase 3 implementation across all ICAC modules with validation and testing.
has integration timeline: P345D

depends on pattern
type: ObjectProperty
comment: Links integration pattern to other patterns it depends on for proper implementation.
domain: Class
range: Class

extends pattern
type: ObjectProperty
comment: Links integration pattern to base pattern it extends with additional features.
domain: Class
range: Class

has integration pattern
type: ObjectProperty
comment: Links module integration strategy to specific gUFO patterns to be applied.
domain: ModuleIntegrationStrategy
range: Class

has integration priority
type: DatatypeProperty
comment: Numeric priority for module integration (1=highest, 3=lowest).
domain: ModuleIntegrationStrategy
range: integer

has integration timeline
type: DatatypeProperty
comment: Expected duration for completing module integration.
domain: ModuleIntegrationStrategy
range: duration

has validation query
type: DatatypeProperty
comment: SPARQL query for validating integration pattern implementation.
domain: ValidationStrategy
range: string

has validation rule
type: DatatypeProperty
comment: SHACL or SPARQL validation rule for checking integration correctness.
domain: ValidationStrategy
range: string

requires validation
type: ObjectProperty
comment: Links integration pattern to validation strategies that must be applied.
domain: Class
range: ValidationStrategy

Electronic Service Provider Report
type: Class
comment: A report submitted by an electronic service provider.
subclass of: HotlineReport

Evidence Item Shape
type: NodeShape
comment: Enhanced SHACL shape for evidence items with gUFO Object validation and comprehensive metadata requirements.
property:
  message: An evidence item must have at least one facet
  min count: 1
  path: hasFacet
property:
  datatype: dateTime
  message: An evidence item must have a first seen timestamp
  min count: 1
  path: firstSeen
property:
  has value: Object
  message: Evidence items must be instances of gUFO Object
  path: type
rule: SPARQLRule
  construct: INSERT { $this a hotline:TemporalInconsistencyError . } WHERE { ?report hotline:hasEvidence $this . $this hotline:firstSeen ?evidenceTime . ?report uco-core:createdTime ?reportTime . FILTER(?evidenceTime > ?reportTime) }
  message: Evidence first seen time must be before report submission time
  prefixes: core#
  severity: Violation
target class: EvidenceItem

Forward to LE Action Shape
type: NodeShape
comment: Enhanced SHACL shape for law enforcement forwarding actions with gUFO Event validation and coordination requirements.
property:
  class: Organization
  message: Forward actions must specify target law enforcement organization
  path: forwardsTo
rule: SPARQLRule
  construct: INSERT { $this a hotline:CoordinationError . } WHERE { $this a hotline:ForwardToLEAction . FILTER NOT EXISTS { ?report hotline:triggersAction $this . ?report hotline:involvesCoordination ?coordination . ?coordination a hotline:MultiAgencyCoordination . } }
  message: Law enforcement forwarding must involve coordination situation
  prefixes: core#
  severity: Violation
target class: ForwardToLEAction

Hash Feedback Action Shape
type: NodeShape
comment: Enhanced SHACL shape for hash feedback actions with gUFO Event validation and collaboration requirements.
property:
  class: Hash
  message: A hash feedback action must reference at least one hash
  min count: 1
  path: referencesHash
property:
  in: Removed
  in: NoAction
  in: Duplicate
  in: FalsePositive
  message: A hash feedback action must specify a valid feedback type
  min count: 1
  path: feedbackType
target class: HashFeedbackAction

Hash Submission Action Shape
type: NodeShape
comment: Enhanced SHACL shape for hash submission actions with gUFO Event validation and forensic requirements.
property:
  class: Hash
  message: A hash submission action must produce at least one hash
  min count: 1
  path: producesHash
rule: SPARQLRule
  construct: INSERT { $this a hotline:HashIntegrityError . } WHERE { $this hotline:producesHash ?hash . FILTER NOT EXISTS { ?hash uco-observable:hashMethod ?method . ?hash uco-observable:hashValue ?value . } }
  message: Hash submissions must maintain cryptographic integrity
  prefixes: core#
  severity: Violation
target class: HashSubmissionAction

Hotline Action Shape
type: NodeShape
comment: Enhanced SHACL shape for hotline actions with comprehensive gUFO Event validation and temporal modeling.
property:
  has value: Event
  message: Hotline actions must be instances of gUFO Event
  path: type
property:
  message: A hotline action must have at least one performer
  min count: 1
  path: performer
property:
  datatype: dateTime
  message: Hotline actions must have start times
  min count: 1
  path: startTime
property:
  datatype: dateTime
  max count: 1
  message: Hotline actions can have at most one end time
  path: endTime
rule: SPARQLRule
  construct: INSERT { $this a hotline:TemporalInconsistencyError . } WHERE { $this uco-core:startTime ?start . $this uco-core:endTime ?end . FILTER(?end <= ?start) }
  message: Action end time must be after start time
  prefixes: core#
  severity: Violation
target class: HotlineAction

Hotline Organization Shape
type: NodeShape
comment: SHACL shape for hotline organizations with gUFO Organization validation.
property:
  datatype: string
  message: Hotline organizations must have a name
  min count: 1
  path: name
property:
  has value: Organization
  message: Hotline organizations must be instances of gUFO Organization
  path: type
rule: SPARQLRule
  construct: INSERT { $this a hotline:OrganizationalError . } WHERE { $this a hotline:HotlineOrganization . FILTER NOT EXISTS { $this hotline:hasCapability ?capability . } }
  message: Hotline organizations must demonstrate operational capabilities
  prefixes: core#
  severity: Violation
target class: HotlineOrganization

Hotline Phase Shape
type: NodeShape
comment: SHACL shape for hotline operational phases with anti-rigid gUFO Phase validation and temporal constraints.
property:
  has value: Phase
  message: Hotline phases must be instances of anti-rigid gUFO Phase
  path: type
property:
  datatype: dateTime
  message: Phases must have begin times
  min count: 1
  path: phaseBeginTime
property:
  datatype: duration
  max count: 1
  message: Phases can have duration specifications
  path: phaseDuration
rule: SPARQLRule
  construct: INSERT { $this a hotline:PhaseSequenceError . } WHERE { ?report hotline:currentPhase $this . $this hotline:phaseBeginTime ?thisStart . ?report hotline:hasPhaseTransition ?transition . ?transition uco-core:endTime ?prevEnd . FILTER(?thisStart <= ?prevEnd) }
  message: Phase transitions must follow logical sequence
  prefixes: core#
  severity: Violation
target class: Class
  union of: IntakePhase
  union of: ReviewPhase
  union of: ActionPhase
  union of: ClosurePhase

Hotline Report Shape
type: NodeShape
comment: Enhanced SHACL shape for hotline reports with gUFO Situation validation and comprehensive temporal constraints.
property:
  message: A hotline report must have at least one reporter
  min count: 1
  path: reportedBy
property:
  class: HotlineOrganization
  message: A hotline report must be received by a hotline organization
  min count: 1
  path: receivedBy
property:
  class: EvidenceItem
  message: A hotline report must have at least one evidence item
  min count: 1
  path: hasEvidence
property:
  class: IntakeChannel
  message: A hotline report must specify its intake channel
  min count: 1
  path: intakeChannel
property:
  message: A hotline report must have a status
  min count: 1
  path: status
property:
  has value: Situation
  message: Hotline reports must be instances of gUFO Situation
  path: type
property:
  class: Phase
  message: A hotline report must have a current operational phase
  min count: 1
  path: currentPhase
property:
  class: MultiAgencyCoordination
  message: Multi-agency coordination must be a valid gUFO Situation
  path: involvesCoordination
target class: HotlineReport

International Coordination
type: Class
comment: A coordination situation involving multiple countries or international organizations.
subclass of: MultiAgencyCoordination

Lifecycle Validation Shape
type: NodeShape
comment: Enhanced SHACL shape for hotline report lifecycle validation with comprehensive gUFO Event sequence and Phase transition validation.
rule: SPARQLRule
  construct: INSERT { $this a hotline:LifecycleError . } WHERE { $this hotline:triggersAction ?action . ?action a hotline:HotlineAction . FILTER NOT EXISTS { ?prev hotline:nextStep ?action . } FILTER NOT EXISTS { ?action a hotline:ReportReviewAction . } }
  message: The first action must be a ReportReviewAction
  prefixes: core#
  severity: Violation
rule: SPARQLRule
  construct: INSERT { $this a hotline:PhaseSequenceError . } WHERE { $this hotline:currentPhase ?currentPhase . ?currentPhase a ?phaseType . ?phaseType rdfs:subClassOf gufo:Phase . # Invalid transitions logic would be implemented here FILTER EXISTS { # Example: ActionPhase cannot directly follow IntakePhase ?currentPhase a hotline:ActionPhase . ?previousPhase hotline:nextPhase ?currentPhase . ?previousPhase a hotline:IntakePhase . } }
  message: Phases must follow logical sequence: Intake → Review → Action → Closure
  prefixes: core#
  severity: Violation
rule: SPARQLRule
  construct: INSERT { $this a hotline:TemporalConsistencyError . } WHERE { $this hotline:triggersAction ?action . ?action a gufo:Event . ?action uco-core:startTime ?actionStart . $this hotline:currentPhase ?phase . ?phase hotline:phaseBeginTime ?phaseStart . FILTER(?actionStart < ?phaseStart) }
  message: gUFO Events must maintain temporal consistency within phases
  prefixes: core#
  severity: Violation
rule: SPARQLRule
  construct: INSERT { $this a hotline:RoleAssignmentError . } WHERE { $this hotline:triggersAction ?action . ?action uco-action:performer ?performer . FILTER NOT EXISTS { ?performer hotline:playsRole ?role . ?role a gufo:Role . } }
  message: All actions must be performed by entities with appropriate gUFO Roles
  prefixes: core#
  severity: Violation
target class: HotlineReport

Media Evidence Shape
type: NodeShape
comment: Enhanced SHACL shape for media evidence with comprehensive gUFO Object validation and forensic requirements.
property:
  class: Hash
  message: Media evidence must have at least one hash
  min count: 1
  path: hash
rule: SPARQLRule
  construct: INSERT { $this a hotline:IntegrityError . } WHERE { $this a ?mediaType . ?mediaType rdfs:subClassOf* [ owl:unionOf (hotline:ImageEvidence hotline:VideoEvidence) ] . FILTER NOT EXISTS { $this uco-observable:hash ?hash . ?hash uco-observable:hashMethod ?method . } }
  message: Media evidence must maintain cryptographic integrity
  prefixes: core#
  severity: Violation
target class: Class
  union of: ImageEvidence
  union of: VideoEvidence

Multi-Agency Coordination Shape
type: NodeShape
comment: SHACL shape for multi-agency coordination with comprehensive gUFO Situation validation and participant requirements.
property:
  has value: Situation
  message: Multi-agency coordination must be instances of gUFO Situation
  path: type
property:
  datatype: dateTime
  message: Coordination situations must have begin timestamps
  min count: 1
  path: coordinationBeginTime
rule: SPARQLRule
  construct: INSERT { $this a hotline:CoordinationParticipantError . } WHERE { $this a hotline:MultiAgencyCoordination . { SELECT $this (COUNT(?org) AS ?orgCount) WHERE { $this hotline:hasParticipant ?org . ?org a uco-identity:Organization . } GROUP BY $this } FILTER(?orgCount < 2) }
  message: Multi-agency coordination must involve at least two organizations
  prefixes: core#
  severity: Violation
target class: MultiAgencyCoordination

Public Report
type: Class
comment: A report submitted by a member of the public.
subclass of: HotlineReport

Report Review Action Shape
type: NodeShape
comment: Enhanced SHACL shape for report review actions with comprehensive gUFO Event modeling and classification requirements.
property:
  message: A report review action must have at least one performer
  min count: 1
  path: performer
property:
  message: A report review action must assign at least one classification
  min count: 1
  path: classification
rule: SPARQLRule
  construct: INSERT { $this a hotline:QualificationError . } WHERE { $this a hotline:ReportReviewAction . $this uco-action:performer ?performer . FILTER NOT EXISTS { ?performer hotline:playsRole hotline:HotlineAnalystRole . } }
  message: Report review must be performed by qualified analyst
  prefixes: core#
  severity: Violation
target class: ReportReviewAction

Reporter Role Shape
type: NodeShape
comment: Enhanced SHACL shape for reporter roles with anti-rigid gUFO Role validation.
property:
  datatype: boolean
  message: A reporter role must specify whether it is anonymous
  min count: 1
  path: isAnonymous
property:
  has value: Role
  message: Reporter roles must be instances of anti-rigid gUFO Role
  path: type
property:
  datatype: dateTime
  message: Reporter roles must have assignment timestamps
  min count: 1
  path: roleAssignmentTime
rule: SPARQLRule
  construct: INSERT { $this a hotline:AntiRigidityError . } WHERE { $this a hotline:ReporterRole . FILTER NOT EXISTS { $this hotline:roleAssignmentTime ?start . OPTIONAL { $this hotline:roleEndTime ?end . } } }
  message: Reporter roles must demonstrate anti-rigidity (can be gained/lost)
  prefixes: core#
  severity: Violation
target class: ReporterRole

Specialist Role Shape
type: NodeShape
comment: SHACL shape for hotline specialist roles with anti-rigid gUFO Role validation and competency requirements.
property:
  has value: Role
  message: Specialist roles must be instances of anti-rigid gUFO Role
  path: type
property:
  datatype: dateTime
  message: Specialist roles must have assignment timestamps
  min count: 1
  path: roleAssignmentTime
rule: SPARQLRule
  construct: INSERT { $this a hotline:CompetencyError . } WHERE { $this a ?roleType . ?roleType rdfs:subClassOf* [ owl:unionOf (hotline:HotlineAnalystRole hotline:ForensicsSpecialistRole hotline:LiaisonRole) ] . FILTER NOT EXISTS { $this hotline:hasCompetency ?competency . } }
  message: Specialist roles require demonstrated competencies
  prefixes: core#
  severity: Violation
target class: Class
  union of: HotlineAnalystRole
  union of: ForensicsSpecialistRole
  union of: LiaisonRole

Takedown Request Action Shape
type: NodeShape
comment: Enhanced SHACL shape for takedown request actions with gUFO Event validation and coordination requirements.
property:
  class: Organization
  message: A takedown request action must target at least one organization
  min count: 1
  path: target
target class: TakedownRequestAction

URL Reference
type: Class
comment: A URL submitted as evidence.
subclass of: EvidenceItem

assigned role
type: ObjectProperty
comment: Links a person to their assigned hotline role. gUFO Role modeling for dynamic assignment.
domain: Person
range: Role

Confirmed CSAM
type: NamedIndividual
type: Concept
definition: Material has been reviewed and confirmed to be Child Sexual Abuse Material.
in scheme: ClassificationScheme

False Positive
type: NamedIndividual
type: Concept
definition: Material has been reviewed and determined not to be Child Sexual Abuse Material.
in scheme: ClassificationScheme

Legal but Concerning
type: NamedIndividual
type: Concept
definition: Material is legal but may still be concerning or warrant attention (e.g., adult pornography accessible to minors, risky online interactions).
in scheme: ClassificationScheme

Other
type: NamedIndividual
type: Concept
definition: Material falls into a category not otherwise specified.
in scheme: ClassificationScheme

Uncertain
type: NamedIndividual
type: Concept
definition: Material requires further review to determine its nature.
in scheme: ClassificationScheme

found at URL
type: ObjectProperty
comment: Links an evidence item to the URL where it was found.
domain: EvidenceItem
range: URL

has phase transition
type: ObjectProperty
comment: Links a hotline report to phase transition events.
domain: HotlineReport
range: Event

linked investigation
type: ObjectProperty
comment: Links a hotline report to an ICAC investigation.
domain: HotlineReport
range: CACInvestigation

phase end time
type: DatatypeProperty
comment: The timestamp when a particular phase ends.
domain: Phase
range: dateTime

plays role
type: ObjectProperty
comment: Links an entity to a role it plays in hotline operations.
range: Role

Closed
type: NamedIndividual
type: Concept
definition: Report processing is complete. This may occur after forwarding to LEA, determining it as a false positive, or other terminal actions.
in scheme: StatusScheme

Forwarded to LEA
type: NamedIndividual
type: Concept
definition: Report has been assessed and forwarded to a Law Enforcement Agency for further action.
in scheme: StatusScheme

In Progress
type: NamedIndividual
type: Concept
definition: Report is actively being processed or investigated by the hotline.
in scheme: StatusScheme

In Review
type: NamedIndividual
type: Concept
definition: Report is currently under review by an analyst or specialist.
in scheme: StatusScheme

New
type: NamedIndividual
type: Concept
definition: Report has been newly received and is awaiting initial review.
in scheme: StatusScheme

Reopened
type: NamedIndividual
type: Concept
definition: A previously closed report has been reopened for additional review or action due to new information.
in scheme: StatusScheme

triggers action
type: ObjectProperty
comment: Links a hotline report to actions taken in response.
domain: HotlineReport
range: HotlineAction

Account Freezing Shape
type: NodeShape
comment: Validation shape for account freezing instances.
property:
  datatype: dateTime
  max count: 1
  message: Account freezing must specify start time.
  min count: 1
  path: startTime
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 100000
  message: Accounts frozen must be between 1 and 100000 when specified.
  min count: 0
  min inclusive: 1
  path: accountsFrozen
target class: AccountFreezing

Analysis Subject Cross Reference Shape
type: NodeShape
comment: Validates that infrastructure analysis has subject infrastructure.
sparql:
  message: Infrastructure analysis should analyze specific infrastructure.
  select: SELECT $this WHERE { $this a cacontology-infrastructure:InfrastructureAnalysis . FILTER NOT EXISTS { $this cacontology-infrastructure:analysesInfrastructure ?infrastructure . ?infrastructure a cacontology-infrastructure:PlatformInfrastructure . } }
target class: InfrastructureAnalysis

Analyst Role
type: Role
type: Class
comment: Role of person conducting infrastructure analysis (gUFO Role - anti-rigid).
subclass of: Person

Anonymity Infrastructure Shape
type: NodeShape
comment: Validation shape for anonymity infrastructure instances.
property:
  datatype: string
  in: basic
  in: enhanced
  in: military-grade
  in: custom
  max count: 1
  message: Anonymity level must be from the allowed list.
  min count: 0
  path: anonymityLevel
target class: AnonymityInfrastructure

Capacity Validation Shape
type: NodeShape
comment: Validates infrastructure capacity specifications.
sparql:
  message: Large-scale infrastructure should have appropriate capacity specifications.
  select: SELECT $this WHERE { $this a ?infraType . FILTER (?infraType IN ( cacontology-infrastructure:ServerInfrastructure, cacontology-infrastructure:ContentDeliveryNetwork, cacontology-infrastructure:DatabaseInfrastructure )) FILTER NOT EXISTS { { $this cacontology-infrastructure:serverCount ?count } UNION { $this cacontology-infrastructure:bandwidthCapacity ?bandwidth } UNION { $this cacontology-infrastructure:storageCapacity ?storage } } }
target class: ContentDeliveryNetwork
target class: DatabaseInfrastructure
target class: ServerInfrastructure

Content Delivery Network Shape
type: NodeShape
comment: Validation shape for CDN instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 10000.0
  message: Bandwidth capacity must be between 0.1 and 10000 Gbps.
  min count: 0
  min inclusive: 0.1
  path: bandwidthCapacity
target class: ContentDeliveryNetwork

Cryptocurrency Infrastructure Shape
type: NodeShape
comment: Validation shape for cryptocurrency infrastructure instances.
property:
  datatype: string
  in: Bitcoin
  in: Monero
  in: Ethereum
  in: Litecoin
  in: Zcash
  in: Dash
  in: Ripple
  in: Tether
  in: other
  max count: 10
  message: Cryptocurrency types must be from the allowed list.
  min count: 0
  path: cryptoCurrencyTypes
target class: CryptocurrencyInfrastructure

Data Mirror Creation Shape
type: NodeShape
comment: Validation shape for data mirror creation instances.
property:
  datatype: dateTime
  max count: 1
  message: Data mirror creation must specify start time.
  min count: 1
  path: startTime
property:
  datatype: decimal
  max count: 1
  max inclusive: 100000.0
  message: Data volume mirrored must be between 0.001 and 100000 terabytes.
  min count: 0
  min inclusive: 0.001
  path: dataVolumeMirrored
target class: DataMirrorCreation

Data Quality Shape
type: NodeShape
comment: Validates data quality for infrastructure entities.
property:
  datatype: dateTime
  max count: 1
  message: Creation time should be specified when available.
  min count: 0
  path: createdTime
property:
  datatype: dateTime
  max count: 1
  message: Modification time should be specified when available.
  min count: 0
  path: modifiedTime
target class: HostingProvider
target class: InfrastructureAnalysis
target class: InfrastructureTakedown
target class: PaymentProcessing
target class: PlatformInfrastructure

Database Infrastructure Shape
type: NodeShape
comment: Validation shape for database infrastructure instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 100000.0
  message: Storage capacity must be between 0.1 and 100000 terabytes.
  min count: 0
  min inclusive: 0.1
  path: storageCapacity
target class: DatabaseInfrastructure

Domain Infrastructure Shape
type: NodeShape
comment: Validation shape for domain infrastructure instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 10000
  message: Domain count must be between 1 and 10000 when specified.
  min count: 0
  min inclusive: 1
  path: domainCount
target class: DomainInfrastructure

Domain Sinkholing Shape
type: NodeShape
comment: Validation shape for domain sinkholing instances.
property:
  datatype: dateTime
  max count: 1
  message: Domain sinkholing must specify start time.
  min count: 1
  path: startTime
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 10000
  message: Domains sinkholed must be between 1 and 10000 when specified.
  min count: 0
  min inclusive: 1
  path: domainsSinkholed
target class: DomainSinkholing

Encryption Infrastructure Shape
type: NodeShape
comment: Validation shape for encryption infrastructure instances.
property:
  datatype: string
  in: AES-128
  in: AES-256
  in: RSA-2048
  in: RSA-4096
  in: ChaCha20
  in: Blowfish
  in: 3DES
  in: custom
  max count: 1
  message: Encryption strength must be from the allowed list.
  min count: 0
  path: encryptionStrength
target class: EncryptionInfrastructure

Financial Consistency Validation Shape
type: NodeShape
comment: Validates financial processing consistency.
sparql:
  message: High-revenue platforms should have multiple payment methods.
  select: SELECT $this WHERE { $this cacontology-infrastructure:monthlyRevenue ?revenue . FILTER (?revenue > 100000) FILTER NOT EXISTS { $this cacontology-infrastructure:paymentMethods ?method1 . $this cacontology-infrastructure:paymentMethods ?method2 . FILTER (?method1 != ?method2) } }
target class: PaymentProcessing

Financial Flow Analysis Shape
type: NodeShape
comment: Validation shape for financial flow analysis instances.
property:
  datatype: dateTime
  max count: 1
  message: Financial flow analysis must specify start time.
  min count: 1
  path: startTime
property:
  datatype: string
  in: basic
  in: intermediate
  in: sophisticated
  in: highly_sophisticated
  max count: 1
  message: Financial complexity must be from the allowed list.
  min count: 0
  path: financialComplexity
target class: FinancialFlowAnalysis

Financial Obfuscation Shape
type: NodeShape
comment: Validation shape for financial obfuscation instances.
property:
  datatype: string
  max count: 1
  max length: 500
  message: Financial obfuscation description should be 10-500 characters when specified.
  min count: 0
  min length: 10
  path: description
target class: FinancialObfuscation

Geographic Distribution Shape
type: NodeShape
comment: Validation shape for geographic distribution instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 200
  message: Geographic locations must be between 1 and 200 when specified.
  min count: 0
  min inclusive: 1
  path: geographicLocations
target class: GeographicDistribution

Hosting Provider Shape
type: NodeShape
comment: Validation shape for hosting provider instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Hosting provider must have a name (2-200 characters).
  min count: 1
  min length: 2
  path: name
property:
  datatype: string
  max count: 1
  max length: 200
  message: Hosting provider name should be 2-200 characters when specified.
  min count: 0
  min length: 2
  path: hostingProvider
target class: HostingProvider

Infrastructure Analysis Shape
type: NodeShape
comment: Validation shape for infrastructure analysis instances.
property:
  datatype: dateTime
  max count: 1
  message: Infrastructure analysis must specify start time.
  min count: 1
  path: startTime
property:
  class: Person
  max count: 1
  message: Infrastructure analysis must specify performing analyst.
  min count: 1
  path: performer
target class: InfrastructureAnalysis

Infrastructure Compromise Situation
type: Class
comment: Situation where platform infrastructure has been compromised or breached (gUFO Situation).
subclass of: Situation

Infrastructure Decommission Phase
type: Phase
type: Class
comment: Phase during which infrastructure is being decommissioned or shut down (gUFO Phase - anti-rigid).
subclass of: PlatformInfrastructure

Infrastructure Deployment Phase
type: Phase
type: Class
comment: Phase during which platform infrastructure is being deployed and configured (gUFO Phase - anti-rigid).
subclass of: PlatformInfrastructure

Infrastructure Discovery Situation
type: Class
comment: Situation involving the discovery of previously unknown infrastructure components (gUFO Situation).
subclass of: Situation

Infrastructure Failure Situation
type: Class
comment: Situation involving infrastructure failure or outage (gUFO Situation).
subclass of: Situation

Infrastructure Hosting Cross Reference Shape
type: NodeShape
comment: Validates that platform infrastructure has hosting relationships.
sparql:
  message: Platform infrastructure should have hosting provider relationships.
  select: SELECT $this WHERE { $this a cacontology-infrastructure:PlatformInfrastructure . FILTER NOT EXISTS { $this cacontology-infrastructure:hostedBy ?provider . ?provider a cacontology-infrastructure:HostingProvider . } }
target class: PlatformInfrastructure

Infrastructure Maintenance Phase
type: Phase
type: Class
comment: Phase during which infrastructure undergoes maintenance and updates (gUFO Phase - anti-rigid).
subclass of: PlatformInfrastructure

Infrastructure Operational Phase
type: Phase
type: Class
comment: Phase during which platform infrastructure is actively supporting operations (gUFO Phase - anti-rigid).
subclass of: PlatformInfrastructure

Infrastructure Takedown Shape
type: NodeShape
comment: Validation shape for infrastructure takedown instances.
property:
  datatype: dateTime
  max count: 1
  message: Infrastructure takedown must specify start time.
  min count: 1
  path: startTime
property:
  datatype: dateTime
  max count: 1
  message: Infrastructure takedown may specify end time.
  min count: 0
  path: endTime
property:
  datatype: decimal
  max count: 1
  max inclusive: 8760.0
  message: Takedown duration must be between 0.1 and 8760 hours (1 year).
  min count: 0
  min inclusive: 0.1
  path: takedownDuration
target class: InfrastructureTakedown

Load Balancer Shape
type: NodeShape
comment: Validation shape for load balancer instances.
property:
  datatype: string
  max count: 1
  max length: 100
  message: Load balancer name should be 2-100 characters when specified.
  min count: 0
  min length: 2
  path: name
target class: LoadBalancer

Network Infrastructure Shape
type: NodeShape
comment: Validation shape for network infrastructure instances.
property:
  datatype: string
  max count: 1
  max length: 100
  message: Network infrastructure name should be 2-100 characters when specified.
  min count: 0
  min length: 2
  path: name
target class: NetworkInfrastructure

Network Topology Analysis Shape
type: NodeShape
comment: Validation shape for network topology analysis instances.
property:
  datatype: dateTime
  max count: 1
  message: Network topology analysis must specify start time.
  min count: 1
  path: startTime
property:
  datatype: string
  in: simple
  in: moderate
  in: complex
  in: highly_complex
  max count: 1
  message: Network complexity must be from the allowed list.
  min count: 0
  path: networkComplexity
target class: NetworkTopologyAnalysis

Payment Processing Shape
type: NodeShape
comment: Validation shape for payment processing instances.
property:
  datatype: string
  in: credit_cards
  in: cryptocurrency
  in: digital_wallets
  in: bank_transfers
  in: prepaid_cards
  in: gift_cards
  in: cash_equivalents
  max count: 10
  message: Payment methods must be from the allowed list.
  min count: 0
  path: paymentMethods
property:
  datatype: decimal
  max count: 1
  max inclusive: 100000000.0
  message: Monthly revenue must be between 0 and 100 million USD.
  min count: 0
  min inclusive: 0.0
  path: monthlyRevenue
target class: PaymentProcessing

Payment System Cross Reference Shape
type: NodeShape
comment: Validates payment system relationships for monetized platforms.
sparql:
  message: Monetized platform infrastructure should have payment processing systems.
  select: SELECT $this WHERE { $this a cacontology-infrastructure:PlatformInfrastructure . ?payment cacontology-infrastructure:monthlyRevenue ?revenue . FILTER (?revenue > 0) FILTER NOT EXISTS { $this cacontology-infrastructure:usesPaymentSystem ?payment . } }
target class: PlatformInfrastructure

Platform Infrastructure Shape
type: NodeShape
comment: Validation shape for platform infrastructure instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Infrastructure name should be 2-200 characters when specified.
  min count: 0
  min length: 2
  path: name
property:
  datatype: string
  max count: 1
  max length: 1000
  message: Infrastructure description should be 10-1000 characters when specified.
  min count: 0
  min length: 10
  path: description
target class: PlatformInfrastructure

Proxy Infrastructure Shape
type: NodeShape
comment: Validation shape for proxy infrastructure instances.
property:
  datatype: string
  max count: 1
  max length: 100
  message: Proxy infrastructure name should be 2-100 characters when specified.
  min count: 0
  min length: 2
  path: name
target class: ProxyInfrastructure

Security Consistency Validation Shape
type: NodeShape
comment: Validates security infrastructure consistency.
sparql:
  message: High-anonymity infrastructure should use appropriate obfuscation methods.
  select: SELECT $this WHERE { $this a cacontology-infrastructure:AnonymityInfrastructure ; cacontology-infrastructure:anonymityLevel "military-grade" . FILTER NOT EXISTS { $this cacontology-infrastructure:obfuscationMethods ?method . FILTER (?method IN ("Tor", "VPNs", "domain_fronting")) } }
target class: SecurityInfrastructure

Security Infrastructure Shape
type: NodeShape
comment: Validation shape for security infrastructure instances.
property:
  datatype: string
  in: proxies
  in: VPNs
  in: Tor
  in: domain_fronting
  in: CDN_masking
  in: traffic_obfuscation
  in: protocol_tunneling
  max count: 10
  message: Obfuscation methods must be from the allowed list.
  min count: 0
  path: obfuscationMethods
target class: SecurityInfrastructure

Security Operator Role
type: Role
type: Class
comment: Role of person managing security infrastructure and operations (gUFO Role - anti-rigid).
subclass of: Person

Server Infrastructure Shape
type: NodeShape
comment: Validation shape for server infrastructure instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 10000
  message: Server count must be between 1 and 10000 when specified.
  min count: 0
  min inclusive: 1
  path: serverCount
property:
  datatype: string
  in: AWS
  in: Azure
  in: GCP
  in: private_cloud
  in: dedicated_servers
  in: hybrid
  in: unknown
  max count: 1
  message: Cloud platform must be from the allowed list.
  min count: 0
  path: cloudPlatform
target class: ServerInfrastructure

Server Seizure Shape
type: NodeShape
comment: Validation shape for server seizure instances.
property:
  datatype: dateTime
  max count: 1
  message: Server seizure must specify start time.
  min count: 1
  path: startTime
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 10000
  message: Servers seized must be between 1 and 10000 when specified.
  min count: 0
  min inclusive: 1
  path: serversSeized
target class: ServerSeizure

Subscription Management Shape
type: NodeShape
comment: Validation shape for subscription management instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 20
  message: Subscription tiers must be between 1 and 20.
  min count: 0
  min inclusive: 1
  path: subscriptionTiers
target class: SubscriptionManagement

System Administrator Role
type: Role
type: Class
comment: Role of person responsible for infrastructure system administration (gUFO Role - anti-rigid).
subclass of: Person

Takedown Effectiveness Validation Shape
type: NodeShape
comment: Validates takedown operation effectiveness metrics.
sparql:
  message: Large-scale takedown operations should have significant seizure metrics.
  select: SELECT $this WHERE { $this cacontology-infrastructure:takedownDuration ?duration . FILTER (?duration > 24) FILTER NOT EXISTS { { ?seizure a cacontology-infrastructure:ServerSeizure ; cacontology-infrastructure:serversSeized ?servers . FILTER (?servers > 10) } UNION { ?sinkhole a cacontology-infrastructure:DomainSinkholing ; cacontology-infrastructure:domainsSinkholed ?domains . FILTER (?domains > 5) } } }
target class: InfrastructureTakedown

Takedown Operator Role
type: Role
type: Class
comment: Role of law enforcement personnel conducting takedown operations (gUFO Role - anti-rigid).
subclass of: Person

Takedown Sequence Validation Shape
type: NodeShape
comment: Validates that infrastructure analysis occurs after takedown operations.
sparql:
  message: Infrastructure analysis should occur after takedown operations when analyzing seized infrastructure.
  select: SELECT $this WHERE { $this a cacontology-infrastructure:InfrastructureAnalysis ; uco-core:startTime ?analysisTime ; cacontology-infrastructure:analysesInfrastructure ?infrastructure . ?takedown cacontology-infrastructure:targetsInfrastructure ?infrastructure ; uco-core:startTime ?takedownTime . FILTER (?analysisTime < ?takedownTime) }
target class: InfrastructureAnalysis

Takedown Target Cross Reference Shape
type: NodeShape
comment: Validates that takedown operations target infrastructure.
sparql:
  message: Infrastructure takedown should target specific infrastructure.
  select: SELECT $this WHERE { $this a cacontology-infrastructure:InfrastructureTakedown . FILTER NOT EXISTS { $this cacontology-infrastructure:targetsInfrastructure ?infrastructure . ?infrastructure a cacontology-infrastructure:PlatformInfrastructure . } }
target class: InfrastructureTakedown

Temporal Validation Shape
type: NodeShape
comment: Validates temporal consistency for infrastructure operations.
sparql:
  message: Start time must be before end time when both are specified.
  select: SELECT $this WHERE { $this uco-core:startTime ?start ; uco-core:endTime ?end . FILTER (?start >= ?end) }
target class: AccountFreezing
target class: DataMirrorCreation
target class: DomainSinkholing
target class: FinancialFlowAnalysis
target class: InfrastructureAnalysis
target class: InfrastructureTakedown
target class: NetworkTopologyAnalysis
target class: ServerSeizure
target class: UserAccessPatternAnalysis

User Access Pattern Analysis Shape
type: NodeShape
comment: Validation shape for user access pattern analysis instances.
property:
  datatype: dateTime
  max count: 1
  message: User access pattern analysis must specify start time.
  min count: 1
  path: startTime
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 200
  message: User geographic spread must be between 1 and 200 countries.
  min count: 0
  min inclusive: 1
  path: userGeographicSpread
target class: UserAccessPatternAnalysis

analyses access
type: ObjectProperty
comment: Links access pattern analysis to user access infrastructure.
domain: UserAccessPatternAnalysis
range: PlatformInfrastructure

analyses infrastructure
type: ObjectProperty
comment: Links analysis process to infrastructure being analyzed.
domain: InfrastructureAnalysis
range: PlatformInfrastructure

contains component
type: ObjectProperty
comment: Indicates that one infrastructure component contains another as a functional part (gUFO part-whole relationship).
domain: PlatformInfrastructure
range: PlatformInfrastructure
sub property of: isComponentOf

distributed across
type: ObjectProperty
comment: Links infrastructure to geographic distribution strategy.
domain: PlatformInfrastructure
range: GeographicDistribution

freezes accounts
type: ObjectProperty
comment: Links account freezing to payment processing systems.
domain: AccountFreezing
range: PaymentProcessing

has analysis begin point
type: DatatypeProperty
comment: Temporal begin point for analysis events (gUFO temporal property).
domain: InfrastructureAnalysis
range: dateTimeStamp
sub property of: hasBeginPointInXSDDateTimeStamp

has analysis end point
type: DatatypeProperty
comment: Temporal end point for analysis events (gUFO temporal property).
domain: InfrastructureAnalysis
range: dateTimeStamp
sub property of: hasEndPointInXSDDateTimeStamp

has takedown begin point
type: DatatypeProperty
comment: Temporal begin point for takedown events (gUFO temporal property).
domain: InfrastructureTakedown
range: dateTimeStamp
sub property of: hasBeginPointInXSDDateTimeStamp

has takedown end point
type: DatatypeProperty
comment: Temporal end point for takedown events (gUFO temporal property).
domain: InfrastructureTakedown
range: dateTimeStamp
sub property of: hasEndPointInXSDDateTimeStamp

hosted by
type: ObjectProperty
comment: Links infrastructure to hosting provider.
domain: PlatformInfrastructure
range: HostingProvider

leads to criminal charges
type: ObjectProperty
comment: Links infrastructure takedown to resulting criminal charges.
domain: InfrastructureTakedown
range: ObservableObject

protected by
type: ObjectProperty
comment: Links infrastructure to security systems protecting it.
domain: PlatformInfrastructure
range: SecurityInfrastructure

provides evidence
type: ObjectProperty
comment: Links infrastructure analysis to evidence discovered.
domain: InfrastructureAnalysis
range: ObservableObject

results in seizure
type: ObjectProperty
comment: Links takedown operation to asset seizure actions.
domain: InfrastructureTakedown
range: Action

reveals topology
type: ObjectProperty
comment: Links network analysis to network infrastructure topology.
domain: NetworkTopologyAnalysis
range: NetworkInfrastructure

seizes servers
type: ObjectProperty
comment: Links server seizure to specific server infrastructure.
domain: ServerSeizure
range: ServerInfrastructure

sinkhole domains
type: ObjectProperty
comment: Links sinkholing operation to domain infrastructure.
domain: DomainSinkholing
range: DomainInfrastructure

targets infrastructure
type: ObjectProperty
comment: Links takedown operation to infrastructure being targeted.
domain: InfrastructureTakedown
range: PlatformInfrastructure

traces payments
type: ObjectProperty
comment: Links financial analysis to payment processing systems.
domain: FinancialFlowAnalysis
range: PaymentProcessing

uses payment system
type: ObjectProperty
comment: Links platform to payment processing infrastructure.
domain: PlatformInfrastructure
range: PaymentProcessing

Analysis Event Temporal Shape
type: NodeShape
comment: Validates gUFO temporal constraints for analysis events.
sparql:
  message: Analysis events must have consistent temporal boundaries with end after start.
  select: SELECT $this WHERE { $this cacontology-infrastructure:hasAnalysisBeginPoint ?start ; cacontology-infrastructure:hasAnalysisEndPoint ?end . FILTER (?end <= ?start) }
target class: InfrastructureAnalysis

Analysis Event Type Validation Shape
type: NodeShape
comment: Validates gUFO Event type consistency for analysis events.
property:
  has value: Event
  message: Infrastructure analysis must be typed as gUFO Event.
  min count: 1
  path: type
sparql:
  message: Analysis events must be properly typed as gUFO Event and extend UCO Action.
  select: SELECT $this WHERE { $this rdf:type gufo:Event . FILTER NOT EXISTS { $this rdf:type ?actionClass . ?actionClass rdfs:subClassOf* uco-action:Action . } }
target class: InfrastructureAnalysis

Analysis Participation Shape
type: NodeShape
comment: Validates gUFO participation constraints for analysis operations.
sparql:
  message: Analysis operations must involve analyst roles (gUFO participation constraint).
  select: SELECT $this WHERE { $this rdf:type cacontology-infrastructure:InfrastructureAnalysis . FILTER NOT EXISTS { ?analyst a cacontology-infrastructure:AnalystRole ; uco-action:performer ?person . } }
target class: InfrastructureAnalysis

Comprehensive Analysis Rule
type: NodeShape
comment: Advanced gUFO business rule: Comprehensive analysis requires high accuracy and appropriate timeliness.
sparql:
  message: Comprehensive or exhaustive analysis must have high accuracy and good timeliness (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-infrastructure:hasAnalysisDepth ?depth . FILTER (?depth IN ("comprehensive", "exhaustive")) { FILTER NOT EXISTS { $this cacontology-infrastructure:hasAnalysisAccuracy ?accuracy . FILTER (?accuracy >= 0.85) } } UNION { FILTER NOT EXISTS { $this cacontology-infrastructure:hasAnalysisTimeliness ?timeliness . FILTER (?timeliness IN ("timely", "fast", "real_time")) } } }
target class: InfrastructureAnalysis

Effective Takedown Rule
type: NodeShape
comment: Advanced gUFO business rule: Highly effective takedowns should have high completeness and fast speed.
sparql:
  message: Highly effective takedowns must have high completeness and appropriate speed (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-infrastructure:hasTakedownEffectiveness ?effectiveness . FILTER (?effectiveness >= 0.9) { FILTER NOT EXISTS { $this cacontology-infrastructure:hasTakedownCompleteness ?completeness . FILTER (?completeness >= 0.8) } } UNION { FILTER NOT EXISTS { $this cacontology-infrastructure:hasTakedownSpeed ?speed . FILTER (?speed IN ("fast", "rapid", "instantaneous")) } } }
target class: InfrastructureTakedown

Enhanced Analysis Shape
type: NodeShape
comment: Enhanced validation shape for infrastructure analysis with gUFO quality aspects.
property:
  datatype: string
  in: superficial
  in: basic
  in: thorough
  in: comprehensive
  in: exhaustive
  max count: 1
  message: Analysis depth must be from allowed values (gUFO quality aspect).
  path: hasAnalysisDepth
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Analysis accuracy must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasAnalysisAccuracy
property:
  datatype: string
  in: delayed
  in: slow
  in: timely
  in: fast
  in: real_time
  max count: 1
  message: Analysis timeliness must be from allowed values (gUFO quality aspect).
  path: hasAnalysisTimeliness
target class: InfrastructureAnalysis

Enhanced Payment Processing Shape
type: NodeShape
comment: Enhanced validation shape for payment processing with gUFO quality aspects.
property:
  datatype: string
  in: simple
  in: basic
  in: intermediate
  in: sophisticated
  in: highly_sophisticated
  max count: 1
  message: Financial complexity must be from allowed values (gUFO quality aspect).
  path: hasFinancialComplexity
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Financial traceability must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasFinancialTraceability
target class: PaymentProcessing

Enhanced Platform Infrastructure Shape
type: NodeShape
comment: Enhanced validation shape for platform infrastructure with gUFO quality aspects.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Infrastructure name should be 2-200 characters when specified.
  min count: 0
  min length: 2
  path: name
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Infrastructure reliability must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasInfrastructureReliability
property:
  datatype: string
  in: poor
  in: fair
  in: good
  in: excellent
  in: optimal
  max count: 1
  message: Infrastructure performance must be from allowed values (gUFO quality aspect).
  path: hasInfrastructurePerformance
property:
  datatype: string
  in: limited
  in: moderate
  in: high
  in: unlimited
  in: unknown
  max count: 1
  message: Infrastructure scalability must be from allowed values (gUFO quality aspect).
  path: hasInfrastructureScalability
property:
  datatype: string
  in: minimal
  in: low
  in: moderate
  in: high
  in: critical
  max count: 1
  message: Infrastructure vulnerability must be from allowed values (gUFO quality aspect).
  path: hasInfrastructureVulnerability
target class: PlatformInfrastructure

Enhanced Security Infrastructure Shape
type: NodeShape
comment: Enhanced validation shape for security infrastructure with gUFO quality aspects.
property:
  datatype: string
  in: weak
  in: basic
  in: standard
  in: strong
  in: military_grade
  max count: 1
  message: Security strength must be from allowed values (gUFO quality aspect).
  path: hasSecurityStrength
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Anonymity effectiveness must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasAnonymityEffectiveness
property:
  datatype: string
  in: basic
  in: intermediate
  in: advanced
  in: sophisticated
  in: cutting_edge
  max count: 1
  message: Obfuscation complexity must be from allowed values (gUFO quality aspect).
  path: hasObfuscationComplexity
target class: SecurityInfrastructure

Enhanced Takedown Shape
type: NodeShape
comment: Enhanced validation shape for takedown operations with gUFO quality aspects.
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Takedown effectiveness must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasTakedownEffectiveness
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Takedown completeness must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasTakedownCompleteness
property:
  datatype: string
  in: slow
  in: moderate
  in: fast
  in: rapid
  in: instantaneous
  max count: 1
  message: Takedown speed must be from allowed values (gUFO quality aspect).
  path: hasTakedownSpeed
target class: InfrastructureTakedown

High Performance Infrastructure Rule
type: NodeShape
comment: Advanced gUFO business rule: High performance infrastructure should have excellent reliability and low vulnerability.
sparql:
  message: Excellent or optimal performance infrastructure must have high reliability and low vulnerability (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-infrastructure:hasInfrastructurePerformance ?performance . FILTER (?performance IN ("excellent", "optimal")) { FILTER NOT EXISTS { $this cacontology-infrastructure:hasInfrastructureReliability ?reliability . FILTER (?reliability >= 0.8) } } UNION { FILTER NOT EXISTS { $this cacontology-infrastructure:hasInfrastructureVulnerability ?vulnerability . FILTER (?vulnerability IN ("minimal", "low")) } } }
target class: PlatformInfrastructure

Infrastructure Composition Shape
type: NodeShape
comment: Validates gUFO part-whole relationships for infrastructure composition.
sparql:
  message: Infrastructure containment relationships must be consistent with gUFO part-whole constraints.
  select: SELECT $this WHERE { $this cacontology-infrastructure:containsComponent ?part . ?part cacontology-infrastructure:containsComponent $this . }
target class: PlatformInfrastructure

Infrastructure Data Quality Shape
type: NodeShape
comment: Enhanced data quality validation for infrastructure with gUFO quality consistency rules.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Infrastructure label should be between 5 and 200 characters when provided.
  min count: 0
  min length: 5
  path: label
property:
  datatype: string
  max count: 1
  max length: 1000
  message: Infrastructure comment should be between 10 and 1000 characters when provided.
  min count: 0
  min length: 10
  path: comment
sparql:
  message: Infrastructure performance and reliability should be correlated (gUFO quality consistency).
  select: SELECT $this WHERE { $this cacontology-infrastructure:hasInfrastructurePerformance ?performance ; cacontology-infrastructure:hasInfrastructureReliability ?reliability . { FILTER (?performance = "optimal" && ?reliability < 0.9) } UNION { FILTER (?performance = "excellent" && (?reliability < 0.7 || ?reliability > 0.95)) } UNION { FILTER (?performance = "poor" && ?reliability > 0.4) } }
sparql:
  message: Infrastructure vulnerability and security should be inversely correlated (gUFO quality consistency).
  select: SELECT $this WHERE { $this cacontology-infrastructure:hasInfrastructureVulnerability ?vulnerability ; cacontology-infrastructure:protectedBy ?security . ?security cacontology-infrastructure:hasSecurityStrength ?strength . { FILTER (?vulnerability = "critical" && ?strength NOT IN ("strong", "military_grade")) } UNION { FILTER (?vulnerability = "minimal" && ?strength NOT IN ("weak", "basic")) } }
target class: PlatformInfrastructure

Infrastructure Object Type Validation Shape
type: NodeShape
comment: Validates gUFO Object type consistency for platform infrastructure.
property:
  has value: Object
  message: Platform infrastructure must be typed as gUFO Object.
  min count: 1
  path: type
sparql:
  message: Infrastructure objects must be properly typed as gUFO Object and extend UCO Observable.
  select: SELECT $this WHERE { $this rdf:type gufo:Object . FILTER NOT EXISTS { $this rdf:type ?obsClass . ?obsClass rdfs:subClassOf* uco-observable:ObservableObject . } }
target class: PlatformInfrastructure

Infrastructure Participation Shape
type: NodeShape
comment: Validates gUFO participation constraints for platform infrastructure.
sparql:
  message: Platform infrastructure must be associated with hosting providers or management roles (gUFO participation constraint).
  select: SELECT $this WHERE { $this rdf:type cacontology-infrastructure:PlatformInfrastructure . FILTER NOT EXISTS { { $this cacontology-infrastructure:hostedBy ?provider } UNION { ?role a gufo:Role ; cacontology-infrastructure:manages $this } } }
target class: PlatformInfrastructure

Infrastructure Phase Temporal Shape
type: NodeShape
comment: Validates gUFO temporal constraints for infrastructure phases.
property:
  datatype: dateTimeStamp
  max count: 1
  message: Infrastructure phase may have begin point timestamp.
  path: hasPhaseBeginPoint
property:
  datatype: dateTimeStamp
  max count: 1
  message: Infrastructure phase may have end point timestamp.
  path: hasPhaseEndPoint
sparql:
  message: Phase end must be after begin when both are specified.
  select: SELECT $this WHERE { $this cacontology-infrastructure:hasPhaseBeginPoint ?start ; cacontology-infrastructure:hasPhaseEndPoint ?end . FILTER (?end <= ?start) }
target class: Phase

Infrastructure Phase Type Validation Shape
type: NodeShape
comment: Validates gUFO Phase type consistency for infrastructure phases.
sparql:
  message: Infrastructure phases must be properly typed as gUFO Phase and extend infrastructure classes.
  select: SELECT $this WHERE { $this rdf:type gufo:Phase . FILTER NOT EXISTS { $this rdfs:subClassOf* cacontology-infrastructure:PlatformInfrastructure . } }
target class: Phase

Infrastructure Situation Type Validation Shape
type: NodeShape
comment: Validates gUFO Situation type consistency for infrastructure situations.
property:
  has value: Situation
  message: Infrastructure situation should extend gUFO Situation.
  min count: 0
  path: subClassOf
target class: Situation

Infrastructure Temporal Shape
type: NodeShape
comment: Validates gUFO temporal constraints for platform infrastructure.
property:
  datatype: dateTimeStamp
  max count: 1
  message: Infrastructure may have begin point timestamp.
  path: hasInfrastructureBeginPoint
property:
  datatype: dateTimeStamp
  max count: 1
  message: Infrastructure may have end point timestamp.
  path: hasInfrastructureEndPoint
sparql:
  message: Infrastructure end must be after begin when both are specified (gUFO temporal constraint).
  select: SELECT $this WHERE { $this cacontology-infrastructure:hasInfrastructureBeginPoint ?start ; cacontology-infrastructure:hasInfrastructureEndPoint ?end . FILTER (?end <= ?start) }
target class: PlatformInfrastructure

Sophisticated Financial Rule
type: NodeShape
comment: Advanced gUFO business rule: Sophisticated financial systems should have low traceability.
sparql:
  message: Sophisticated or highly sophisticated financial systems must have low traceability (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-infrastructure:hasFinancialComplexity ?complexity . FILTER (?complexity IN ("sophisticated", "highly_sophisticated")) FILTER NOT EXISTS { $this cacontology-infrastructure:hasFinancialTraceability ?traceability . FILTER (?traceability <= 0.3) } }
target class: PaymentProcessing

Strong Security Rule
type: NodeShape
comment: Advanced gUFO business rule: Strong security requires advanced obfuscation and high anonymity effectiveness.
sparql:
  message: Strong or military-grade security must have advanced obfuscation and high anonymity effectiveness (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-infrastructure:hasSecurityStrength ?strength . FILTER (?strength IN ("strong", "military_grade")) { FILTER NOT EXISTS { $this cacontology-infrastructure:hasObfuscationComplexity ?complexity . FILTER (?complexity IN ("advanced", "sophisticated", "cutting_edge")) } } UNION { FILTER NOT EXISTS { $this cacontology-infrastructure:hasAnonymityEffectiveness ?effectiveness . FILTER (?effectiveness >= 0.7) } } }
target class: SecurityInfrastructure

Takedown Event Temporal Shape
type: NodeShape
comment: Validates gUFO temporal constraints for takedown events.
sparql:
  message: gUFO Events must have consistent temporal boundaries with end after start.
  select: SELECT $this WHERE { $this cacontology-infrastructure:hasTakedownBeginPoint ?start ; cacontology-infrastructure:hasTakedownEndPoint ?end . FILTER (?end <= ?start) }
target class: InfrastructureTakedown

Takedown Event Type Validation Shape
type: NodeShape
comment: Validates gUFO Event type consistency for takedown events.
property:
  has value: Event
  message: Infrastructure takedown must be typed as gUFO Event.
  min count: 1
  path: type
sparql:
  message: Takedown events must be properly typed as gUFO Event and extend UCO Action.
  select: SELECT $this WHERE { $this rdf:type gufo:Event . FILTER NOT EXISTS { $this rdf:type ?actionClass . ?actionClass rdfs:subClassOf* uco-action:Action . } }
target class: InfrastructureTakedown

Takedown Participation Shape
type: NodeShape
comment: Validates gUFO participation constraints for takedown operations.
sparql:
  message: Takedown operations must involve takedown operators (gUFO participation constraint).
  select: SELECT $this WHERE { $this rdf:type cacontology-infrastructure:InfrastructureTakedown . FILTER NOT EXISTS { ?operator a cacontology-infrastructure:TakedownOperatorRole ; uco-action:performer ?person . } }
target class: InfrastructureTakedown

Technical Role Temporal Shape
type: NodeShape
comment: Validates gUFO temporal constraints for technical roles.
property:
  datatype: dateTimeStamp
  max count: 1
  message: Technical role may have begin point timestamp.
  path: hasRoleBeginPoint
property:
  datatype: dateTimeStamp
  max count: 1
  message: Technical role may have end point timestamp.
  path: hasRoleEndPoint
sparql:
  message: Role end must be after begin when both are specified.
  select: SELECT $this WHERE { $this cacontology-infrastructure:hasRoleBeginPoint ?start ; cacontology-infrastructure:hasRoleEndPoint ?end . FILTER (?end <= ?start) }
target class: Role

Technical Role Type Validation Shape
type: NodeShape
comment: Validates gUFO Role type consistency for technical roles.
sparql:
  message: Technical roles must be properly typed as gUFO Role and extend UCO Identity.
  select: SELECT $this WHERE { $this rdf:type gufo:Role . FILTER NOT EXISTS { $this rdfs:subClassOf* uco-identity:Person . } }
target class: Role

Vulnerability Assessment Rule
type: NodeShape
comment: Advanced gUFO business rule: High vulnerability infrastructure should have enhanced security measures.
sparql:
  message: High or critical vulnerability infrastructure must be protected by strong security systems (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-infrastructure:hasInfrastructureVulnerability ?vulnerability . FILTER (?vulnerability IN ("high", "critical")) FILTER NOT EXISTS { $this cacontology-infrastructure:protectedBy ?security . ?security cacontology-infrastructure:hasSecurityStrength ?strength . FILTER (?strength IN ("strong", "military_grade")) } }
target class: PlatformInfrastructure

Abandoned Child
type: Phase
type: Class
comment: Child who has been abandoned and requires institutional care.
subclass of: VulnerableChildInCare

Adult Victim Testimony Shape
type: NodeShape
comment: Validation shape for adult victim testimony with gUFO integration.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 50
  message: Adult victim testimony must specify years from victimization (5-50).
  min count: 1
  min inclusive: 5
  path: yearsFromVictimizationToTestimony
target class: AdultVictimTestimony

Care Provider Exploitation
type: EventType
type: Class
comment: Exploitation by individuals in care provider roles within institutions.
subclass of: PositionOfTrustAbuse

Charitable Cover Exploitation
type: EventType
type: Class
comment: Use of charitable organization facade to conceal systematic child exploitation.
subclass of: InstitutionalExploitation

Charitable Funding Misuse Shape
type: NodeShape
comment: Validation shape for funding misuse with gUFO integration.
property:
  datatype: decimal
  max count: 1
  max inclusive: 10000000.00
  message: Funding misuse must specify amount ($1,000-$10,000,000).
  min count: 1
  min inclusive: 1000.00
  path: fundingAmount
target class: CharitableFundingMisuse

CharitableOrganizationKindValidationShape
type: NodeShape
message: Every charitable organization Kind must extend gufo:Object and be properly classified
property:
  has value: Kind
  min count: 1
  path: type
property:
  class: Object
  min count: 1
  path: subClassOf
target class: Kind

Charitable Organization Leader
type: Role
type: Class
comment: Leadership role within charitable organization serving children.
subclass of: Object
subclass of: Role

Charitable Organization Shape
type: NodeShape
comment: Validation shape for charitable organization instances with gUFO integration.
property:
  datatype: dateTime
  max count: 1
  message: Organization may have founding date (gUFO temporal boundary)
  path: hasInstitutionFoundingDate
property:
  datatype: string
  in: excellent
  in: good
  in: fair
  in: poor
  in: terrible
  in: unknown
  max count: 1
  message: Institutional reputation level must be from allowed list (gUFO quality aspect)
  path: hasInstitutionalReputationLevel
property:
  datatype: string
  in: high
  in: moderate
  in: low
  in: minimal
  in: none
  in: self_regulated
  max count: 1
  message: Oversight level must be from allowed list (gUFO quality aspect)
  path: hasOversightLevel
property:
  datatype: gYear
  max count: 1
  message: Organization may have founding year specified.
  min count: 0
  path: foundingYear
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 10000
  message: Children served must be between 0 and 10,000.
  min count: 0
  min inclusive: 0
  path: childrenServed
target class: CharitableOrganization

Cross Border Personal Travel Shape
type: NodeShape
comment: Validation shape for cross-border travel instances with gUFO integration.
property:
  datatype: dateTime
  max count: 1
  message: Cross-border travel must have travel date (gUFO temporal boundary)
  min count: 1
  path: hasTravelDate
property:
  class: Location
  max count: 1
  message: Travel must specify origin location.
  min count: 1
  path: travelsFrom
property:
  class: Location
  max count: 1
  message: Travel must specify destination location.
  min count: 1
  path: travelsTo
target class: CrossBorderPersonalTravel

CrossBorderTravelPatternBusinessRule
type: NodeShape
sparql:
  message: Repeated cross-border travel must enable significant institutional exploitation
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/institutional-exploitation#
      prefix: cacontology-institutional
  select: SELECT $this WHERE { $this cacontology-institutional:travelPatternYears ?years ; cacontology-institutional:enablesExploitation ?exploitation . ?exploitation cacontology-institutional:victimCount ?victims . FILTER (?years >= 3 && ?victims < 3) }
target class: RepeatedCrossBorderTravel

Dependency Exploitation
type: EventType
type: Class
comment: Exploitation of children's dependency on institution for basic needs.
subclass of: InstitutionalExploitation

DonorManipulationBusinessRule
type: NodeShape
sparql:
  message: Large-scale funding misuse requires multiple manipulation tactics
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/institutional-exploitation#
      prefix: cacontology-institutional
  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) } }
target class: DonorManipulation

Donor Manipulation Shape
type: NodeShape
comment: Validation shape for donor manipulation with gUFO integration.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 10000
  message: Donor manipulation must specify donor count (1-10,000).
  min count: 1
  min inclusive: 1
  path: donorCount
property:
  datatype: string
  in: emotional_appeal
  in: false_reporting
  in: photo_manipulation
  in: fake_testimonials
  in: progress_exaggeration
  in: need_inflation
  message: Manipulation must specify at least one tactic.
  min count: 1
  path: manipulationTactics
target class: DonorManipulation

ExploitationEventParticipationShape
type: NodeShape
property:
  message: Every exploitation event must have at least perpetrator and victim participants (gUFO participation)
  min count: 2
  path:
    alternative path: perpetratesExploitation
    alternative path: experiencesExploitation
    alternative path: facilitatedBy
target class: InstitutionalExploitation

ExploitationEventTypeValidationShape
type: NodeShape
message: Every exploitation EventType must extend gufo:Event
property:
  has value: EventType
  min count: 1
  path: type
property:
  class: Event
  min count: 1
  path: subClassOf
target class: EventType

ExploitationTemporalShape
type: NodeShape
property:
  datatype: dateTime
  max count: 1
  message: Exploitation may have at most one start date (gUFO temporal boundary)
  path: hasExploitationStartDate
property:
  datatype: dateTime
  max count: 1
  message: Exploitation may have at most one end date (gUFO temporal boundary)
  path: hasExploitationEndDate
sparql:
  message: Exploitation end date must be after start date when both specified (gUFO temporal ordering)
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/institutional-exploitation#
      prefix: cacontology-institutional
  select: SELECT $this WHERE { $this cacontology-institutional:hasExploitationStartDate ?startDate . $this cacontology-institutional:hasExploitationEndDate ?endDate . FILTER (?endDate <= ?startDate) }
target class: InstitutionalExploitation

ExploitsVulnerabilityShape
type: PropertyShape
class: UcoObject
description: Links exploitation to vulnerability exploited (gUFO aspect exploitation)
min count: 0
name: exploits vulnerability
path: exploitsVulnerability

FacilitatedByShape
type: PropertyShape
class: TrustedAdultRole
description: Links exploitation to facilitating role (gUFO participation)
min count: 0
name: facilitated by
path: facilitatedBy

Financial Control Mechanism
type: EventType
type: Class
comment: Use of financial control to maintain exploitation operation.
subclass of: DonorManipulation

Foreign Commerce Offense Shape
type: NodeShape
comment: Validation shape for foreign commerce offenses with gUFO integration.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 100
  message: Foreign commerce offense must specify charge count (1-100).
  min count: 1
  min inclusive: 1
  path: chargeCount
target class: ForeignCommerceOffense

Foster Care Institution
type: SubKind
type: Class
comment: Institution providing foster care services for children.
subclass of: ChildCareInstitution

FoundedByShape
type: PropertyShape
class: InstitutionalFounder
description: Links institution to its founder (gUFO participation)
max count: 1
min count: 1
name: founded by
path: foundedBy

Humanitarian Organization
type: SubKind
type: Class
comment: International humanitarian organization working with vulnerable populations.
subclass of: CharitableOrganization

Humanitarian Travel Cover Shape
type: NodeShape
comment: Validation shape for humanitarian travel cover with gUFO integration.
property:
  datatype: string
  in: humanitarian_aid
  in: charitable_work
  in: missionary_work
  in: volunteer_service
  in: medical_mission
  in: educational_support
  max count: 1
  message: Humanitarian cover must specify claimed purpose from allowed list.
  min count: 1
  path: travelPurposeClaimed
target class: HumanitarianTravelCover

Impoverished Child
type: Phase
type: Class
comment: Child from impoverished background in need of institutional care and support.
subclass of: Object
subclass of: Person

Institutional Authority Exploitation
type: EventType
type: Class
comment: Exploitation using institutional authority and control over vulnerable children.
subclass of: PositionOfTrustAbuse

InstitutionalCompositionShape
type: NodeShape
property:
  message: Institution must have at least one component part (gUFO part-whole)
  min count: 1
  path:
    inverse path: isPartOfInstitution
target class: CharitableOrganization

Institutional Exploitation Data Quality Shape
type: NodeShape
comment: Validates data quality for institutional exploitation with gUFO quality aspects.
property:
  datatype: string
  max count: 1
  max length: 300
  message: Label should be between 10 and 300 characters when provided.
  min count: 0
  min length: 10
  path: label
property:
  datatype: string
  max count: 1
  max length: 2000
  message: Comment should be between 20 and 2000 characters when provided.
  min count: 0
  min length: 20
  path: comment
target class: InstitutionalExploitation

Institutional Exploitation Shape
type: NodeShape
comment: Validation shape for institutional exploitation instances with gUFO integration.
property:
  datatype: dateTime
  max count: 1
  message: Exploitation may have start date (gUFO temporal boundary)
  path: hasExploitationStartDate
property:
  datatype: string
  in: low
  in: moderate
  in: high
  in: severe
  in: extreme
  in: catastrophic
  max count: 1
  message: Exploitation must specify severity level (gUFO quality aspect)
  min count: 1
  path: hasExploitationSeverityLevel
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 1000
  message: Exploitation must specify victim count (1-1000).
  min count: 1
  min inclusive: 1
  path: victimCount
property:
  class: CharitableOrganization
  max count: 1
  message: Exploitation must occur within a charitable organization.
  min count: 1
  path: occursWithin
target class: InstitutionalExploitation

Institutional Founder Shape
type: NodeShape
comment: Validation shape for institutional founder roles with gUFO integration.
property:
  datatype: dateTime
  max count: 1
  message: Founder role must have start date (gUFO temporal boundary)
  min count: 1
  path: hasRoleStartDate
property:
  datatype: string
  in: founder
  in: executive_director
  in: board_chair
  in: senior_leadership
  in: middle_management
  max count: 1
  message: Founder must specify authority level (gUFO quality aspect)
  min count: 1
  path: hasAuthorityLevel
property:
  datatype: string
  in: absolute
  in: high
  in: moderate
  in: low
  in: compromised
  in: none
  max count: 1
  message: Founder must specify trust level (gUFO quality aspect)
  min count: 1
  path: hasTrustLevel
target class: InstitutionalFounder

InstitutionalRoleValidationShape
type: NodeShape
message: Institutional roles are anti-rigid and cannot be subclasses of rigid Kinds
not:
  property:
    class: Kind
    path: subClassOf
property:
  has value: Role
  min count: 1
  path: type
target class: Role

InstitutionalTemporalBoundariesShape
type: NodeShape
property:
  datatype: dateTime
  max count: 1
  message: Institution may have at most one founding date (gUFO temporal boundary)
  path: hasInstitutionFoundingDate
property:
  datatype: dateTime
  max count: 1
  message: Institution may have at most one operation end date (gUFO temporal boundary)
  path: hasOperationEndDate
sparql:
  message: Institution operation end date must be after founding date (gUFO temporal ordering)
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/institutional-exploitation#
      prefix: cacontology-institutional
  select: SELECT $this WHERE { $this cacontology-institutional:hasInstitutionFoundingDate ?foundingDate . $this cacontology-institutional:hasOperationEndDate ?endDate . FILTER (?endDate <= ?foundingDate) }
target class: CharitableOrganization

InvestigationCompositionShape
type: NodeShape
property:
  message: Investigation must include at least one piece of evidence or testimony (gUFO part-whole)
  min count: 1
  path:
    inverse path: isPartOfInvestigation
target class: USProsecutionForeignCrimes

Isolation Based Control Shape
type: NodeShape
comment: Validation shape for isolation-based control with gUFO integration.
property:
  datatype: string
  in: complete
  in: high
  in: moderate
  in: partial
  in: minimal
  max count: 1
  message: Isolation control must specify isolation degree (gUFO quality aspect)
  min count: 1
  path: hasIsolationDegree
property:
  datatype: string
  in: complete
  in: high
  in: moderate
  in: partial
  max count: 1
  message: Isolation must specify degree from allowed list.
  min count: 1
  path: isolationDegree
target class: IsolationBasedControl

LegalSituationTypeValidationShape
type: NodeShape
message: Every legal SituationType must extend gufo:Situation
property:
  has value: SituationType
  min count: 1
  path: type
property:
  class: Situation
  min count: 1
  path: subClassOf
target class: SituationType

LongTermControlBusinessRule
type: NodeShape
sparql:
  message: Long-term institutional control must involve high authority roles and multiple victims
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/institutional-exploitation#
      prefix: cacontology-institutional
  select: SELECT $this WHERE { $this cacontology-institutional:operationDurationYears ?duration ; cacontology-institutional:victimCount ?victims . FILTER (?duration >= 5 && ?victims < 5) }
target class: LongTermInstitutionalControl

Long Term Institutional Control Shape
type: NodeShape
comment: Validation shape for long-term institutional control with gUFO integration.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 50
  message: Long-term control must specify duration (2-50 years).
  min count: 1
  min inclusive: 2
  path: operationDurationYears
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Long-term control must have high systematicity degree (0.5-1.0) (gUFO quality aspect)
  min count: 1
  min inclusive: 0.5
  path: hasSystematicityDegree
target class: LongTermInstitutionalControl

Multi Victim Foreign Offense
type: SituationType
type: Class
comment: Foreign offense involving multiple separate child victims.
subclass of: ForeignPlaceOffense

Multiple Victim Testimony Shape
type: NodeShape
comment: Validation shape for multiple victim testimony with gUFO integration.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 100
  message: Multiple victim testimony must specify count (2-100).
  min count: 1
  min inclusive: 2
  path: victimTestimoniesCount
target class: MultipleVictimTestimony

OccursWithinShape
type: PropertyShape
class: CharitableOrganization
description: Links exploitation to institution where it occurs (gUFO situational context)
max count: 1
min count: 1
name: occurs within
path: occursWithin

Orphanage Director
type: Role
type: Class
comment: Individual with administrative control over orphanage operations.
subclass of: InstitutionalFounder

Orphanage Exploitation
type: EventType
type: Class
comment: Sexual, physical, or emotional exploitation occurring within orphanage settings.
subclass of: InstitutionalExploitation

Orphanage Shape
type: NodeShape
comment: Validation shape for orphanage instances with gUFO integration.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 500
  message: Orphanage must specify number of children served (1-500).
  min count: 1
  min inclusive: 1
  path: childrenServed
property:
  datatype: string
  in: low
  in: moderate
  in: high
  in: extreme
  in: critical
  max count: 1
  message: Orphanage must specify vulnerability level of children (gUFO quality aspect)
  min count: 1
  path: hasVulnerabilityLevel
target class: Orphanage

Orphaned Child Shape
type: NodeShape
comment: Validation shape for orphaned children with gUFO integration.
property:
  has value: orphaned
  message: Orphaned child must have 'orphaned' vulnerability type.
  min count: 1
  path: vulnerabilityType
property:
  datatype: string
  in: high
  in: severe
  in: extreme
  in: critical
  max count: 1
  message: Orphaned child must have high vulnerability level (gUFO quality aspect)
  min count: 1
  path: hasVulnerabilityLevel
target class: OrphanedChild

Position of Trust Abuse Shape
type: NodeShape
comment: Validation shape for position of trust abuse with gUFO integration.
property:
  datatype: string
  in: high
  in: complete
  in: institutional
  in: parental
  in: absolute
  max count: 1
  message: Position of trust abuse must specify trust level exploited.
  min count: 1
  path: trustLevelExploited
property:
  class: TrustedAdultRole
  max count: 1
  message: Trust abuse must exploit a trusted adult role.
  min count: 1
  path: exploitsRole
target class: PositionOfTrustAbuse

Religious Institution
type: SubKind
type: Class
comment: Religious organization providing child care or educational services.
subclass of: CharitableOrganization

Repeated Cross Border Travel Shape
type: NodeShape
comment: Validation shape for repeated travel patterns with gUFO integration.
property:
  datatype: string
  in: monthly
  in: quarterly
  in: semi_annually
  in: annually
  in: bi_annually
  max count: 1
  message: Repeated travel must specify frequency from allowed list.
  min count: 1
  path: travelFrequency
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 30
  message: Repeated travel pattern must span 2-30 years.
  min count: 1
  min inclusive: 2
  path: travelPatternYears
target class: RepeatedCrossBorderTravel

RoleTemporalBoundariesShape
type: NodeShape
property:
  datatype: dateTime
  max count: 1
  message: Role may have at most one start date (gUFO temporal boundary)
  path: hasRoleStartDate
property:
  datatype: dateTime
  max count: 1
  message: Role may have at most one end date (gUFO temporal boundary)
  path: hasRoleEndDate
sparql:
  message: Role end date must be after start date when both specified (gUFO temporal ordering)
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/institutional-exploitation#
      prefix: cacontology-institutional
  select: SELECT $this WHERE { $this cacontology-institutional:hasRoleStartDate ?startDate . $this cacontology-institutional:hasRoleEndDate ?endDate . FILTER (?endDate <= ?startDate) }
target class: TrustedAdultRole

SystematicAbuseCompositionShape
type: NodeShape
property:
  message: Systematic abuse must be composed of at least 3 individual exploitation instances (gUFO part-whole)
  min count: 3
  path:
    inverse path: isComponentOfExploitation
target class: SystematicInstitutionalAbuse

SystematicAbusePatternBusinessRule
type: NodeShape
sparql:
  message: High systematicity requires institutional oversight failure and isolation control
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/institutional-exploitation#
      prefix: cacontology-institutional
  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")) }
target class: SystematicInstitutionalAbuse

Systematic Institutional Abuse Shape
type: NodeShape
comment: Validation shape for systematic abuse patterns with gUFO integration.
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Systematic abuse must have high systematicity degree (0.7-1.0) (gUFO quality aspect)
  min count: 1
  min inclusive: 0.7
  path: hasSystematicityDegree
property:
  datatype: nonNegativeInteger
  max count: 1
  message: Systematic abuse must involve at least 3 victims.
  min count: 1
  min inclusive: 3
  path: victimCount
target class: SystematicInstitutionalAbuse

TravelEventParticipationShape
type: NodeShape
property:
  class: Person
  max count: 1
  message: Travel event must have exactly one traveler participant (gUFO participation)
  min count: 1
  path: undertakesTravelFor
target class: CrossBorderPersonalTravel

TrustAbuseBusinessRule
type: NodeShape
sparql:
  message: High trust level exploitation must involve high authority roles
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/institutional-exploitation#
      prefix: cacontology-institutional
  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")) }
target class: PositionOfTrustAbuse

Trusted Adult Role Shape
type: NodeShape
comment: Validation shape for trusted adult roles with gUFO integration.
property:
  datatype: string
  in: absolute
  in: high
  in: moderate
  in: low
  in: compromised
  max count: 1
  message: Trusted adult must specify trust level (gUFO quality aspect)
  min count: 1
  path: hasTrustLevel
property:
  datatype: string
  in: founder
  in: director
  in: supervisor
  in: caregiver
  in: staff
  in: volunteer
  max count: 1
  message: Trusted adult must specify authority level (gUFO quality aspect)
  min count: 1
  path: hasAuthorityLevel
target class: TrustedAdultRole

US Prosecution Foreign Crimes Shape
type: NodeShape
comment: Validation shape for US prosecution of foreign crimes with gUFO integration.
property:
  datatype: string
  in: federal
  in: state
  in: international
  in: joint_jurisdiction
  max count: 1
  message: Prosecution must specify jurisdiction from allowed list.
  min count: 1
  path: prosecutionJurisdiction
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 50
  message: Sentence length must be between 1 and 50 years when specified.
  min count: 0
  min inclusive: 1
  path: sentenceLength
target class: USProsecutionForeignCrimes

Vulnerable Child in Care Shape
type: NodeShape
comment: Validation shape for vulnerable children with gUFO integration.
property:
  datatype: string
  in: low
  in: moderate
  in: high
  in: severe
  in: extreme
  in: critical
  max count: 1
  message: Vulnerable child must specify vulnerability level (gUFO quality aspect)
  min count: 1
  path: hasVulnerabilityLevel
property:
  datatype: string
  in: orphaned
  in: impoverished
  in: abandoned
  in: disabled
  in: refugee
  in: trafficked
  in: neglected
  in: abused
  message: Vulnerable child must specify at least one vulnerability type.
  min count: 1
  path: vulnerabilityType
target class: VulnerableChildInCare

VulnerableChildPhaseValidationShape
type: NodeShape
message: Vulnerable child phases are anti-rigid temporal stages and cannot be rigid Kinds
not:
  property:
    class: Kind
    path: subClassOf
property:
  has value: Phase
  min count: 1
  path: type
target class: Phase

Youth Home
type: SubKind
type: Class
comment: Residential home for youth in care or at-risk situations.
subclass of: ChildCareInstitution

abuse end year
type: DatatypeProperty
comment: Year when abuse pattern ended.
domain: LongTermAbusePattern
range: gYear

abuse start year
type: DatatypeProperty
comment: Year when abuse pattern began.
domain: LongTermAbusePattern
range: gYear

authority level
type: DatatypeProperty
comment: Level of authority within institution (founder, director, staff, volunteer).
domain: InstitutionalFounder
range: string

conceals from
type: ObjectProperty
comment: Links deception to those being deceived.
domain: SupportNetworkDeception
range: Person

conceals travel
type: ObjectProperty
comment: Links cover story to travel it conceals.
domain: HumanitarianTravelCover
range: ForeignCommerceTravel

documents pattern
type: ObjectProperty
comment: Links evidence to abuse pattern it documents.
domain: InstitutionalAbuseEvidence
range: LongTermAbusePattern

enables exploitation
type: ObjectProperty
comment: Links travel to exploitation it enables.
domain: CrossBorderPersonalTravel
range: InstitutionalExploitation

exercises authority over
type: ObjectProperty
comment: Links authority figure to children under their authority.
domain: InstitutionalFounder
range: VulnerableChildInCare

existentially depends on
type: ObjectProperty
comment: Existential dependency relationship between institutional elements (gUFO dependency).
domain: Object
range: Object

exploitation type count
type: DatatypeProperty
comment: Number of different exploitation types (sexual, physical, emotional).
domain: MultiModalInstitutionalAbuse
range: nonNegativeInteger

foreign residence duration
type: DatatypeProperty
comment: Duration of residence in foreign country in months.
domain: ForeignResidenceExploitation
range: nonNegativeInteger

generically depends on
type: ObjectProperty
comment: Generic dependency of roles on institutional context (gUFO generic dependency).
domain: Role
range: Object

historically depends on
type: ObjectProperty
comment: Historical dependency between exploitation events (gUFO historical dependency).
domain: Event
range: Event

holds role
type: ObjectProperty
comment: Links individual to institutional role held.
domain: Person
range: TrustedAdultRole

impacts victim
type: ObjectProperty
comment: Links exploitation to victim impacted.
domain: InstitutionalExploitation
range: VulnerableChildInCare

investigated by
type: ObjectProperty
comment: Links exploitation to investigating agencies.
domain: InstitutionalExploitation
range: Organization

maintained by
type: ObjectProperty
comment: Links institution to individual who maintained/directed it.
domain: CharitableOrganization
range: Person

manipulates
type: ObjectProperty
comment: Links manipulation to supporters being manipulated.
domain: DonorManipulation
range: Person

occurs in context
type: ObjectProperty
comment: Situational context in which exploitation occurs (gUFO situational context).
domain: InstitutionalExploitation
range: Situation

operates in country
type: ObjectProperty
comment: Links institution to country where it operates.
domain: CharitableOrganization
range: Location

operates in jurisdictional context
type: ObjectProperty
comment: Jurisdictional context spanning multiple countries (gUFO situational context).
domain: CrossBorderPersonalTravel
range: Situation

participates in institution
type: ObjectProperty
comment: Participation relationship between individual and institution (gUFO participation).
domain: Object
range: CharitableOrganization
sub property of: participatedIn

prosecuted in context
type: ObjectProperty
comment: Legal context in which prosecution occurs (gUFO situational context).
domain: USProsecutionForeignCrimes
range: Situation

prosecuted under
type: ObjectProperty
comment: Links exploitation to legal charges filed.
domain: InstitutionalExploitation
range: ForeignCommerceOffense

provides testimony
type: ObjectProperty
comment: Links victim to testimony provided.
domain: VulnerableChildInCare
range: MultipleVictimTestimony

receives support
type: ObjectProperty
comment: Links institution to support received.
domain: CharitableOrganization
range: DonorManipulation

results in sentence
type: ObjectProperty
comment: Links prosecution to sentence imposed.
domain: USProsecutionForeignCrimes
range: ObservableObject

reveals pattern
type: ObjectProperty
comment: Links testimony to abuse pattern it reveals.
domain: MultipleVictimTestimony
range: SystematicInstitutionalAbuse

serves population
type: ObjectProperty
comment: Links institution to vulnerable population it serves.
domain: CharitableOrganization
range: VulnerableChildInCare

targets population
type: ObjectProperty
comment: Links targeting strategy to vulnerable population targeted.
domain: VulnerablePopulationTargeting
range: VulnerableChildInCare

ACCCE Integration Shape
type: NodeShape
comment: Validation shape for ACCCE integration instances.
property:
  datatype: dateTime
  max count: 1
  message: ACCCE integration must specify start time.
  min count: 1
  path: startTime
target class: ACCCEIntegration

Coordination Complexity Validation Shape
type: NodeShape
comment: Validates coordination complexity consistency.
sparql:
  message: Operations with many jurisdictions should have high coordination complexity.
  select: SELECT $this WHERE { $this cacontology-international:jurisdictionCount ?count ; cacontology-international:coordinationComplexity ?complexity . FILTER (?count > 10 && ?complexity IN ("low", "medium")) }
target class: CrossBorderOperation

Country Partnership Shape
type: NodeShape
comment: Validation shape for country partnership instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 50
  message: Country partnership must specify partner count between 2 and 50.
  min count: 1
  min inclusive: 2
  path: partnerCountryCount
target class: CountryPartnership

Cross-Border Effectiveness
type: Class
comment: Effectiveness measurement for cross-border operations.
subclass of: UcoObject

CrossBorderEventTypeValidationShape
type: NodeShape
message: Every cross-border operation EventType must extend gufo:Event
property:
  has value: EventType
  min count: 1
  path: type
property:
  class: Event
  min count: 1
  path: subClassOf
target class: EventType

CrossBorderInvestigationCompositionShape
type: NodeShape
property:
  message: Cross-border investigation must include at least two national investigation components (gUFO part-whole)
  min count: 2
  path:
    inverse path: isProperPartOf
target class: CrossBorderInvestigation

Cross-Border Investigation Shape
type: NodeShape
comment: Validation shape for cross-border investigation instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 50
  message: Jurisdiction count must be between 2 and 50 when specified.
  min count: 0
  min inclusive: 2
  path: jurisdictionCount
target class: CrossBorderInvestigation

Cross-Border Operation Cross Reference Shape
type: NodeShape
comment: Validates that cross-border operations operate in multiple countries.
sparql:
  message: Cross-border operation should operate in multiple countries.
  select: SELECT $this WHERE { $this a cacontology-international:CrossBorderOperation . FILTER NOT EXISTS { $this cacontology-international:operatesInCountry ?country1 . $this cacontology-international:operatesInCountry ?country2 . FILTER (?country1 != ?country2) } }
target class: CrossBorderOperation

CrossBorderOperationParticipationShape
type: NodeShape
property:
  message: Every cross-border operation must have at least two participating entities (gUFO participation)
  min count: 2
  path:
    alternative path: participatedIn
    alternative path: coordinatedBy
    alternative path: operatesInCountry
target class: CrossBorderOperation

Cross-Border Operation Shape
type: NodeShape
comment: Validation shape for cross-border operation instances with gUFO integration.
property:
  datatype: dateTime
  max count: 1
  message: Cross-border operation must specify start time.
  min count: 1
  path: startTime
property:
  datatype: dateTime
  max count: 1
  message: Cross-border operation may specify end time.
  min count: 0
  path: endTime
property:
  datatype: dateTime
  max count: 1
  message: Cross-border operation must have start time (gUFO temporal boundary)
  min count: 1
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: dateTime
  max count: 1
  message: Cross-border operation may have end time (gUFO temporal boundary)
  path: hasEndPointInXSDDateTimeStamp
property:
  datatype: string
  in: basic
  in: enhanced
  in: advanced
  in: expert
  max count: 1
  message: Cross-border capability must be from the allowed list.
  min count: 0
  path: crossBorderCapability
property:
  datatype: string
  in: low
  in: medium
  in: high
  in: complex
  max count: 1
  message: Coordination complexity must be from the allowed list.
  min count: 0
  path: coordinationComplexity
property:
  datatype: string
  in: routine
  in: urgent
  in: critical
  in: emergency
  in: immediate
  max count: 1
  message: Operational urgency level must be from allowed list (gUFO quality aspect)
  path: hasOperationalUrgency
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Success likelihood must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: hasSuccessLikelihood
target class: CrossBorderOperation

CrossBorderOperationTemporalShape
type: NodeShape
property:
  datatype: dateTime
  max count: 1
  message: Cross-border operation may have at most one start time (gUFO temporal boundary)
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: dateTime
  max count: 1
  message: Cross-border operation may have at most one end time (gUFO temporal boundary)
  path: hasEndPointInXSDDateTimeStamp
sparql:
  message: Operation end time must be after start time when both specified (gUFO temporal ordering)
  prefixes:
    declare:
      namespace: http://purl.org/nemo/gufo#
      prefix: gufo
  select: SELECT $this WHERE { $this gufo:hasBeginPointInXSDDateTimeStamp ?startTime . $this gufo:hasEndPointInXSDDateTimeStamp ?endTime . FILTER (?endTime <= ?startTime) }
target class: CrossBorderOperation

Cross-Referral Protocol Shape
type: NodeShape
comment: Validation shape for cross-referral protocol instances.
property:
  datatype: string
  max count: 1
  max length: 100
  message: Cross-referral protocol must have a name (5-100 characters).
  min count: 1
  min length: 5
  path: name
target class: CrossReferralProtocol

Data Exchange Protocol Shape
type: NodeShape
comment: Validation shape for data exchange protocol instances.
property:
  datatype: string
  max count: 1
  max length: 100
  message: Data exchange protocol must have a name (5-100 characters).
  min count: 1
  min length: 5
  path: name
target class: DataExchangeProtocol

Data Quality Shape
type: NodeShape
comment: Validates data quality for international coordination entities with gUFO quality aspects.
property:
  datatype: dateTime
  max count: 1
  message: Creation time should be specified when available.
  min count: 0
  path: createdTime
property:
  datatype: dateTime
  max count: 1
  message: Modification time should be specified when available.
  min count: 0
  path: modifiedTime
property:
  datatype: dateTime
  max count: 1
  message: Entity may have temporal beginning (gUFO temporal boundary)
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: string
  in: poor
  in: fair
  in: good
  in: excellent
  in: validated
  max count: 1
  message: Data quality level must be from allowed list (gUFO quality aspect)
  path: hasDataQuality
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Reliability score must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: hasReliabilityScore
target class: CrossBorderOperation
target class: GlobalHotlineNetwork
target class: InformationSharingAgreement
target class: InternationalPartnership
target class: MutualLegalAssistance

Distance Child Abuse Shape
type: NodeShape
comment: Validation shape for distance child abuse instances.
property:
  datatype: dateTime
  max count: 1
  message: Distance child abuse operation must specify start time.
  min count: 1
  path: startTime
target class: DistanceChildAbuse

European Cooperation Framework
type: Class
comment: Framework for cooperation among European Union member states in child protection operations.
subclass of: InternationalPartnership

Europol Operation Shape
type: NodeShape
comment: Validation shape for Europol operation instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 50
  message: Europol operation must involve 3-50 jurisdictions.
  min count: 1
  min inclusive: 3
  path: jurisdictionCount
property:
  datatype: string
  in: high
  in: complex
  max count: 1
  message: Europol operations must have high or complex coordination complexity.
  min count: 0
  path: coordinationComplexity
target class: EuropolOperation

Extradition Agreement Shape
type: NodeShape
comment: Validation shape for extradition agreement instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Extradition agreement must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
target class: ExtraditionAgreement

Global Case Tracking Shape
type: NodeShape
comment: Validation shape for global case tracking instances.
property:
  datatype: string
  max count: 1
  max length: 100
  message: Case tracking name should be 5-100 characters when specified.
  min count: 0
  min length: 5
  path: name
target class: GlobalCaseTracking

Global Hotline Network Shape
type: NodeShape
comment: Validation shape for global hotline network instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Global hotline network must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
target class: GlobalHotlineNetwork

Global Missing Children Center Shape
type: NodeShape
comment: Validation shape for global missing children center instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Global missing children center must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
target class: GlobalMissingChildrenCenter

GlobalNetworkCompositionShape
type: NodeShape
property:
  message: Global network must be composed of at least 3 national components (gUFO part-whole)
  min count: 3
  path:
    inverse path: isProperPartOf
target class: GlobalHotlineNetwork

Global Platform Takedown Shape
type: NodeShape
comment: Validation shape for global platform takedown instances.
property:
  has value: complex
  message: Global platform takedowns must have complex coordination complexity.
  path: coordinationComplexity
target class: GlobalPlatformTakedown

Information Sharing Agreement Shape
type: NodeShape
comment: Validation shape for information sharing agreement instances with gUFO integration.
property:
  datatype: string
  in: temporary
  in: provisional
  in: stable
  in: long_term
  in: permanent
  max count: 1
  message: Agreement stability level must be from allowed list (gUFO quality aspect)
  path: hasAgreementStability
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Compliance rate must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: hasCompliance
property:
  datatype: dateTime
  max count: 1
  message: Agreement may have effective date (gUFO temporal boundary)
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: dateTime
  max count: 1
  message: Agreement may have expiration date (gUFO temporal boundary)
  path: hasEndPointInXSDDateTimeStamp
property:
  datatype: string
  max count: 1
  max length: 200
  message: Information sharing agreement must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
property:
  datatype: boolean
  max count: 1
  message: Multilateral agreement must be a boolean value.
  min count: 0
  path: multilateralAgreement
property:
  datatype: string
  in: basic
  in: enhanced
  in: full
  in: restricted
  max count: 1
  message: Information sharing level must be from the allowed list.
  min count: 0
  path: informationSharingLevel
target class: InformationSharingAgreement

Information Sharing Cross Reference Shape
type: NodeShape
comment: Validates that information sharing agreements have data sharing partners.
sparql:
  message: Information sharing agreement should have data sharing partners.
  select: SELECT $this WHERE { $this a cacontology-international:InformationSharingAgreement . FILTER NOT EXISTS { $this cacontology-international:sharesDataWith ?partner . ?partner a uco-identity:Organization . } }
target class: InformationSharingAgreement

InformationSharingLevelBusinessRule
type: NodeShape
sparql:
  message: Multilateral agreements with many partners require enhanced information sharing
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/international#
      prefix: cacontology-international
  select: SELECT $this WHERE { $this cacontology-international:multilateralAgreement true ; cacontology-international:informationSharingLevel "basic" . { SELECT $this (COUNT(?partner) as ?partnerCount) WHERE { $this cacontology-international:sharesDataWith ?partner . } GROUP BY $this HAVING (?partnerCount > 5) } }
target class: InformationSharingAgreement

Information Sharing Level Validation Shape
type: NodeShape
comment: Validates information sharing level consistency.
sparql:
  message: Multilateral agreements should have enhanced or full information sharing.
  select: SELECT $this WHERE { $this cacontology-international:multilateralAgreement true ; cacontology-international:informationSharingLevel "basic" . }
target class: InformationSharingAgreement

InformationSharingParticipationShape
type: NodeShape
property:
  class: Organization
  message: Information sharing must involve at least two organizations (gUFO participation)
  min count: 2
  path: sharesDataWith
target class: InformationSharingAgreement

Instructed Abuse Operation Shape
type: NodeShape
comment: Validation shape for instructed abuse operation instances.
property:
  has value: high
  message: Instructed abuse operations must have high coordination complexity.
  path: coordinationComplexity
target class: InstructedAbuseOperation

International Alert Shape
type: NodeShape
comment: Validation shape for international alert instances.
property:
  datatype: dateTime
  max count: 1
  message: International alert must specify start time.
  min count: 1
  path: startTime
target class: InternationalAlert

InternationalAlertTemporalShape
type: NodeShape
property:
  datatype: dateTime
  max count: 1
  message: International alert must have exactly one start time (gUFO temporal boundary)
  min count: 1
  path: hasBeginPointInXSDDateTimeStamp
target class: InternationalAlert

International Analyst
type: Class
comment: Analyst specializing in cross-border case analysis.
subclass of: Role

International Coordinator
type: Class
comment: Role responsible for international coordination activities.
subclass of: Role

International Database Shape
type: NodeShape
comment: Validation shape for international database instances.
property:
  datatype: string
  max count: 1
  max length: 100
  message: International database must have a name (5-100 characters).
  min count: 1
  min length: 5
  path: name
target class: InternationalDatabase

International Hotline Coordination Shape
type: NodeShape
comment: Validation shape for international hotline coordination instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Hotline coordination name should be 5-200 characters when specified.
  min count: 0
  min length: 5
  path: name
target class: InternationalHotlineCoordination

International Impact
type: Class
comment: Assessment of international program effectiveness.
subclass of: UcoObject

International Intelligence Sharing Shape
type: NodeShape
comment: Validation shape for international intelligence sharing instances.
property:
  datatype: string
  in: enhanced
  in: full
  max count: 1
  message: International intelligence sharing must have enhanced or full sharing level.
  min count: 1
  path: informationSharingLevel
target class: InternationalIntelligenceSharing

InternationalPartnershipKindValidationShape
type: NodeShape
message: Every international partnership Kind must extend gufo:Object and be properly classified
property:
  has value: Kind
  min count: 1
  path: type
property:
  class: Object
  min count: 1
  path: subClassOf
target class: Kind

InternationalPartnershipParticipationShape
type: NodeShape
property:
  message: Partnership must have at least two participating organizations (gUFO participation)
  min count: 2
  path:
    alternative path: partnerOrganization
    alternative path: coordinatesWith
target class: InternationalPartnership

International Partnership Shape
type: NodeShape
comment: Validation shape for international partnership instances with gUFO integration.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Partnership name should be 5-200 characters when specified.
  min count: 0
  min length: 5
  path: name
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 200
  message: Partner country count must be between 2 and 200 when specified.
  min count: 0
  min inclusive: 2
  path: partnerCountryCount
property:
  datatype: string
  in: formal_request
  in: intelligence_sharing
  in: joint_investigation
  in: bilateral_agreement
  in: multilateral_treaty
  max count: 1
  message: Coordination method must be from the allowed list.
  min count: 0
  path: coordinationMethod
property:
  datatype: string
  in: low
  in: moderate
  in: high
  in: excellent
  in: outstanding
  max count: 1
  message: Partnership effectiveness level must be from allowed list (gUFO quality aspect)
  path: hasCoordinationEffectiveness
property:
  datatype: string
  in: developing
  in: established
  in: strong
  in: exceptional
  in: complete
  max count: 1
  message: Partnership trust level must be from allowed list (gUFO quality aspect)
  path: hasTrustLevel
property:
  datatype: dateTime
  max count: 1
  message: Partnership may have establishment date (gUFO temporal boundary)
  path: hasBeginPointInXSDDateTimeStamp
target class: InternationalPartnership

InternationalPartnershipTemporalShape
type: NodeShape
property:
  datatype: dateTime
  max count: 1
  message: Partnership may have establishment date (gUFO temporal boundary)
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: dateTime
  max count: 1
  message: Partnership may have termination date (gUFO temporal boundary)
  path: hasEndPointInXSDDateTimeStamp
target class: InternationalPartnership

International Referral Cross Reference Shape
type: NodeShape
comment: Validates that international referrals have alerting and receiving partners.
sparql:
  message: International referral should have alerting partner and referral target.
  select: SELECT $this WHERE { $this a cacontology-international:InternationalReferral . FILTER NOT EXISTS { $this cacontology-international:alertingPartner ?alerter ; cacontology-international:referredTo ?target . FILTER (?alerter != ?target) } }
target class: InternationalReferral

International Referral Shape
type: NodeShape
comment: Validation shape for international referral instances.
property:
  datatype: dateTime
  max count: 1
  message: International referral must specify start time.
  min count: 1
  path: startTime
property:
  datatype: decimal
  max count: 1
  max inclusive: 8760.0
  message: International response time must be between 1 and 8760 hours (1 year).
  min count: 0
  min inclusive: 1.0
  path: responseTimeInternational
property:
  datatype: boolean
  max count: 1
  message: Undercover coordination must be a boolean value.
  min count: 0
  path: undercoverCoordination
target class: InternationalReferral

InternationalRoleValidationShape
type: NodeShape
message: International coordination roles are anti-rigid and cannot be subclasses of rigid Kinds
not:
  property:
    class: Kind
    path: subClassOf
property:
  has value: Role
  min count: 1
  path: type
target class: Role

InternationalSituationTypeValidationShape
type: NodeShape
message: Every international SituationType must extend gufo:Situation
property:
  has value: SituationType
  min count: 1
  path: type
property:
  class: Situation
  min count: 1
  path: subClassOf
target class: SituationType

InternationalTaskForceCompositionShape
type: NodeShape
property:
  message: Task force must have component organizations or units (gUFO part-whole)
  min count: 1
  path:
    inverse path: isProperPartOf
target class: InternationalTaskForce

International Task Force Shape
type: NodeShape
comment: Validation shape for international task force instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: International task force must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
target class: InternationalTaskForce

International Warrant Shape
type: NodeShape
comment: Validation shape for international warrant instances.
property:
  datatype: string
  max count: 1
  max length: 100
  message: International warrant must have a name (5-100 characters).
  min count: 1
  min length: 5
  path: name
target class: InternationalWarrant

Jurisdictional Coordination Shape
type: NodeShape
comment: Validation shape for jurisdictional coordination instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Jurisdictional coordination name should be 5-200 characters when specified.
  min count: 0
  min length: 5
  path: name
target class: JurisdictionalCoordination

Liaison Officer
type: Class
comment: Officer serving as liaison between international partners.
subclass of: Role

LiveStreamingInvestigationCapabilityBusinessRule
type: NodeShape
sparql:
  message: Live streaming investigations require expert capabilities and complex coordination
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/international#
      prefix: cacontology-international
  select: SELECT $this WHERE { $this cacontology-international:crossBorderCapability ?capability ; cacontology-international:coordinationComplexity ?complexity . FILTER (?capability != "expert" || ?complexity != "complex") }
target class: LiveStreamingInvestigation

Live Streaming Investigation Shape
type: NodeShape
comment: Validation shape for live streaming investigation instances with gUFO integration.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 10
  message: Live streaming investigation must involve 2-10 jurisdictions.
  min count: 1
  min inclusive: 2
  path: jurisdictionCount
property:
  has value: expert
  message: Live streaming investigations require expert cross-border capability (gUFO quality constraint)
  path: crossBorderCapability
property:
  has value: complex
  message: Live streaming investigations require complex coordination (gUFO quality constraint)
  path: coordinationComplexity
property:
  datatype: string
  in: urgent
  in: critical
  in: emergency
  in: immediate
  max count: 1
  message: Live streaming investigations must have urgent operational priority (gUFO quality aspect)
  min count: 1
  path: hasOperationalUrgency
property:
  datatype: dateTime
  max count: 1
  message: Investigation must have start time (gUFO temporal boundary)
  min count: 1
  path: hasBeginPointInXSDDateTimeStamp
target class: LiveStreamingInvestigation

Multi-Country Takedown Shape
type: NodeShape
comment: Validation shape for multi-country takedown instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 50
  message: Multi-country takedown must involve 2-50 jurisdictions.
  min count: 1
  min inclusive: 2
  path: jurisdictionCount
target class: MultiCountryTakedown

MultiJurisdictionCoordinationBusinessRule
type: NodeShape
sparql:
  message: High complexity operations must involve multiple jurisdictions and advanced capabilities
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/international#
      prefix: cacontology-international
  select: SELECT $this WHERE { $this cacontology-international:coordinationComplexity ?complexity ; cacontology-international:crossBorderCapability ?capability . FILTER (?complexity IN ("high", "complex") && ?capability NOT IN ("advanced", "expert")) }
target class: CrossBorderOperation

Multilingual Support Shape
type: NodeShape
comment: Validation shape for multilingual support instances.
property:
  datatype: string
  max count: 50
  max length: 50
  message: Language support must specify 1-50 languages (2-50 characters each).
  min count: 1
  min length: 2
  path: languageSupport
target class: MultilingualSupport

Mutual Legal Assistance Shape
type: NodeShape
comment: Validation shape for mutual legal assistance instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Mutual legal assistance must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
property:
  datatype: string
  max count: 1
  max length: 200
  message: Treaty basis should be 5-200 characters when specified.
  min count: 0
  min length: 5
  path: treatyBasis
target class: MutualLegalAssistance

NCMEC Reporting Shape
type: NodeShape
comment: Validation shape for NCMEC reporting instances.
property:
  datatype: dateTime
  max count: 1
  message: NCMEC reporting must specify start time.
  min count: 1
  path: startTime
target class: NCMECReporting

Overseas Victim Coordination Shape
type: NodeShape
comment: Validation shape for overseas victim coordination instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 72.0
  message: Overseas victim coordination response time should be within 72 hours.
  min count: 0
  min inclusive: 1.0
  path: responseTimeInternational
target class: OverseasVictimCoordination

Partnership Coordination Cross Reference Shape
type: NodeShape
comment: Validates that international partnerships have coordinating organizations.
sparql:
  message: International partnership should have coordinating organizations.
  select: SELECT $this WHERE { $this a cacontology-international:InternationalPartnership . FILTER NOT EXISTS { $this cacontology-international:coordinatesWith ?org . ?org a uco-identity:Organization . } }
target class: InternationalPartnership

PartnershipEffectivenessBusinessRule
type: NodeShape
sparql:
  message: High effectiveness partnerships require established or strong trust levels
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/international#
      prefix: cacontology-international
  select: SELECT $this WHERE { $this cacontology-international:hasCoordinationEffectiveness ?effectiveness ; cacontology-international:hasTrustLevel ?trust . FILTER (?effectiveness IN ("high", "excellent", "outstanding") && ?trust IN ("developing")) }
target class: InternationalPartnership

Partnership Size Validation Shape
type: NodeShape
comment: Validates partnership size consistency.
sparql:
  message: Large partnerships should have appropriate coordination methods.
  select: SELECT $this WHERE { $this cacontology-international:partnerCountryCount ?count ; cacontology-international:coordinationMethod "formal_request" . FILTER (?count > 20) }
target class: InternationalPartnership

Regional Coordination Shape
type: NodeShape
comment: Validation shape for regional coordination instances.
property:
  datatype: string
  in: europe
  in: asia_pacific
  in: americas
  in: africa
  in: middle_east
  in: global
  max count: 1
  message: Global coverage must be from the allowed list.
  min count: 0
  path: globalCoverage
target class: RegionalCoordination

Response Time Validation Shape
type: NodeShape
comment: Validates reasonable response times for international referrals.
sparql:
  message: Urgent international referrals should have rapid response times.
  select: SELECT $this WHERE { $this a cacontology-international:OverseasVictimCoordination ; cacontology-international:responseTimeInternational ?responseTime . FILTER (?responseTime > 72.0) }
target class: InternationalReferral

Secure Communication Channel Shape
type: NodeShape
comment: Validation shape for secure communication channel instances.
property:
  datatype: string
  max count: 1
  max length: 100
  message: Secure channel must have a name (5-100 characters).
  min count: 1
  min length: 5
  path: name
target class: SecureChannel

Specialized Operation Validation Shape
type: NodeShape
comment: Validates specialized international operations.
sparql:
  message: Specialized operations should have appropriate support mechanisms.
  select: SELECT $this WHERE { $this a ?operationType . FILTER (?operationType IN ( cacontology-international:LiveStreamingInvestigation, cacontology-international:InstructedAbuseOperation, cacontology-international:GlobalPlatformTakedown )) FILTER NOT EXISTS { $this cacontology-international:supportedBy ?taskforce . ?taskforce a cacontology-international:InternationalTaskForce . } }
target class: GlobalPlatformTakedown
target class: InstructedAbuseOperation
target class: LiveStreamingInvestigation

Temporal Validation Shape
type: NodeShape
comment: Validates temporal consistency for international operations.
sparql:
  message: Start time must be before end time when both are specified.
  select: SELECT $this WHERE { $this uco-core:startTime ?start ; uco-core:endTime ?end . FILTER (?start >= ?end) }
target class: ACCCEIntegration
target class: CrossBorderOperation
target class: InternationalAlert
target class: InternationalReferral
target class: NCMECReporting

US-Australia Coordination Shape
type: NodeShape
comment: Validation shape for US-Australia coordination instances.
property:
  datatype: string
  in: undercover_investigation
  in: direct_referral
  in: joint_operation
  in: intelligence_sharing
  max count: 1
  message: Operation context must be from the allowed list.
  min count: 0
  path: operationContext
target class: USAustraliaCoordination

UrgentOperationResponseBusinessRule
type: NodeShape
sparql:
  message: Emergency operations must have rapid response times
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/international#
      prefix: cacontology-international
  select: SELECT $this WHERE { $this cacontology-international:hasOperationalUrgency ?urgency ; cacontology-international:responseTimeInternational ?responseTime . FILTER (?urgency IN ("emergency", "immediate") && ?responseTime > 24.0) }
target class: InternationalReferral

alert response time
type: DatatypeProperty
comment: Average response time to international alerts in minutes.
domain: InstantAlertSystem
range: decimal

alerting partner
type: ObjectProperty
comment: International partner who initiated the alert or referral.
domain: InternationalReferral
range: Organization

analyses users
type: ObjectProperty
comment: Links mass user analysis to user databases.
domain: MassUserAnalysis
range: ObservableObject

automated match accuracy
type: DatatypeProperty
comment: Accuracy of automated cross-matching system (0.0-1.0).
domain: AutomatedCrossMatching
range: decimal

channels monitored
type: DatatypeProperty
comment: Number of communication channels monitored for real-time intelligence.
domain: LiveIntelligenceFeed
range: nonNegativeInteger

communication latency
type: DatatypeProperty
comment: Average latency for real-time communications between international partners in milliseconds.
domain: RealTimeIntelligenceSharing
range: decimal

contributes to fusion
type: ObjectProperty
comment: Links intelligence sources to fusion processes they contribute to.
domain: Organization
range: IntelligenceFusion

cooperation response time
type: DatatypeProperty
comment: Response time for international cooperation requests in days.
domain: InternationalEvidenceSharing
range: decimal

coordinated by Europol
type: ObjectProperty
comment: Links operation to Europol coordination framework.
domain: EuropolOperation
range: EuropolCoordination

coordinates global takedown
type: ObjectProperty
comment: Links real-time sharing to global takedown coordination.
domain: RealTimeIntelligenceSharing
range: GlobalTakedownCoordination

coordinates hotlines
type: ObjectProperty
comment: Hotlines coordinated under international framework.
domain: InternationalHotlineCoordination
range: Organization

coordinates international effort
type: ObjectProperty
comment: Links investigation to international coordination efforts.
domain: CrossJurisdictionalInvestigation
range: MutualLegalAssistanceTreatyOperation

coordinates prosecution
type: ObjectProperty
comment: Links international prosecution to operations.
domain: InternationalProsecution
range: EuropolOperation

coordinates resources
type: ObjectProperty
comment: Links operation to resource coordination framework.
domain: EuropolOperation
range: InternationalResourceCoordination

coordinating agency
type: ObjectProperty
comment: Primary agency coordinating the international operation.
domain: USAustraliaCoordination
range: Organization

coordination complexity level
type: DatatypeProperty
comment: Complexity level of international coordination (basic, moderate, complex, highly_complex).
domain: EuropolCoordination
range: string

cross-references found
type: DatatypeProperty
comment: Number of cross-references identified across international databases.
domain: CrossReferenceAnalysis
range: nonNegativeInteger

data lake size
type: DatatypeProperty
comment: Size of intelligence data lake in petabytes.
domain: IntelligenceDataLake
range: decimal

databases integrated
type: DatatypeProperty
comment: Number of international databases integrated in network.
domain: GlobalDatabaseNetwork
range: nonNegativeInteger

deploys team
type: ObjectProperty
comment: Links operation to global investigative team deployed.
domain: EuropolOperation
range: GlobalInvestigativeTeam

disruption effectiveness
type: DatatypeProperty
comment: Effectiveness of network disruption efforts (low, moderate, high, complete).
domain: InternationalNetworkDisruption
range: string

disrupts international network
type: ObjectProperty
comment: Links disruption effort to international networks being disrupted.
domain: InternationalNetworkDisruption
range: Organization

emergency response time
type: DatatypeProperty
comment: Emergency response time for critical threats in minutes.
domain: EmergencyCoordinationProtocol
range: decimal

enables automated matching
type: ObjectProperty
comment: Links database network to automated cross-matching capabilities.
domain: GlobalDatabaseNetwork
range: AutomatedCrossMatching

enables real-time sharing
type: ObjectProperty
comment: Links international cooperation to real-time intelligence sharing capabilities.
domain: InternationalPartnership
range: RealTimeIntelligenceSharing

encryption level
type: DatatypeProperty
comment: Level of encryption used for secure communications (basic, enhanced, military_grade).
domain: SecureCommunicationChannel
range: string

European member states involved
type: DatatypeProperty
comment: Number of EU member states participating in Europol operation.
domain: EuropolOperation
range: nonNegativeInteger

evidence sharing volume
type: DatatypeProperty
comment: Volume of evidence shared internationally in gigabytes.
domain: InternationalEvidenceSharing
range: decimal

evidence volume international
type: DatatypeProperty
comment: Total volume of evidence collected across all participating countries in terabytes.
domain: InternationalEvidence
range: decimal

executes query
type: ObjectProperty
comment: Links intelligence analysis to federated database queries executed.
domain: Action
range: FederatedDatabaseQuery

feeds data lake
type: ObjectProperty
comment: Links intelligence sources to data lake they feed.
domain: Organization
range: IntelligenceDataLake

forensic teams deployed
type: DatatypeProperty
comment: Number of forensic teams deployed across participating countries.
domain: CrossBorderForensics
range: nonNegativeInteger

fusion accuracy
type: DatatypeProperty
comment: Accuracy of intelligence fusion process (0.0-1.0).
domain: IntelligenceFusion
range: decimal

generates threat assessment
type: ObjectProperty
comment: Links fusion process to threat assessments generated.
domain: IntelligenceFusion
range: ThreatAssessmentSharing

integrates to network
type: ObjectProperty
comment: Links national databases to global database network.
domain: InternationalDatabase
range: GlobalDatabaseNetwork

intelligence channels
type: DatatypeProperty
comment: Number of intelligence sharing channels activated for operation.
domain: InternationalIntelligenceSharing
range: nonNegativeInteger

intelligence sources
type: DatatypeProperty
comment: Number of intelligence sources contributing to fusion process.
domain: IntelligenceFusion
range: nonNegativeInteger

international partners involved
type: DatatypeProperty
comment: Number of non-EU countries participating in operation.
domain: MultiCountryTakedown
range: nonNegativeInteger

investigative team size
type: DatatypeProperty
comment: Total size of global investigative team across all countries.
domain: GlobalInvestigativeTeam
range: nonNegativeInteger

involves countries
type: ObjectProperty
comment: Links multi-country operation to participating countries.
domain: MultiCountryTakedown
range: Location

managed by
type: ObjectProperty
comment: Organization managing the global hotline network.
domain: GlobalHotlineNetwork
range: Organization

operation duration months
type: DatatypeProperty
comment: Duration of international operation in months.
domain: EuropolOperation
range: decimal

participates in
type: ObjectProperty
comment: Indicates participation in international partnerships.
domain: Organization
range: InternationalPartnership

performs cross-reference
type: ObjectProperty
comment: Links database integration to cross-reference analysis performed.
domain: GlobalDatabaseNetwork
range: CrossReferenceAnalysis

processes distributed
type: ObjectProperty
comment: Links intelligence processing to distributed processing systems.
domain: IntelligenceDataLake
range: DistributedIntelligenceProcessing

processes evidence
type: ObjectProperty
comment: Links cross-border forensics to international evidence.
domain: CrossBorderForensics
range: InternationalEvidence

processing node count
type: DatatypeProperty
comment: Number of processing nodes in distributed intelligence system.
domain: DistributedIntelligenceProcessing
range: nonNegativeInteger

prosecutions cross country
type: DatatypeProperty
comment: Number of prosecutions initiated across multiple countries.
domain: InternationalProsecution
range: nonNegativeInteger

provides expertise
type: ObjectProperty
comment: Links team to specialized expertise provided.
domain: GlobalInvestigativeTeam
range: Organization

query performance ms
type: DatatypeProperty
comment: Average query performance across federated databases in milliseconds.
domain: FederatedDatabaseQuery
range: decimal

receives intelligence feed
type: ObjectProperty
comment: Links country to intelligence feeds received.
domain: Organization
range: LiveIntelligenceFeed

referred to
type: ObjectProperty
comment: Organization or country to which the case is referred.
domain: InternationalReferral
range: Organization

requires assistance
type: ObjectProperty
comment: Cross-border investigation requiring legal assistance.
domain: CrossBorderInvestigation
range: MutualLegalAssistance

resources coordinated
type: DatatypeProperty
comment: Types of resources coordinated internationally (personnel, technology, intelligence).
domain: InternationalResourceCoordination
range: string

results in seizure
type: ObjectProperty
comment: Links international cooperation to device seizures performed.
domain: MutualLegalAssistanceTreatyOperation
range: CrossBorderDeviceSeizure

shares evidence internationally
type: ObjectProperty
comment: Links evidence sharing to evidence shared across borders.
domain: InternationalEvidenceSharing
range: ObservableObject

shares intelligence
type: ObjectProperty
comment: Links operation to intelligence sharing framework.
domain: EuropolOperation
range: InternationalIntelligenceSharing

simultaneous countries
type: DatatypeProperty
comment: Number of countries participating simultaneously in real-time coordination.
domain: GlobalTakedownCoordination
range: nonNegativeInteger

simultaneous operations
type: DatatypeProperty
comment: Number of operations synchronized simultaneously across countries.
comment: Number of simultaneous operations coordinated across countries.
domain: MultiCountryTakedown
domain: OperationalSyncronization
range: nonNegativeInteger

specialized expertise areas
type: DatatypeProperty
comment: Areas of specialized expertise coordinated for operation (forensics, intelligence, legal).
domain: GlobalInvestigativeTeam
range: string

supported by
type: ObjectProperty
comment: International task force supporting the operation.
domain: CrossBorderOperation
range: InternationalTaskForce

synchronization accuracy
type: DatatypeProperty
comment: Accuracy of operational synchronization across countries (0.0-1.0).
domain: OperationalSyncronization
range: decimal

synchronizes operations
type: ObjectProperty
comment: Links takedown coordination to operational synchronization.
domain: GlobalTakedownCoordination
range: OperationalSyncronization

targets platform
type: ObjectProperty
comment: Links global takedown to platform being targeted.
domain: GlobalPlatformTakedown
range: ObservableObject

threat level assessed
type: DatatypeProperty
comment: Threat level assessment result (low, moderate, high, critical, extreme).
domain: ThreatAssessmentSharing
range: string

transmits alert
type: ObjectProperty
comment: Links alert system to alerts transmitted.
domain: InstantAlertSystem
range: CrossBorderThreatAlert

treaty mechanism
type: DatatypeProperty
comment: Specific treaty mechanism used for international cooperation (MLAT, extradition, informal_cooperation).
domain: MutualLegalAssistanceTreatyOperation
range: string

triggers alert
type: ObjectProperty
comment: Investigation that triggers an international alert.
domain: Investigation
range: InternationalAlert

triggers emergency protocol
type: ObjectProperty
comment: Links threat alerts to emergency protocols triggered.
domain: CrossBorderThreatAlert
range: EmergencyCoordinationProtocol

user countries affected
type: DatatypeProperty
comment: Number of countries with affected users in global platform takedown.
domain: GlobalPlatformTakedown
range: nonNegativeInteger

users analyzed millions
type: DatatypeProperty
comment: Number of users analyzed in millions for mass user database operations.
domain: MassUserAnalysis
range: decimal

utilizes secure channel
type: ObjectProperty
comment: Links real-time sharing to secure communication channels used.
domain: RealTimeIntelligenceSharing
range: SecureCommunicationChannel

Agreement Validity Shape
type: NodeShape
comment: Validates coordination agreement validity.
sparql:
  message: Coordination agreement effective date must be before expiration date when both are specified.
  select: SELECT $this WHERE { $this cacontology-coord:effectiveDate ?effective ; cacontology-coord:expirationDate ?expiration . FILTER (?effective >= ?expiration) }
target class: CoordinationAgreement

AssignsLiaisonShape
type: PropertyShape
class: LiaisonOfficer
description: Links coordination to liaison officers
min count: 0
name: assigns liaison
path: assignsLiaison

Case Information Sharing
type: EventType
type: Class
comment: Sharing of case-specific information including case files, reports, witness statements, and investigative findings.
subclass of: InformationSharing

Case Resolution Time Metrics
type: SubKind
type: Class
comment: Metrics measuring impact of coordination on case resolution times and outcomes.
subclass of: CoordinationMetrics

Communication Protocol Shape
type: NodeShape
comment: Validation shape for communication protocol instances.
property:
  datatype: string
  in: formal_channels
  in: informal_channels
  in: emergency_channels
  in: secure_channels
  in: encrypted_channels
  in: liaison_channels
  max count: 1
  message: Communication protocol must specify protocol type from the allowed list.
  min count: 1
  path: protocolType
property:
  datatype: string
  in: real_time
  in: daily
  in: weekly
  in: bi_weekly
  in: monthly
  in: as_needed
  in: emergency_only
  max count: 1
  message: Communication protocol must specify communication frequency from the allowed list.
  min count: 1
  path: communicationFrequency
property:
  datatype: boolean
  max count: 1
  message: Communication protocol must specify if escalation procedure exists.
  min count: 1
  path: escalationProcedure
property:
  datatype: decimal
  max count: 1
  max inclusive: 168.0
  message: Response time requirement must be between 1 and 168 hours (1 week).
  min count: 0
  min inclusive: 1.0
  path: responseTimeRequirement
target class: CommunicationProtocol

Coordination Agreement Shape
type: NodeShape
comment: Validation shape for coordination agreement instances.
property:
  datatype: string
  in: mou
  in: moa
  in: formal_agreement
  in: informal_agreement
  in: task_force_charter
  in: joint_operations_plan
  max count: 1
  message: Coordination agreement must specify agreement type from the allowed list.
  min count: 1
  path: agreementType
property:
  datatype: string
  in: specific_case
  in: case_category
  in: ongoing_cooperation
  in: resource_sharing
  in: information_sharing
  in: comprehensive
  max count: 1
  message: Coordination agreement must specify agreement scope from the allowed list.
  min count: 1
  path: agreementScope
property:
  datatype: dateTime
  max count: 1
  message: Coordination agreement must specify effective date.
  min count: 1
  path: effectiveDate
property:
  datatype: dateTime
  max count: 1
  message: Coordination agreement may specify expiration date.
  min count: 0
  path: expirationDate
property:
  datatype: boolean
  max count: 1
  message: Coordination agreement must specify if renewal clause exists.
  min count: 1
  path: renewalClause
property:
  datatype: boolean
  max count: 1
  message: Coordination agreement must specify if termination clause exists.
  min count: 1
  path: terminationClause
target class: CoordinationAgreement

CoordinationAgreementTemporalShape
type: NodeShape
property:
  datatype: dateTime
  max count: 1
  message: Agreement must have effective date (gUFO temporal boundary)
  min count: 1
  path: effectiveDate
property:
  datatype: dateTime
  max count: 1
  message: Agreement may have expiration date (gUFO temporal boundary)
  path: expirationDate
property:
  datatype: dateTime
  max count: 1
  message: Agreement may have gUFO temporal start boundary
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: dateTime
  max count: 1
  message: Agreement may have gUFO temporal end boundary
  path: hasEndPointInXSDDateTimeStamp
target class: CoordinationAgreement

Coordination Cross Reference Shape
type: NodeShape
comment: Validates cross-references between coordination and related entities.
sparql:
  message: Investigation coordination must involve at least two agencies and use communication protocols.
  select: SELECT $this WHERE { $this a cacontology-coord:InvestigationCoordination . FILTER NOT EXISTS { $this cacontology-coord:involvesAgency ?agency1, ?agency2 ; cacontology-coord:usesProtocol ?protocol . FILTER (?agency1 != ?agency2) } }
target class: InvestigationCoordination

Coordination Effectiveness Metrics
type: SubKind
type: Class
comment: Metrics measuring overall effectiveness of coordination efforts and outcomes.
subclass of: CoordinationMetrics

CoordinationEffectivenessSuccessBusinessRule
type: NodeShape
sparql:
  message: High-effectiveness coordination should demonstrate high success rates
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/investigation-coordination#
      prefix: cacontology-coord
  select: SELECT $this WHERE { $this cacontology-coord:hasCoordinationEffectiveness ?effectiveness ; cacontology-coord:hasSuccessRate ?successRate . FILTER (?effectiveness IN ("excellent", "outstanding") && ?successRate < 0.7) }
target class: InvestigationCoordination

CoordinationEventTypeValidationShape
type: NodeShape
message: Every coordination EventType must extend gufo:Event
property:
  has value: EventType
  min count: 1
  path: type
property:
  class: Event
  min count: 1
  path: subClassOf
target class: EventType

Coordination Metrics Shape
type: NodeShape
comment: Validation shape for coordination metrics instances with gUFO integration.
property:
  datatype: string
  in: response_time
  in: information_sharing_rate
  in: resource_utilization
  in: case_resolution_time
  in: coordination_effectiveness
  in: cost_efficiency
  max count: 1
  message: Coordination metrics must specify metric type from the allowed list.
  min count: 1
  path: metricType
property:
  datatype: decimal
  max count: 1
  max inclusive: 100.0
  message: Metric value must be between 0.0 and 100.0.
  min count: 1
  min inclusive: 0.0
  path: metricValue
property:
  datatype: string
  in: daily
  in: weekly
  in: monthly
  in: quarterly
  in: annually
  in: case_based
  max count: 1
  message: Coordination metrics must specify measurement period from the allowed list.
  min count: 1
  path: measurementPeriod
property:
  datatype: string
  in: above_benchmark
  in: meets_benchmark
  in: below_benchmark
  in: no_benchmark
  in: exceeds_target
  max count: 1
  message: Benchmark comparison must be from the allowed list.
  min count: 0
  path: benchmarkComparison
property:
  datatype: dateTime
  max count: 1
  message: Metrics measurement may have start time (gUFO temporal boundary)
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Metrics reliability must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: hasReliability
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Metrics accuracy must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: hasAccuracy
target class: CoordinationMetrics

CoordinationSituationTypeValidationShape
type: NodeShape
message: Every coordination SituationType must extend gufo:Situation
property:
  has value: SituationType
  min count: 1
  path: type
property:
  class: Situation
  min count: 1
  path: subClassOf
target class: SituationType

Cost Efficiency Metrics
type: SubKind
type: Class
comment: Metrics measuring cost efficiency and financial benefits of coordination activities.
subclass of: CoordinationMetrics

Data Quality Shape
type: NodeShape
comment: Validates data quality for investigation coordination entities with gUFO quality aspects.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Label should be between 5 and 200 characters when provided.
  min count: 0
  min length: 5
  path: label
property:
  datatype: string
  max count: 1
  max length: 1000
  message: Comment should be between 10 and 1000 characters when provided.
  min count: 0
  min length: 10
  path: comment
property:
  datatype: dateTime
  max count: 1
  message: Creation time should be specified when available.
  min count: 0
  path: createdTime
property:
  datatype: dateTime
  max count: 1
  message: Modification time should be specified when available.
  min count: 0
  path: modifiedTime
property:
  datatype: dateTime
  max count: 1
  message: Entity may have temporal beginning (gUFO temporal boundary)
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: dateTime
  max count: 1
  message: Entity may have temporal ending (gUFO temporal boundary)
  path: hasEndPointInXSDDateTimeStamp
property:
  datatype: string
  in: poor
  in: fair
  in: good
  in: excellent
  in: validated
  max count: 1
  message: Data quality level must be from allowed list (gUFO quality aspect)
  path: hasDataQuality
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Data completeness must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: hasDataCompleteness
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Data consistency must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: hasDataConsistency
property:
  datatype: string
  in: none
  in: basic
  in: standard
  in: comprehensive
  in: full_verification
  max count: 1
  message: Validation level must be from allowed list (gUFO quality aspect)
  path: hasValidationLevel
target class: CoordinationAgreement
target class: InformationSharing
target class: InvestigationCoordination
target class: LiaisonOfficer
target class: ResourceSharing

Emergency Communication Channel
type: SituationType
type: Class
comment: Emergency communication channels for urgent coordination and crisis response.
subclass of: CommunicationProtocol

Encrypted Communication Channel
type: SituationType
type: Class
comment: Encrypted communication channels providing enhanced security for sensitive operations.
subclass of: SecureCommunicationChannel

Equipment Sharing
type: EventType
type: Class
comment: Sharing of specialized equipment including forensic tools, surveillance equipment, and technical devices.
subclass of: ResourceSharing

Evidence Sharing
type: EventType
type: Class
comment: Formal sharing of evidence between agencies including digital evidence, physical evidence, and forensic analysis results.
subclass of: InformationSharing

Expertise Sharing
type: EventType
type: Class
comment: Sharing of specialized expertise including subject matter experts, consultants, and technical specialists.
subclass of: ResourceSharing

Facility Sharing
type: EventType
type: Class
comment: Sharing of facilities including laboratories, command centers, training facilities, and secure meeting spaces.
subclass of: ResourceSharing

Federal Coordination
type: EventType
type: Class
comment: Coordination involving federal agencies and national-level law enforcement.
subclass of: InvestigationCoordination

Formal Agreement
type: SituationType
type: Class
comment: Comprehensive formal agreement with legal binding terms for inter-agency coordination.
subclass of: CoordinationAgreement

Formal Communication Channel
type: SituationType
type: Class
comment: Official communication channels following established protocols and hierarchies.
subclass of: CommunicationProtocol

Funding Sharing
type: EventType
type: Class
comment: Coordinated funding arrangements including cost sharing, joint funding, and resource pooling.
subclass of: ResourceSharing

GovernsAgreementShape
type: PropertyShape
class: CoordinationAgreement
description: Links coordination to governing agreements
min count: 0
name: governs agreement
path: governsAgreement

Informal Agreement
type: SituationType
type: Class
comment: Informal agreement or understanding for coordination without formal legal binding.
subclass of: CoordinationAgreement

Informal Communication Channel
type: SituationType
type: Class
comment: Informal communication channels for rapid information exchange and coordination.
subclass of: CommunicationProtocol

InformationSharingParticipationShape
type: NodeShape
property:
  message: Information sharing must involve at least two organizations (gUFO participation)
  min count: 2
  path:
    alternative path: sharesWithAgency
    alternative path: sharesFromAgency
target class: InformationSharing

Information Sharing Rate Metrics
type: SubKind
type: Class
comment: Metrics measuring the rate and volume of information sharing between agencies.
subclass of: CoordinationMetrics

InformationSharingSecurityBusinessRule
type: NodeShape
sparql:
  message: High classification information requires enhanced security and formal agreements
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/investigation-coordination#
      prefix: cacontology-coord
  select: SELECT $this WHERE { $this cacontology-coord:classificationLevel ?classification ; cacontology-coord:sharingAgreement ?agreement . FILTER (?classification IN ("classified", "top_secret") && ?agreement = false) }
target class: InformationSharing

Information Sharing Shape
type: NodeShape
comment: Validation shape for information sharing instances with gUFO integration.
property:
  datatype: boolean
  max count: 1
  message: Information sharing must specify if reciprocity is expected.
  min count: 1
  path: reciprocity
property:
  datatype: boolean
  max count: 1
  message: Information sharing must specify if formal sharing agreement exists.
  min count: 1
  path: sharingAgreement
property:
  datatype: dateTime
  max count: 1
  message: Information sharing may have start time (gUFO temporal boundary)
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: string
  in: poor
  in: fair
  in: good
  in: excellent
  in: optimal
  max count: 1
  message: Sharing efficiency level must be from allowed list (gUFO quality aspect)
  path: hasSharingEfficiency
property:
  datatype: string
  in: basic
  in: standard
  in: enhanced
  in: high
  in: maximum
  max count: 1
  message: Security level must be from allowed list (gUFO quality aspect)
  path: hasSecurityLevel
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Timeliness score must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: hasTimeliness
property:
  datatype: string
  in: intelligence_sharing
  in: evidence_sharing
  in: case_information
  in: suspect_information
  in: victim_information
  in: technical_data
  max count: 1
  message: Information sharing must specify sharing type from the allowed list.
  min count: 1
  path: sharingType
property:
  datatype: string
  in: unclassified
  in: law_enforcement_sensitive
  in: confidential
  in: restricted
  in: classified
  in: top_secret
  max count: 1
  message: Information sharing must specify classification level from the allowed list.
  min count: 1
  path: classificationLevel
property:
  datatype: string
  in: secure_email
  in: encrypted_portal
  in: database_access
  in: formal_request
  in: liaison_officer
  in: joint_briefing
  max count: 1
  message: Information sharing must specify sharing mechanism from the allowed list.
  min count: 1
  path: sharingMechanism
target class: InformationSharing

Intelligence Liaison
type: Role
type: Class
comment: Intelligence liaison officer managing intelligence sharing and coordination activities.
subclass of: LiaisonOfficer

Intelligence Sharing Shape
type: NodeShape
comment: Validation shape for intelligence sharing instances with gUFO integration.
property:
  datatype: string
  in: tactical
  in: strategic
  in: operational
  in: technical
  in: threat_assessment
  in: pattern_analysis
  max count: 1
  message: Intelligence sharing must specify intelligence type from the allowed list.
  min count: 1
  path: intelligenceType
property:
  datatype: string
  in: reliable
  in: usually_reliable
  in: fairly_reliable
  in: not_usually_reliable
  in: unreliable
  in: unknown
  max count: 1
  message: Intelligence sharing must specify source reliability from the allowed list.
  min count: 1
  path: sourceReliability
property:
  datatype: string
  in: confirmed
  in: probably_true
  in: possibly_true
  in: doubtfully_true
  in: improbable
  in: cannot_be_judged
  max count: 1
  message: Intelligence sharing must specify information accuracy from the allowed list.
  min count: 1
  path: informationAccuracy
property:
  datatype: string
  in: low
  in: moderate
  in: high
  in: critical
  in: exceptional
  max count: 1
  message: Intelligence value level must be from allowed list (gUFO quality aspect)
  path: hasIntelligenceValue
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Actionability score must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: hasActionability
target class: IntelligenceSharing

International Coordination
type: EventType
type: Class
comment: Coordination activities involving international agencies and cross-border cooperation.
subclass of: InvestigationCoordination

InvestigationCoordinationParticipationShape
type: NodeShape
property:
  message: Every investigation coordination must have at least two participating entities (gUFO participation)
  min count: 2
  path:
    alternative path: participatedIn
    alternative path: involvesAgency
    alternative path: assignsLiaison
target class: InvestigationCoordination

Investigation Coordination Shape
type: NodeShape
comment: Validation shape for investigation coordination instances with gUFO integration.
property:
  datatype: string
  in: joint_investigation
  in: parallel_investigation
  in: information_sharing
  in: resource_sharing
  in: task_force_coordination
  in: multi_agency_coordination
  max count: 1
  message: Investigation coordination must specify coordination type from the allowed list.
  min count: 1
  path: coordinationType
property:
  datatype: string
  in: local
  in: regional
  in: state
  in: multi_state
  in: federal
  in: international
  max count: 1
  message: Investigation coordination must specify coordination level from the allowed list.
  min count: 1
  path: coordinationLevel
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 50
  message: Investigation coordination must have between 2 and 50 participating agencies.
  min count: 1
  min inclusive: 2
  path: participatingAgencies
property:
  datatype: string
  max count: 1
  max length: 100
  message: Investigation coordination must specify lead agency (3-100 characters).
  min count: 1
  min length: 3
  path: leadAgency
property:
  datatype: string
  in: active
  in: inactive
  in: pending
  in: completed
  in: suspended
  in: terminated
  max count: 1
  message: Investigation coordination must specify coordination status from the allowed list.
  min count: 1
  path: coordinationStatus
property:
  datatype: dateTime
  max count: 1
  message: Investigation coordination may have a start time.
  min count: 0
  path: startTime
property:
  datatype: dateTime
  max count: 1
  message: Investigation coordination may have an end time.
  min count: 0
  path: endTime
property:
  datatype: dateTime
  max count: 1
  message: Coordination may have gUFO temporal start boundary
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: dateTime
  max count: 1
  message: Coordination may have gUFO temporal end boundary
  path: hasEndPointInXSDDateTimeStamp
property:
  datatype: string
  in: poor
  in: fair
  in: good
  in: excellent
  in: outstanding
  max count: 1
  message: Coordination effectiveness level must be from allowed list (gUFO quality aspect)
  path: hasCoordinationEffectiveness
property:
  datatype: string
  in: simple
  in: moderate
  in: complex
  in: highly_complex
  in: extremely_complex
  max count: 1
  message: Coordination complexity level must be from allowed list (gUFO quality aspect)
  path: hasComplexityLevel
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Success rate must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: hasSuccessRate
target class: InvestigationCoordination

InvestigationCoordinationTemporalShape
type: NodeShape
property:
  datatype: dateTime
  max count: 1
  message: Coordination may have at most one end time (gUFO temporal boundary)
  path: hasEndPointInXSDDateTimeStamp
property:
  datatype: dateTime
  max count: 1
  message: Coordination may have at most one start time (gUFO temporal boundary)
  path: hasBeginPointInXSDDateTimeStamp
sparql:
  message: Coordination end time must be after start time when both specified (gUFO temporal ordering)
  prefixes:
    declare:
      namespace: http://purl.org/nemo/gufo#
      prefix: gufo
  select: SELECT $this WHERE { $this gufo:hasBeginPointInXSDDateTimeStamp ?startTime . $this gufo:hasEndPointInXSDDateTimeStamp ?endTime . FILTER (?endTime <= ?startTime) }
target class: InvestigationCoordination

InvolvesAgencyShape
type: PropertyShape
class: Organization
description: Links coordination to participating agencies
min count: 2
name: involves agency
path: involvesAgency

JointInvestigationCompositionShape
type: NodeShape
property:
  message: Joint investigation must include at least two investigation components (gUFO part-whole)
  min count: 2
  path:
    inverse path: isProperPartOf
target class: JointInvestigation

JointInvestigationResourceIntegrationBusinessRule
type: NodeShape
sparql:
  message: High-integration joint investigations require resource pooling and shared command
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/investigation-coordination#
      prefix: cacontology-coord
  select: SELECT $this WHERE { $this cacontology-coord:hasCoordinationIntensity ?intensity ; cacontology-coord:resourcePooling ?pooling ; cacontology-coord:sharedCommand ?command . FILTER (?intensity IN ("intensive", "fully_integrated") && (?pooling = false || ?command = false)) }
target class: JointInvestigation

Joint Investigation Shape
type: NodeShape
comment: Validation shape for joint investigation instances with gUFO integration.
property:
  datatype: string
  in: single_case
  in: related_cases
  in: criminal_network
  in: organized_crime
  in: multi_jurisdictional
  in: international
  max count: 1
  message: Joint investigation must specify investigation scope from the allowed list.
  min count: 1
  path: investigationScope
property:
  datatype: boolean
  max count: 1
  message: Joint investigation must specify if resource pooling is used.
  min count: 1
  path: resourcePooling
property:
  datatype: boolean
  max count: 1
  message: Joint investigation must specify if shared command structure is used.
  min count: 1
  path: sharedCommand
property:
  datatype: boolean
  max count: 1
  message: Joint investigation must specify if unified reporting is used.
  min count: 1
  path: unifiedReporting
property:
  datatype: dateTime
  max count: 1
  message: Joint investigation must have start time (gUFO temporal boundary)
  min count: 1
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: string
  in: minimal
  in: moderate
  in: high
  in: intensive
  in: fully_integrated
  max count: 1
  message: Coordination intensity level must be from allowed list (gUFO quality aspect)
  path: hasCoordinationIntensity
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Unification level must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: hasUnificationLevel
target class: JointInvestigation

Joint Operations Plan
type: SituationType
type: Class
comment: Detailed operational plan for joint investigations and coordinated activities.
subclass of: CoordinationAgreement

Legal Liaison
type: Role
type: Class
comment: Legal liaison officer handling legal aspects of inter-agency coordination and agreements.
subclass of: LiaisonOfficer

Liaison Assignment Shape
type: NodeShape
comment: Validates liaison officer assignment consistency.
sparql:
  message: Primary liaison officers should have full or limited communication authority.
  select: SELECT $this WHERE { $this cacontology-coord:liaisonRole "primary_liaison" ; cacontology-coord:communicationAuthority ?authority . FILTER (?authority NOT IN ("full_authority", "limited_authority")) }
target class: LiaisonOfficer

LiaisonAuthorityAlignmentBusinessRule
type: NodeShape
sparql:
  message: Primary liaisons should have full or limited authority aligned with their clearance level
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/investigation-coordination#
      prefix: cacontology-coord
  select: SELECT $this WHERE { $this cacontology-coord:liaisonRole "primary_liaison" ; cacontology-coord:communicationAuthority ?authority ; cacontology-coord:clearanceLevel ?clearance . FILTER (?clearance IN ("secret", "top_secret", "sci_access") && ?authority IN ("information_only", "advisory_only")) }
target class: LiaisonOfficer

Liaison Communication Channel
type: SituationType
type: Class
comment: Communication channels managed through designated liaison officers for inter-agency coordination.
subclass of: CommunicationProtocol

Liaison Officer Shape
type: NodeShape
comment: Validation shape for liaison officer instances with gUFO integration.
property:
  datatype: string
  in: primary_liaison
  in: secondary_liaison
  in: technical_liaison
  in: legal_liaison
  in: intelligence_liaison
  in: operational_liaison
  max count: 1
  message: Liaison officer must specify liaison role from the allowed list.
  min count: 1
  path: liaisonRole
property:
  datatype: decimal
  max count: 1
  max inclusive: 2190.0
  message: Liaison assignment duration must be between 1 and 2190 days (6 years).
  min count: 1
  min inclusive: 1.0
  path: assignmentDuration
property:
  datatype: string
  in: none
  in: public_trust
  in: confidential
  in: secret
  in: top_secret
  in: sci_access
  max count: 1
  message: Clearance level must be from the allowed list.
  min count: 0
  path: clearanceLevel
property:
  datatype: string
  in: full_authority
  in: limited_authority
  in: information_only
  in: coordination_only
  in: advisory_only
  max count: 1
  message: Liaison officer must specify communication authority from the allowed list.
  min count: 1
  path: communicationAuthority
property:
  datatype: dateTime
  max count: 1
  message: Liaison assignment may have start time (gUFO temporal boundary)
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: dateTime
  max count: 1
  message: Liaison assignment may have end time (gUFO temporal boundary)
  path: hasEndPointInXSDDateTimeStamp
property:
  datatype: string
  in: poor
  in: adequate
  in: good
  in: excellent
  in: exceptional
  max count: 1
  message: Liaison effectiveness level must be from allowed list (gUFO quality aspect)
  path: hasLiaisonEffectiveness
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Trust level must be between 0.0 and 1.0 (gUFO quality aspect)
  min inclusive: 0.0
  path: hasTrustLevel
property:
  datatype: string
  in: slow
  in: moderate
  in: good
  in: rapid
  in: immediate
  max count: 1
  message: Responsiveness level must be from allowed list (gUFO quality aspect)
  path: hasResponsiveness
target class: LiaisonOfficer

LiaisonRoleValidationShape
type: NodeShape
message: Liaison roles are anti-rigid and cannot be subclasses of rigid Kinds
not:
  property:
    class: Kind
    path: subClassOf
property:
  has value: Role
  min count: 1
  path: type
target class: Role

Local Coordination
type: EventType
type: Class
comment: Coordination activities within local jurisdictions and municipal boundaries.
subclass of: InvestigationCoordination

MeasuresPerformanceShape
type: PropertyShape
class: CoordinationMetrics
description: Links coordination to performance metrics
min count: 0
name: measures performance
path: measuresPerformance

Memorandum of Agreement
type: SituationType
type: Class
comment: Formal MOA defining specific terms and conditions for inter-agency cooperation.
subclass of: CoordinationAgreement

Memorandum of Understanding
type: SituationType
type: Class
comment: Formal MOU establishing framework for ongoing cooperation and coordination between agencies.
subclass of: CoordinationAgreement

MetricsObjectValidationShape
type: NodeShape
message: Coordination metrics must be properly classified as gUFO Objects
property:
  has value: Object
  min count: 1
  path: type
target class: Object

Missing Child Rescue Operation Shape
type: NodeShape
comment: Validation shape for missing-child rescue operation instances, including explicit located-count outcomes.
property:
  message: Missing child rescue operation must have an rdfs:label.
  min count: 1
  path: label
property:
  datatype: nonNegativeInteger
  max count: 1
  message: Missing child rescue operation must specify childrenLocatedCount as a non-negative integer.
  min count: 1
  path: childrenLocatedCount
property:
  datatype: nonNegativeInteger
  max count: 1
  message: casesInProgressCount, when provided, must be a non-negative integer.
  min count: 0
  path: casesInProgressCount
target class: MissingChildRescueOperation

MultiAgencyCompositionShape
type: NodeShape
property:
  message: Multi-agency coordination must include at least three agency components (gUFO part-whole)
  min count: 3
  path:
    inverse path: isProperPartOf
target class: MultiAgencyCoordination

MultiAgencyCoordinationComplexityBusinessRule
type: NodeShape
sparql:
  message: Complex multi-agency coordination must have adequate liaison support and high effectiveness
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/investigation-coordination#
      prefix: cacontology-coord
  select: SELECT $this WHERE { $this cacontology-coord:hasComplexityLevel ?complexity ; cacontology-coord:participatingAgencies ?agencies . FILTER (?complexity IN ("highly_complex", "extremely_complex") && ?agencies > 10) FILTER NOT EXISTS { $this cacontology-coord:assignsLiaison ?liaison . ?liaison cacontology-coord:hasLiaisonEffectiveness ?effectiveness . FILTER (?effectiveness IN ("good", "excellent", "exceptional")) } }
target class: MultiAgencyCoordination

Multi State Coordination
type: EventType
type: Class
comment: Coordination activities spanning multiple states requiring interstate cooperation.
subclass of: InvestigationCoordination

Operational Liaison
type: Role
type: Class
comment: Operational liaison officer coordinating operational activities and tactical coordination.
subclass of: LiaisonOfficer

Parallel Investigation
type: EventType
type: Class
comment: Parallel investigation where multiple agencies investigate related aspects independently while maintaining coordination.
subclass of: InvestigationCoordination

Personnel Sharing Shape
type: NodeShape
comment: Validation shape for personnel sharing instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 100
  message: Personnel sharing must specify personnel count between 1 and 100.
  min count: 1
  min inclusive: 1
  path: personnelCount
property:
  datatype: string
  in: digital_forensics
  in: undercover_operations
  in: surveillance
  in: analysis
  in: technical_support
  in: legal_expertise
  max count: 1
  message: Personnel sharing must specify specialization from the allowed list.
  min count: 1
  path: specialization
property:
  datatype: string
  in: none
  in: public_trust
  in: confidential
  in: secret
  in: top_secret
  in: sci_access
  max count: 1
  message: Security clearance must be from the allowed list.
  min count: 0
  path: securityClearance
target class: PersonnelSharing

Primary Liaison
type: Role
type: Class
comment: Primary liaison officer with full authority for inter-agency communication and coordination.
subclass of: LiaisonOfficer

Regional Coordination
type: EventType
type: Class
comment: Coordination activities spanning regional areas and multiple local jurisdictions.
subclass of: InvestigationCoordination

Resource Sharing Duration Shape
type: NodeShape
comment: Validates resource sharing duration reasonableness.
sparql:
  message: Long-term resource sharing should have formal agreements.
  select: SELECT $this WHERE { $this cacontology-coord:sharingDuration ?duration . FILTER (?duration > 720) FILTER NOT EXISTS { ?coordination cacontology-coord:sharesResources $this ; cacontology-coord:governsAgreement ?agreement . } }
target class: ResourceSharing

ResourceSharingParticipationShape
type: NodeShape
property:
  message: Resource sharing must involve at least provider and receiver organizations (gUFO participation)
  min count: 2
  path:
    alternative path: providesResource
    alternative path: receivesResource
target class: ResourceSharing

Resource Sharing Shape
type: NodeShape
comment: Validation shape for resource sharing instances.
property:
  datatype: string
  in: personnel
  in: equipment
  in: facilities
  in: technology
  in: expertise
  in: funding
  in: vehicles
  in: specialized_units
  max count: 1
  message: Resource sharing must specify resource type from the allowed list.
  min count: 1
  path: resourceType
property:
  datatype: decimal
  max count: 1
  max inclusive: 8760.0
  message: Resource sharing duration must be between 1 and 8760 hours (1 year).
  min count: 1
  min inclusive: 1.0
  path: sharingDuration
property:
  datatype: boolean
  max count: 1
  message: Resource sharing must specify if cost sharing is involved.
  min count: 1
  path: costSharing
property:
  datatype: boolean
  max count: 1
  message: Resource sharing must specify if reimbursement is required.
  min count: 1
  path: reimbursement
property:
  datatype: string
  in: immediate
  in: short_notice
  in: scheduled
  in: on_request
  in: limited
  in: emergency_only
  max count: 1
  message: Resource sharing must specify availability level from the allowed list.
  min count: 1
  path: availabilityLevel
target class: ResourceSharing

ResourceSharingTemporalShape
type: NodeShape
property:
  datatype: dateTime
  max count: 1
  message: Resource sharing may have start time (gUFO temporal boundary)
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: dateTime
  max count: 1
  message: Resource sharing may have end time (gUFO temporal boundary)
  path: hasEndPointInXSDDateTimeStamp
target class: ResourceSharing

Resource Utilization Metrics
type: SubKind
type: Class
comment: Metrics measuring efficiency of shared resource utilization and allocation.
subclass of: CoordinationMetrics

Response Time Metrics
type: SubKind
type: Class
comment: Metrics measuring response times for coordination requests and information sharing.
subclass of: CoordinationMetrics

Secondary Liaison
type: Role
type: Class
comment: Secondary liaison officer providing backup and specialized coordination support.
subclass of: LiaisonOfficer

SharesInformationShape
type: PropertyShape
class: InformationSharing
description: Links coordination to information sharing
min count: 0
name: shares information
path: sharesInformation

SharesResourcesShape
type: PropertyShape
class: ResourceSharing
description: Links coordination to resource sharing
min count: 0
name: shares resources
path: sharesResources

State Coordination
type: EventType
type: Class
comment: Coordination activities within state boundaries involving state and local agencies.
subclass of: InvestigationCoordination

Suspect Information Sharing
type: EventType
type: Class
comment: Sharing of suspect-related information including identification, criminal history, and behavioral patterns.
subclass of: InformationSharing

Task Force Charter
type: SituationType
type: Class
comment: Charter document establishing task force structure, authority, and operational parameters.
subclass of: CoordinationAgreement

TaskForceCompositionShape
type: NodeShape
property:
  message: Task force must be composed of at least two component agencies (gUFO part-whole)
  min count: 2
  path:
    inverse path: isProperPartOf
target class: TaskForceCoordination

Technical Data Sharing
type: EventType
type: Class
comment: Sharing of technical data including forensic tools, methodologies, and technical analysis results.
subclass of: InformationSharing

Technical Liaison
type: Role
type: Class
comment: Technical liaison officer specializing in technical coordination and information sharing.
subclass of: LiaisonOfficer

Technology Sharing
type: EventType
type: Class
comment: Sharing of technology resources including software, databases, communication systems, and analytical tools.
subclass of: ResourceSharing

Temporal Validation Shape
type: NodeShape
comment: Validates temporal consistency in investigation coordination.
sparql:
  message: Start time must be before end time when both are specified.
  select: SELECT $this WHERE { $this uco-core:startTime ?start ; uco-core:endTime ?end . FILTER (?start >= ?end) }
target class: InvestigationCoordination

UsesProtocolShape
type: PropertyShape
class: CommunicationProtocol
description: Links coordination to communication protocols
min count: 1
name: uses protocol
path: usesProtocol

Victim Information Sharing
type: EventType
type: Class
comment: Coordinated sharing of victim information while maintaining privacy and protection protocols.
subclass of: InformationSharing

assigned by
type: ObjectProperty
comment: Links liaison officer to assigning authority.
domain: LiaisonOfficer
range: Person

authorized by
type: ObjectProperty
comment: Links agreement to authorizing officials.
domain: CoordinationAgreement
range: Person

benchmarked against
type: ObjectProperty
comment: Links metrics to benchmark standards.
domain: CoordinationMetrics
range: CoordinationMetrics

concerns case
type: ObjectProperty
comment: Links information sharing to related cases.
domain: InformationSharing
range: Investigation

concerns participant
type: ObjectProperty
comment: Links participation situations to the participating entities - gUFO qualified relation.
domain: ParticipationSituation
range:
  union of: Organization
  union of: Person

concerns temporary part
type: ObjectProperty
comment: Links part-whole situations to the part entity - gUFO qualified relation.
domain: TemporaryParthoodSituation
range:
  union of: Organization
  union of: Investigation

concerns temporary whole
type: ObjectProperty
comment: Links part-whole situations to the whole entity - gUFO qualified relation.
domain: TemporaryParthoodSituation
range:
  union of: InvestigationCoordination
  union of: Organization

connects agencies
type: ObjectProperty
comment: Links communication protocol to connected agencies.
domain: CommunicationProtocol
range: Organization

evaluates coordination
type: ObjectProperty
comment: Links metrics to evaluated coordination activities.
domain: CoordinationMetrics
range: InvestigationCoordination

facilitates communication
type: ObjectProperty
comment: Links protocol to communication facilitation.
domain: CommunicationProtocol
range: InvestigationCoordination

has component
type: ObjectProperty
comment: Links coordination structures to their component agencies - gUFO part-whole relation.
domain:
  union of: TaskForceCoordination
  union of: MultiAgencyCoordination
  union of: JointInvestigation
range: Organization
inverse of: isComponentOf

has sub investigation
type: ObjectProperty
comment: Links joint investigations to their component sub-investigations - gUFO part-whole relation.
domain: JointInvestigation
range: Investigation
inverse of: isSubInvestigationOf

involves personnel
type: ObjectProperty
comment: Links personnel sharing to specific personnel.
domain: PersonnelSharing
range: Person

liaison with
type: ObjectProperty
comment: Links liaison officer to partner agencies.
domain: LiaisonOfficer
range: Organization

participates in
type: ObjectProperty
comment: Links an organization or person to coordination activities they participate in - gUFO participation relation.
domain:
  union of: Organization
  union of: Person
range: InvestigationCoordination
sub property of: participatedIn

participates in sharing
type: ObjectProperty
comment: Links an organization to information or resource sharing activities - gUFO participation relation.
domain: Organization
range:
  union of: InformationSharing
  union of: ResourceSharing
sub property of: participatedIn

represents agency
type: ObjectProperty
comment: Links liaison officer to represented agency.
domain: LiaisonOfficer
range: Organization

signed by agency
type: ObjectProperty
comment: Links agreement to signatory agencies.
domain: CoordinationAgreement
range: Organization

stands in qualified parthood
type: ObjectProperty
comment: Links entities to qualified part-whole situations in coordination structures - gUFO qualified relation.
domain:
  union of: Organization
  union of: Investigation
range: TemporaryParthoodSituation

stands in qualified participation
type: ObjectProperty
comment: Links entities to qualified participation situations in coordination - gUFO qualified relation.
domain:
  union of: Organization
  union of: Person
range: ParticipationSituation

Corrupt Army Reservist
type: Role
type: Class
comment: Army reservist engaged in child exploitation activities while in military uniform.
subclass of: CorruptLawEnforcementOfficer

Corrupt Metropolitan Police Department Officer
type: Role
type: Class
comment: Former or current metropolitan police department officer engaged in child trafficking.
subclass of: CorruptLawEnforcementOfficer

Corrupt State Trooper
type: Role
type: Class
comment: State trooper engaged in child exploitation activities while in uniform.
subclass of: CorruptLawEnforcementOfficer

Database Access Abuse
type: EventType
type: Class
comment: Misuse of law enforcement database access for personal exploitation activities.
subclass of: AccessPrivilegeAbuse

Former Law Enforcement Officer
type: Role
type: Class
comment: Former law enforcement officer using previous position and contacts for exploitation.
subclass of: CorruptLawEnforcementOfficer

Internal Affairs Investigation
type: EventType
type: Class
comment: Investigation by internal affairs department into officer corruption.
subclass of: InsiderThreatDetection

Military Uniform Production
type: EventType
type: Class
comment: Production of CSAM while wearing military uniform.
subclass of: UniformEnhancedProduction

Officer Child Trafficking
type: EventType
type: Class
comment: Child trafficking conducted by law enforcement officers using their position and authority.
subclass of: PositionOfAuthorityAbuse

Official Vehicle Exploitation
type: EventType
type: Class
comment: Use of official law enforcement vehicles in exploitation activities.
subclass of: PositionOfAuthorityAbuse

Police Uniform Production
type: EventType
type: Class
comment: Production of CSAM while wearing police uniform.
subclass of: UniformEnhancedProduction

Public Integrity Investigation
type: EventType
type: Class
comment: Investigation into public integrity violations by law enforcement personnel.
subclass of: ExternalOversightInvestigation

abuses access
type: ObjectProperty
comment: Links corruption to system or information access being abused.
domain: AccessPrivilegeAbuse
range: ObservableObject

access level
type: DatatypeProperty
comment: Level of system access held by corrupt officer (basic, elevated, administrative).
domain: AccessPrivilegeAbuse
range: string

badge visible
type: DatatypeProperty
comment: Whether law enforcement badge was visible during exploitation.
domain: BadgeDisplayedProduction
range: boolean

corrupts evidence
type: ObjectProperty
comment: Links corruption to evidence that was manipulated or destroyed.
domain: EvidenceManipulation
range: ObservableObject

detected by
type: ObjectProperty
comment: Links corruption to detection method or source.
domain: LawEnforcementCorruption
range: InsiderThreatDetection

displays authority
type: ObjectProperty
comment: Links exploitation to authority symbol displayed.
domain: AuthoritySymbolExploitation
range: ObservableObject

employs officer
type: ObjectProperty
comment: Links law enforcement agency to corrupt officer.
domain: Organization
range: CorruptLawEnforcementOfficer

exploits position
type: ObjectProperty
comment: Links corruption to position being exploited.
domain: LawEnforcementCorruption
range: Role

leaks information
type: ObjectProperty
comment: Links corruption to information that was leaked.
domain: InformationLeakage
range: ObservableObject

reported by
type: ObjectProperty
comment: Links corruption to person or entity that reported it.
domain: WhistleblowerReport
range: Person

stands in qualified corruption
type: ObjectProperty
comment: Links entities to qualified corruption situations - gUFO qualified relation.
domain:
  union of: CorruptLawEnforcementOfficer
  union of: Organization
range: ParticipationSituation

wears uniform
type: ObjectProperty
comment: Links exploitation to uniform worn during activity.
domain: UniformBasedExploitation
range: ObservableObject

Authority Enhancement Rule
type: NodeShape
comment: Maximum authority enhancement should correlate with high corruption impact.
sparql:
  message: Maximum authority enhancement should have high corruption impact
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/law-enforcement-corruption#
      prefix: cacontology-corruption
  select: SELECT $this WHERE { $this cacontology-corruption:hasAuthorityEnhancementLevel "maximum" . OPTIONAL { $this cacontology-corruption:hasCorruptionImpact ?impact . FILTER (?impact IN ("high", "severe", "devastating")) } FILTER (!BOUND(?impact)) }
  severity: Warning
target class: UniformBasedExploitation

Authority Symbol Exploitation Shape
type: NodeShape
comment: Enhanced shape for authority symbol exploitation with symbol visibility assessment.
property:
  has value: EventType
  message: Must be classified as gUFO EventType
  min count: 1
  path: type
  severity: Violation
property:
  datatype: string
  in: hidden
  in: subtle
  in: visible
  in: prominent
  in: conspicuous
  max count: 1
  message: Symbol visibility level should be assessed
  path: hasSymbolVisibility
  severity: Warning
target class: AuthoritySymbolExploitation

Corrupt Law Enforcement Officer Shape
type: NodeShape
comment: Enhanced shape for corrupt officers with corruption dependency and trust betrayal assessments.
property:
  datatype: string
  max count: 1
  message: Department affiliation should be specified
  min length: 1
  path: departmentAffiliation
  severity: Warning
property:
  has value: Role
  message: Must be classified as gUFO Role
  min count: 1
  path: type
  severity: Violation
property:
  datatype: string
  in: low
  in: moderate
  in: high
  in: complete
  in: systemic
  max count: 1
  message: Corruption dependency level should be assessed
  path: hasCorruptionDependency
  severity: Warning
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Position exploitation level should be measured
  min inclusive: 0.0
  path: hasPositionExploitationLevel
  severity: Info
property:
  datatype: string
  in: minimal
  in: moderate
  in: significant
  in: severe
  in: complete
  max count: 1
  message: Trust betrayal level should be assessed
  path: hasTrustBetrayalLevel
  severity: Warning
property:
  datatype: nonNegativeInteger
  max inclusive: 50
  message: Years of service should be reasonable
  min inclusive: 0
  path: yearsOfService
  severity: Warning
property:
  datatype: string
  in: patrol
  in: detective
  in: supervisor
  in: command
  in: executive
  max count: 1
  message: Authority level should be specified
  path: authorityLevel
  severity: Info
property:
  datatype: string
  in: active
  in: reserve
  in: retired
  in: terminated
  in: suspended
  max count: 1
  message: Employment status should be specified
  path: employmentStatus
  severity: Warning
target class: CorruptLawEnforcementOfficer

Corrupt Officer Role Validation Shape
type: NodeShape
comment: Validates that corrupt officer classes are properly classified as anti-rigid gUFO Roles.
property:
  has value: Role
  max count: 1
  message: Corrupt officer types must be classified as gUFO Role (anti-rigid)
  min count: 1
  path: type
  severity: Violation
property:
  message: Corrupt officer roles must extend UCO Role
  path: subClassOf
  qualified min count: 1
  qualified value shape:
    class: Role
  severity: Violation
target class: CorruptLawEnforcementOfficer

Corruption Data Quality Shape
type: NodeShape
comment: Comprehensive gUFO quality validation for law enforcement corruption data.
property:
  datatype: string
  in: poor
  in: fair
  in: good
  in: excellent
  in: validated
  max count: 1
  message: Data quality level should be assessed
  path: hasDataQuality
  severity: Warning
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Data completeness should be measured (0.0-1.0)
  min inclusive: 0.0
  path: hasDataCompleteness
  severity: Info
property:
  datatype: string
  in: none
  in: basic
  in: standard
  in: comprehensive
  in: full_verification
  max count: 1
  message: Validation thoroughness should be specified
  path: hasValidationLevel
  severity: Info
sparql:
  message: Excellent data quality should have high completeness and comprehensive validation
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/law-enforcement-corruption#
      prefix: cacontology-corruption
  select: SELECT $this WHERE { $this cacontology-corruption:hasDataQuality "excellent" . OPTIONAL { $this cacontology-corruption:hasDataCompleteness ?completeness . FILTER (?completeness >= 0.8) } OPTIONAL { $this cacontology-corruption:hasValidationLevel ?validation . FILTER (?validation IN ("comprehensive", "full_verification")) } FILTER (!BOUND(?completeness) || !BOUND(?validation)) }
  severity: Warning
target class: LawEnforcementCorruption

Corruption Event Type Validation Shape
type: NodeShape
comment: Validates that corruption activities are properly classified as gUFO Events and EventTypes.
property:
  has value: EventType
  max count: 1
  message: Corruption activities must be classified as gUFO EventType
  min count: 1
  path: type
  severity: Violation
property:
  message: Corruption activities must extend gUFO Event
  path: subClassOf
  qualified min count: 1
  qualified value shape:
    class: Event
  severity: Violation
property:
  datatype: dateTimeStamp
  max count: 1
  message: Corruption events should have temporal boundaries
  path: hasBeginPointInXSDDateTimeStamp
  severity: Warning
target class: LawEnforcementCorruption

Corruption Participation Shape
type: NodeShape
comment: Validates participation constraints for corruption activities following gUFO participation patterns.
property:
  class: CorruptLawEnforcementOfficer
  message: Corruption must involve at least one corrupt officer
  min count: 1
  path:
    inverse path: participatesIn
  severity: Violation
property:
  class: InsiderThreatDetection
  max count: 1
  message: Corruption should be linked to detection activity
  path: isDetectedBy
  severity: Info
target class: LawEnforcementCorruption

Corruption Temporal Shape
type: NodeShape
comment: Validates temporal constraints for corruption events according to gUFO framework.
property:
  datatype: dateTimeStamp
  max count: 1
  message: Corruption events should specify start time
  path: hasBeginPointInXSDDateTimeStamp
  severity: Info
property:
  datatype: dateTimeStamp
  max count: 1
  message: Corruption events should specify end time
  path: hasEndPointInXSDDateTimeStamp
  severity: Info
sparql:
  message: Corruption event end time must be after start time
  prefixes:
    declare:
      namespace: http://purl.org/nemo/gufo#
      prefix: gufo
  select: SELECT $this WHERE { $this gufo:hasBeginPointInXSDDateTimeStamp ?start . $this gufo:hasEndPointInXSDDateTimeStamp ?end . FILTER (?end <= ?start) }
  severity: Violation
target class: LawEnforcementCorruption

Detection Activity Type Validation Shape
type: NodeShape
comment: Validates that detection and investigation activities are properly classified as gUFO EventTypes.
property:
  has value: EventType
  max count: 1
  message: Detection activities must be classified as gUFO EventType
  min count: 1
  path: type
  severity: Violation
property:
  message: Detection activities must extend gUFO Event
  path: subClassOf
  qualified min count: 1
  qualified value shape:
    class: Event
  severity: Violation
target class: InsiderThreatDetection

Detection Difficulty Rule
type: NodeShape
comment: Very difficult detection should require comprehensive investigation complexity.
sparql:
  message: Very difficult detection should have comprehensive investigation
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/law-enforcement-corruption#
      prefix: cacontology-corruption
  select: SELECT $this WHERE { $this cacontology-corruption:hasDetectionDifficulty ?difficulty . FILTER (?difficulty IN ("very_difficult", "nearly_impossible")) OPTIONAL { $this cacontology-corruption:isDetectedBy ?detection . ?detection cacontology-corruption:hasInvestigationComplexity ?complexity . FILTER (?complexity IN ("highly_complex", "extremely_complex")) } FILTER (!BOUND(?complexity)) }
  severity: Info
target class: InsiderThreat

Detection Participation Shape
type: NodeShape
comment: Validates participation constraints for detection activities.
property:
  class: Organization
  message: Detection should involve investigating organization
  min count: 1
  path:
    inverse path: investigatedBy
  severity: Warning
target class: InsiderThreatDetection

Detection Temporal Shape
type: NodeShape
comment: Validates temporal constraints for corruption detection activities.
property:
  datatype: dateTimeStamp
  max count: 1
  message: Detection activities should specify start time
  path: hasBeginPointInXSDDateTimeStamp
  severity: Info
property:
  datatype: dateTimeStamp
  max count: 1
  message: Detection activities should specify end time
  path: hasEndPointInXSDDateTimeStamp
  severity: Info
target class: InsiderThreatDetection

Evidence Integrity Rule
type: NodeShape
comment: Low evidence integrity should be flagged for validation concerns.
sparql:
  message: Low evidence integrity requires enhanced validation
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/law-enforcement-corruption#
      prefix: cacontology-corruption
  select: SELECT $this WHERE { $this cacontology-corruption:hasEvidenceIntegrity ?integrity . FILTER (?integrity < 0.5) OPTIONAL { $this cacontology-corruption:hasValidationLevel ?validation . FILTER (?validation IN ("comprehensive", "full_verification")) } FILTER (!BOUND(?validation)) }
  severity: Warning
target class: InsiderThreatDetection

High Severity Corruption Rule
type: NodeShape
comment: High severity corruption should have comprehensive detection efforts.
sparql:
  message: High severity corruption should have comprehensive investigation
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/law-enforcement-corruption#
      prefix: cacontology-corruption
  select: SELECT $this WHERE { $this cacontology-corruption:hasCorruptionSeverity ?severity . FILTER (?severity IN ("severe", "extreme")) OPTIONAL { $this cacontology-corruption:isDetectedBy ?detection . ?detection cacontology-corruption:hasInvestigationComplexity ?complexity . FILTER (?complexity IN ("complex", "highly_complex", "extremely_complex")) } FILTER (!BOUND(?complexity)) }
  severity: Warning
target class: LawEnforcementCorruption

Insider Threat Detection Shape
type: NodeShape
comment: Enhanced shape for insider threat detection with complexity and evidence integrity assessments.
property:
  has value: EventType
  message: Must be classified as gUFO EventType
  min count: 1
  path: type
  severity: Violation
property:
  datatype: string
  in: simple
  in: moderate
  in: complex
  in: highly_complex
  in: extremely_complex
  max count: 1
  message: Investigation complexity should be assessed
  path: hasInvestigationComplexity
  severity: Warning
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Evidence integrity should be measured
  min inclusive: 0.0
  path: hasEvidenceIntegrity
  severity: Info
target class: InsiderThreatDetection

Insider Threat Shape
type: NodeShape
comment: Enhanced shape for insider threats with detection difficulty assessment.
property:
  has value: EventType
  message: Must be classified as gUFO EventType
  min count: 1
  path: type
  severity: Violation
property:
  datatype: string
  in: easy
  in: moderate
  in: difficult
  in: very_difficult
  in: nearly_impossible
  max count: 1
  message: Detection difficulty should be assessed
  path: hasDetectionDifficulty
  severity: Warning
target class: InsiderThreat

Law Enforcement Corruption Shape
type: NodeShape
comment: Enhanced shape for law enforcement corruption with gUFO quality aspects.
property:
  has value: EventType
  message: Must be classified as gUFO EventType
  min count: 1
  path: type
  severity: Violation
property:
  datatype: string
  in: minor
  in: moderate
  in: serious
  in: severe
  in: extreme
  max count: 1
  message: Corruption severity should be specified using standard levels
  path: hasCorruptionSeverity
  severity: Warning
property:
  datatype: string
  in: low
  in: moderate
  in: high
  in: severe
  in: devastating
  max count: 1
  message: Corruption impact should be assessed
  path: hasCorruptionImpact
  severity: Warning
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Victim vulnerability should be measured (0.0-1.0)
  min inclusive: 0.0
  path: hasVictimVulnerability
  severity: Info
property:
  datatype: nonNegativeInteger
  message: Victim count must be at least 1
  min inclusive: 1
  path: victimCount
  severity: Warning
property:
  datatype: nonNegativeInteger
  message: Corruption duration should be specified
  min inclusive: 0
  path: corruptionDuration
  severity: Info
property:
  datatype: string
  in: poor
  in: fair
  in: good
  in: excellent
  in: validated
  max count: 1
  message: Data quality should be assessed
  path: hasDataQuality
  severity: Info
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Data completeness should be measured
  min inclusive: 0.0
  path: hasDataCompleteness
  severity: Info
property:
  datatype: string
  in: none
  in: basic
  in: standard
  in: comprehensive
  in: full_verification
  max count: 1
  message: Validation level should be specified
  path: hasValidationLevel
  severity: Info
target class: LawEnforcementCorruption

Officer Career Temporal Shape
type: NodeShape
comment: Validates temporal aspects of officer corruption career.
property:
  datatype: nonNegativeInteger
  max inclusive: 50
  message: Years of service should be reasonable (0-50 years)
  min inclusive: 0
  path: yearsOfService
  severity: Warning
property:
  datatype: nonNegativeInteger
  message: Corruption duration should be specified in months
  min inclusive: 0
  path: corruptionDuration
  severity: Info
target class: CorruptLawEnforcementOfficer

Officer Participation Shape
type: NodeShape
comment: Validates participation of officers in corruption activities.
property:
  class: LawEnforcementCorruption
  message: Corrupt officer must participate in at least one corruption activity
  min count: 1
  path: participatesIn
  severity: Violation
target class: CorruptLawEnforcementOfficer

Position of Authority Abuse Shape
type: NodeShape
comment: Enhanced shape for position of authority abuse with abuse degree and intimidation assessments.
property:
  has value: EventType
  message: Must be classified as gUFO EventType
  min count: 1
  path: type
  severity: Violation
property:
  datatype: string
  in: minimal
  in: moderate
  in: extensive
  in: systematic
  in: comprehensive
  max count: 1
  message: Authority abuse degree should be assessed
  path: hasAuthorityAbuseDegree
  severity: Warning
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Intimidation factor should be measured
  min inclusive: 0.0
  path: hasIntimidationFactor
  severity: Info
target class: PositionOfAuthorityAbuse

Qualified Corruption Participation Shape
type: NodeShape
comment: Validates qualified participation relationships in corruption according to gUFO patterns.
property:
  class: CorruptLawEnforcementOfficer
  max count: 1
  message: Participation situation must concern exactly one corrupt officer
  min count: 1
  path: concernsCorruptOfficer
  severity: Violation
property:
  datatype: dateTimeStamp
  max count: 1
  message: Participation situation should have temporal boundaries
  path: hasBeginPointInXSDDateTimeStamp
  severity: Info
target class: ParticipationSituation

Trust Betrayal Rule
type: NodeShape
comment: Complete trust betrayal should correlate with high position exploitation.
sparql:
  message: Complete trust betrayal should have high position exploitation
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/law-enforcement-corruption#
      prefix: cacontology-corruption
  select: SELECT $this WHERE { $this cacontology-corruption:hasTrustBetrayalLevel "complete" . OPTIONAL { $this cacontology-corruption:hasPositionExploitationLevel ?exploitation . FILTER (?exploitation >= 0.7) } FILTER (!BOUND(?exploitation)) }
  severity: Warning
target class: CorruptLawEnforcementOfficer

Uniform Based Exploitation Shape
type: NodeShape
comment: Enhanced shape for uniform-based exploitation with authority enhancement quality aspects.
property:
  has value: EventType
  message: Must be classified as gUFO EventType
  min count: 1
  path: type
  severity: Violation
property:
  datatype: string
  in: minimal
  in: moderate
  in: significant
  in: substantial
  in: maximum
  max count: 1
  message: Authority enhancement level should be assessed
  path: hasAuthorityEnhancementLevel
  severity: Warning
property:
  datatype: string
  in: police
  in: military
  in: state_trooper
  in: sheriff
  in: federal
  max count: 1
  message: Uniform type should be specified
  path: uniformType
  severity: Warning
property:
  datatype: boolean
  max count: 1
  message: Whether uniform was displayed should be recorded
  path: uniformDisplayed
  severity: Info
target class: UniformBasedExploitation

Amendment Process
type: EventType
type: Class
comment: Process of amending legislation.
subclass of: LegislativeProcess
Is Country Specific: false

Annual Review
type: EventType
type: Class
comment: Annual compliance review process.
subclass of: ComplianceProcess
Is Country Specific: false

Bill Sponsor
type: Class
comment: Legislator who introduces or sponsors legislation.
subclass of: LegislativeRole
Is Country Specific: false

CSAM Criminalization
type: Kind
type: Class
comment: Legislation criminalizing child sexual abuse material.
subclass of: Object
subclass of: UcoObject

Certification Process
type: EventType
type: Class
comment: Process for obtaining compliance certification.
subclass of: ComplianceProcess
Is Country Specific: false

Child Trafficking Law
type: Kind
type: Class
comment: Legislation addressing child trafficking crimes.
subclass of: Object
subclass of: UcoObject

Committee Member
type: Class
comment: Member of a legislative committee.
subclass of: LegislativeRole
Is Country Specific: false

Compliance Benchmark
type: Kind
type: Class
comment: Benchmark for measuring legal compliance.
subclass of: Object
subclass of: UcoObject

Grant Compliance
type: EventType
type: Class
comment: Compliance with grant requirements.
subclass of: ComplianceProcess
Is Country Specific: false

Grassroots Advocacy
type: EventType
type: Class
comment: Mobilizing public support for advocacy goals.
subclass of: AdvocacyProcess
Is Country Specific: false

Harmonization Initiative
type: Class
comment: Organized effort to harmonize laws across jurisdictions.
subclass of: Situation
Is Country Specific: false

Impact Assessment
type: EventType
type: Class
comment: Assessing the impact of proposed legislation.
subclass of: AdvocacyProcess
Is Country Specific: false

Jurisdictional Coordination
type: Kind
type: Class
comment: Framework for coordinating across legal jurisdictions.
subclass of: Object
subclass of: UcoObject

Jurisdictional Variation
type: Kind
type: Class
comment: Variation in legal approaches across jurisdictions.
subclass of: Object
subclass of: UcoObject

Law Enforcement Officer
type: Class
comment: Officer involved in child safety investigations.
subclass of: LegislativeRole
Is Country Specific: false

Legislative Advocate
type: Class
comment: Person who advocates for legislative change.
subclass of: LegislativeRole
Is Country Specific: false

Legislative Drafting
type: EventType
type: Class
comment: Process of drafting child protection legislation.
subclass of: Event
subclass of: Action

Legislative Education
type: EventType
type: Class
comment: Educating legislators on issues.
subclass of: AdvocacyProcess
Is Country Specific: false

Legislator
type: Class
comment: Elected member of a legislative body.
subclass of: LegislativeRole
Is Country Specific: false

Mandatory Reporting
type: EventType
type: Class
comment: Required reporting to authorities.
subclass of: ComplianceProcess
Is Country Specific: false

Mandatory Reporting Law
type: Kind
type: Class
comment: Legislation requiring mandatory reporting of child abuse.
subclass of: Object
subclass of: UcoObject

Media Outreach
type: EventType
type: Class
comment: Engaging media to support advocacy goals.
subclass of: AdvocacyProcess
Is Country Specific: false

Minimum Standard
type: Kind
type: Class
comment: Minimum standard for child protection laws.
subclass of: Object
subclass of: UcoObject

Mutual Legal Assistance
type: Kind
type: Class
comment: Framework for mutual legal assistance between countries.
subclass of: Object
subclass of: UcoObject

Online Grooming Law
type: Kind
type: Class
comment: Legislation addressing online grooming behaviors.
subclass of: Object
subclass of: UcoObject

Policy Analyst
type: Class
comment: Person who analyzes and develops policy recommendations.
subclass of: LegislativeRole
Is Country Specific: false

Prosecutor Advocate
type: Class
comment: Prosecutor who advocates for stronger laws.
subclass of: LegislativeRole
Is Country Specific: false

Public Hearing
type: EventType
type: Class
comment: Public hearing on proposed legislation.
subclass of: LegislativeProcess
Is Country Specific: false

Stakeholder Engagement
type: EventType
type: Class
comment: Engaging stakeholders in advocacy efforts.
subclass of: AdvocacyProcess
Is Country Specific: false

Statutory Reporting
type: EventType
type: Class
comment: Reporting required by statute.
subclass of: ComplianceProcess
Is Country Specific: false

Task Force Liaison
type: Class
comment: Person who coordinates between task forces and other entities.
subclass of: LegislativeRole
Is Country Specific: false

Victim Advocate
type: Class
comment: Person who advocates on behalf of crime victims.
subclass of: LegislativeRole
Is Country Specific: false

Victim Protection Law
type: Kind
type: Class
comment: Legislation protecting child victims.
subclass of: Object
subclass of: UcoObject

addresses gap
type: ObjectProperty
comment: Links a statute to the legal gap it addresses.
domain: Statute
range: LegalFrameworkGap

advocates for
type: ObjectProperty
comment: Links an actor to legislation they advocate for.
domain: Person
range: LegislativeInstrument

affiliated with
type: ObjectProperty
comment: Links an actor to an organization they are affiliated with.
domain: Person
range: Organization

assessed by
type: ObjectProperty
comment: Assessment conducted on the legislation.
domain: NationalLegislation
range: LegislativeAssessment

based on model
type: ObjectProperty
comment: Model law on which national legislation is based.
domain: NationalLegislation
range: CSAMModelLaw

compliance date
type: DatatypeProperty
comment: Date of compliance assessment.
domain: Jurisdiction
range: date

Country Code
type: AnnotationProperty
comment: ISO 3166-1 alpha-2 country code.

coverage percentage
type: DatatypeProperty
comment: Percentage of legal coverage achieved (0.0-100.0).
domain: LegalCoverageAssessment
range: decimal

creates incentive conflict
type: ObjectProperty
source: Community & Intelligence Beyond Detection (Global Emancipation Network), 2026-02-10.
comment: Links a statute to a policy incentive-conflict situation it creates or reinforces (e.g., the 'knowing paradox').
domain: Statute
range: KnowingParadox

documents good faith effort
type: ObjectProperty
source: Community & Intelligence Beyond Detection (Global Emancipation Network), 2026-02-10.
comment: Links a compliance documentation artifact to the organization whose good-faith effort it documents.
domain: ComplianceDocumentationArtifact
range: Organization

effectiveness score
type: DatatypeProperty
comment: Effectiveness score of legal framework (0.0-1.0).
domain: LegalEffectiveness
range: decimal

enables extradition
type: ObjectProperty
comment: Law enforcement action enabled by extradition agreement.
domain: ExtraditionAgreement
range: InternationalLawEnforcement

gap severity
type: DatatypeProperty
comment: Severity of legal gap (1-5 scale).
domain: LegalFrameworkGap
range: integer

gap type
type: DatatypeProperty
comment: Type of legal gap (e.g., missing_law, weak_enforcement, outdated).
domain: LegalFrameworkGap
range: string

harmonization progress
type: DatatypeProperty
comment: Progress toward policy harmonization (0.0-1.0).
domain: HarmonizationProgress
range: decimal

harmonized with
type: ObjectProperty
comment: Links laws that are harmonized across jurisdictions.
domain: Statute
range: Statute

has capacity level
type: DatatypeProperty
comment: Legal capacity level (insufficient, basic, adequate, strong, advanced) - gUFO quality aspect.
domain: CapacityBuilding
range: string
sub property of: hasQuality

has coverage completeness
type: DatatypeProperty
comment: Completeness of legal coverage (0.0 to 1.0) - gUFO quality aspect.
domain: LegalCoverageAssessment
range: double
sub property of: hasQuality

has development progress
type: DatatypeProperty
comment: Progress in policy development (0.0 to 1.0) - gUFO quality aspect.
domain: PolicyDevelopment
range: double
sub property of: hasQuality

has extradition efficiency
type: DatatypeProperty
comment: Efficiency of extradition processes (0.0 to 1.0) - gUFO quality aspect.
domain: ExtraditionAgreement
range: double
sub property of: hasQuality

has law type
type: ObjectProperty
comment: Links a jurisdiction to child safety law types it has enacted.
domain: Jurisdiction
range: UcoObject

has safe harbor
type: ObjectProperty
source: Community & Intelligence Beyond Detection (Global Emancipation Network), 2026-02-10.
comment: Links a statute to a safe harbor provision it establishes.
domain: Statute
range: SafeHarbor

has standard compliance
type: DatatypeProperty
comment: Compliance with international standards (non_compliant, partially_compliant, substantially_compliant, fully_compliant) - gUFO quality aspect.
domain:
  union of: InternationalStandard
  union of: BestPractice
range: string
sub property of: hasQuality

has statute
type: ObjectProperty
comment: Links a jurisdiction to its enacted statutes.
domain: Jurisdiction
range: Statute

identifies gap
type: ObjectProperty
comment: Gap identified through assessment.
domain: LegislativeAssessment
range: LegalFrameworkGap

implements model law
type: ObjectProperty
comment: Links a statute to a model law it implements.
domain: Statute
range: CSAMModelLaw

is assessed by
type: ObjectProperty
comment: Links legislation to assessment activities - gUFO participation relation.
domain: NationalLegislation
range: LegislativeAssessment
sub property of: participatedIn

Is Country Specific
type: AnnotationProperty
comment: True if this concept is specific to a particular country's legal system.

meets standard
type: DatatypeProperty
comment: Whether jurisdiction meets the minimum standard.
domain: Jurisdiction
range: boolean

parent jurisdiction
type: ObjectProperty
comment: Links a jurisdiction to its parent (e.g., state to federal).
domain: Jurisdiction
range: Jurisdiction

part of framework
type: ObjectProperty
comment: Regional framework of which legislation is part.
domain: NationalLegislation
range: RegionalFramework

produces compliance documentation
type: ObjectProperty
source: Community & Intelligence Beyond Detection (Global Emancipation Network), 2026-02-10.
comment: Links a compliance process to compliance documentation artifacts produced (documentation trails, audit evidence).
domain: ComplianceProcess
range: ComplianceDocumentationArtifact

provides assistance
type: ObjectProperty
comment: Technical assistance provided for policy development.
domain: TechnicalAssistance
range: PolicyDevelopment

provides testimony
type: ObjectProperty
comment: Links an actor to legislation they testified about.
domain: Person
range: LegislativeInstrument

represents jurisdiction
type: ObjectProperty
comment: Links an actor to the jurisdiction they represent.
domain: Person
range: Jurisdiction

stands in qualified compliance
type: ObjectProperty
comment: Links entities to qualified compliance situations - gUFO qualified relation.
domain:
  union of: NationalLegislation
  union of: Location
range: ParticipationSituation

Advocacy Process Shape
type: NodeShape
comment: Validates advocacy process classes as gUFO EventTypes.
property:
  has value: EventType
  message: Advocacy processes must be classified as gUFO EventType
  min count: 1
  path: type
  severity: Violation
target class: AdvocacyProcess

Age Verification Law Shape
type: NodeShape
property:
  has value: Kind
  message: Must be classified as gUFO Kind
  min count: 1
  path: type
  severity: Violation
target class: AgeVerificationLaw

Assessment Temporal Shape
type: NodeShape
comment: Validates temporal constraints for legal assessments and reviews.
property:
  datatype: dateTime
  max count: 1
  message: Assessments should specify start time
  path: startTime
  severity: Info
property:
  datatype: dateTime
  max count: 1
  message: Assessments should specify end time
  path: endTime
  severity: Info
sparql:
  message: Assessment end time must be after start time
  prefixes:
    declare:
      namespace: https://ontology.unifiedcyberontology.org/uco/core/
      prefix: uco-core
  select: SELECT $this WHERE { $this uco-core:startTime ?start . $this uco-core:endTime ?end . FILTER (?end <= ?start) }
  severity: Violation
target class: GlobalLegalReview
target class: LegislativeAssessment

Audit Process Shape
type: NodeShape
property:
  has value: EventType
  message: Audit process must be classified as gUFO EventType
  min count: 1
  path: type
  severity: Violation
target class: AuditProcess

Bill Drafting Shape
type: NodeShape
property:
  has value: EventType
  message: Bill drafting must be classified as gUFO EventType
  min count: 1
  path: type
  severity: Violation
target class: BillDrafting

CSAM Model Law Shape
type: NodeShape
comment: Enhanced validation shape for CSAM model legislation with gUFO quality aspects.
property:
  has value: Kind
  message: Must be classified as gUFO Kind
  min count: 1
  path: type
  severity: Violation
property:
  datatype: string
  in: ineffective
  in: limited
  in: moderate
  in: effective
  in: highly_effective
  max count: 1
  message: Legal effectiveness should be assessed
  path: hasLegalEffectiveness
  severity: Warning
property:
  datatype: string
  in: poor
  in: fair
  in: good
  in: excellent
  in: validated
  max count: 1
  message: Data quality should be assessed
  path: hasDataQuality
  severity: Info
property:
  comment: Model law must have a descriptive name.
  datatype: string
  max count: 1
  max length: 200
  min count: 1
  min length: 5
  path: name
property:
  comment: Model law must have detailed description.
  datatype: string
  max length: 2000
  min count: 1
  min length: 50
  path: description
property:
  comment: Legal system type for model law applicability.
  datatype: string
  in: common_law
  in: civil_law
  in: religious_law
  in: mixed
  in: universal
  max count: 1
  path: legalSystemType
target class: CSAMModelLaw

Child Exploitation Law Shape
type: NodeShape
property:
  has value: Kind
  message: Must be classified as gUFO Kind
  min count: 1
  path: type
  severity: Violation
target class: ChildExploitationLaw

Coalition Building Shape
type: NodeShape
property:
  has value: EventType
  message: Coalition building must be classified as gUFO EventType
  min count: 1
  path: type
  severity: Violation
target class: CoalitionBuilding

Committee Review Shape
type: NodeShape
property:
  has value: EventType
  message: Committee review must be classified as gUFO EventType
  min count: 1
  path: type
  severity: Violation
target class: CommitteeReview

Compliance Documentation Artifact Shape
type: NodeShape
comment: Validates compliance documentation artifacts and their verification status.
property:
  has value: Kind
  message: Compliance documentation artifacts must be classified as gUFO Kind
  min count: 1
  path: type
  severity: Violation
property:
  datatype: string
  in: verified
  in: unverified
  in: contested
  in: unknown
  max count: 1
  message: Verification status must be from allowed list when present.
  min count: 0
  path: verificationStatus
  severity: Info
target class: ComplianceDocumentationArtifact

Compliance Intelligence Framework Shape
type: NodeShape
comment: Validates compliance intelligence framework objects as gUFO Kind.
property:
  has value: Kind
  message: Compliance intelligence frameworks must be classified as gUFO Kind
  min count: 1
  path: type
  severity: Violation
target class: ComplianceIntelligenceFramework

Compliance Process Shape
type: NodeShape
comment: Validates compliance process classes as gUFO EventTypes.
property:
  has value: EventType
  message: Compliance processes must be classified as gUFO EventType
  min count: 1
  path: type
  severity: Violation
target class: ComplianceProcess

Comprehensive Harmonization Rule
type: NodeShape
comment: Comprehensive harmonization should involve strong treaty frameworks.
sparql:
  message: Comprehensive harmonization should involve strong treaty frameworks
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/legal-harmonization#
      prefix: cacontology-legal
  select: SELECT $this WHERE { $this cacontology-legal:hasHarmonizationDegree ?degree . FILTER (?degree IN ("comprehensive", "complete")) OPTIONAL { ?treaty cacontology-legal:facilitatesCooperation ?cooperation . ?cooperation rdf:type cacontology-legal:InternationalLawEnforcement . ?treaty cacontology-legal:hasTreatyStrength ?strength . FILTER (?strength IN ("binding", "comprehensive")) } FILTER (!BOUND(?strength)) }
  severity: Warning
target class: PolicyHarmonization

Correspondence Shape
type: NodeShape
comment: Validates correspondence between actors.
property:
  class: LegislativeInstrument
  message: Correspondence should reference a legislative instrument
  min count: 1
  path: correspondsAbout
  severity: Info
target class: Correspondence

Critical Gap Reform Rule
type: NodeShape
comment: Critical gaps should require urgent reform.
sparql:
  message: Critical gaps should require urgent reform
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/legal-harmonization#
      prefix: cacontology-legal
  select: SELECT $this WHERE { $this cacontology-legal:hasGapSeverity ?severity . FILTER (?severity IN ("critical", "systemic")) OPTIONAL { $this cacontology-legal:requiresReform ?reform . ?reform cacontology-legal:hasReformUrgency ?urgency . FILTER (?urgency IN ("urgent", "critical")) } FILTER (!BOUND(?urgency)) }
  severity: Warning
target class: LegalFrameworkGap

Data Protection for Minors Law Shape
type: NodeShape
property:
  has value: Kind
  message: Must be classified as gUFO Kind
  min count: 1
  path: type
  severity: Violation
target class: DataProtectionForMinorsLaw

Floor Vote Shape
type: NodeShape
property:
  has value: EventType
  message: Floor vote must be classified as gUFO EventType
  min count: 1
  path: type
  severity: Violation
target class: FloorVote

Full Compliance Alignment Rule
type: NodeShape
comment: Full legal alignment should have high compliance levels.
sparql:
  message: Full legal alignment should have high compliance levels
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/legal-harmonization#
      prefix: cacontology-legal
  select: SELECT $this WHERE { $this cacontology-legal:legalAlignmentLevel "full" . OPTIONAL { $this cacontology-legal:hasComplianceLevel ?level . FILTER (?level >= 0.8) } FILTER (!BOUND(?level)) }
  severity: Warning
target class: LegalCompliance

Global Legal Review Shape
type: NodeShape
comment: Enhanced validation shape for global legal reviews with gUFO integration.
property:
  has value: Kind
  message: Must be classified as gUFO Kind
  min count: 1
  path: type
  severity: Violation
property:
  comment: Number of countries analyzed (1-196).
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 196
  min count: 1
  min inclusive: 1
  path: countriesAnalyzed
property:
  comment: Review name must include 'Global', 'Review', and year.
  datatype: string
  max count: 1
  min count: 1
  path: name
  pattern: ^Global.*Review.*[0-9]{4}$
target class: GlobalLegalReview

High Effectiveness Legislation Rule
type: NodeShape
comment: Highly effective legislation should have excellent implementation quality.
sparql:
  message: Highly effective legislation should have excellent implementation quality
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/legal-harmonization#
      prefix: cacontology-legal
  select: SELECT $this WHERE { $this cacontology-legal:hasLegalEffectiveness "highly_effective" . OPTIONAL { $this cacontology-legal:hasImplementationQuality ?quality . FILTER (?quality IN ("excellent", "exemplary")) } FILTER (!BOUND(?quality)) }
  severity: Warning
target class: NationalLegislation

International Cooperation Framework Rule
type: NodeShape
comment: International law enforcement must be supported by proper legal framework.
sparql:
  message: International law enforcement must be supported by treaty or extradition framework
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/legal-harmonization#
      prefix: cacontology-legal
  select: SELECT $this WHERE { $this a cacontology-legal:InternationalLawEnforcement . FILTER NOT EXISTS { { ?treaty cacontology-legal:facilitatesCooperation $this . } UNION { ?agreement cacontology-legal:enablesExtradition $this . } } }
  severity: Violation
target class: InternationalLawEnforcement

International Cooperation Participation Shape
type: NodeShape
comment: Validates participation constraints for international law enforcement cooperation.
property:
  class: Organization
  message: International cooperation should involve multiple organizations
  min count: 2
  path:
    inverse path: participatesIn
  severity: Warning
target class: InternationalLawEnforcement

International Law Enforcement Shape
type: NodeShape
comment: Enhanced shape for international law enforcement with cooperation intensity assessment.
property:
  has value: EventType
  message: Must be classified as gUFO EventType
  min count: 1
  path: type
  severity: Violation
property:
  datatype: string
  in: minimal
  in: moderate
  in: substantial
  in: intensive
  in: comprehensive
  max count: 1
  message: Cooperation intensity should be assessed
  path: hasCooperationIntensity
  severity: Warning
target class: InternationalLawEnforcement

Jurisdiction With Gaps Shape
type: NodeShape
comment: Validates jurisdictions that have identified legal gaps.
property:
  class: LegalFrameworkGap
  message: Jurisdiction should reference valid legal framework gaps
  min count: 1
  path: hasLegalGap
  severity: Info
target subjects of: hasLegalGap

Jurisdiction With Statutes Shape
type: NodeShape
comment: Validates jurisdictions with legal harmonization properties.
property:
  datatype: string
  in: full
  in: partial
  in: none
  max count: 1
  message: Harmonization level should be one of: full, partial, none
  path: hasHarmonizationLevel
  severity: Info
property:
  datatype: decimal
  max count: 1
  max inclusive: 1.0
  message: Compliance score should be between 0.0 and 1.0
  min inclusive: 0.0
  path: hasComplianceScore
  severity: Info
property:
  datatype: string
  in: federal
  in: state
  in: territory
  in: local
  in: national
  in: regional
  max count: 1
  message: Jurisdiction type should be one of: federal, state, territory, local, national, regional
  path: jurisdictionType
  severity: Info
target class: Jurisdiction

Knowing Paradox Shape
type: NodeShape
comment: Validates knowing paradox as a gUFO Situation.
property:
  message: Knowing paradox should extend gUFO Situation.
  path: subClassOf
  qualified min count: 1
  qualified value shape:
    class: Situation
  severity: Info
target class: KnowingParadox

Legal Compliance Shape
type: NodeShape
comment: Enhanced shape for legal compliance situations with compliance level assessment.
property:
  has value: SituationType
  message: Must be classified as gUFO SituationType
  min count: 1
  path: type
  severity: Violation
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Compliance level should be measured (0.0-1.0)
  min inclusive: 0.0
  path: hasComplianceLevel
  severity: Warning
property:
  comment: Legal alignment level must be specified.
  datatype: string
  in: none
  in: partial
  in: substantial
  in: full
  max count: 1
  min count: 1
  path: legalAlignmentLevel
property:
  comment: Compliance must be measured by specific metrics.
  class: ComplianceMetrics
  min count: 1
  path: measuredBy
target class: LegalCompliance

Legal Framework Composition Shape
type: NodeShape
comment: Validates compositional structure of legal frameworks following gUFO part-whole patterns.
property:
  class: NationalLegislation
  message: Regional framework must include legislation from at least three countries
  min count: 3
  path:
    inverse path: isComponentOf
  severity: Violation
target class: RegionalFramework

Legal Framework Gap Shape
type: NodeShape
comment: Enhanced shape for legal framework gaps with gap severity assessment.
property:
  has value: Kind
  message: Must be classified as gUFO Kind
  min count: 1
  path: type
  severity: Violation
property:
  datatype: string
  in: minor
  in: moderate
  in: major
  in: critical
  in: systemic
  max count: 1
  message: Gap severity should be assessed
  path: hasGapSeverity
  severity: Warning
property:
  comment: Gap severity must be specified.
  datatype: string
  in: minor
  in: moderate
  in: major
  in: critical
  max count: 1
  min count: 1
  path: policyGapSeverity
property:
  comment: Gap must have detailed description.
  datatype: string
  max length: 1000
  min count: 1
  min length: 20
  path: description
property:
  comment: Gap must require specific legal reform.
  class: LegalReform
  min count: 1
  path: requiresReform
target class: LegalFrameworkGap

Legal Framework Temporal Shape
type: NodeShape
comment: Validates temporal aspects of legal framework creation and evolution.
property:
  datatype: dateTime
  max count: 1
  message: Legal frameworks should have creation timestamp
  path: createdTime
  severity: Info
property:
  datatype: dateTime
  max count: 1
  message: Legal frameworks may have modification timestamp
  path: modifiedTime
  severity: Info
target class: ExtraditionAgreement
target class: NationalLegislation
target class: TreatyFramework

Legal Harmonization Data Quality Shape
type: NodeShape
comment: Comprehensive gUFO quality validation for legal harmonization data.
property:
  datatype: string
  in: poor
  in: fair
  in: good
  in: excellent
  in: validated
  max count: 1
  message: Data quality level should be assessed
  path: hasDataQuality
  severity: Warning
sparql:
  message: Excellent data quality should have high assessment reliability
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/legal-harmonization#
      prefix: cacontology-legal
  select: SELECT $this WHERE { $this cacontology-legal:hasDataQuality "excellent" . OPTIONAL { $this cacontology-legal:hasAssessmentReliability ?reliability . FILTER (?reliability >= 0.8) } FILTER (!BOUND(?reliability)) }
  severity: Warning
target class: ComplianceMetrics
target class: GlobalLegalReview
target class: LegislativeAssessment

Legal Harmonization Participation Shape
type: NodeShape
comment: Validates participation constraints for legal harmonization activities following gUFO participation patterns.
property:
  class: Location
  message: Policy harmonization must involve at least two countries
  min count: 2
  path:
    inverse path: participatesIn
  severity: Violation
target class: PolicyHarmonization

Legal Object Type Validation Shape
type: NodeShape
comment: Validates that legal objects are properly classified as gUFO Objects and Kinds.
property:
  has value: Kind
  max count: 1
  message: Legal objects must be classified as gUFO Kind
  min count: 1
  path: type
  severity: Violation
property:
  message: Legal objects must extend gUFO Object
  path: subClassOf
  qualified min count: 1
  qualified value shape:
    class: Object
  severity: Violation
target class: CSAMModelLaw
target class: NationalLegislation
target class: RegionalFramework
target class: TreatyFramework

Legal Process Temporal Shape
type: NodeShape
comment: Validates temporal constraints for legal processes according to gUFO framework.
property:
  datatype: dateTimeStamp
  max count: 1
  message: Legal processes should specify start time
  path: hasBeginPointInXSDDateTimeStamp
  severity: Info
property:
  datatype: dateTimeStamp
  max count: 1
  message: Legal processes should specify end time
  path: hasEndPointInXSDDateTimeStamp
  severity: Info
sparql:
  message: Legal process end time must be after start time
  prefixes:
    declare:
      namespace: http://purl.org/nemo/gufo#
      prefix: gufo
  select: SELECT $this WHERE { $this gufo:hasBeginPointInXSDDateTimeStamp ?start . $this gufo:hasEndPointInXSDDateTimeStamp ?end . FILTER (?end <= ?start) }
  severity: Violation
target class: LegalReform
target class: PolicyDevelopment
target class: PolicyHarmonization

Legal Process Type Validation Shape
type: NodeShape
comment: Validates that legal processes are properly classified as gUFO Events and EventTypes.
property:
  has value: EventType
  max count: 1
  message: Legal processes must be classified as gUFO EventType
  min count: 1
  path: type
  severity: Violation
property:
  message: Legal processes must extend gUFO Event
  path: subClassOf
  qualified min count: 1
  qualified value shape:
    class: Event
  severity: Violation
property:
  datatype: dateTimeStamp
  max count: 1
  message: Legal processes should have temporal boundaries
  path: hasBeginPointInXSDDateTimeStamp
  severity: Warning
target class: InternationalLawEnforcement
target class: LegalReform
target class: PolicyDevelopment
target class: PolicyHarmonization

Legal Reform Shape
type: NodeShape
comment: Enhanced shape for legal reform processes with urgency assessment.
property:
  has value: EventType
  message: Must be classified as gUFO EventType
  min count: 1
  path: type
  severity: Violation
property:
  datatype: string
  in: low
  in: moderate
  in: high
  in: urgent
  in: critical
  max count: 1
  message: Reform urgency should be assessed
  path: hasReformUrgency
  severity: Warning
property:
  comment: Reform priority must be specified.
  datatype: string
  in: low
  in: medium
  in: high
  in: urgent
  max count: 1
  min count: 1
  path: reformPriority
property:
  comment: Reform name must contain 'Reform'.
  datatype: string
  max count: 1
  min count: 1
  path: name
  pattern: .*Reform.*
target class: LegalReform

Legal Situation Type Validation Shape
type: NodeShape
comment: Validates that legal situations are properly classified as gUFO Situations and SituationTypes.
property:
  has value: SituationType
  max count: 1
  message: Legal situations must be classified as gUFO SituationType
  min count: 1
  path: type
  severity: Violation
property:
  message: Legal situations must extend gUFO Situation
  path: subClassOf
  qualified min count: 1
  qualified value shape:
    class: Situation
  severity: Violation
target class: LegalCompliance
target class: LegalSystemCompatibility

Legislative Assessment Shape
type: NodeShape
comment: Enhanced shape for legislative assessments with reliability assessment.
property:
  has value: Kind
  message: Must be classified as gUFO Kind
  min count: 1
  path: type
  severity: Violation
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Assessment reliability should be measured
  min inclusive: 0.0
  path: hasAssessmentReliability
  severity: Info
property:
  datatype: string
  in: poor
  in: fair
  in: good
  in: excellent
  in: validated
  max count: 1
  message: Data quality should be assessed
  path: hasDataQuality
  severity: Info
property:
  comment: Compliance score must be between 0.0 and 1.0.
  datatype: decimal
  max count: 1
  max inclusive: 1.0
  min count: 1
  min inclusive: 0.0
  path: legislativeCompliance
property:
  comment: Assessment must have creation timestamp.
  datatype: dateTime
  max count: 1
  min count: 1
  path: createdTime
target class: LegislativeAssessment

Legislative Instrument Shape
type: NodeShape
comment: Validates legislative instruments (bills, resolutions).
property:
  datatype: string
  message: Legislative instrument should have a name
  min count: 1
  path: name
  severity: Warning
property:
  class: LegislativeProcess
  message: Legislative instrument should involve at least one process
  min count: 1
  path: involvesProcess
  severity: Info
target class: LegislativeInstrument

Legislative Process Shape
type: NodeShape
comment: Validates legislative process classes as gUFO EventTypes.
property:
  has value: EventType
  message: Legislative processes must be classified as gUFO EventType
  min count: 1
  path: type
  severity: Violation
property:
  datatype: string
  in: pending
  in: in_progress
  in: completed
  in: failed
  max count: 1
  message: Process status should be one of: pending, in_progress, completed, failed
  path: processStatus
  severity: Warning
property:
  datatype: date
  max count: 1
  message: Process should have a date
  path: processDate
  severity: Info
target class: LegislativeProcess

Legislative Role Shape
type: NodeShape
comment: Validates legislative role classes and instances.
property:
  message: Legislative roles must extend gUFO Role
  path: subClassOf
  qualified min count: 1
  qualified value shape:
    class: Role
  severity: Violation
target class: LegislativeRole

National Legislation Shape
type: NodeShape
comment: Enhanced shape for national legislation with implementation quality and effectiveness assessments.
property:
  has value: Kind
  message: Must be classified as gUFO Kind
  min count: 1
  path: type
  severity: Violation
property:
  datatype: string
  in: poor
  in: fair
  in: good
  in: excellent
  in: exemplary
  max count: 1
  message: Implementation quality should be assessed
  path: hasImplementationQuality
  severity: Warning
property:
  datatype: string
  in: ineffective
  in: limited
  in: moderate
  in: effective
  in: highly_effective
  max count: 1
  message: Legal effectiveness should be assessed
  path: hasLegalEffectiveness
  severity: Warning
property:
  datatype: string
  in: weak
  in: moderate
  in: strong
  in: very_strong
  in: comprehensive
  max count: 1
  message: Legal robustness should be assessed
  path: hasLegalRobustness
  severity: Info
property:
  comment: Implementation status must be specified.
  datatype: string
  in: drafted
  in: enacted
  in: enforced
  max count: 1
  min count: 1
  path: implementationStatus
property:
  comment: Legal system type classification.
  datatype: string
  in: common_law
  in: civil_law
  in: religious_law
  in: mixed
  max count: 1
  path: legalSystemType
property:
  comment: National legislation must apply to exactly one country.
  class: Location
  max count: 1
  min count: 1
  path: appliesToCountry
target class: NationalLegislation

Online Safety Law Shape
type: NodeShape
property:
  has value: Kind
  message: Must be classified as gUFO Kind
  min count: 1
  path: type
  severity: Violation
target class: OnlineSafetyLaw

Person With Role Shape
type: NodeShape
comment: Validates persons with legislative roles.
property:
  class: Role
  message: Person should have at least one legislative role
  min count: 1
  path: hasRole
  severity: Warning
target subjects of: hasRole

Platform Accountability Law Shape
type: NodeShape
property:
  has value: Kind
  message: Must be classified as gUFO Kind
  min count: 1
  path: type
  severity: Violation
target class: PlatformAccountabilityLaw

Policy Harmonization Shape
type: NodeShape
comment: Enhanced shape for policy harmonization with harmonization degree assessment.
property:
  has value: EventType
  message: Must be classified as gUFO EventType
  min count: 1
  path: type
  severity: Violation
property:
  datatype: string
  in: minimal
  in: partial
  in: substantial
  in: comprehensive
  in: complete
  max count: 1
  message: Harmonization degree should be assessed
  path: hasHarmonizationDegree
  severity: Warning
target class: PolicyHarmonization

Qualified Compliance Participation Shape
type: NodeShape
comment: Validates qualified participation relationships in legal compliance according to gUFO patterns.
property:
  class: NationalLegislation
  max count: 1
  message: Participation situation must concern exactly one legal framework
  min count: 1
  path: concernsLegalFramework
  severity: Violation
target class: ParticipationSituation

Safe Harbor Shape
type: NodeShape
comment: Validates safe harbor objects and their good-faith criteria.
property:
  has value: Kind
  message: Safe harbors must be classified as gUFO Kind
  min count: 1
  path: type
  severity: Violation
property:
  datatype: string
  max count: 1
  message: Safe harbor may specify good-faith criteria as a string.
  min count: 0
  path: goodFaithCriteria
  severity: Info
property:
  class: ComplianceIntelligenceFramework
  message: Safe harbor may reference a supporting compliance intelligence framework.
  min count: 0
  path: supportedByFramework
  severity: Info
target class: SafeHarbor

Sextortion Law Shape
type: NodeShape
property:
  has value: Kind
  message: Must be classified as gUFO Kind
  min count: 1
  path: type
  severity: Violation
target class: SextortionLaw

Statute Shape
type: NodeShape
comment: Validates enacted statutes.
property:
  message: Statutes must extend gUFO Norm
  path: subClassOf
  qualified min count: 1
  qualified value shape:
    class: Norm
  severity: Violation
property:
  datatype: string
  message: Statute should have a name
  min count: 1
  path: name
  severity: Warning
target class: Statute

Technical Assistance Participation Shape
type: NodeShape
comment: Validates participation of organizations in technical assistance programs.
property:
  class: Organization
  message: Technical assistance must involve at least one organization
  min count: 1
  path:
    inverse path: participatesIn
  severity: Violation
target class: TechnicalAssistance

Testimony Submission Shape
type: NodeShape
property:
  has value: EventType
  message: Testimony submission must be classified as gUFO EventType
  min count: 1
  path: type
  severity: Violation
target class: TestimonySubmission

Treaty Framework Composition Shape
type: NodeShape
comment: Validates compositional structure of treaty frameworks.
property:
  class: NationalLegislation
  message: Treaty framework should include implementing legislation from member countries
  min count: 2
  path:
    inverse path: isComponentOf
  severity: Warning
target class: TreatyFramework

Treaty Framework Shape
type: NodeShape
comment: Enhanced shape for international treaty frameworks with strength assessment.
property:
  comment: Treaty framework must have comprehensive name.
  datatype: string
  max count: 1
  max length: 300
  min count: 1
  min length: 15
  path: name
property:
  comment: Treaty must facilitate international cooperation.
  class: InternationalLawEnforcement
  min count: 1
  path: facilitatesCooperation
property:
  comment: Multilateral treaty must apply to at least three countries.
  class: Location
  min count: 3
  path: appliesToCountry
property:
  has value: Kind
  message: Must be classified as gUFO Kind
  min count: 1
  path: type
  severity: Violation
property:
  datatype: string
  in: weak
  in: moderate
  in: strong
  in: binding
  in: comprehensive
  max count: 1
  message: Treaty strength should be assessed
  path: hasTreatyStrength
  severity: Warning
target class: TreatyFramework

Automated Evidence Distribution
type: Class
comment: Automated system for distributing evidence packages to appropriate jurisdictions based on user location and evidence strength.
subclass of: Action

CEOS Coordinated Operation
type: Class
comment: Operation coordinated by Child Exploitation and Obscenity Section (CEOS).
subclass of: NationwideOperation

Communication Protocol Shape
type: NodeShape
comment: Validation shape for communication protocol instances.
property:
  datatype: string
  in: formal_reporting
  in: informal_updates
  in: emergency_notification
  in: routine_briefing
  in: secure_messaging
  in: video_conference
  max count: 1
  message: Communication protocol must specify protocol type from the allowed list.
  min count: 1
  path: protocolType
property:
  datatype: string
  in: real_time
  in: daily
  in: weekly
  in: bi_weekly
  in: monthly
  in: as_needed
  in: emergency_only
  max count: 1
  message: Communication protocol must specify frequency from the allowed list.
  min count: 1
  path: frequency
property:
  datatype: string
  in: open
  in: restricted
  in: confidential
  in: secret
  in: top_secret
  in: compartmented
  max count: 1
  message: Communication protocol must specify security level from the allowed list.
  min count: 1
  path: securityLevel
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 50
  message: Communication protocol must have between 2 and 50 participants.
  min count: 1
  min inclusive: 2
  path: participantCount
target class: CommunicationProtocol

Compliance Visit Coordination
type: Class
comment: Coordination of multiple compliance visits across jurisdictions.
subclass of: Action

Coordinated Arrest Wave
type: Class
comment: Coordinated arrests conducted as part of larger operation.
subclass of: MultiJurisdictionalInvestigation

Coordinated Charging
type: Class
comment: Coordinated charging decisions across multiple jurisdictions to ensure consistent prosecution approach.
subclass of: Action

CoordinatesWithShape
type: PropertyShape
class: JurisdictionCoordination
description: Links operation to coordination arrangements
min count: 1
name: coordinates with
path: coordinatesWith

Coordination Consistency Shape
type: NodeShape
comment: Enhanced coordination consistency validation with gUFO quality aspects.
comment: Validates coordination consistency in multi-jurisdictional operations.
sparql:
  message: Operations with many jurisdictions should have enhanced coordination.
  select: SELECT $this WHERE { $this cacontology-multi:jurisdictionCount ?count ; cacontology-multi:coordinationLevel ?level . FILTER (?count > 10 && ?level IN ("minimal", "basic")) }
sparql:
  message: Operations with many jurisdictions should have enhanced coordination with high effectiveness (gUFO quality consistency).
  select: SELECT $this WHERE { $this cacontology-multi:jurisdictionCount ?count ; cacontology-multi:coordinationLevel ?level ; cacontology-multi:hasCoordinationEffectiveness ?effectiveness . FILTER (?count > 10 && ?level IN ("minimal", "basic")) FILTER (?effectiveness IN ("ineffective", "limited")) }
target class: MultiJurisdictionalOperation

Coordination Effectiveness Rule
type: NodeShape
comment: gUFO business rule: Effective coordination should correlate with high success rates.
sparql:
  message: Highly effective coordination should achieve success rates above 0.7 (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-multi:hasCoordinationEffectiveness "highly_effective" . $this cacontology-multi:hasSuccessRate ?rate . FILTER (?rate <= 0.7) }
target class: MultiJurisdictionalInvestigation

Coordination Phase Temporal Shape
type: NodeShape
comment: Validates gUFO temporal constraints for coordination phases.
property:
  datatype: dateTimeStamp
  max count: 1
  message: Coordination phase may have begin point timestamp.
  path: hasCoordinationPhaseBeginPoint
property:
  datatype: dateTimeStamp
  max count: 1
  message: Coordination phase may have end point timestamp.
  path: hasCoordinationPhaseEndPoint
sparql:
  message: Coordination phase end must be after begin when both are specified.
  select: SELECT $this WHERE { $this cacontology-multi:hasCoordinationPhaseBeginPoint ?start ; cacontology-multi:hasCoordinationPhaseEndPoint ?end . FILTER (?end <= ?start) }
target class: Phase

Coordination Phase Type Validation Shape
type: NodeShape
comment: Validates gUFO Phase type consistency for coordination phases.
sparql:
  message: Coordination phases must be properly typed as gUFO Phase and extend appropriate investigation classes.
  select: SELECT $this WHERE { $this rdf:type gufo:Phase . FILTER NOT EXISTS { $this rdf:type ?phaseClass . ?phaseClass rdfs:subClassOf cacontology-multi:MultiJurisdictionalInvestigation . } }
target class: Phase

Coordination Role Shape
type: NodeShape
comment: Enhanced validation shape for coordination roles with gUFO quality aspects.
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Role effectiveness must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasRoleEffectiveness
property:
  datatype: string
  in: minimal
  in: limited
  in: moderate
  in: high
  in: complete
  max count: 1
  message: Authority level must be from allowed values (gUFO quality aspect).
  path: hasAuthorityLevel
property:
  datatype: string
  in: poor
  in: slow
  in: adequate
  in: good
  in: excellent
  max count: 1
  message: Responsiveness must be from allowed values (gUFO quality aspect).
  path: hasResponsiveness
target class: Role

Coordination Role Validation Shape
type: NodeShape
comment: Validates gUFO Role type consistency for coordination roles.
sparql:
  message: Coordination roles must be properly typed as gUFO Role and extend UCO Role.
  select: SELECT $this WHERE { $this rdf:type gufo:Role . FILTER NOT EXISTS { $this rdfs:subClassOf uco-role:Role . } }
target class: Role

Coordination Structure Composition Shape
type: NodeShape
comment: Validates gUFO part-whole relationships for coordination structures.
sparql:
  message: Complex coordination must include designated lead agency and coordination roles (gUFO part-whole constraint).
  select: SELECT $this WHERE { $this rdf:type cacontology-multi:MultiJurisdictionalInvestigation . $this cacontology-multi:coordinationLevel ?level . FILTER (?level IN ("enhanced", "comprehensive", "full_integration")) FILTER NOT EXISTS { $this cacontology-multi:leadBy ?leadAgency } }
target class: MultiJurisdictionalInvestigation

Critical Information Sharing Rule
type: NodeShape
comment: gUFO business rule: Critical intelligence requires high security and real-time sharing.
sparql:
  message: Critical intelligence sharing must have high security level and timely delivery (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-multi:hasIntelligenceValue "critical" . $this cacontology-multi:hasSecurityLevel ?security . $this cacontology-multi:hasTimeliness ?timeliness . FILTER (?security IN ("low", "moderate")) FILTER (?timeliness IN ("delayed", "slow")) }
target class: InformationSharing

Cross Border Operation Shape
type: NodeShape
comment: Validation shape for cross border operation instances.
property:
  datatype: string
  in: state_border
  in: national_border
  in: international_border
  in: tribal_boundary
  in: territorial_boundary
  max count: 1
  message: Cross border operation must specify border type from the allowed list.
  min count: 1
  path: borderType
property:
  datatype: string
  in: mutual_legal_assistance
  in: extradition_treaty
  in: law_enforcement_cooperation
  in: bilateral_agreement
  in: multilateral_treaty
  max count: 1
  message: Treaty basis must be from the allowed list.
  min count: 0
  path: treatyBasis
property:
  datatype: string
  in: domestic_law
  in: international_law
  in: treaty_law
  in: bilateral_agreement
  in: memorandum_understanding
  max count: 1
  message: Cross border operation must specify legal framework from the allowed list.
  min count: 1
  path: legalFramework
target class: CrossBorderOperation

Data Quality Shape
type: NodeShape
comment: Validates data quality for multi-jurisdictional operations.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Label should be between 5 and 200 characters when provided.
  min count: 0
  min length: 5
  path: label
property:
  datatype: string
  max count: 1
  max length: 1000
  message: Comment should be between 10 and 1000 characters when provided.
  min count: 0
  min length: 10
  path: comment
target class: MultiJurisdictionalOperation

Extradition Request
type: Class
comment: Legal request to transfer suspect between jurisdictions.
subclass of: Object
subclass of: ObservableObject

Federal Agency
type: Class
comment: Law enforcement agency with federal jurisdiction.
subclass of: LawEnforcementAgency

Federal Jurisdiction
type: Class
comment: Legal authority under federal law and courts.
subclass of: Jurisdiction

Federal State Cooperation Shape
type: NodeShape
comment: Validation shape for federal state cooperation instances.
property:
  datatype: string
  in: state_police
  in: attorney_general
  in: bureau_investigation
  in: icac_task_force
  in: local_police
  in: sheriff_office
  max count: 1
  message: Federal state cooperation must specify state agency from the allowed list.
  min count: 1
  path: stateAgency
property:
  datatype: string
  in: consultation
  in: assistance
  in: joint_operation
  in: task_force
  in: full_partnership
  in: federal_takeover
  max count: 1
  message: Federal state cooperation must specify cooperation level from the allowed list.
  min count: 1
  path: cooperationLevel
property:
  datatype: string
  in: fbi
  in: dhs
  in: ice
  in: dea
  in: atf
  in: usms
  in: postal_inspection
  in: secret_service
  max count: 1
  message: Federal state cooperation must specify federal agency from the allowed list.
  min count: 1
  path: federalAgency
target class: FederalStateCooperation

High Complexity Coordination Rule
type: NodeShape
comment: gUFO business rule: Highly complex operations require enhanced coordination mechanisms.
sparql:
  message: Highly complex multi-jurisdictional operations must have enhanced or comprehensive coordination level (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-multi:hasComplexityLevel ?complexity . $this cacontology-multi:coordinationLevel ?coordination . FILTER (?complexity IN ("highly_complex", "extremely_complex")) FILTER (?coordination IN ("minimal", "basic", "standard")) }
target class: MultiJurisdictionalInvestigation

Information Sharing Agreement
type: Class
comment: Agreement governing sharing of sensitive information between agencies.
subclass of: Object
subclass of: ObservableObject

Information Sharing Participation Shape
type: NodeShape
comment: Validates gUFO participation constraints for information sharing.
sparql:
  message: Information sharing must involve at least 2 organizations (gUFO participation constraint).
  select: SELECT $this WHERE { $this rdf:type cacontology-multi:InformationSharing . { SELECT $this (COUNT(DISTINCT ?org) AS ?orgCount) WHERE { { $this cacontology-multi:sharesInformationWith ?org } UNION { ?org cacontology-multi:sharesInformationWith $this } } GROUP BY $this } FILTER (?orgCount < 1) }
target class: InformationSharing

Information Sharing Shape
type: NodeShape
comment: Enhanced validation shape for information sharing instances with gUFO quality aspects.
property:
  datatype: string
  in: intelligence_sharing
  in: evidence_sharing
  in: case_information
  in: suspect_information
  in: victim_information
  in: operational_intelligence
  max count: 1
  message: Information sharing must specify sharing type from the allowed list.
  min count: 1
  path: sharingType
property:
  datatype: string
  in: unclassified
  in: law_enforcement_sensitive
  in: confidential
  in: secret
  in: top_secret
  in: compartmented
  max count: 1
  message: Information sharing must specify classification level from the allowed list.
  min count: 1
  path: classificationLevel
property:
  datatype: string
  in: secure_database
  in: encrypted_email
  in: liaison_officer
  in: formal_request
  in: intelligence_bulletin
  in: joint_briefing
  max count: 1
  message: Information sharing must specify sharing mechanism from the allowed list.
  min count: 1
  path: sharingMechanism
property:
  datatype: boolean
  max count: 1
  message: Information sharing must specify if reciprocity is required.
  min count: 1
  path: reciprocityRequired
property:
  datatype: dateTime
  max count: 1
  message: Information sharing must specify sharing date.
  min count: 1
  path: sharingDate
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Sharing efficiency must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasSharingEfficiency
property:
  datatype: string
  in: low
  in: moderate
  in: high
  in: very_high
  in: maximum
  max count: 1
  message: Security level must be from allowed values (gUFO quality aspect).
  path: hasSecurityLevel
property:
  datatype: string
  in: delayed
  in: slow
  in: timely
  in: fast
  in: real_time
  max count: 1
  message: Timeliness must be from allowed values (gUFO quality aspect).
  path: hasTimeliness
property:
  datatype: string
  in: minimal
  in: low
  in: moderate
  in: high
  in: critical
  max count: 1
  message: Intelligence value must be from allowed values (gUFO quality aspect).
  path: hasIntelligenceValue
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Actionability must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasActionability
target class: InformationSharing

Information Synthesis Phase
type: Phase
type: Class
comment: Phase involving compilation and analysis of multi-jurisdictional evidence.
subclass of: MultiJurisdictionalInvestigation

Initial Coordination Phase
type: Phase
type: Class
comment: Phase involving initial contact and coordination between jurisdictions.
subclass of: MultiJurisdictionalInvestigation

Intelligence Sharing Shape
type: NodeShape
comment: Validation shape for intelligence sharing instances.
property:
  datatype: string
  in: tactical_intelligence
  in: strategic_intelligence
  in: operational_intelligence
  in: threat_intelligence
  in: criminal_intelligence
  in: technical_intelligence
  max count: 1
  message: Intelligence sharing must specify intelligence type from the allowed list.
  min count: 1
  path: intelligenceType
property:
  datatype: string
  in: reliable
  in: usually_reliable
  in: fairly_reliable
  in: not_usually_reliable
  in: unreliable
  in: unknown
  max count: 1
  message: Intelligence sharing must specify source reliability from the allowed list.
  min count: 1
  path: sourceReliability
property:
  datatype: string
  in: confirmed
  in: probably_true
  in: possibly_true
  in: doubtfully_true
  in: improbable
  in: cannot_be_judged
  max count: 1
  message: Intelligence sharing must specify information accuracy from the allowed list.
  min count: 1
  path: informationAccuracy
target class: IntelligenceSharing

Interagency Cooperation Rule
type: NodeShape
comment: gUFO business rule: Agencies with high cooperation willingness should have substantial resource capacity.
sparql:
  message: Agencies with high cooperation willingness should maintain substantial resource capacity (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-multi:hasCooperationWillingness ?willingness . $this cacontology-multi:hasResourceCapacity ?capacity . FILTER (?willingness > 0.8) FILTER (?capacity IN ("insufficient", "limited")) }
target class: LawEnforcementAgency

Inter-agency Cooperation Situation
type: Class
comment: Situation involving successful coordination between agencies.
subclass of: Situation

International Agency
type: Class
comment: Law enforcement agency from foreign jurisdiction.
subclass of: LawEnforcementAgency

International Jurisdiction
type: Class
comment: Legal authority in foreign countries.
subclass of: Jurisdiction

International Legal Harmonization
type: Class
comment: Harmonization of legal approaches across countries for consistent prosecution of global platform users.
subclass of: InternationalProsecutionFramework

Interstate Trafficking Network
type: Class
comment: Criminal network operating across state boundaries for trafficking.
subclass of: UcoObject

InvolvesJurisdictionShape
type: PropertyShape
class: Location
description: Links operation to jurisdictions involved
min count: 2
name: involves jurisdiction
path: involvesJurisdiction

Joint Execution Phase
type: Phase
type: Class
comment: Phase involving coordinated execution of multi-jurisdictional operations.
subclass of: MultiJurisdictionalInvestigation

Joint Investigation
type: Class
comment: Investigation conducted jointly by multiple law enforcement agencies.
subclass of: MultiJurisdictionalInvestigation

Jurisdiction Coordination Shape
type: NodeShape
comment: Validation shape for jurisdiction coordination instances.
property:
  datatype: string
  in: information_sharing
  in: resource_sharing
  in: joint_operations
  in: parallel_investigations
  in: unified_command
  in: liaison_coordination
  max count: 1
  message: Jurisdiction coordination must specify coordination type from the allowed list.
  min count: 1
  path: coordinationType
property:
  datatype: string
  in: formal_mou
  in: informal_agreement
  in: statutory_authority
  in: task_force_charter
  in: operational_protocol
  in: ad_hoc_arrangement
  max count: 1
  message: Jurisdiction coordination must specify coordination agreement from the allowed list.
  min count: 1
  path: coordinationAgreement
property:
  datatype: string
  in: secure_channels
  in: encrypted_communication
  in: liaison_officers
  in: joint_command_center
  in: regular_briefings
  in: real_time_updates
  max count: 1
  message: Jurisdiction coordination must specify communication protocol from the allowed list.
  min count: 1
  path: communicationProtocol
property:
  datatype: boolean
  max count: 1
  message: Jurisdiction coordination must specify if data sharing is enabled.
  min count: 1
  path: dataSharing
target class: JurisdictionCoordination

Jurisdictional Conflict Situation
type: Class
comment: Situation involving disputes over jurisdictional authority.
subclass of: Situation

Jurisdictional Negotiation Phase
type: Phase
type: Class
comment: Phase involving determination of lead agency and jurisdictional authority.
subclass of: MultiJurisdictionalInvestigation

Large Scale Resource Sharing Rule
type: NodeShape
comment: gUFO business rule: Large-scale resource sharing requires high availability and cost effectiveness.
sparql:
  message: High-value resource sharing must have good or better cost effectiveness (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-multi:resourceValue ?value . $this cacontology-multi:hasCostEffectiveness ?effectiveness . FILTER (?value > 500000) FILTER (?effectiveness IN ("poor", "fair")) }
target class: ResourceSharing

Law Enforcement Agency Shape
type: NodeShape
comment: Enhanced validation shape for law enforcement agency instances with gUFO quality aspects.
property:
  datatype: string
  in: limited
  in: basic
  in: standard
  in: advanced
  in: elite
  max count: 1
  message: Capability level must be from allowed values (gUFO quality aspect).
  path: hasCapabilityLevel
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Cooperation willingness must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasCooperationWillingness
property:
  datatype: string
  in: insufficient
  in: limited
  in: adequate
  in: substantial
  in: extensive
  max count: 1
  message: Resource capacity must be from allowed values (gUFO quality aspect).
  path: hasResourceCapacity
target class: LawEnforcementAgency

Legal Coordination Shape
type: NodeShape
comment: Validation shape for legal coordination instances.
property:
  datatype: string
  in: venue_determination
  in: charge_coordination
  in: plea_negotiation
  in: sentencing_coordination
  in: asset_forfeiture
  in: extradition
  max count: 1
  message: Legal coordination must specify coordination purpose from the allowed list.
  min count: 1
  path: coordinationPurpose
property:
  datatype: boolean
  max count: 1
  message: Legal coordination must specify if prosecutor is involved.
  min count: 1
  path: prosecutorInvolvement
property:
  datatype: string
  in: none
  in: venue_conflicts
  in: double_jeopardy
  in: statute_limitations
  in: jurisdictional_overlap
  in: sovereignty_issues
  max count: 1
  message: Jurisdictional issues must be from the allowed list.
  min count: 0
  path: jurisdictionalIssues
property:
  datatype: string
  in: negotiation
  in: mediation
  in: arbitration
  in: court_determination
  in: administrative_ruling
  in: policy_guidance
  max count: 1
  message: Resolution mechanism must be from the allowed list.
  min count: 0
  path: resolutionMechanism
target class: LegalCoordination

Liaison Officer
type: Role
type: Class
comment: Officer responsible for communication between agencies.
subclass of: Role

Local Agency
type: Class
comment: Law enforcement agency with local jurisdiction (city, county, municipal).
subclass of: LawEnforcementAgency

Local Jurisdiction
type: Class
comment: Legal authority at local level (city, county, municipal).
subclass of: Jurisdiction

Mass User Jurisdiction Mapping
type: Class
comment: Mapping of massive user bases to appropriate jurisdictions for prosecution based on location and legal frameworks.
subclass of: Action

Multi-Agency Operation Composition Shape
type: NodeShape
comment: Validates gUFO part-whole relationships for multi-agency operations.
sparql:
  message: Multi-agency operation must include agencies operating in different jurisdictions (gUFO part-whole constraint).
  select: SELECT $this WHERE { $this rdf:type cacontology-multi:MultiJurisdictionalInvestigation . { SELECT $this (COUNT(DISTINCT ?jurisdiction) AS ?jurisdictionCount) WHERE { $this cacontology-multi:involvesAgency ?agency . ?agency cacontology-multi:operatesInJurisdiction ?jurisdiction . } GROUP BY $this } FILTER (?jurisdictionCount < 2) }
target class: MultiJurisdictionalInvestigation

Multi-Jurisdictional Cross Reference Shape
type: NodeShape
comment: Enhanced cross-reference validation with gUFO constraints for multi-jurisdictional operations.
comment: Validates cross-references between multi-jurisdictional operations and related entities.
sparql:
  message: Multi-jurisdictional operation must involve at least two jurisdictions.
  select: SELECT $this WHERE { $this a cacontology-multi:MultiJurisdictionalOperation ; cacontology-multi:jurisdictionCount ?count . FILTER (?count < 2) }
sparql:
  message: Multi-jurisdictional operation must involve at least two jurisdictions (enhanced gUFO validation).
  select: SELECT $this WHERE { $this a cacontology-multi:MultiJurisdictionalOperation ; cacontology-multi:jurisdictionCount ?count . FILTER (?count < 2) }
sparql:
  message: gUFO Event typing must be consistent with temporal properties.
  select: SELECT $this WHERE { $this rdf:type*/rdfs:subClassOf* gufo:Event . FILTER NOT EXISTS { { $this gufo:hasBeginPointInXSDDateTimeStamp ?start } UNION { $this uco-core:startTime ?start } } }
target class: MultiJurisdictionalOperation

Multi-Jurisdictional Data Quality Shape
type: NodeShape
comment: Enhanced data quality validation for multi-jurisdictional operations with gUFO quality aspects.
property:
  datatype: string
  in: poor
  in: fair
  in: good
  in: excellent
  in: validated
  max count: 1
  message: Data quality must be from allowed values (gUFO quality aspect).
  path: hasDataQuality
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Data completeness must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasDataCompleteness
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Data consistency must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasDataConsistency
property:
  datatype: string
  in: none
  in: basic
  in: standard
  in: comprehensive
  in: certified
  max count: 1
  message: Validation level must be from allowed values (gUFO quality aspect).
  path: hasValidationLevel
sparql:
  message: High-quality data should have good completeness and consistency (gUFO data quality rule).
  select: SELECT $this WHERE { $this cacontology-multi:hasDataQuality ?quality . $this cacontology-multi:hasDataCompleteness ?completeness . $this cacontology-multi:hasDataConsistency ?consistency . FILTER (?quality IN ("excellent", "validated")) FILTER (?completeness < 0.8 || ?consistency < 0.8) }
sparql:
  message: Complex operations should have comprehensive validation (gUFO data quality rule).
  select: SELECT $this WHERE { $this cacontology-multi:hasComplexityLevel ?complexity . $this cacontology-multi:hasValidationLevel ?validation . FILTER (?complexity IN ("highly_complex", "extremely_complex")) FILTER (?validation IN ("none", "basic")) }
target class: MultiJurisdictionalInvestigation

Multi-Jurisdictional Event Temporal Shape
type: NodeShape
comment: Validates gUFO temporal constraints for multi-jurisdictional events.
sparql:
  message: gUFO Events must have consistent temporal boundaries with end after start.
  select: SELECT $this WHERE { $this gufo:hasBeginPointInXSDDateTimeStamp ?start ; gufo:hasEndPointInXSDDateTimeStamp ?end . FILTER (?end <= ?start) }
target class: MultiJurisdictionalInvestigation

Multi-Jurisdictional Event Type Validation Shape
type: NodeShape
comment: Validates gUFO Event type consistency for multi-jurisdictional investigations.
property:
  has value: Event
  message: Multi-jurisdictional investigation must be typed as gUFO Event.
  min count: 1
  path: type
property:
  has value: Event
  message: Multi-jurisdictional investigation class should extend gUFO Event.
  min count: 0
  path: subClassOf
target class: MultiJurisdictionalInvestigation

Multi-Jurisdictional Operation Shape
type: NodeShape
comment: Enhanced validation shape for multi-jurisdictional operation instances with gUFO quality aspects.
property:
  datatype: string
  in: joint_investigation
  in: task_force_operation
  in: cross_border_coordination
  in: federal_state_cooperation
  in: international_cooperation
  in: multi_agency_response
  max count: 1
  message: Multi-jurisdictional operation must specify operation type from the allowed list.
  min count: 1
  path: operationType
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 50
  message: Multi-jurisdictional operation must involve between 2 and 50 jurisdictions.
  min count: 1
  min inclusive: 2
  path: jurisdictionCount
property:
  datatype: string
  in: federal
  in: state
  in: local
  in: international
  in: task_force
  in: joint_command
  max count: 1
  message: Multi-jurisdictional operation must specify lead agency type from the allowed list.
  min count: 1
  path: leadAgency
property:
  datatype: string
  in: minimal
  in: basic
  in: standard
  in: enhanced
  in: comprehensive
  in: full_integration
  max count: 1
  message: Multi-jurisdictional operation must specify coordination level from the allowed list.
  min count: 1
  path: coordinationLevel
property:
  datatype: decimal
  max count: 1
  max inclusive: 1095.0
  message: Operation duration must be between 1 and 1095 days (3 years).
  min count: 0
  min inclusive: 1.0
  path: operationDuration
property:
  datatype: dateTime
  max count: 1
  message: Multi-jurisdictional operation may have a start time.
  min count: 0
  path: startTime
property:
  datatype: dateTime
  max count: 1
  message: Multi-jurisdictional operation may have an end time.
  min count: 0
  path: endTime
property:
  datatype: string
  in: ineffective
  in: limited
  in: moderate
  in: effective
  in: highly_effective
  max count: 1
  message: Coordination effectiveness must be from allowed values (gUFO quality aspect).
  path: hasCoordinationEffectiveness
property:
  datatype: string
  in: simple
  in: moderate
  in: complex
  in: highly_complex
  in: extremely_complex
  max count: 1
  message: Complexity level must be from allowed values (gUFO quality aspect).
  path: hasComplexityLevel
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Success rate must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasSuccessRate
property:
  datatype: string
  in: minimal
  in: low
  in: moderate
  in: high
  in: intensive
  max count: 1
  message: Coordination intensity must be from allowed values (gUFO quality aspect).
  path: hasCoordinationIntensity
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Unification level must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasUnificationLevel
target class: MultiJurisdictionalOperation

Multi-Jurisdictional Participation Shape
type: NodeShape
comment: Validates gUFO participation constraints for multi-jurisdictional investigations.
sparql:
  message: Multi-jurisdictional investigation must have at least 2 participating agencies (gUFO participation constraint).
  select: SELECT $this WHERE { $this rdf:type cacontology-multi:MultiJurisdictionalInvestigation . { SELECT $this (COUNT(DISTINCT ?agency) AS ?agencyCount) WHERE { $this cacontology-multi:involvesAgency ?agency . } GROUP BY $this } FILTER (?agencyCount < 2) }
target class: MultiJurisdictionalInvestigation

Multi-Jurisdictional Situation
type: Class
comment: Complex situation requiring coordination across multiple jurisdictions.
subclass of: Situation

Mutual Aid Request
type: Class
comment: Formal request for assistance from another jurisdiction.
subclass of: Object
subclass of: ObservableObject

Nationwide Child Rescue Coordination
type: Class
comment: Coordination of child rescue operations across entire country.
subclass of: MassChildRescueOperation

Operation Safe Online Summer Type
type: Class
comment: Type of national operation coordinated across 61+ ICAC Task Forces.
subclass of: NationalCoordinatedOperation

Organization Object Type Validation Shape
type: NodeShape
comment: Validates gUFO Object type consistency for law enforcement organizations.
property:
  has value: Object
  message: Law enforcement agency should extend gUFO Object.
  min count: 0
  path: subClassOf
target class: LawEnforcementAgency

Participating Agency
type: Role
type: Class
comment: Agency providing support or resources to multi-jurisdictional investigation.
subclass of: Role

Personnel Sharing Shape
type: NodeShape
comment: Validation shape for personnel sharing instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 100
  message: Personnel sharing must specify personnel count between 1 and 100.
  min count: 1
  min inclusive: 1
  path: personnelCount
property:
  datatype: string
  in: investigators
  in: analysts
  in: technical_specialists
  in: supervisors
  in: support_staff
  in: subject_matter_experts
  max count: 1
  message: Personnel sharing must specify personnel type from the allowed list.
  min count: 1
  path: personnelType
property:
  datatype: string
  in: none_required
  in: public_trust
  in: confidential
  in: secret
  in: top_secret
  in: sci_access
  max count: 1
  message: Security clearance must be from the allowed list.
  min count: 0
  path: securityClearance
target class: PersonnelSharing

Priority Prosecution Track
type: Class
comment: High-priority prosecution track for most serious offenders identified in mass user analysis.
subclass of: UserTriageProsecution

Project Safe Childhood Operation
type: Class
comment: Operation conducted under Project Safe Childhood initiative framework.
subclass of: NationwideOperation

Prosecution Capacity Analysis
type: Class
comment: Analysis of prosecution capacity across jurisdictions to optimize case distribution for massive operations.
subclass of: Action

Qualified Coordination Participation Shape
type: NodeShape
comment: Validates gUFO qualified participation situations in multi-jurisdictional coordination.
sparql:
  message: Qualified coordination participation must involve appropriate roles and events (gUFO qualified relation).
  select: SELECT $this WHERE { $this rdf:type gufo:ParticipationSituation . $this gufo:standsInQualifiedParticipation ?role . $this cacontology-multi:concernsCoordinationEvent ?event . FILTER NOT EXISTS { ?role rdf:type* cacontology-multi:CoordinatingAgent . ?event rdf:type* cacontology-multi:MultiJurisdictionalInvestigation . } }
target class: ParticipationSituation

Registration Compliance Violation
type: Class
comment: Violation of sex offender registration requirements.
subclass of: UcoObject

RequiresLegalCoordinationShape
type: PropertyShape
class: LegalCoordination
description: Links operation to legal coordination needs
min count: 0
name: requires legal coordination
path: requiresLegalCoordination

Resource Sharing Shape
type: NodeShape
comment: Enhanced validation shape for resource sharing instances with gUFO quality aspects.
property:
  datatype: string
  in: personnel
  in: equipment
  in: facilities
  in: expertise
  in: funding
  in: technology
  in: vehicles
  in: aircraft
  max count: 1
  message: Resource sharing must specify resource type from the allowed list.
  min count: 1
  path: resourceType
property:
  datatype: decimal
  max count: 1
  max inclusive: 365.0
  message: Resource sharing duration must be between 1 and 365 days.
  min count: 1
  min inclusive: 1.0
  path: sharingDuration
property:
  datatype: string
  in: no_cost
  in: shared_cost
  in: reimbursable
  in: grant_funded
  in: federal_funded
  in: requesting_agency_pays
  max count: 1
  message: Resource sharing must specify cost sharing arrangement from the allowed list.
  min count: 1
  path: costSharing
property:
  datatype: decimal
  max count: 1
  max inclusive: 10000000.0
  message: Resource value must be between $0 and $10,000,000.
  min count: 0
  min inclusive: 0.0
  path: resourceValue
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Resource utilization must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasResourceUtilization
property:
  datatype: string
  in: poor
  in: fair
  in: good
  in: excellent
  in: optimal
  max count: 1
  message: Cost effectiveness must be from allowed values (gUFO quality aspect).
  path: hasCostEffectiveness
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Availability must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasAvailability
target class: ResourceSharing

Resource Sharing Validation Shape
type: NodeShape
comment: Enhanced resource sharing validation with gUFO quality constraints.
comment: Validates resource sharing arrangements.
sparql:
  message: High-value resource sharing should have cost sharing arrangement.
  select: SELECT $this WHERE { $this cacontology-multi:resourceValue ?value ; cacontology-multi:costSharing "no_cost" . FILTER (?value > 100000) }
sparql:
  message: High-value resource sharing should have excellent cost effectiveness and high utilization (gUFO quality validation).
  select: SELECT $this WHERE { $this cacontology-multi:resourceValue ?value ; cacontology-multi:hasCostEffectiveness ?effectiveness ; cacontology-multi:hasResourceUtilization ?utilization . FILTER (?value > 100000) FILTER (?effectiveness IN ("poor", "fair") || ?utilization < 0.6) }
target class: ResourceSharing

Role Temporal Shape
type: NodeShape
comment: Validates gUFO temporal constraints for coordination roles.
property:
  datatype: dateTimeStamp
  max count: 1
  message: Coordination role may have begin point timestamp.
  path: hasRoleBeginPoint
property:
  datatype: dateTimeStamp
  max count: 1
  message: Coordination role may have end point timestamp.
  path: hasRoleEndPoint
sparql:
  message: Role end must be after begin when both are specified.
  select: SELECT $this WHERE { $this cacontology-multi:hasRoleBeginPoint ?start ; cacontology-multi:hasRoleEndPoint ?end . FILTER (?end <= ?start) }
target class: Role

School Presentation Disclosure Workflow
type: Class
comment: Workflow from school safety presentation to victim disclosure to rapid arrest.
subclass of: RapidResponseCoordination

SharesInformationShape
type: PropertyShape
class: InformationSharing
description: Links operation to information sharing activities
min count: 0
name: shares information
path: sharesInformation

SharesResourcesShape
type: PropertyShape
class: ResourceSharing
description: Links operation to resource sharing arrangements
min count: 0
name: shares resources
path: sharesResources

Sharing Date Validation Shape
type: NodeShape
comment: Validates information sharing date consistency.
sparql:
  message: Information sharing date should not be in the future.
  select: SELECT $this WHERE { $this cacontology-multi:sharingDate ?date . FILTER (?date > NOW()) }
target class: InformationSharing

Simultaneous Child Rescue
type: Class
comment: Rescue of multiple children across different locations simultaneously.
subclass of: MassChildRescueOperation

Situation Type Validation Shape
type: NodeShape
comment: Validates gUFO Situation type consistency for coordination situations.
property:
  has value: Situation
  message: Multi-jurisdictional situation should extend gUFO Situation.
  min count: 0
  path: subClassOf
target class: Situation

State Agency
type: Class
comment: Law enforcement agency with state-level jurisdiction.
subclass of: LawEnforcementAgency

State Jurisdiction
type: Class
comment: Legal authority under state law and courts.
subclass of: Jurisdiction

Statewide Sweep
type: Class
comment: Statewide operation conducting compliance checks across all jurisdictions.
subclass of: ComplianceMonitoringOperation

Task Force Composition Shape
type: NodeShape
comment: Validates gUFO part-whole relationships for task force composition.
sparql:
  message: Task force composition must include agencies from at least 2 different jurisdictional levels (gUFO part-whole constraint).
  select: SELECT $this WHERE { $this rdf:type cacontology-multi:TaskForce . { SELECT $this (COUNT(DISTINCT ?level) AS ?levelCount) WHERE { $this cacontology-multi:includesAgency ?agency . ?agency rdf:type ?agencyType . ?agencyType rdfs:subClassOf* cacontology-multi:LawEnforcementAgency . BIND( IF(?agencyType = cacontology-multi:FederalAgency, "federal", IF(?agencyType = cacontology-multi:StateAgency, "state", IF(?agencyType = cacontology-multi:LocalAgency, "local", "other"))) AS ?level ) } GROUP BY $this } FILTER (?levelCount < 2) }
target class: TaskForce

Task Force Leader
type: Role
type: Class
comment: Officer responsible for leading multi-agency task force operations.
subclass of: Role

Task Force Operation
type: Class
comment: Coordinated operation conducted by multi-agency task force.
subclass of: MultiJurisdictionalInvestigation

Task Force Participation Shape
type: NodeShape
comment: Validates gUFO participation constraints for task forces.
sparql:
  message: Task force must have at least 3 member agencies (gUFO participation constraint).
  select: SELECT $this WHERE { $this rdf:type cacontology-multi:TaskForce . $this cacontology-multi:memberAgencyCount ?count . FILTER (?count < 3) }
target class: TaskForce

Task Force Readiness Rule
type: NodeShape
comment: gUFO business rule: Task forces with advanced expertise should have high operational readiness.
sparql:
  message: Task forces with expert-level expertise must have ready or deployed operational status (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-multi:hasExpertiseLevel ?expertise . $this cacontology-multi:hasOperationalReadiness ?readiness . FILTER (?expertise IN ("expert", "specialized")) FILTER (?readiness IN ("not_ready", "preparing")) }
target class: TaskForce

Task Force Shape
type: NodeShape
comment: Enhanced validation shape for task force instances with gUFO quality aspects.
property:
  datatype: string
  in: not_ready
  in: preparing
  in: ready
  in: fully_ready
  in: deployed
  max count: 1
  message: Operational readiness must be from allowed values (gUFO quality aspect).
  path: hasOperationalReadiness
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Cohesion level must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasCohesionLevel
property:
  datatype: string
  in: basic
  in: intermediate
  in: advanced
  in: expert
  in: specialized
  max count: 1
  message: Expertise level must be from allowed values (gUFO quality aspect).
  path: hasExpertiseLevel
target class: TaskForce

Temporal Validation Shape
type: NodeShape
comment: Validates temporal consistency in multi-jurisdictional operations.
sparql:
  message: Start time must be before end time when both are specified.
  select: SELECT $this WHERE { $this uco-core:startTime ?start ; uco-core:endTime ?end . FILTER (?start >= ?end) }
target class: MultiJurisdictionalOperation

Trafficking Coordination Center
type: Class
comment: Center coordinating multi-state trafficking investigations.
subclass of: Organization

Trafficking Investigation Task
type: Class
comment: Specific investigation task in multi-state trafficking case.
subclass of: Action

UsesCommunicationProtocolShape
type: PropertyShape
class: CommunicationProtocol
description: Links operation to communication protocols
min count: 1
name: uses communication protocol
path: usesCommunicationProtocol

agency count
type: DatatypeProperty
comment: Number of agencies participating in the investigation.
domain: MultiJurisdictionalInvestigation
range: integer

agency levels mixed
type: DatatypeProperty
comment: Whether operation includes federal, state, and local agencies (true/false).
domain: MassProsecutionCoordination
range: boolean

agency participant count
type: DatatypeProperty
comment: Number of agencies participating in operation (e.g., 31 agencies in Operation Hive Strike).
domain: MassProsecutionCoordination
range: nonNegativeInteger

agent participant count
type: DatatypeProperty
comment: Number of individual agents deployed in operation (e.g., 80+ agents in Operation Hive Strike).
domain: DistributedProsecutionTeam
range: nonNegativeInteger

arrests nationwide
type: DatatypeProperty
comment: Total number of arrests made across all participating jurisdictions.
domain: NationwideOperation
range: nonNegativeInteger

authorized by
type: ObjectProperty
comment: Legal authorization enabling multi-jurisdictional operation.
domain: MultiJurisdictionalInvestigation
range: JurisdictionalWarrant

cases submitted for prosecution
type: DatatypeProperty
comment: Number of cases submitted for prosecution.
domain: LargeScaleOperation
range: nonNegativeInteger

charge types diversity
type: DatatypeProperty
comment: Number of different charge types resulting from operation.
domain: MassProsecutionCoordination
range: nonNegativeInteger

children rescued
type: DatatypeProperty
comment: Number of children rescued from ongoing abuse.
domain: ChildRescueCoordination
range: nonNegativeInteger

children rescued count
type: DatatypeProperty
comment: Total number of children rescued during operation.
domain: MassChildRescueOperation
range: nonNegativeInteger

communication barriers
type: DatatypeProperty
comment: Barriers to effective inter-agency communication.
domain: MultiJurisdictionalInvestigation
range: string

community outreach effectiveness
type: DatatypeProperty
comment: Effectiveness rating of community outreach in generating disclosures (0.0-1.0).
domain: CommunityOutreachTriggeredInvestigation
range: decimal

compliance violations found
type: DatatypeProperty
comment: Number of registration compliance violations discovered.
domain: ComplianceMonitoringOperation
range: nonNegativeInteger

compliance visits count
type: DatatypeProperty
comment: Number of compliance visits conducted during operation.
domain: ComplianceMonitoringOperation
range: nonNegativeInteger

coordinated by
type: ObjectProperty
comment: Links investigation to coordinating agent or officer.
domain: MultiJurisdictionalInvestigation
range: CoordinatingAgent

coordinates agencies
type: ObjectProperty
comment: Links coordination mechanism to participating agencies.
domain: MassProsecutionCoordination
range: Organization

coordinates compliance checks
type: ObjectProperty
comment: Operation coordinates individual compliance checks.
domain: ComplianceMonitoringOperation
range: SexOffenderComplianceCheck

coordinates nationwide
type: ObjectProperty
comment: Links agency to nationwide coordination role.
domain: Organization
range: NationwideOperation

coordination center location
type: DatatypeProperty
comment: Location of operation coordination center.
domain: NationalCoordinatedOperation
range: string

coordination challenges
type: DatatypeProperty
comment: Challenges encountered in multi-jurisdictional coordination.
domain: MultiJurisdictionalInvestigation
range: string

coordination complexity
type: DatatypeProperty
comment: Complexity level of interstate coordination (simple, moderate, complex, highly_complex).
domain: InterstateCoordination
range: string

coordination mechanism
type: DatatypeProperty
comment: Method used for inter-agency coordination (task_force, liaison, joint_operation, mou).
domain: MultiJurisdictionalInvestigation
range: string

coordination phase duration
type: DatatypeProperty
comment: Duration of coordination phase.
domain: Phase
range: duration

cost sharing arrangement
type: DatatypeProperty
comment: How costs are shared between agencies.
domain: ResourceSharing
range: string

counties involved
type: DatatypeProperty
comment: Number of counties involved in statewide operation (e.g., 5 counties in Operation Hive Strike).
domain: MassProsecutionCoordination
range: nonNegativeInteger

covers state
type: ObjectProperty
comment: Links statewide operation to state jurisdiction covered.
domain: MassProsecutionCoordination
range: Location

cross state communication
type: DatatypeProperty
comment: Communication methods used for cross-state coordination.
domain: InterstateCoordination
range: string

crosses borders
type: DatatypeProperty
comment: Whether investigation crosses state or national borders.
domain: MultiJurisdictionalInvestigation
range: boolean

crossing documentation
type: DatatypeProperty
comment: Type of documentation evidencing state line crossing (gps, toll_records, surveillance, witness).
domain: StateLineCrossing
range: string

deploys agents
type: ObjectProperty
comment: Links agent deployment coordination to individual agents or agent groups.
domain: DistributedProsecutionTeam
range: Role

destination state
type: ObjectProperty
comment: State where transportation terminated.
domain: StateLineCrossing
range: Location

diplomatic channels
type: DatatypeProperty
comment: Whether diplomatic channels were required for cooperation.
domain: CrossBorderOperation
range: boolean

disclosure to arrest hours
type: DatatypeProperty
comment: Time in hours from victim disclosure to suspect arrest.
domain: RapidResponseCoordination
range: decimal

enables rapid response
type: ObjectProperty
comment: Links coordination mechanism to rapid response capability.
domain: RapidResponseCoordination
range: Action

facilitated by coordination
type: ObjectProperty
comment: Links interstate investigation to coordination mechanism used.
domain: InterstateTransportationOffense
range: InterstateCoordination

facilitates child rescue
type: ObjectProperty
comment: Operation facilitates child rescue coordination.
domain: LargeScaleOperation
range: ChildRescueCoordination

FBI field offices involved
type: DatatypeProperty
comment: Number of FBI field offices participating in operation.
domain: AllFBIFieldOfficesOperation
range: nonNegativeInteger

governed by agreement
type: ObjectProperty
comment: Interagency agreement governing the cooperation.
domain: MultiJurisdictionalInvestigation
range: InteragencyAgreement

grand jury acceptances
type: DatatypeProperty
comment: Number of cases accepted for grand jury indictment.
domain: LargeScaleOperation
range: nonNegativeInteger

handoff type
type: DatatypeProperty
comment: Type of jurisdictional handoff (state_to_federal, federal_to_state, state_to_state).
domain: JurisdictionalHandoff
range: string

hands-on arrests count
type: DatatypeProperty
comment: Number of arrests for hands-on offenses.
domain: HandsOnOffenseInvestigation
range: nonNegativeInteger

hosted by
type: ObjectProperty
comment: Links operation to hosting task force or agency.
domain: TaskForceHostedOperation
range: Organization

identifies victims
type: ObjectProperty
comment: Campaign includes victim identification tasks.
domain: ProactiveInvestigationCampaign
range: VictimIdentificationTask

information sharing level
type: DatatypeProperty
comment: Level of information sharing between agencies (full, limited, restricted).
domain: MultiJurisdictionalInvestigation
range: string

investigation scope
type: DatatypeProperty
comment: Geographic or jurisdictional scope of investigation (local, state, national, international).
domain: MultiJurisdictionalInvestigation
range: string

investigations initiated
type: DatatypeProperty
comment: Number of new investigations initiated during campaign.
domain: ProactiveInvestigationCampaign
range: nonNegativeInteger

involves agency
type: ObjectProperty
comment: Links investigation to participating law enforcement agency.
domain: MultiJurisdictionalInvestigation
range: LawEnforcementAgency

involves FBI field office
type: ObjectProperty
comment: Links operation to participating FBI field office.
domain: AllFBIFieldOfficesOperation
range: Organization

involves state line crossing
type: ObjectProperty
comment: Links transportation offense to state line crossing events.
domain: InterstateTransportationOffense
range: StateLineCrossing

involves trafficking investigation
type: ObjectProperty
comment: Operation involves multi-state trafficking investigation.
domain: LargeScaleOperation
range: MultiStateTraffickingInvestigation

jurisdiction trigger type
type: DatatypeProperty
comment: Type of federal jurisdiction trigger (interstate_transport, wire_communication, federal_property).
domain: FederalJurisdictionTrigger
range: string

jurisdictional conflicts
type: DatatypeProperty
comment: Conflicts between jurisdictional authorities or procedures.
domain: MultiJurisdictionalInvestigation
range: string

language barriers
type: DatatypeProperty
comment: Language barriers encountered in international cooperation.
domain: CrossBorderOperation
range: string

lead by
type: ObjectProperty
comment: Identifies the lead agency for the investigation.
domain: MultiJurisdictionalInvestigation
range: LeadAgency

legal complexity
type: DatatypeProperty
comment: Assessment of legal complexity (low, medium, high, extreme).
domain: MultiJurisdictionalInvestigation
range: string

meeting frequency
type: DatatypeProperty
comment: How often coordination meetings are held (daily, weekly, monthly, as_needed).
domain: MultiJurisdictionalInvestigation
range: string

member agency count
type: DatatypeProperty
comment: Number of agencies participating in task force.
domain: TaskForce
range: integer

new victims identified
type: DatatypeProperty
comment: Number of new child victims identified.
domain: VictimIdentificationTask
range: nonNegativeInteger

operates in jurisdiction
type: ObjectProperty
comment: Links agency to the jurisdiction where it has authority.
domain: LawEnforcementAgency
range: Jurisdiction

operation duration days
type: DatatypeProperty
comment: Duration of operation in days (e.g., 4 days for Operation Hive Strike).
domain: MassProsecutionCoordination
range: decimal

operation name
type: DatatypeProperty
comment: Official name of the multi-jurisdictional operation.
domain: NamedMultiJurisdictionalOperation
range: string

operation phase
type: DatatypeProperty
comment: Current phase of the operation (planning, execution, follow-up).
domain: NamedMultiJurisdictionalOperation
range: string

operation success rating
type: DatatypeProperty
comment: Success rating of operation (most_successful, highly_successful, successful, limited).
domain: LargeScaleOperation
range: string

originating state
type: ObjectProperty
comment: State where transportation originated.
domain: StateLineCrossing
range: Location

personnel assigned
type: DatatypeProperty
comment: Number of personnel assigned to task force.
domain: TaskForce
range: integer

primary jurisdiction
type: ObjectProperty
comment: Primary legal jurisdiction for the investigation.
domain: MultiJurisdictionalInvestigation
range: Jurisdiction

prosecution avoidance behavior
type: DatatypeProperty
comment: Behavior indicating attempt to avoid prosecution through flight.
domain: InterstateFlightFromProsecution
range: string

provides assistance to
type: ObjectProperty
comment: Links agency providing assistance to requesting agency.
domain: LawEnforcementAgency
range: LawEnforcementAgency

requests assistance from
type: ObjectProperty
comment: Links agency requesting assistance to providing agency.
domain: LawEnforcementAgency
range: LawEnforcementAgency

requires handoff
type: ObjectProperty
comment: Links interstate offense to required jurisdictional handoff.
domain: InterstateTransportationOffense
range: JurisdictionalHandoff

rescues children
type: ObjectProperty
comment: Links operation to child rescue activities.
domain: MassChildRescueOperation
range: Person

search warrants executed
type: DatatypeProperty
comment: Number of search warrants executed during operation.
domain: LargeScaleOperation
domain: MassProsecutionCoordination
range: nonNegativeInteger

shares information with
type: ObjectProperty
comment: Links agency to another agency with which it shares information.
domain: LawEnforcementAgency
range: LawEnforcementAgency

shares resources with
type: ObjectProperty
comment: Links agency to another agency with which it shares resources.
domain: LawEnforcementAgency
range: LawEnforcementAgency

spans counties
type: ObjectProperty
comment: Links multi-county operation to specific counties involved.
domain: MassProsecutionCoordination
range: Location

specialized units deployed
type: DatatypeProperty
comment: Number of specialized units deployed in operation.
domain: NamedMultiJurisdictionalOperation
range: nonNegativeInteger

states crossed
type: DatatypeProperty
comment: Number of state boundaries crossed during transportation.
domain: StateLineCrossing
range: integer

states involved
type: DatatypeProperty
comment: Number of states involved in trafficking investigation.
domain: MultiStateTraffickingInvestigation
range: nonNegativeInteger

statewide coverage
type: DatatypeProperty
comment: Whether operation covers entire state (true) or limited geographic area (false).
domain: MassProsecutionCoordination
range: boolean

success metrics
type: DatatypeProperty
comment: Metrics used to measure success of multi-jurisdictional cooperation.
domain: MultiJurisdictionalInvestigation
range: string

target strategy
type: DatatypeProperty
comment: Strategy for targeting multiple offender types (simultaneous, sequential, integrated).
domain: MassProsecutionCoordination
range: string

target type count
type: DatatypeProperty
comment: Number of different offender types targeted simultaneously (e.g., 2 for predators and distributors).
domain: MassProsecutionCoordination
range: nonNegativeInteger

targets offender type
type: ObjectProperty
comment: Links multi-jurisdictional operation to specific offender types targeted.
domain: MassProsecutionCoordination
range: Role

task force duration
type: DatatypeProperty
comment: Expected duration of task force operation (in months).
domain: TaskForce
range: integer

task force type
type: DatatypeProperty
comment: Type of task force (permanent, temporary, ad_hoc, specialized).
domain: TaskForce
range: string

task forces involved
type: DatatypeProperty
comment: Number of ICAC task forces participating in operation.
domain: NationalCoordinatedOperation
range: nonNegativeInteger

time zone challenges
type: DatatypeProperty
comment: Challenges posed by different time zones in coordination.
domain: CrossBorderOperation
range: string

total arrests
type: DatatypeProperty
comment: Total number of arrests made during operation.
domain: MassProsecutionCoordination
domain: OperationMetricsTracking
range: nonNegativeInteger

trafficking cases identified
type: DatatypeProperty
comment: Number of trafficking cases identified.
domain: MultiStateTraffickingInvestigation
range: nonNegativeInteger

transportation intent
type: DatatypeProperty
comment: Intent for transportation (sexual_activity, sexual_conduct, avoiding_prosecution).
domain: TransportationForIllegalPurpose
range: string

transportation method
type: DatatypeProperty
comment: Method of transportation (vehicle, bus, train, plane, other).
domain: InterstateVictimTransport
range: string

triggered by outreach
type: ObjectProperty
comment: Links investigation to community outreach that triggered it.
domain: CommunityOutreachTriggeredInvestigation
range: Action

triggers jurisdiction
type: ObjectProperty
comment: Links transportation offense to federal jurisdiction trigger.
domain: InterstateTransportationOffense
range: FederalJurisdictionTrigger

uncovers cross-state evidence
type: ObjectProperty
comment: Investigation uncovers evidence across multiple states.
domain: MultiStateTraffickingInvestigation
range: CrossStateEvidence

US Attorney offices involved
type: DatatypeProperty
comment: Number of US Attorney's Offices participating in operation.
domain: USAttorneyOfficeParticipation
range: nonNegativeInteger

users for prosecution millions
type: DatatypeProperty
comment: Number of users targeted for prosecution in millions.
domain: MassProsecutionCoordination
range: nonNegativeInteger

utilizes coordination
type: ObjectProperty
comment: Links named operation to coordination mechanisms used.
domain: MassProsecutionCoordination
range: MassProsecutionCoordination

AI Cooperation
type: Class
comment: Cooperation in developing AI-based solutions for detection, analysis, and prevention of child exploitation. Modeled as gUFO Event.
subclass of: TechnologyCooperation

Academic Partner
type: Role
type: Class
comment: Academic institution participating in partnership with research and training capabilities. Modeled as anti-rigid gUFO Role.
subclass of: PartnerRole

Academic Partnership
type: Class
comment: Partnership with academic institutions for research, training, and technology development in child protection. Modeled as gUFO Organization.
subclass of: PublicPrivatePartnership

Active Cooperation Phase
type: Phase
type: Class
comment: Phase of active cooperation with joint operations and information sharing. Modeled as anti-rigid gUFO Phase.
subclass of: PublicPrivatePartnership

Civil Society Engagement
type: Class
comment: Framework for engaging civil society, volunteers, and public participation in child protection initiatives. Modeled as gUFO Organization.
subclass of: PublicPrivatePartnership

Collaborative Investigation Situation
type: Class
comment: Complex situation involving multiple partners working together on investigations. Modeled as gUFO Situation.
subclass of: Situation

Evaluation Phase
type: Phase
type: Class
comment: Phase of partnership evaluation and effectiveness assessment. Modeled as anti-rigid gUFO Phase.
subclass of: PublicPrivatePartnership

Information Sharing Situation
type: Class
comment: Situation involving active information sharing between partnership entities. Modeled as gUFO Situation.
subclass of: Situation

NGO Coordination
type: Class
comment: Coordination framework with non-governmental organizations specializing in child protection and victim advocacy. Modeled as gUFO Organization.
subclass of: PublicPrivatePartnership

OSINT Investigation
type: Class
comment: Open source intelligence investigation conducted by skilled volunteers and researchers. Modeled as gUFO Event.
subclass of: CommunityAnalysis

Partnership Formation Phase
type: Phase
type: Class
comment: Phase of partnership formation including agreement negotiation and framework establishment. Modeled as anti-rigid gUFO Phase.
subclass of: PublicPrivatePartnership

Public Tip
type: Class
comment: Information provided by members of the public in response to crowdsourcing requests. Modeled as gUFO Object.
subclass of: Object
subclass of: ObservableObject

Renewal Phase
type: Phase
type: Class
comment: Phase of partnership renewal or renegotiation. Modeled as anti-rigid gUFO Phase.
subclass of: PublicPrivatePartnership

Task Force Coordination
type: Class
comment: Coordination through multi-partner task forces with representatives from different organizations. Modeled as gUFO Event.
subclass of: CoordinationMechanism

contributes to analysis
type: ObjectProperty
comment: Links civil society partners to community analysis they perform.
domain: CivilSocietyPartner
range: CommunityAnalysis

cooperates on
type: ObjectProperty
comment: Links partners to technology cooperation initiatives.
domain: Organization
range: TechnologyCooperation

cooperation duration
type: DatatypeProperty
comment: Duration of cooperation event.
domain: TechnologyCooperation
range: duration

enables sharing
type: ObjectProperty
comment: Links technical integration to types of information sharing enabled.
domain: TechnicalIntegration
range: InformationSharingFramework

generates requests
type: ObjectProperty
comment: Links investigation to identification requests generated.
domain: Action
range: ObjectIdentificationRequest

has cooperation begin point
type: DatatypeProperty
comment: Temporal begin point for cooperation event.
domain: TechnologyCooperation
range: dateTimeStamp
sub property of: hasBeginPointInXSDDateTimeStamp

has cooperation end point
type: DatatypeProperty
comment: Temporal end point for cooperation event.
domain: TechnologyCooperation
range: dateTimeStamp
sub property of: hasEndPointInXSDDateTimeStamp

participates in operation
type: ObjectProperty
comment: Links partners to joint operations they participate in.
domain: Organization
range: JointOperation

phase duration
type: DatatypeProperty
comment: Duration of partnership phase.
domain: Phase
range: duration

provides monitoring
type: ObjectProperty
comment: Links technology partners to platform monitoring they provide.
domain: TechnologyPartner
range: PlatformMonitoring

responds to emergency
type: ObjectProperty
comment: Links partners to emergency coordination they participate in.
domain: Organization
range: EmergencyCoordination

role duration
type: DatatypeProperty
comment: Duration of partner role.
domain: Role
range: duration

shares intelligence
type: ObjectProperty
comment: Links partners to intelligence sharing arrangements.
domain: Organization
range: IntelligenceSharing

Community Analysis Shape
type: NodeShape
comment: Validation shape for community analysis instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 10000.0
  message: Volunteer hours must be between 1.0 and 10,000.0.
  min count: 0
  min inclusive: 1.0
  path: volunteerHours
target class: CommunityAnalysis

Content Detection Cooperation Shape
type: NodeShape
comment: Validation shape for content detection cooperation instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 1.0
  message: Detection accuracy must be between 0.5 and 1.0.
  min count: 0
  min inclusive: 0.5
  path: detectionAccuracy
target class: ContentDetectionCooperation

Cooperation Event Temporal Shape
type: NodeShape
comment: Validates gUFO temporal constraints for cooperation events.
sparql:
  message: gUFO Events must have consistent temporal boundaries with end after start.
  select: SELECT $this WHERE { $this gufo:hasBeginPointInXSDDateTimeStamp ?start ; gufo:hasEndPointInXSDDateTimeStamp ?end . FILTER (?end <= ?start) }
target class: TechnologyCooperation

Cooperation Event Type Validation Shape
type: NodeShape
comment: Validates gUFO Event type consistency for cooperation events.
property:
  has value: Event
  message: Technology cooperation must be typed as gUFO Event.
  min count: 1
  path: type
sparql:
  message: Cooperation events must be properly typed as gUFO Event and extend UCO Action.
  select: SELECT $this WHERE { $this rdf:type gufo:Event . FILTER NOT EXISTS { $this rdf:type ?eventClass . ?eventClass rdfs:subClassOf* uco-action:Action . } }
target class: TechnologyCooperation

CoordinatedByShape
type: PropertyShape
class: Organization
description: Links partnership activities to coordinating organization
min count: 1
name: coordinated by
path: coordinatedBy

CoordinatedThroughShape
type: PropertyShape
class: CoordinationMechanism
description: Links partnership activities to coordination mechanisms used
min count: 1
name: coordinated through
path: coordinatedThrough

Coordination Mechanism Shape
type: NodeShape
comment: Validation shape for coordination mechanism instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Coordination mechanism label should be between 5 and 200 characters when provided.
  min count: 0
  min length: 5
  path: label
target class: CoordinationMechanism

Crowdsourcing Effectiveness Rule
type: NodeShape
comment: Advanced gUFO business rule: High engagement effectiveness requires high participation and response quality.
sparql:
  message: High engagement effectiveness requires high participation level and excellent response quality (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-partnerships:hasEngagementEffectiveness ?effectiveness . FILTER (?effectiveness >= 0.8) { FILTER NOT EXISTS { $this cacontology-partnerships:hasParticipationLevel ?participation . FILTER (?participation IN ("high", "massive")) } } UNION { FILTER NOT EXISTS { $this cacontology-partnerships:hasResponseQuality ?quality . FILTER (?quality IN ("excellent", "exceptional")) } } }
target class: CrowdsourcingInvestigation

Crowdsourcing Effectiveness Shape
type: NodeShape
comment: Validates crowdsourcing effectiveness metrics.
sparql:
  message: Object identification requests with high success rates should have received public tips.
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/partnerships#
      prefix: cacontology-partnerships
  select: SELECT $this WHERE { $this cacontology-partnerships:identificationSuccessRate ?rate . FILTER (?rate > 0.5) FILTER NOT EXISTS { ?investigation cacontology-partnerships:generatesRequests $this ; cacontology-partnerships:publicTipsReceived ?tips . FILTER (?tips > 0) } }
target class: ObjectIdentificationRequest

Crowdsourcing Investigation Shape
type: NodeShape
comment: Enhanced validation shape for crowdsourcing investigation instances with gUFO quality aspects.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 100000
  message: Public tips received must be between 0 and 100,000.
  min count: 0
  min inclusive: 0
  path: publicTipsReceived
property:
  datatype: string
  in: website
  in: social_media
  in: forums
  in: mobile_app
  in: specialized_platform
  max count: 1
  message: Crowdsourcing platform must be from the allowed list.
  min count: 1
  path: crowdsourcingPlatform
property:
  datatype: string
  in: minimal
  in: low
  in: moderate
  in: high
  in: massive
  max count: 1
  message: Participation level must be from allowed values (gUFO quality aspect).
  path: hasParticipationLevel
property:
  datatype: string
  in: poor
  in: fair
  in: good
  in: excellent
  in: exceptional
  max count: 1
  message: Response quality must be from allowed values (gUFO quality aspect).
  path: hasResponseQuality
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Engagement effectiveness must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasEngagementEffectiveness
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 100000
  message: Public tips received must be between 0 and 100,000.
  min count: 0
  min inclusive: 0
  path: publicTipsReceived
property:
  datatype: string
  in: website
  in: social_media
  in: forums
  in: mobile_app
  in: specialized_platform
  max count: 1
  message: Crowdsourcing platform must be from the allowed list.
  min count: 1
  path: crowdsourcingPlatform
property:
  datatype: string
  in: minimal
  in: low
  in: moderate
  in: high
  in: massive
  max count: 1
  message: Participation level must be from allowed values (gUFO quality aspect).
  path: hasParticipationLevel
property:
  datatype: string
  in: poor
  in: fair
  in: good
  in: excellent
  in: exceptional
  max count: 1
  message: Response quality must be from allowed values (gUFO quality aspect).
  path: hasResponseQuality
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Engagement effectiveness must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasEngagementEffectiveness
target class: CrowdsourcingInvestigation

Data Quality Shape
type: NodeShape
comment: Validates data quality for partnership instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Partnership label should be between 5 and 200 characters when provided.
  min count: 0
  min length: 5
  path: label
property:
  datatype: string
  max count: 1
  max length: 1000
  message: Partnership comment should be between 10 and 1000 characters when provided.
  min count: 0
  min length: 10
  path: comment
target class: PublicPrivatePartnership

Data Sharing Agreement Shape
type: NodeShape
comment: Validation shape for data sharing agreement instances.
property:
  datatype: string
  in: metadata_only
  in: hash_values
  in: intelligence_products
  in: full_data
  max count: 1
  message: Data sharing level must be from the allowed list.
  min count: 1
  path: dataSharingLevel
target class: DataSharingAgreement

Emergency Coordination Shape
type: NodeShape
comment: Validation shape for emergency coordination instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 72.0
  message: Emergency response time must be between 0.25 and 72.0 hours.
  min count: 1
  min inclusive: 0.25
  path: responseTime
target class: EmergencyCoordination

Geolocation Request Shape
type: NodeShape
comment: Validation shape for geolocation request instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 500
  message: Locations to identify must be between 1 and 500.
  min count: 1
  min inclusive: 1
  path: objectsToIdentify
target class: GeolocationRequest

GovernedByShape
type: PropertyShape
class: InformationSharingFramework
description: Links partnership to information sharing frameworks governing it
min count: 0
name: governed by
path: governedBy

HasRoleShape
type: PropertyShape
class: PartnerRole
description: Links partner organization to their role in the partnership
min count: 1
name: has role
path: hasRole

Hash Sharing Protocol Shape
type: NodeShape
comment: Validation shape for hash sharing protocol instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 1000.0
  message: Hash database size must be between 0.1 and 1,000.0 million entries.
  min count: 0
  min inclusive: 0.1
  path: hashDatabaseSize
target class: HashSharingProtocol

High Effectiveness Partnership Rule
type: NodeShape
comment: Advanced gUFO business rule: Highly effective partnerships should have high trust and coordination levels.
sparql:
  message: Highly effective partnerships must have high trust levels and enhanced coordination (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-partnerships:hasPartnershipEffectiveness "highly_effective" . { FILTER NOT EXISTS { $this cacontology-partnerships:hasTrustLevel ?trust . FILTER (?trust >= 0.7) } } UNION { FILTER NOT EXISTS { $this cacontology-partnerships:hasCoordinationLevel ?coord . FILTER (?coord IN ("enhanced", "comprehensive")) } } }
target class: PublicPrivatePartnership

IncludesPartnerShape
type: PropertyShape
class: Organization
description: Links partnership to participating organizations
min count: 2
name: includes partner
path: includesPartner

Information Sharing Composition Shape
type: NodeShape
comment: Validates gUFO part-whole relationships for information sharing composition.
sparql:
  message: Information sharing framework must be composed of technical and legal components (gUFO part-whole constraint).
  select: SELECT $this WHERE { $this rdf:type cacontology-partnerships:InformationSharingFramework . FILTER NOT EXISTS { ?agreement rdf:type cacontology-partnerships:DataSharingAgreement . ?agreement rdfs:subClassOf* $this . } && FILTER NOT EXISTS { ?technical rdf:type cacontology-partnerships:TechnicalIntegration . ?technical rdfs:subClassOf* $this . } }
target class: InformationSharingFramework

Information Sharing Framework Shape
type: NodeShape
comment: Enhanced validation shape for information sharing framework instances with gUFO quality aspects.
property:
  datatype: string
  in: poor
  in: fair
  in: good
  in: excellent
  in: verified
  max count: 1
  message: Data quality must be from allowed values (gUFO quality aspect).
  path: hasDataQuality
property:
  datatype: string
  in: real_time
  in: daily
  in: weekly
  in: monthly
  in: on_demand
  max count: 1
  message: Sharing frequency must be from the allowed list.
  min count: 1
  path: sharingFrequency
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Sharing efficiency must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasSharingEfficiency
property:
  datatype: string
  in: basic
  in: standard
  in: enhanced
  in: high
  in: maximum
  max count: 1
  message: Security level must be from allowed values (gUFO quality aspect).
  path: hasSecurityLevel
property:
  datatype: string
  in: poor
  in: fair
  in: good
  in: excellent
  in: verified
  max count: 1
  message: Data quality must be from allowed values (gUFO quality aspect).
  path: hasDataQuality
property:
  datatype: string
  in: real_time
  in: daily
  in: weekly
  in: monthly
  in: on_demand
  max count: 1
  message: Sharing frequency must be from the allowed list.
  min count: 1
  path: sharingFrequency
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Sharing efficiency must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasSharingEfficiency
property:
  datatype: string
  in: basic
  in: standard
  in: enhanced
  in: high
  in: maximum
  max count: 1
  message: Security level must be from allowed values (gUFO quality aspect).
  path: hasSecurityLevel
target class: InformationSharingFramework

Information Sharing Security Rule
type: NodeShape
comment: Advanced gUFO business rule: High data quality requires enhanced security levels.
sparql:
  message: Excellent or verified data quality requires enhanced or high security levels (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-partnerships:hasDataQuality ?quality . FILTER (?quality IN ("excellent", "verified")) FILTER NOT EXISTS { $this cacontology-partnerships:hasSecurityLevel ?security . FILTER (?security IN ("enhanced", "high", "maximum")) } }
target class: InformationSharingFramework

Joint Operation Shape
type: NodeShape
comment: Validation shape for joint operation instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 1.0
  message: Operation success rate must be between 0.0 and 1.0.
  min count: 0
  min inclusive: 0.0
  path: operationSuccess
target class: JointOperation

Law Enforcement Partner Shape
type: NodeShape
comment: Validation shape for law enforcement partner instances.
property:
  datatype: string
  max count: 1
  max length: 100
  message: Law enforcement partner label should be between 3 and 100 characters when provided.
  min count: 0
  min length: 3
  path: label
target class: LawEnforcementPartner

Multi-Stakeholder Complexity Rule
type: NodeShape
comment: Advanced gUFO business rule: Multi-stakeholder initiatives with many partners need comprehensive coordination.
sparql:
  message: Multi-stakeholder initiatives with 5+ partners need comprehensive coordination level (gUFO business rule).
  select: SELECT $this WHERE { $this rdf:type cacontology-partnerships:MultiStakeholderInitiative . { SELECT $this (COUNT(DISTINCT ?partner) AS ?partnerCount) WHERE { $this cacontology-partnerships:includesPartner ?partner . } GROUP BY $this } FILTER (?partnerCount >= 5) FILTER NOT EXISTS { $this cacontology-partnerships:hasCoordinationLevel "comprehensive" . } }
target class: MultiStakeholderInitiative

Multi Stakeholder Initiative Shape
type: NodeShape
comment: Validation shape for multi-stakeholder initiative instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 50
  message: Multi-stakeholder initiative must have between 3 and 50 partners.
  min count: 1
  min inclusive: 3
  path: partnerCount
target class: MultiStakeholderInitiative

Multi-Stakeholder Participation Shape
type: NodeShape
comment: Validates gUFO participation constraints for multi-stakeholder initiatives.
sparql:
  message: Multi-stakeholder initiative must include at least 3 different types of partners (gUFO participation constraint).
  select: SELECT $this WHERE { $this rdf:type cacontology-partnerships:MultiStakeholderInitiative . { SELECT $this (COUNT(DISTINCT ?roleType) AS ?roleTypeCount) WHERE { $this cacontology-partnerships:includesPartner ?partner . ?partner cacontology-partnerships:hasRole ?role . ?role rdf:type ?roleType . ?roleType rdfs:subClassOf* cacontology-partnerships:PartnerRole . } GROUP BY $this } FILTER (?roleTypeCount < 3) }
target class: MultiStakeholderInitiative

NGO Partner Shape
type: NodeShape
comment: Validation shape for NGO partner instances.
property:
  datatype: string
  max count: 1
  max length: 100
  message: NGO partner label should be between 3 and 100 characters when provided.
  min count: 0
  min length: 3
  path: label
target class: NGOPartner

National Initiative Data Quality Shape
type: NodeShape
comment: Validates data quality for national initiative program instances.
sparql:
  message: National initiative programs should have realistic case processing numbers relative to their duration.
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/partnerships#
      prefix: cacontology-partnerships
  select: SELECT $this WHERE { $this cacontology-partnerships:casesProcessed ?cases ; cacontology-partnerships:launchedDate ?launched . BIND (NOW() AS ?now) BIND ((?now - ?launched) / (365.25 * 24 * 60 * 60) AS ?yearsActive) BIND (?cases / ?yearsActive AS ?casesPerYear) FILTER (?casesPerYear > 5000) }
target class: NationalInitiativeProgram

National Initiative Program Shape
type: NodeShape
comment: Validation shape for national initiative program instances.
property:
  datatype: string
  max count: 1
  max length: 100
  message: Initiative name must be between 3 and 100 characters.
  min count: 1
  min length: 3
  path: initiativeName
property:
  datatype: dateTime
  max count: 1
  message: National initiative must have a launch date.
  min count: 1
  path: launchedDate
property:
  datatype: string
  in: federal
  in: state_coordination
  in: local_support
  in: multi_jurisdictional
  max count: 1
  message: Program scope must be from the allowed list.
  min count: 1
  path: programScope
property:
  datatype: string
  in: DOJ
  in: DHS
  in: FBI
  in: ICE
  in: USAO
  in: ATF
  max count: 1
  message: Lead agency must be from the allowed list.
  min count: 1
  path: leadAgency
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 10000
  message: Cases processed must be between 0 and 10,000.
  min count: 0
  min inclusive: 0
  path: casesProcessed
target class: NationalInitiativeProgram

Object Identification Request Shape
type: NodeShape
comment: Validation shape for object identification request instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 1000
  message: Objects to identify must be between 1 and 1,000.
  min count: 1
  min inclusive: 1
  path: objectsToIdentify
property:
  datatype: decimal
  max count: 1
  max inclusive: 1.0
  message: Identification success rate must be between 0.0 and 1.0.
  min count: 0
  min inclusive: 0.0
  path: identificationSuccessRate
target class: ObjectIdentificationRequest

ParticipatesInDevelopmentShape
type: PropertyShape
class: ToolDevelopment
description: Links technology partners to development projects they participate in
min count: 0
name: participates in development
path: participatesInDevelopment

Partner Role Capability Commitment Rule
type: NodeShape
comment: Advanced gUFO business rule: High role effectiveness requires advanced capabilities and high commitment.
sparql:
  message: High role effectiveness requires advanced capabilities and high commitment levels (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-partnerships:hasRoleEffectiveness ?effectiveness . FILTER (?effectiveness >= 0.8) { FILTER NOT EXISTS { $this cacontology-partnerships:hasCapabilityLevel ?capability . FILTER (?capability IN ("advanced", "expert")) } } UNION { FILTER NOT EXISTS { $this cacontology-partnerships:hasCommitmentLevel ?commitment . FILTER (?commitment >= 0.7) } } }
target class: PartnerRole

Partner Role Shape
type: NodeShape
comment: Enhanced validation shape for partner role instances with gUFO quality aspects.
property:
  datatype: string
  max count: 1
  max length: 100
  message: Partner role label should be between 3 and 100 characters when provided.
  min count: 0
  min length: 3
  path: label
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Role effectiveness must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasRoleEffectiveness
property:
  datatype: string
  in: limited
  in: basic
  in: standard
  in: advanced
  in: expert
  max count: 1
  message: Capability level must be from allowed values (gUFO quality aspect).
  path: hasCapabilityLevel
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Commitment level must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasCommitmentLevel
property:
  datatype: string
  max count: 1
  max length: 100
  message: Partner role label should be between 3 and 100 characters when provided.
  min count: 0
  min length: 3
  path: label
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Role effectiveness must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasRoleEffectiveness
property:
  datatype: string
  in: limited
  in: basic
  in: standard
  in: advanced
  in: expert
  max count: 1
  message: Capability level must be from allowed values (gUFO quality aspect).
  path: hasCapabilityLevel
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Commitment level must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasCommitmentLevel
target class: PartnerRole

Partner Role Temporal Shape
type: NodeShape
comment: Validates gUFO temporal constraints for partner roles.
property:
  datatype: dateTimeStamp
  max count: 1
  message: Partner role may have begin point timestamp.
  path: hasRoleBeginPoint
property:
  datatype: dateTimeStamp
  max count: 1
  message: Partner role may have end point timestamp.
  path: hasRoleEndPoint
sparql:
  message: Role end must be after begin when both are specified.
  select: SELECT $this WHERE { $this cacontology-partnerships:hasRoleBeginPoint ?start ; cacontology-partnerships:hasRoleEndPoint ?end . FILTER (?end <= ?start) }
target class: Role

Partner Role Type Validation Shape
type: NodeShape
comment: Validates gUFO Role type consistency for partner roles.
sparql:
  message: Partner roles must be properly typed as gUFO Role and extend UCO Role.
  select: SELECT $this WHERE { $this rdf:type gufo:Role . FILTER NOT EXISTS { $this rdfs:subClassOf* uco-role:Role . } }
target class: Role

Partnership Composition Shape
type: NodeShape
comment: Validates gUFO part-whole relationships for partnership composition.
sparql:
  message: Partnership composition must include complementary organizational capabilities (gUFO part-whole constraint).
  select: SELECT $this WHERE { $this rdf:type cacontology-partnerships:PublicPrivatePartnership . $this cacontology-partnerships:includesPartner ?publicOrg . ?publicOrg cacontology-partnerships:hasRole ?publicRole . ?publicRole rdf:type cacontology-partnerships:LawEnforcementPartner . FILTER NOT EXISTS { $this cacontology-partnerships:includesPartner ?privateOrg . ?privateOrg cacontology-partnerships:hasRole ?privateRole . ?privateRole rdf:type ?privateRoleType . ?privateRoleType rdfs:subClassOf* cacontology-partnerships:PartnerRole . FILTER (?privateRoleType != cacontology-partnerships:LawEnforcementPartner) } }
target class: PublicPrivatePartnership

Partnership Consistency Shape
type: NodeShape
comment: Validates consistency between partnership characteristics and participating organizations.
sparql:
  message: Partnership must include at least the minimum number of partners specified in partnerCount.
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/partnerships#
      prefix: cacontology-partnerships
  select: SELECT $this WHERE { $this cacontology-partnerships:partnerCount ?count . { SELECT $this (COUNT(?partner) AS ?actualCount) WHERE { $this cacontology-partnerships:includesPartner ?partner . } GROUP BY $this } FILTER (?actualCount < ?count) }
target class: PublicPrivatePartnership

Partnership Data Quality Shape
type: NodeShape
comment: Enhanced data quality validation for partnerships with gUFO quality consistency rules.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Partnership label should be between 5 and 200 characters when provided.
  min count: 0
  min length: 5
  path: label
property:
  datatype: string
  max count: 1
  max length: 1000
  message: Partnership comment should be between 10 and 1000 characters when provided.
  min count: 0
  min length: 10
  path: comment
sparql:
  message: Partnership effectiveness and success rate should be consistent (gUFO quality consistency).
  select: SELECT $this WHERE { $this cacontology-partnerships:hasPartnershipEffectiveness ?effectiveness ; cacontology-partnerships:hasSuccessRate ?rate . { FILTER (?effectiveness = "highly_effective" && ?rate < 0.7) } UNION { FILTER (?effectiveness = "effective" && (?rate < 0.5 || ?rate > 0.8)) } UNION { FILTER (?effectiveness = "moderate" && (?rate < 0.3 || ?rate > 0.6)) } UNION { FILTER (?effectiveness = "limited" && ?rate > 0.4) } UNION { FILTER (?effectiveness = "ineffective" && ?rate > 0.2) } }
sparql:
  message: Trust level and collaboration intensity should be correlated (gUFO quality consistency).
  select: SELECT $this WHERE { $this cacontology-partnerships:hasTrustLevel ?trust ; cacontology-partnerships:hasCollaborationIntensity ?intensity . { FILTER (?trust >= 0.8 && ?intensity NOT IN ("intensive", "fully_integrated")) } UNION { FILTER (?trust <= 0.3 && ?intensity NOT IN ("low", "moderate")) } }
target class: PublicPrivatePartnership

Partnership Object Type Validation Shape
type: NodeShape
comment: Validates gUFO Object type consistency for partnership objects.
property:
  has value: Object
  message: Information sharing framework should extend gUFO Object.
  min count: 0
  path: subClassOf
target class: InformationSharingFramework

Partnership Organization Type Validation Shape
type: NodeShape
comment: Validates gUFO Organization type consistency for partnerships.
property:
  has value: Organization
  message: Partnership must be typed as gUFO Organization.
  min count: 1
  path: type
property:
  has value: Organization
  message: Partnership class should extend gUFO Organization.
  min count: 0
  path: subClassOf
target class: PublicPrivatePartnership

Partnership Participation Shape
type: NodeShape
comment: Validates gUFO participation constraints for partnerships.
sparql:
  message: Partnership must have at least 2 participating organizations (gUFO participation constraint).
  select: SELECT $this WHERE { $this rdf:type cacontology-partnerships:PublicPrivatePartnership . { SELECT $this (COUNT(DISTINCT ?partner) AS ?partnerCount) WHERE { $this cacontology-partnerships:includesPartner ?partner . } GROUP BY $this } FILTER (?partnerCount < 2) }
target class: PublicPrivatePartnership

Partnership Phase Temporal Shape
type: NodeShape
comment: Validates gUFO temporal constraints for partnership phases.
property:
  datatype: dateTimeStamp
  max count: 1
  message: Partnership phase may have begin point timestamp.
  path: hasPhaseBeginPoint
property:
  datatype: dateTimeStamp
  max count: 1
  message: Partnership phase may have end point timestamp.
  path: hasPhaseEndPoint
sparql:
  message: Phase end must be after begin when both are specified.
  select: SELECT $this WHERE { $this cacontology-partnerships:hasPhaseBeginPoint ?start ; cacontology-partnerships:hasPhaseEndPoint ?end . FILTER (?end <= ?start) }
target class: Phase

Partnership Phase Type Validation Shape
type: NodeShape
comment: Validates gUFO Phase type consistency for partnership phases.
sparql:
  message: Partnership phases must be properly typed as gUFO Phase and extend partnership classes.
  select: SELECT $this WHERE { $this rdf:type gufo:Phase . FILTER NOT EXISTS { $this rdf:type ?phaseClass . ?phaseClass rdfs:subClassOf* cacontology-partnerships:PublicPrivatePartnership . } }
target class: Phase

Partnership Situation Type Validation Shape
type: NodeShape
comment: Validates gUFO Situation type consistency for partnership situations.
property:
  has value: Situation
  message: Partnership situation should extend gUFO Situation.
  min count: 0
  path: subClassOf
target class: Situation

Partnership Temporal Shape
type: NodeShape
comment: Validates gUFO temporal constraints for partnerships.
property:
  datatype: dateTimeStamp
  max count: 1
  message: Partnership may have end point timestamp.
  path: hasPartnershipEndPoint
property:
  datatype: dateTimeStamp
  max count: 1
  message: Partnership may have begin point timestamp.
  path: hasPartnershipBeginPoint
sparql:
  message: Partnership end must be after begin when both are specified (gUFO temporal constraint).
  select: SELECT $this WHERE { $this cacontology-partnerships:hasPartnershipBeginPoint ?start ; cacontology-partnerships:hasPartnershipEndPoint ?end . FILTER (?end <= ?start) }
target class: PublicPrivatePartnership

Platform Monitoring Shape
type: NodeShape
comment: Validation shape for platform monitoring instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 1000
  message: Platforms covered must be between 1 and 1,000.
  min count: 1
  min inclusive: 1
  path: platformsCovered
target class: PlatformMonitoring

Project Safe Childhood Case Shape
type: NodeShape
comment: Validation shape for Project Safe Childhood case instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Case label should be between 5 and 200 characters when provided.
  min count: 0
  min length: 5
  path: label
target class: ProjectSafeChildhoodCase

Public Private Partnership Shape
type: NodeShape
comment: Enhanced validation shape for public-private partnership instances with gUFO quality aspects.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 100
  message: Partnership must have between 2 and 100 partners.
  min count: 1
  min inclusive: 2
  path: partnerCount
property:
  datatype: string
  in: local
  in: national
  in: regional
  in: global
  max count: 1
  message: Partnership scope must be from the allowed list.
  min count: 1
  path: partnershipScope
property:
  datatype: decimal
  max count: 1
  max inclusive: 120.0
  message: Partnership duration must be between 1 and 120 months.
  min count: 0
  min inclusive: 1.0
  path: partnershipDuration
property:
  datatype: boolean
  max count: 1
  message: Partnership must specify if formal agreement exists.
  min count: 1
  path: formalAgreement
property:
  datatype: string
  in: ineffective
  in: limited
  in: moderate
  in: effective
  in: highly_effective
  max count: 1
  message: Partnership effectiveness must be from allowed values (gUFO quality aspect).
  path: hasPartnershipEffectiveness
property:
  datatype: string
  in: minimal
  in: basic
  in: standard
  in: enhanced
  in: comprehensive
  max count: 1
  message: Coordination level must be from allowed values (gUFO quality aspect).
  path: hasCoordinationLevel
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 100
  message: Partnership must have between 2 and 100 partners.
  min count: 1
  min inclusive: 2
  path: partnerCount
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Trust level must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasTrustLevel
property:
  datatype: string
  in: low
  in: moderate
  in: high
  in: intensive
  in: fully_integrated
  max count: 1
  message: Collaboration intensity must be from allowed values (gUFO quality aspect).
  path: hasCollaborationIntensity
property:
  datatype: string
  in: local
  in: national
  in: regional
  in: global
  max count: 1
  message: Partnership scope must be from the allowed list.
  min count: 1
  path: partnershipScope
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Success rate must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasSuccessRate
property:
  datatype: decimal
  max count: 1
  max inclusive: 120.0
  message: Partnership duration must be between 1 and 120 months.
  min count: 0
  min inclusive: 1.0
  path: partnershipDuration
property:
  datatype: boolean
  max count: 1
  message: Partnership must specify if formal agreement exists.
  min count: 1
  path: formalAgreement
property:
  datatype: string
  in: ineffective
  in: limited
  in: moderate
  in: effective
  in: highly_effective
  max count: 1
  message: Partnership effectiveness must be from allowed values (gUFO quality aspect).
  path: hasPartnershipEffectiveness
property:
  datatype: string
  in: minimal
  in: basic
  in: standard
  in: enhanced
  in: comprehensive
  max count: 1
  message: Coordination level must be from allowed values (gUFO quality aspect).
  path: hasCoordinationLevel
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Trust level must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasTrustLevel
property:
  datatype: string
  in: low
  in: moderate
  in: high
  in: intensive
  in: fully_integrated
  max count: 1
  message: Collaboration intensity must be from allowed values (gUFO quality aspect).
  path: hasCollaborationIntensity
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Success rate must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasSuccessRate
target class: PublicPrivatePartnership

Qualified Partnership Participation Shape
type: NodeShape
comment: Validates gUFO qualified participation situations in partnerships.
sparql:
  message: Qualified participation must involve appropriate partnership roles and organizations (gUFO qualified relation).
  select: SELECT $this WHERE { $this rdf:type gufo:ParticipationSituation . $this gufo:participatesIn ?partnership . ?partnership rdf:type cacontology-partnerships:PublicPrivatePartnership . FILTER NOT EXISTS { ?org cacontology-partnerships:hasRole ?role . ?role rdf:type ?roleType . ?roleType rdfs:subClassOf* cacontology-partnerships:PartnerRole . } }
target class: ParticipationSituation

Regular Meeting Shape
type: NodeShape
comment: Validation shape for regular meeting instances.
property:
  datatype: string
  in: weekly
  in: monthly
  in: quarterly
  in: annual
  in: ad_hoc
  max count: 1
  message: Meeting frequency must be from the allowed list.
  min count: 1
  path: meetingFrequency
target class: RegularMeeting

SolicitsHelpShape
type: PropertyShape
class: CrowdsourcingInvestigation
description: Links organization to crowdsourcing investigations they conduct
min count: 0
name: solicits help
path: solicitsHelp

Tech Cooperation Participation Shape
type: NodeShape
comment: Validates gUFO participation constraints for technology cooperation.
sparql:
  message: Tech cooperation must include at least one technology partner and one law enforcement partner (gUFO participation constraint).
  select: SELECT $this WHERE { $this rdf:type cacontology-partnerships:TechIndustryCooperation . FILTER NOT EXISTS { $this cacontology-partnerships:includesPartner ?techOrg . ?techOrg cacontology-partnerships:hasRole ?techRole . ?techRole rdf:type cacontology-partnerships:TechnologyPartner . } || FILTER NOT EXISTS { $this cacontology-partnerships:includesPartner ?leOrg . ?leOrg cacontology-partnerships:hasRole ?leRole . ?leRole rdf:type cacontology-partnerships:LawEnforcementPartner . } }
target class: TechIndustryCooperation

Tech Cooperation Validity Shape
type: NodeShape
comment: Validates that tech industry cooperation includes at least one technology partner.
sparql:
  message: Tech industry cooperation must include at least one technology partner.
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/partnerships#
      prefix: cacontology-partnerships
  select: SELECT $this WHERE { $this a cacontology-partnerships:TechIndustryCooperation . FILTER NOT EXISTS { $this cacontology-partnerships:includesPartner ?org . ?org cacontology-partnerships:hasRole cacontology-partnerships:TechnologyPartner . } }
target class: TechIndustryCooperation

Tech Industry Cooperation Shape
type: NodeShape
comment: Validation shape for tech industry cooperation instances.
property:
  datatype: boolean
  max count: 1
  message: Tech industry cooperation must specify if formal agreement exists.
  min count: 1
  path: formalAgreement
target class: TechIndustryCooperation

Technical Integration Shape
type: NodeShape
comment: Validation shape for technical integration instances.
property:
  datatype: string
  in: manual
  in: semi_automated
  in: fully_automated
  max count: 1
  message: Automation level must be from the allowed list.
  min count: 1
  path: automationLevel
target class: TechnicalIntegration

Technology Cooperation Composition Shape
type: NodeShape
comment: Validates gUFO part-whole relationships for technology cooperation composition.
sparql:
  message: Technology cooperation must include both technical and operational components (gUFO part-whole constraint).
  select: SELECT $this WHERE { $this rdf:type cacontology-partnerships:TechnologyCooperation . FILTER NOT EXISTS { { ?partnership cacontology-partnerships:coordinatedThrough $this } UNION { ?framework cacontology-partnerships:enablesSharing $this } } }
target class: TechnologyCooperation

Technology Cooperation Shape
type: NodeShape
comment: Enhanced validation shape for technology cooperation instances with gUFO quality aspects.
property:
  datatype: string
  in: experimental
  in: pilot
  in: production
  in: mature
  max count: 1
  message: Technology maturity must be from the allowed list.
  min count: 1
  path: technologyMaturity
property:
  datatype: string
  in: incremental
  in: moderate
  in: significant
  in: breakthrough
  in: revolutionary
  max count: 1
  message: Innovation level must be from allowed values (gUFO quality aspect).
  path: hasInnovationLevel
property:
  datatype: string
  in: slow
  in: moderate
  in: fast
  in: rapid
  in: immediate
  max count: 1
  message: Implementation speed must be from allowed values (gUFO quality aspect).
  path: hasImplementationSpeed
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Technical reliability must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasTechnicalReliability
property:
  datatype: string
  in: experimental
  in: pilot
  in: production
  in: mature
  max count: 1
  message: Technology maturity must be from the allowed list.
  min count: 1
  path: technologyMaturity
property:
  datatype: string
  in: incremental
  in: moderate
  in: significant
  in: breakthrough
  in: revolutionary
  max count: 1
  message: Innovation level must be from allowed values (gUFO quality aspect).
  path: hasInnovationLevel
property:
  datatype: string
  in: slow
  in: moderate
  in: fast
  in: rapid
  in: immediate
  max count: 1
  message: Implementation speed must be from allowed values (gUFO quality aspect).
  path: hasImplementationSpeed
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Technical reliability must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasTechnicalReliability
target class: TechnologyCooperation

Technology Maturity Implementation Rule
type: NodeShape
comment: Advanced gUFO business rule: Mature technology should have fast implementation and high reliability.
sparql:
  message: Mature technology cooperation must have fast implementation speed and high reliability (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-partnerships:technologyMaturity "mature" . { FILTER NOT EXISTS { $this cacontology-partnerships:hasImplementationSpeed ?speed . FILTER (?speed IN ("fast", "rapid", "immediate")) } } UNION { FILTER NOT EXISTS { $this cacontology-partnerships:hasTechnicalReliability ?reliability . FILTER (?reliability >= 0.8) } } }
target class: TechnologyCooperation

Technology Partner Shape
type: NodeShape
comment: Validation shape for technology partner instances.
property:
  datatype: string
  max count: 1
  max length: 100
  message: Technology partner label should be between 3 and 100 characters when provided.
  min count: 0
  min length: 3
  path: label
target class: TechnologyPartner

Tool Development Shape
type: NodeShape
comment: Validation shape for tool development instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 100000000.0
  message: Development investment must be between $10,000 and $100,000,000.
  min count: 0
  min inclusive: 10000.0
  path: developmentInvestment
target class: ToolDevelopment

Cellphone Search
type: Class
comment: Search of cellphone or mobile device for evidence. Typically requires consent or warrant (gUFO Event).
subclass of: PhysicalSearch

Chain of Custody Breach Situation
type: Class
comment: Situation where the chain of custody for evidence has been breached (gUFO Situation).
subclass of: Situation

Communication Device
type: Class
comment: Devices used to communicate with victims or distribute illegal content (gUFO FunctionalComplex).
subclass of: ComputerEquipment

Dashcam Footage
type: Class
comment: Dashboard camera footage from police vehicles. Digital observable.
subclass of: BodycamFootage

Device Consent Search
type: Class
comment: Consent authorization specific to electronic device search (cellphone, computer, etc.).
subclass of: ConsentToSearchAuthorization

Documentary Evidence
type: Class
comment: Physical documents, printed materials, or written items relevant to the investigation (gUFO Object).
subclass of: PhysicalEvidence

Evidence Analysis Phase
type: Phase
type: Class
comment: Phase during which physical evidence is undergoing forensic analysis (gUFO Phase - anti-rigid).
subclass of: PhysicalEvidence

Evidence Collection Phase
type: Phase
type: Class
comment: Phase during which physical evidence is being collected (gUFO Phase - anti-rigid).
subclass of: PhysicalEvidence

Evidence Contamination Situation
type: Class
comment: Situation where physical evidence has been contaminated or compromised (gUFO Situation).
subclass of: Situation

Evidence Disposition Phase
type: Phase
type: Class
comment: Phase during which evidence disposition is determined and executed (gUFO Phase - anti-rigid).
subclass of: PhysicalEvidence

Evidence Recovery Situation
type: Class
comment: Situation involving the recovery of previously lost or missing evidence (gUFO Situation).
subclass of: Situation

Evidence Seizure
type: Class
comment: Legal seizure of physical items as evidence. Extends investigation:InvestigativeAction (gUFO Event).
subclass of: Event
subclass of: InvestigativeAction

Evidence Storage Phase
type: Phase
type: Class
comment: Phase during which physical evidence is in secure storage (gUFO Phase - anti-rigid).
subclass of: PhysicalEvidence

Glove Compartment Search
type: Class
comment: Search of vehicle glove compartment as specific evidence location (gUFO Event).
subclass of: VehicleSearch

Intoxicating Substance
type: Class
comment: Alcohol, drugs, or other intoxicating substances intended to impair victim judgment. Extends AbuseFacilitationItem.
subclass of: AbuseFacilitationItem

Online Purchase
type: Class
comment: Purchase of items through online platforms for criminal purposes (gUFO Event).
subclass of: CriminalProcurement

Physical Purchase
type: Class
comment: In-person purchase of items for criminal purposes (gUFO Event).
subclass of: CriminalProcurement

Recording Equipment
type: Class
comment: Devices used to create audio or video recordings of criminal activity (gUFO FunctionalComplex).
subclass of: FunctionalComplex
subclass of: AbuseFacilitationItem

Residence Search
type: Class
comment: Search of residential premises including homes and apartments (gUFO Event).
subclass of: PhysicalSearch

Restraint Item
type: Class
comment: Items intended for restraining or controlling victims (gUFO Object).
subclass of: AbuseFacilitationItem

Search Officer Role
type: Role
type: Class
comment: Role of law enforcement officer conducting physical searches (gUFO Role - anti-rigid).
subclass of: Person

Surveillance Recording
type: Class
comment: Recording from surveillance or security cameras. Digital observable.
subclass of: Object
subclass of: ObservableObject

Vehicle Consent Search
type: Class
comment: Consent authorization specific to vehicle search.
subclass of: ConsentToSearchAuthorization

Workplace Search
type: Class
comment: Search of workplace or commercial premises (gUFO Event).
subclass of: PhysicalSearch

agreed to bring
type: DatatypeProperty
comment: Whether suspect agreed to bring this item during undercover communication.
domain: AbuseFacilitationItem
range: boolean

arrived at location
type: ObjectProperty
comment: Links vehicle to the location it arrived at for meeting.
domain: SuspectVehicle
range: Location

associated with subject
type: ObjectProperty
comment: Links evidence to the person associated with its ownership or use.
domain: PhysicalEvidence
range: Person

chain of custody
type: DatatypeProperty
comment: Documentation of evidence handling from seizure to court.
domain: PhysicalEvidence
range: string

collected during
type: ObjectProperty
comment: Links evidence to the collection action.
domain: PhysicalEvidence
range: EvidenceCollectionAction

condom brand
type: DatatypeProperty
comment: Brand of the condoms (e.g., 'Durex').
domain: Condoms
range: string

condom quantity
type: DatatypeProperty
comment: Number of condoms found.
domain: Condoms
range: nonNegativeInteger

consent given
type: DatatypeProperty
comment: Whether consent was given for the search.
domain: ConsentToSearchAuthorization
range: boolean

consent scope
type: DatatypeProperty
comment: Scope of consent given (vehicle_only, device_only, full_search).
domain: ConsentToSearchAuthorization
range: string

consent type
type: DatatypeProperty
comment: Type of consent obtained (verbal, written, implied).
domain: ConsentToSearchAuthorization
range: string

consent withdrawn
type: DatatypeProperty
comment: Whether consent was subsequently withdrawn.
domain: ConsentToSearchAuthorization
range: boolean

contains item
type: ObjectProperty
comment: Indicates that one evidence item was found inside another (gUFO part-whole relationship).
domain: PhysicalEvidence
range: PhysicalEvidence
sub property of: isObjectProperPartOf

criminal purpose
type: DatatypeProperty
comment: Intended criminal use of the item.
domain: AbuseFacilitationItem
range: string

device brand
type: DatatypeProperty
comment: Manufacturer or brand of the computer equipment.
domain: ComputerEquipment
range: string

device model
type: DatatypeProperty
comment: Model number or name of the device.
domain: ComputerEquipment
range: string

digital content found
type: DatatypeProperty
comment: Whether illegal digital content was found on the device.
domain: ComputerEquipment
range: boolean

encryption status
type: DatatypeProperty
comment: Whether the device or storage media is encrypted (encrypted, unencrypted, partially_encrypted).
domain: ComputerEquipment
range: string

evidence found in vehicle
type: ObjectProperty
comment: Links physical evidence to the vehicle it was found in.
domain: PhysicalEvidence
range: SuspectVehicle

evidence tag
type: DatatypeProperty
comment: Unique identifier assigned to evidence item during collection.
domain: PhysicalEvidence
range: string

evidence type
type: DatatypeProperty
comment: Category of physical evidence (digital_device, document, contraband, personal_item).
domain: PhysicalEvidence
range: string

evidentiary significance
type: DatatypeProperty
comment: Assessment of evidence importance (critical, high, medium, low).
domain: PhysicalEvidence
range: string

forensic analysis required
type: DatatypeProperty
comment: Whether the item requires specialized forensic analysis.
domain: PhysicalEvidence
range: boolean

found in location
type: DatatypeProperty
comment: Specific location where evidence was found (e.g., 'glove compartment').
domain: AbuseFacilitationItem
range: string

functional status
type: DatatypeProperty
comment: Whether the device is functional (working, non_functional, partially_functional).
domain: ComputerEquipment
range: string

has acquisition risk
type: DatatypeProperty
comment: Risk assessment of criminal acquisition patterns (gUFO quality aspect).
domain: CriminalProcurement
range: string

has analysis accuracy
type: DatatypeProperty
comment: Accuracy level of forensic analysis (gUFO quality aspect).
domain: ForensicAnalystRole
range: double

has analysis reliability
type: DatatypeProperty
comment: Reliability of forensic analysis results (gUFO quality aspect).
domain: ForensicAnalystRole
range: string

has consent authorization
type: ObjectProperty
comment: Links search action to consent authorization. Uses investigation:relevantAuthorization pattern.
domain: PhysicalSearch
range: ConsentToSearchAuthorization
sub property of: relevantAuthorization

has contamination level
type: DatatypeProperty
comment: Level of evidence contamination (gUFO quality aspect).
domain: PhysicalEvidence
range: double

has custody integrity
type: DatatypeProperty
comment: Integrity level of chain of custody (gUFO quality aspect).
domain: EvidenceCustodianRole
range: string

has documentation completeness
type: DatatypeProperty
comment: Completeness of custody documentation (gUFO quality aspect).
domain: EvidenceCustodianRole
range: double

has evidence begin point
type: DatatypeProperty
comment: Temporal begin point for evidence lifecycle (gUFO temporal property).
domain: PhysicalEvidence
range: dateTimeStamp
sub property of: hasBeginPointInXSDDateTimeStamp

has evidence end point
type: DatatypeProperty
comment: Temporal end point for evidence lifecycle (gUFO temporal property).
domain: PhysicalEvidence
range: dateTimeStamp
sub property of: hasEndPointInXSDDateTimeStamp

has evidence integrity
type: DatatypeProperty
comment: Overall integrity level of physical evidence (gUFO quality aspect).
domain: PhysicalEvidence
range: string

has evidence reliability
type: DatatypeProperty
comment: Reliability assessment of evidence for prosecution (gUFO quality aspect).
domain: PhysicalEvidence
range: double

has forensic value
type: DatatypeProperty
comment: Forensic value assessment of evidence (gUFO quality aspect).
domain: PhysicalEvidence
range: string

has method validation
type: DatatypeProperty
comment: Validation status of analysis methods used (gUFO quality aspect).
domain: ForensicAnalystRole
range: string

has phase begin point
type: DatatypeProperty
comment: Temporal begin point for evidence phases (gUFO temporal property).
domain: Phase
range: dateTimeStamp
sub property of: hasBeginPointInXSDDateTimeStamp

has phase end point
type: DatatypeProperty
comment: Temporal end point for evidence phases (gUFO temporal property).
domain: Phase
range: dateTimeStamp
sub property of: hasEndPointInXSDDateTimeStamp

has preservation quality
type: DatatypeProperty
comment: Quality level of evidence preservation (gUFO quality aspect).
domain: PhysicalEvidence
range: string

has procurement begin point
type: DatatypeProperty
comment: Temporal begin point for procurement events (gUFO temporal property).
domain: CriminalProcurement
range: dateTimeStamp
sub property of: hasBeginPointInXSDDateTimeStamp

has procurement end point
type: DatatypeProperty
comment: Temporal end point for procurement events (gUFO temporal property).
domain: CriminalProcurement
range: dateTimeStamp
sub property of: hasEndPointInXSDDateTimeStamp

has procurement suspicion
type: DatatypeProperty
comment: Suspicion level regarding criminal procurement (gUFO quality aspect).
domain: CriminalProcurement
range: string

has provenance record
type: ObjectProperty
comment: Links physical evidence to its provenance record for chain of custody tracking.
domain: PhysicalEvidence
range: PhysicalEvidenceProvenanceRecord

has role begin point
type: DatatypeProperty
comment: Temporal begin point for forensic roles (gUFO temporal property).
domain: Role
range: dateTimeStamp
sub property of: hasBeginPointInXSDDateTimeStamp

has role end point
type: DatatypeProperty
comment: Temporal end point for forensic roles (gUFO temporal property).
domain: Role
range: dateTimeStamp
sub property of: hasEndPointInXSDDateTimeStamp

has search begin point
type: DatatypeProperty
comment: Temporal begin point for search events (gUFO temporal property).
domain: PhysicalSearch
range: dateTimeStamp
sub property of: hasBeginPointInXSDDateTimeStamp

has search completeness
type: DatatypeProperty
comment: Completeness assessment of search coverage (gUFO quality aspect).
domain: PhysicalSearch
range: double

has search efficiency
type: DatatypeProperty
comment: Efficiency rating of search operation (gUFO quality aspect).
domain: PhysicalSearch
range: double

has search end point
type: DatatypeProperty
comment: Temporal end point for search events (gUFO temporal property).
domain: PhysicalSearch
range: dateTimeStamp
sub property of: hasEndPointInXSDDateTimeStamp

has search thoroughness
type: DatatypeProperty
comment: Thoroughness level of physical search (gUFO quality aspect).
domain: PhysicalSearch
range: string

has traceability
type: DatatypeProperty
comment: Traceability level of procurement source (gUFO quality aspect).
domain: CriminalProcurement
range: double

hidden compartment
type: DatatypeProperty
comment: Whether the item contains hidden compartments or concealed areas.
domain: PhysicalEvidence
range: boolean

linked to traffic stop
type: ObjectProperty
comment: Links bodycam footage to the traffic stop during which it was recorded.
domain: BodycamFootage
range: PhysicalSearch

matches selfie
type: DatatypeProperty
comment: Whether the bodycam footage was matched to selfies sent by suspect (as in Miami ICAC case).
domain: BodycamFootage
range: boolean

modification purpose
type: DatatypeProperty
comment: Purpose of item modification for criminal activity.
domain: ItemModification
range: string

payment method
type: DatatypeProperty
comment: Method of payment used (credit_card, cash, digital_currency, check).
domain: CriminalProcurement
range: string

physical condition
type: DatatypeProperty
comment: Physical state of the evidence (excellent, good, fair, poor, damaged).
domain: PhysicalEvidence
range: string

procured by
type: ObjectProperty
comment: Links a physical evidence item to its procurement action.
domain: PhysicalEvidence
range: CriminalProcurement

procurement cost
type: DatatypeProperty
comment: Cost paid for the item in USD.
domain: CriminalProcurement
range: decimal

procurement date
type: DatatypeProperty
comment: Date when the item was acquired by the suspect.
domain: CriminalProcurement
range: dateTime

procurement method
type: DatatypeProperty
comment: Method used to acquire the item (online_purchase, retail_store, private_sale, gift).
domain: CriminalProcurement
range: string

procurement source
type: DatatypeProperty
comment: Source from which the item was acquired (vendor name, website, individual).
domain: CriminalProcurement
range: string

recording date
type: DatatypeProperty
comment: Date and time when the recording was made.
domain: BodycamFootage
range: dateTime

recording duration
type: DatatypeProperty
comment: Duration of the recording in seconds.
domain: BodycamFootage
range: decimal

recording officer
type: ObjectProperty
comment: Officer whose bodycam made the recording.
domain: BodycamFootage
range: Person

registered to suspect
type: DatatypeProperty
comment: Whether the vehicle is registered to the suspect.
domain: SuspectVehicle
range: boolean

search duration
type: DatatypeProperty
comment: Duration of the search in hours.
domain: PhysicalSearch
range: decimal

search scope
type: DatatypeProperty
comment: Areas or items covered by the search authorization.
domain: PhysicalSearch
range: string

search warrant
type: ObjectProperty
comment: Warrant authorizing the search and seizure.
domain: PhysicalSearch
range: ObservableObject

searching officer
type: ObjectProperty
comment: Law enforcement officer who conducted the search.
domain: PhysicalSearch
range: Person

seized during
type: ObjectProperty
comment: Links physical evidence to the search operation during which it was seized.
domain: PhysicalEvidence
range: PhysicalSearch

seizure date
type: DatatypeProperty
comment: Date when the evidence was seized by law enforcement.
domain: PhysicalEvidence
range: dateTime

seizure location
type: ObjectProperty
comment: Physical location where evidence was seized.
domain: PhysicalEvidence
range: Location

serial number
type: DatatypeProperty
comment: Serial number of the device or item.
domain: PhysicalEvidence
range: string

storage capacity
type: DatatypeProperty
comment: Storage capacity of digital storage media in gigabytes.
domain: StorageMedia
range: decimal

tamper evidence
type: DatatypeProperty
comment: Signs that the item has been tampered with or modified.
domain: PhysicalEvidence
range: string

target age group
type: DatatypeProperty
comment: Age group of children the item is designed to attract.
domain: ChildTargetedItem
range: string

used for identification
type: DatatypeProperty
comment: Whether the recording was used to identify suspects.
domain: BodycamFootage
range: boolean

used in offense
type: DatatypeProperty
comment: Whether the vehicle was used in the commission of the offense.
domain: SuspectVehicle
range: boolean

vape brand
type: DatatypeProperty
comment: Brand of the vape device.
domain: VapeDevice
range: string

vape flavor
type: DatatypeProperty
comment: Flavor of the vape device (e.g., 'strawberry').
domain: VapeDevice
range: string

vehicle color
type: DatatypeProperty
comment: Exterior color of the vehicle (e.g., 'white').
domain: SuspectVehicle
range: string

vehicle license plate
type: DatatypeProperty
comment: License plate number of the vehicle.
domain: SuspectVehicle
range: string

vehicle make
type: DatatypeProperty
comment: Manufacturer of the vehicle (e.g., 'Toyota').
domain: SuspectVehicle
range: string

vehicle model
type: DatatypeProperty
comment: Model of the vehicle (e.g., 'Corolla').
domain: SuspectVehicle
range: string

vehicle VIN
type: DatatypeProperty
comment: Vehicle Identification Number.
domain: SuspectVehicle
range: string

vehicle year
type: DatatypeProperty
comment: Model year of the vehicle (e.g., 2015).
domain: SuspectVehicle
range: nonNegativeInteger

witness present
type: ObjectProperty
comment: Civilian witness present during the search.
domain: PhysicalSearch
range: Person

Bodycam Footage Shape
type: NodeShape
comment: Validation shape for bodycam footage evidence.
property:
  datatype: langString
  max count: 1
  message: Bodycam footage should have a label.
  min count: 0
  path: label
property:
  datatype: dateTime
  max count: 1
  message: May specify the recording date.
  min count: 0
  path: recordingDate
property:
  datatype: boolean
  max count: 1
  message: May specify if used for suspect identification.
  min count: 0
  path: usedForIdentification
property:
  datatype: boolean
  max count: 1
  message: May specify if footage was matched to suspect selfies.
  min count: 0
  path: matchesSelfie
target class: BodycamFootage

Computer Equipment Composition Shape
type: NodeShape
comment: Validates gUFO part-whole relationships for computer equipment composition.
sparql:
  message: Computer equipment must have consistent component relationships (gUFO part-whole constraint).
  select: SELECT $this WHERE { $this rdf:type cacontology-physical:ComputerEquipment . $this cacontology-physical:containsItem ?storage . ?storage rdf:type cacontology-physical:StorageMedia . FILTER NOT EXISTS { ?storage cacontology-physical:storageCapacity ?capacity . FILTER (?capacity > 0) } }
target class: ComputerEquipment

Computer Equipment Shape
type: NodeShape
comment: Enhanced validation shape for computer equipment instances.
property:
  datatype: string
  max count: 1
  max length: 50
  message: Computer equipment must specify device brand (2-50 characters).
  min count: 1
  min length: 2
  path: deviceBrand
property:
  datatype: string
  max count: 1
  max length: 100
  message: Computer equipment must specify device model (2-100 characters).
  min count: 1
  min length: 2
  path: deviceModel
property:
  datatype: string
  in: unencrypted
  in: partially_encrypted
  in: fully_encrypted
  in: password_protected
  in: unknown
  max count: 1
  message: Computer equipment must specify encryption status from the allowed list.
  min count: 1
  path: encryptionStatus
property:
  datatype: string
  in: working
  in: non_functional
  in: partially_functional
  in: unknown
  max count: 1
  message: Computer equipment must specify functional status from the allowed list.
  min count: 1
  path: functionalStatus
target class: ComputerEquipment

Condoms Shape
type: NodeShape
comment: Validation shape for condoms found as evidence.
property:
  datatype: langString
  max count: 1
  message: Condoms evidence should have a label.
  min count: 0
  path: label
property:
  datatype: string
  max count: 1
  message: May specify the condom brand.
  min count: 0
  path: condomBrand
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 100
  message: Condom quantity should be between 1 and 100.
  min count: 0
  min inclusive: 1
  path: condomQuantity
property:
  datatype: string
  max count: 1
  message: May specify where the condoms were found.
  min count: 0
  path: foundInLocation
property:
  datatype: boolean
  max count: 1
  message: May specify if suspect agreed to bring this item.
  min count: 0
  path: agreedToBring
target class: Condoms

Consent to Search Authorization Shape
type: NodeShape
comment: Validation shape for consent-based search authorizations.
property:
  datatype: langString
  max count: 1
  message: Consent authorization should have a label.
  min count: 0
  path: label
property:
  datatype: boolean
  max count: 1
  message: May specify if consent was given.
  min count: 0
  path: consentGiven
property:
  datatype: string
  in: verbal
  in: written
  in: implied
  max count: 1
  message: Consent type must be from the allowed list.
  min count: 0
  path: consentType
property:
  datatype: string
  in: vehicle_only
  in: device_only
  in: full_search
  in: limited
  max count: 1
  message: Consent scope must be from the allowed list.
  min count: 0
  path: consentScope
target class: ConsentToSearchAuthorization

Contamination Prevention Rule
type: NodeShape
comment: Advanced gUFO business rule: Low contamination requires excellent preservation and handling.
sparql:
  message: Evidence with low contamination levels must have excellent preservation quality (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-physical:hasContaminationLevel ?contamination . FILTER (?contamination <= 0.2) FILTER NOT EXISTS { $this cacontology-physical:hasPreservationQuality ?preservation . FILTER (?preservation IN ("excellent", "optimal")) } }
target class: PhysicalEvidence

Criminal Procurement Shape
type: NodeShape
comment: Enhanced validation shape for criminal procurement instances with gUFO quality aspects.
property:
  datatype: decimal
  max count: 1
  max inclusive: 1000000.0
  message: Procurement cost must be between $0.00 and $1,000,000.00.
  min count: 0
  min inclusive: 0.0
  path: procurementCost
property:
  datatype: string
  in: credit_card
  in: cash
  in: digital_currency
  in: check
  in: money_order
  in: unknown
  max count: 1
  message: Payment method must be from the allowed list when specified.
  min count: 0
  path: paymentMethod
property:
  datatype: string
  in: none
  in: low
  in: moderate
  in: high
  in: critical
  max count: 1
  message: Procurement suspicion must be from allowed values (gUFO quality aspect).
  path: hasProcurementSuspicion
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Traceability must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasTraceability
property:
  datatype: string
  in: low
  in: moderate
  in: high
  in: extreme
  in: unknown
  max count: 1
  message: Acquisition risk must be from allowed values (gUFO quality aspect).
  path: hasAcquisitionRisk
property:
  datatype: string
  in: online_purchase
  in: retail_store
  in: private_sale
  in: gift
  in: theft
  in: unknown
  max count: 1
  message: Criminal procurement must specify procurement method from the allowed list.
  min count: 1
  path: procurementMethod
target class: CriminalProcurement

Custody Integrity Shape
type: NodeShape
comment: Validates evidence custody integrity.
sparql:
  message: Compromised custody integrity should have documentation issues flagged.
  select: SELECT $this WHERE { $this cacontology-physical:hasCustodyIntegrity "compromised" ; cacontology-physical:hasDocumentationCompleteness ?completeness . FILTER (?completeness > 0.8) }
target class: EvidenceCustodianRole

Device Consent Search Shape
type: NodeShape
comment: Validation shape for device consent search authorizations.
property:
  datatype: langString
  max count: 1
  message: Device consent search should have a label.
  min count: 0
  path: label
target class: DeviceConsentSearch

Evidence Composition Shape
type: NodeShape
comment: Validates gUFO part-whole relationships for evidence composition.
sparql:
  message: Evidence containment relationships must be consistent with gUFO part-whole constraints.
  select: SELECT $this WHERE { $this cacontology-physical:containsItem ?part . ?part cacontology-physical:containsItem $this . }
target class: PhysicalEvidence

Evidence Cross Reference Shape
type: NodeShape
comment: Validates cross-references between evidence and related entities.
sparql:
  message: Physical evidence must have either seizure or procurement information.
  select: SELECT $this WHERE { $this rdf:type cacontology-physical:PhysicalEvidence . FILTER NOT EXISTS { { $this cacontology-physical:seizedDuring ?search } UNION { $this cacontology-physical:procuredBy ?procurement } } }
target class: PhysicalEvidence

Evidence Custodian Role Shape
type: NodeShape
comment: Enhanced validation shape for evidence custodian role instances with gUFO quality aspects.
property:
  datatype: string
  max count: 1
  max length: 100
  message: Evidence custodian role label should be between 5 and 100 characters when provided.
  min count: 0
  min length: 5
  path: label
property:
  datatype: string
  in: compromised
  in: questionable
  in: acceptable
  in: secure
  in: pristine
  max count: 1
  message: Custody integrity must be from allowed values (gUFO quality aspect).
  path: hasCustodyIntegrity
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Documentation completeness must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasDocumentationCompleteness
target class: EvidenceCustodianRole

Evidence Data Quality Shape
type: NodeShape
comment: Enhanced data quality validation for physical evidence with gUFO quality consistency rules.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Evidence label should be between 5 and 200 characters when provided.
  min count: 0
  min length: 5
  path: label
property:
  datatype: string
  max count: 1
  max length: 1000
  message: Evidence comment should be between 10 and 1000 characters when provided.
  min count: 0
  min length: 10
  path: comment
sparql:
  message: Evidence integrity and reliability should be consistent (gUFO quality consistency).
  select: SELECT $this WHERE { $this cacontology-physical:hasEvidenceIntegrity ?integrity ; cacontology-physical:hasEvidenceReliability ?reliability . { FILTER (?integrity = "pristine" && ?reliability < 0.9) } UNION { FILTER (?integrity = "excellent" && (?reliability < 0.7 || ?reliability > 0.95)) } UNION { FILTER (?integrity = "compromised" && ?reliability > 0.3) } }
sparql:
  message: Contamination level and preservation quality should be correlated (gUFO quality consistency).
  select: SELECT $this WHERE { $this cacontology-physical:hasContaminationLevel ?contamination ; cacontology-physical:hasPreservationQuality ?preservation . { FILTER (?contamination >= 0.8 && ?preservation NOT IN ("poor", "fair")) } UNION { FILTER (?contamination <= 0.2 && ?preservation NOT IN ("excellent", "optimal")) } }
target class: PhysicalEvidence

Evidence Lifecycle Timing Shape
type: NodeShape
comment: Validates temporal sequence consistency in evidence lifecycle.
sparql:
  message: Evidence seizure date should be before analysis date when both are specified.
  select: SELECT $this WHERE { $this cacontology-physical:seizureDate ?seizureDate ; cacontology-physical:seizedDuring ?search . ?analyst cacontology-physical:analyzedBy ?this ; cacontology-physical:hasRoleBeginPoint ?analysisDate . FILTER (?seizureDate > ?analysisDate) }
target class: PhysicalEvidence

Evidence Participation Shape
type: NodeShape
comment: Validates gUFO participation constraints for physical evidence.
sparql:
  message: Physical evidence must be associated with at least one search or procurement event (gUFO participation constraint).
  select: SELECT $this WHERE { $this rdf:type cacontology-physical:PhysicalEvidence . FILTER NOT EXISTS { { $this cacontology-physical:seizedDuring ?search } UNION { $this cacontology-physical:procuredBy ?procurement } } }
target class: PhysicalEvidence

Evidence Phase Temporal Shape
type: NodeShape
comment: Validates gUFO temporal constraints for evidence phases.
property:
  datatype: dateTimeStamp
  max count: 1
  message: Evidence phase may have begin point timestamp.
  path: hasPhaseBeginPoint
property:
  datatype: dateTimeStamp
  max count: 1
  message: Evidence phase may have end point timestamp.
  path: hasPhaseEndPoint
sparql:
  message: Phase end must be after begin when both are specified.
  select: SELECT $this WHERE { $this cacontology-physical:hasPhaseBeginPoint ?start ; cacontology-physical:hasPhaseEndPoint ?end . FILTER (?end <= ?start) }
target class: Phase

Evidence Phase Type Validation Shape
type: NodeShape
comment: Validates gUFO Phase type consistency for evidence phases.
sparql:
  message: Evidence phases must be properly typed as gUFO Phase and extend evidence classes.
  select: SELECT $this WHERE { $this rdf:type gufo:Phase . FILTER NOT EXISTS { $this rdf:type ?phaseClass . ?phaseClass rdfs:subClassOf* cacontology-physical:PhysicalEvidence . } }
target class: Phase

Evidence Situation Type Validation Shape
type: NodeShape
comment: Validates gUFO Situation type consistency for evidence situations.
property:
  has value: Situation
  message: Evidence situation should extend gUFO Situation.
  min count: 0
  path: subClassOf
target class: Situation

Evidence Temporal Shape
type: NodeShape
comment: Validates gUFO temporal constraints for physical evidence.
property:
  datatype: dateTimeStamp
  max count: 1
  message: Evidence may have begin point timestamp.
  path: hasEvidenceBeginPoint
property:
  datatype: dateTimeStamp
  max count: 1
  message: Evidence may have end point timestamp.
  path: hasEvidenceEndPoint
sparql:
  message: Evidence end must be after begin when both are specified (gUFO temporal constraint).
  select: SELECT $this WHERE { $this cacontology-physical:hasEvidenceBeginPoint ?start ; cacontology-physical:hasEvidenceEndPoint ?end . FILTER (?end <= ?start) }
target class: PhysicalEvidence

Forensic Analyst Role Shape
type: NodeShape
comment: Enhanced validation shape for forensic analyst role instances with gUFO quality aspects.
property:
  datatype: string
  max count: 1
  max length: 100
  message: Forensic analyst role label should be between 5 and 100 characters when provided.
  min count: 0
  min length: 5
  path: label
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Analysis accuracy must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasAnalysisAccuracy
property:
  datatype: string
  in: unreliable
  in: questionable
  in: acceptable
  in: reliable
  in: highly_reliable
  max count: 1
  message: Analysis reliability must be from allowed values (gUFO quality aspect).
  path: hasAnalysisReliability
property:
  datatype: string
  in: unvalidated
  in: partially_validated
  in: validated
  in: peer_reviewed
  in: certified
  max count: 1
  message: Method validation must be from allowed values (gUFO quality aspect).
  path: hasMethodValidation
target class: ForensicAnalystRole

Forensic Role Participation Shape
type: NodeShape
comment: Validates gUFO participation constraints for forensic roles.
sparql:
  message: Forensic analyst roles must be associated with evidence analysis activities (gUFO participation constraint).
  select: SELECT $this WHERE { $this rdf:type cacontology-physical:ForensicAnalystRole . FILTER NOT EXISTS { ?evidence cacontology-physical:forensicAnalysisRequired true . ?evidence cacontology-physical:analyzedBy $this . } }
target class: ForensicAnalystRole

Forensic Role Temporal Shape
type: NodeShape
comment: Validates gUFO temporal constraints for forensic roles.
property:
  datatype: dateTimeStamp
  max count: 1
  message: Forensic role may have begin point timestamp.
  path: hasRoleBeginPoint
property:
  datatype: dateTimeStamp
  max count: 1
  message: Forensic role may have end point timestamp.
  path: hasRoleEndPoint
sparql:
  message: Role end must be after begin when both are specified.
  select: SELECT $this WHERE { $this cacontology-physical:hasRoleBeginPoint ?start ; cacontology-physical:hasRoleEndPoint ?end . FILTER (?end <= ?start) }
target class: Role

Forensic Role Type Validation Shape
type: NodeShape
comment: Validates gUFO Role type consistency for forensic roles.
sparql:
  message: Forensic roles must be properly typed as gUFO Role and extend UCO Identity.
  select: SELECT $this WHERE { $this rdf:type gufo:Role . FILTER NOT EXISTS { $this rdfs:subClassOf* uco-identity:Person . } }
target class: Role

High Value Evidence Rule
type: NodeShape
comment: Advanced gUFO business rule: High forensic value evidence should have excellent integrity and preservation.
sparql:
  message: Critical or high forensic value evidence must have excellent integrity and preservation quality (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-physical:hasForensicValue ?value . FILTER (?value IN ("critical", "high")) { FILTER NOT EXISTS { $this cacontology-physical:hasEvidenceIntegrity ?integrity . FILTER (?integrity IN ("excellent", "pristine")) } } UNION { FILTER NOT EXISTS { $this cacontology-physical:hasPreservationQuality ?preservation . FILTER (?preservation IN ("excellent", "optimal")) } } }
target class: PhysicalEvidence

Physical Evidence Object Type Validation Shape
type: NodeShape
comment: Validates gUFO Object type consistency for physical evidence.
property:
  has value: Object
  message: Physical evidence must be typed as gUFO Object.
  min count: 1
  path: type
property:
  has value: Object
  message: Physical evidence class should extend gUFO Object.
  min count: 0
  path: subClassOf
target class: PhysicalEvidence

Physical Evidence Shape
type: NodeShape
comment: Enhanced validation shape for physical evidence instances with gUFO quality aspects.
property:
  datatype: string
  in: digital_media
  in: documents
  in: photographs
  in: clothing
  in: biological_samples
  in: weapons
  in: contraband
  in: personal_items
  max count: 1
  message: Physical evidence must specify evidence type from the allowed list.
  min count: 1
  path: evidenceType
property:
  datatype: string
  in: primary_evidence
  in: secondary_evidence
  in: corroborative_evidence
  in: circumstantial_evidence
  in: demonstrative_evidence
  in: real_evidence
  max count: 1
  message: Physical evidence must specify evidence category from the allowed list.
  min count: 1
  path: evidenceCategory
property:
  datatype: dateTime
  max count: 1
  message: Physical evidence must specify collection date.
  min count: 1
  path: collectionDate
property:
  datatype: string
  max count: 1
  max length: 200
  message: Physical evidence must specify collection location (5-200 characters).
  min count: 1
  min length: 5
  path: collectionLocation
property:
  datatype: string
  in: excellent
  in: good
  in: fair
  in: poor
  in: damaged
  in: deteriorated
  in: contaminated
  max count: 1
  message: Physical evidence must specify evidence condition from the allowed list.
  min count: 1
  path: evidenceCondition
property:
  datatype: string
  in: collected
  in: processed
  in: analyzed
  in: stored
  in: returned
  in: destroyed
  in: missing
  max count: 1
  message: Physical evidence must specify evidence status from the allowed list.
  min count: 1
  path: evidenceStatus
property:
  datatype: string
  max count: 1
  max length: 50
  message: Physical evidence must specify evidence number (5-50 characters).
  min count: 1
  min length: 5
  path: evidenceNumber
property:
  datatype: string
  in: compromised
  in: questionable
  in: good
  in: excellent
  in: pristine
  max count: 1
  message: Evidence integrity must be from allowed values (gUFO quality aspect).
  path: hasEvidenceIntegrity
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Evidence reliability must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasEvidenceReliability
property:
  datatype: string
  in: poor
  in: fair
  in: good
  in: excellent
  in: optimal
  max count: 1
  message: Preservation quality must be from allowed values (gUFO quality aspect).
  path: hasPreservationQuality
property:
  datatype: string
  in: minimal
  in: limited
  in: moderate
  in: high
  in: critical
  max count: 1
  message: Forensic value must be from allowed values (gUFO quality aspect).
  path: hasForensicValue
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Contamination level must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasContaminationLevel
target class: PhysicalEvidence

Physical Search Shape
type: NodeShape
comment: Enhanced validation shape for physical search instances with gUFO quality aspects.
property:
  datatype: string
  max count: 1
  max length: 500
  message: Physical search must specify search scope (10-500 characters).
  min count: 1
  min length: 10
  path: searchScope
property:
  datatype: decimal
  max count: 1
  max inclusive: 72.0
  message: Search duration must be between 0.25 and 72.0 hours.
  min count: 1
  min inclusive: 0.25
  path: searchDuration
property:
  datatype: string
  in: superficial
  in: basic
  in: thorough
  in: comprehensive
  in: exhaustive
  max count: 1
  message: Search thoroughness must be from allowed values (gUFO quality aspect).
  path: hasSearchThoroughness
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Search efficiency must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasSearchEfficiency
property:
  datatype: double
  max count: 1
  max inclusive: 1.0
  message: Search completeness must be between 0.0 and 1.0 (gUFO quality aspect).
  min inclusive: 0.0
  path: hasSearchCompleteness
target class: PhysicalSearch

Procurement Event Temporal Shape
type: NodeShape
comment: Validates gUFO temporal constraints for procurement events.
sparql:
  message: Procurement events must have consistent temporal boundaries with end after start.
  select: SELECT $this WHERE { $this cacontology-physical:hasProcurementBeginPoint ?start ; cacontology-physical:hasProcurementEndPoint ?end . FILTER (?end <= ?start) }
target class: CriminalProcurement

Procurement Event Type Validation Shape
type: NodeShape
comment: Validates gUFO Event type consistency for procurement events.
property:
  has value: Event
  message: Criminal procurement must be typed as gUFO Event.
  min count: 1
  path: type
sparql:
  message: Procurement events must be properly typed as gUFO Event and extend UCO Action.
  select: SELECT $this WHERE { $this rdf:type gufo:Event . FILTER NOT EXISTS { $this rdf:type ?actionClass . ?actionClass rdfs:subClassOf* uco-action:Action . } }
target class: CriminalProcurement

Reliable Analysis Rule
type: NodeShape
comment: Advanced gUFO business rule: Highly reliable analysis requires validated methods and high accuracy.
sparql:
  message: Highly reliable analysis must use validated methods and have high accuracy ratings (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-physical:hasAnalysisReliability "highly_reliable" . { FILTER NOT EXISTS { $this cacontology-physical:hasMethodValidation ?validation . FILTER (?validation IN ("validated", "peer_reviewed", "certified")) } } UNION { FILTER NOT EXISTS { $this cacontology-physical:hasAnalysisAccuracy ?accuracy . FILTER (?accuracy >= 0.9) } } }
target class: ForensicAnalystRole

Search Event Temporal Shape
type: NodeShape
comment: Validates gUFO temporal constraints for search events.
sparql:
  message: gUFO Events must have consistent temporal boundaries with end after start.
  select: SELECT $this WHERE { $this cacontology-physical:hasSearchBeginPoint ?start ; cacontology-physical:hasSearchEndPoint ?end . FILTER (?end <= ?start) }
target class: PhysicalSearch

Search Event Timing Shape
type: NodeShape
comment: Validates search event timing consistency.
sparql:
  message: Search events should occur after procurement events for the same evidence.
  select: SELECT $this WHERE { ?evidence cacontology-physical:seizedDuring $this ; cacontology-physical:procuredBy ?procurement . ?procurement cacontology-physical:procurementDate ?procurementDate . $this cacontology-physical:hasSearchBeginPoint ?searchDate . FILTER (?searchDate < ?procurementDate) }
target class: PhysicalSearch

Search Event Type Validation Shape
type: NodeShape
comment: Validates gUFO Event type consistency for search events.
property:
  has value: Event
  message: Physical search must be typed as gUFO Event.
  min count: 1
  path: type
sparql:
  message: Search events must be properly typed as gUFO Event and extend UCO Action.
  select: SELECT $this WHERE { $this rdf:type gufo:Event . FILTER NOT EXISTS { $this rdf:type ?actionClass . ?actionClass rdfs:subClassOf* uco-action:Action . } }
target class: PhysicalSearch

Search Participation Shape
type: NodeShape
comment: Validates gUFO participation constraints for search events.
sparql:
  message: Search events must involve at least one searching officer (gUFO participation constraint).
  select: SELECT $this WHERE { $this rdf:type cacontology-physical:PhysicalSearch . FILTER NOT EXISTS { $this cacontology-physical:searchingOfficer ?officer . } }
target class: PhysicalSearch

Secure Custody Rule
type: NodeShape
comment: Advanced gUFO business rule: Pristine custody integrity requires complete documentation.
sparql:
  message: Pristine custody integrity must have complete documentation (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-physical:hasCustodyIntegrity "pristine" . FILTER NOT EXISTS { $this cacontology-physical:hasDocumentationCompleteness ?completeness . FILTER (?completeness >= 0.95) } }
target class: EvidenceCustodianRole

Suspect Vehicle Shape
type: NodeShape
comment: Validation shape for suspect vehicles used in ICAC offenses.
property:
  datatype: langString
  max count: 1
  message: Suspect vehicle should have a label.
  min count: 0
  path: label
property:
  datatype: string
  max count: 1
  max length: 50
  message: Vehicle make should be between 1 and 50 characters.
  min count: 0
  min length: 1
  path: vehicleMake
property:
  datatype: string
  max count: 1
  max length: 50
  message: Vehicle model should be between 1 and 50 characters.
  min count: 0
  min length: 1
  path: vehicleModel
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 2030
  message: Vehicle year must be between 1900 and 2030.
  min count: 0
  min inclusive: 1900
  path: vehicleYear
property:
  datatype: string
  max count: 1
  message: May specify the vehicle color.
  min count: 0
  path: vehicleColor
property:
  datatype: string
  max count: 1
  max length: 20
  message: License plate should be between 1 and 20 characters.
  min count: 0
  min length: 1
  path: vehicleLicensePlate
property:
  datatype: string
  max count: 1
  message: VIN must be exactly 17 alphanumeric characters (no I, O, Q).
  min count: 0
  path: vehicleVIN
  pattern: ^[A-HJ-NPR-Z0-9]{17}$
property:
  datatype: boolean
  max count: 1
  message: May specify if vehicle is registered to suspect.
  min count: 0
  path: registeredToSuspect
property:
  datatype: boolean
  max count: 1
  message: May specify if vehicle was used in offense.
  min count: 0
  path: usedInOffense
target class: SuspectVehicle

Suspicious Procurement Rule
type: NodeShape
comment: Advanced gUFO business rule: High suspicion procurement should have enhanced traceability requirements.
sparql:
  message: High or critical suspicion procurement must have good traceability and high acquisition risk (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-physical:hasProcurementSuspicion ?suspicion . FILTER (?suspicion IN ("high", "critical")) { FILTER NOT EXISTS { $this cacontology-physical:hasTraceability ?traceability . FILTER (?traceability >= 0.6) } } UNION { FILTER NOT EXISTS { $this cacontology-physical:hasAcquisitionRisk ?risk . FILTER (?risk IN ("high", "extreme")) } } }
target class: CriminalProcurement

Thorough Search Rule
type: NodeShape
comment: Advanced gUFO business rule: Comprehensive searches should have high efficiency and completeness.
sparql:
  message: Comprehensive or exhaustive searches must have high efficiency and completeness ratings (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-physical:hasSearchThoroughness ?thoroughness . FILTER (?thoroughness IN ("comprehensive", "exhaustive")) { FILTER NOT EXISTS { $this cacontology-physical:hasSearchEfficiency ?efficiency . FILTER (?efficiency >= 0.7) } } UNION { FILTER NOT EXISTS { $this cacontology-physical:hasSearchCompleteness ?completeness . FILTER (?completeness >= 0.8) } } }
target class: PhysicalSearch

Vape Device Shape
type: NodeShape
comment: Validation shape for vape devices found as evidence.
property:
  datatype: langString
  max count: 1
  message: Vape device should have a label.
  min count: 0
  path: label
property:
  datatype: string
  max count: 1
  message: May specify the vape flavor.
  min count: 0
  path: vapeFlavor
property:
  datatype: string
  max count: 1
  message: May specify the vape brand.
  min count: 0
  path: vapeBrand
property:
  datatype: string
  max count: 1
  message: May specify where the vape was found.
  min count: 0
  path: foundInLocation
property:
  datatype: boolean
  max count: 1
  message: May specify if suspect agreed to bring this item.
  min count: 0
  path: agreedToBring
target class: VapeDevice

Vehicle Consent Search Shape
type: NodeShape
comment: Validation shape for vehicle consent search authorizations.
property:
  datatype: langString
  max count: 1
  message: Vehicle consent search should have a label.
  min count: 0
  path: label
target class: VehicleConsentSearch

Account Metadata
type: Class
comment: Account-level metadata including creation date, profile information, and activity patterns.
subclass of: SocialMediaEvidence

Account Suspension Action Shape
type: NodeShape
comment: Validation shape for account suspension action instances.
property:
  datatype: dateTime
  max count: 1
  message: Account suspension action must specify start time.
  min count: 1
  path: startTime
property:
  datatype: string
  in: policy_violation
  in: illegal_content
  in: harassment
  in: spam
  in: underage_user
  in: terms_violation
  max count: 1
  message: Suspension reason must be from the allowed list.
  min count: 0
  path: suspensionReason
property:
  datatype: integer
  max count: 1
  max inclusive: 3650
  message: Suspension duration must be between 1 and 3650 days.
  min count: 0
  min inclusive: 1
  path: suspensionDuration
target class: AccountSuspensionAction

Content Hashing Action
type: Class
comment: An action by a platform to generate hashes of content for detection and matching. Modeled as gUFO Event.
subclass of: Event
subclass of: Action

Content Moderation Action Shape
type: NodeShape
comment: Validation shape for content moderation action instances.
property:
  datatype: dateTime
  max count: 1
  message: Content moderation action must specify start time.
  min count: 1
  path: startTime
property:
  datatype: string
  in: approved
  in: removed
  in: restricted
  in: flagged
  in: escalated
  in: pending_review
  max count: 1
  message: Moderation decision must be from the allowed list.
  min count: 0
  path: moderationDecision
target class: ContentModerationAction

Content Moderation Capability Shape
type: NodeShape
comment: Validation shape for content moderation capability instances.
property:
  datatype: string
  in: automated
  in: human_review
  in: hybrid
  in: user_reporting
  in: ai_assisted
  in: none
  max count: 1
  message: Moderation method must be from the allowed list.
  min count: 0
  path: moderationMethod
property:
  datatype: boolean
  max count: 1
  message: CSAI detection enablement must be a boolean value.
  min count: 0
  path: csaiDetectionEnabled
property:
  datatype: boolean
  max count: 1
  message: Hash matching enablement must be a boolean value.
  min count: 0
  path: hashMatchingEnabled
property:
  datatype: string
  in: 24/7
  in: business_hours
  in: limited
  in: none
  in: automated_only
  max count: 1
  message: Moderation presence must be from the allowed list.
  min count: 0
  path: moderationPresence
target class: ContentModerationCapability

Content Moderation Cross Reference Shape
type: NodeShape
comment: Validates that content platforms have moderation capabilities.
sparql:
  message: Content platforms should have associated content moderation capabilities.
  select: SELECT $this WHERE { $this a ?platformType . FILTER (?platformType IN ( cacontology-platforms:SocialMediaPlatform, cacontology-platforms:VideoStreamingPlatform )) FILTER NOT EXISTS { $this cacontology-platforms:hasContentModerationCapability ?moderation . } }
target class: SocialMediaPlatform
target class: VideoStreamingPlatform

Content Moderation Queue Shape
type: NodeShape
comment: Validates moderation queue objects used for scaled content review operations.
property:
  max count: 1
  message: Content moderation queue must specify exactly one operator (Electronic Service Provider).
  min count: 1
  path: queueOperatedBy
property:
  datatype: nonNegativeInteger
  max count: 1
  message: Queue size must be a non-negative integer when present.
  min count: 0
  path: queueSize
target class: ContentModerationQueue

Cross-Platform Evidence
type: Class
comment: Evidence found across multiple social media platforms by the same user.
subclass of: SocialMediaEvidence

Cryptocurrency Service
type: Class
comment: A service for cryptocurrency transactions and exchanges (e.g., Bitcoin, Coinbase, Binance). Modeled as gUFO Object.
subclass of: Object
subclass of: ObservableObject

Dark Web Service
type: Class
comment: A service accessible through anonymizing networks like Tor, often used for illegal activities. Modeled as gUFO Object.
subclass of: Object
subclass of: ObservableObject

Data Preservation Action Shape
type: NodeShape
comment: Validation shape for data preservation action instances.
property:
  datatype: dateTime
  max count: 1
  message: Data preservation action must specify start time.
  min count: 1
  path: startTime
property:
  datatype: integer
  max count: 1
  max inclusive: 3650
  message: Preservation period must be between 30 and 3650 days.
  min count: 0
  min inclusive: 30
  path: preservationPeriod
target class: DataPreservationAction

Data Quality Shape
type: NodeShape
comment: Validates data quality for platform entities.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Name must be between 2 and 200 characters.
  min count: 1
  min length: 2
  path: name
property:
  datatype: string
  max count: 1
  max length: 1000
  message: Description should be between 10 and 1000 characters when provided.
  min count: 0
  min length: 10
  path: description
target class: ElectronicServiceProvider
target class: FileHostingService
target class: GamePlatform
target class: MessagingService
target class: SocialMediaPlatform
target class: VideoStreamingPlatform

Data Retention Cross Reference Shape
type: NodeShape
comment: Validates that service providers have data retention policies.
sparql:
  message: Electronic service providers should have associated data retention policies.
  select: SELECT $this WHERE { $this a cacontology-platforms:ElectronicServiceProvider . FILTER NOT EXISTS { ?platform cacontology-platforms:operatedBy $this ; cacontology-platforms:hasDataRetentionPolicy ?policy . } }
target class: ElectronicServiceProvider

Data Retention Policy Shape
type: NodeShape
comment: Validation shape for data retention policy instances.
property:
  datatype: integer
  max count: 1
  max inclusive: 3650
  message: User data retention period must be between 0 and 3650 days (10 years).
  min count: 0
  min inclusive: 0
  path: userDataRetentionPeriod
property:
  datatype: integer
  max count: 1
  max inclusive: 3650
  message: Content retention period must be between 0 and 3650 days (10 years).
  min count: 0
  min inclusive: 0
  path: contentRetentionPeriod
property:
  datatype: integer
  max count: 1
  max inclusive: 3650
  message: Log retention period must be between 0 and 3650 days (10 years).
  min count: 0
  min inclusive: 0
  path: logRetentionPeriod
property:
  datatype: integer
  max count: 1
  max inclusive: 365
  message: Anonymous user data retention must be between 0 and 365 days.
  min count: 0
  min inclusive: 0
  path: anonymousUserDataRetention
target class: DataRetentionPolicy

Device Social Media Correlation
type: Class
comment: Correlation between evidence found on devices and social media accounts.
subclass of: UcoObject

Digital Evidence Correlation
type: Class
comment: Process of correlating evidence found across devices and platforms.
subclass of: Action

Electronic Service Provider Shape
type: NodeShape
comment: Validation shape for electronic service provider instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Electronic service provider must have a name (2-200 characters).
  min count: 1
  min length: 2
  path: name
property:
  datatype: string
  max count: 10
  max length: 100
  message: Jurisdiction must be 2-100 characters when specified.
  min count: 0
  min length: 2
  path: operatesInJurisdiction
property:
  datatype: string
  max count: 1
  max length: 100
  message: Headquarters location must be 2-100 characters when specified.
  min count: 0
  min length: 2
  path: headquarteredIn
property:
  datatype: boolean
  max count: 1
  message: Legal process acceptance must be a boolean value.
  min count: 0
  path: acceptsLegalProcess
property:
  datatype: boolean
  max count: 1
  message: Emergency disclosure capability must be a boolean value.
  min count: 0
  path: emergencyDisclosureCapable
target class: ElectronicServiceProvider

Emergency Disclosure Request Shape
type: NodeShape
comment: Validation shape for emergency disclosure request instances (EDR).
property:
  datatype: dateTime
  max count: 1
  message: Emergency disclosure request must specify start time.
  min count: 1
  path: startTime
property:
  datatype: string
  max count: 1
  max length: 2000
  message: Emergency disclosure request must include a grounded description (10-2000 chars).
  min count: 1
  min length: 10
  path: description
target class: EmergencyDisclosureRequest

Game Platform Shape
type: NodeShape
comment: Validation shape for game platform instances.
property:
  datatype: string
  max count: 1
  max length: 100
  message: Game platform must have a name (2-100 characters).
  min count: 1
  min length: 2
  path: name
property:
  datatype: boolean
  max count: 1
  message: Guest accounts allowance must be a boolean value.
  min count: 0
  path: guestAccountsAllowed
property:
  datatype: string
  in: friend_request
  in: direct_message
  in: public_chat
  in: game_invite
  in: voice_chat
  max count: 1
  message: Contact initiation method must be from the allowed list.
  min count: 0
  path: contactInitiationMethod
target class: GamePlatform

Large Scale Platform Takedown Shape
type: NodeShape
comment: Validation shape for large scale platform takedown instances.
property:
  datatype: string
  max count: 1
  max length: 100
  message: Large scale platform takedown must have a name (5-100 characters).
  min count: 1
  min length: 5
  path: name
property:
  datatype: dateTime
  max count: 1
  message: Large scale platform takedown must specify start time.
  min count: 1
  path: startTime
property:
  datatype: string
  in: local
  in: national
  in: international
  in: global
  max count: 1
  message: Operation scale must be from the allowed list.
  min count: 0
  path: operationScale
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 200
  message: Countries involved must be between 1 and 200.
  min count: 0
  min inclusive: 1
  path: countriesInvolved
property:
  datatype: decimal
  max count: 1
  max inclusive: 10000.0
  message: Evidence volume must be between 0.1 and 10000 terabytes.
  min count: 0
  min inclusive: 0.1
  path: evidenceVolumeTerabytes
target class: LargeScalePlatformTakedown

Legal Compliance Validation Shape
type: NodeShape
comment: Validates legal compliance capabilities for service providers.
sparql:
  message: Service providers that accept legal process should have contact information.
  select: SELECT $this WHERE { $this cacontology-platforms:acceptsLegalProcess true . FILTER NOT EXISTS { $this cacontology-platforms:legalProcessContactInfo ?contact . } }
target class: ElectronicServiceProvider

Legal Data Disclosure Action Shape
type: NodeShape
comment: Validation shape for legal data disclosure action instances.
property:
  datatype: dateTime
  max count: 1
  message: Legal data disclosure action must specify start time.
  min count: 1
  path: startTime
property:
  datatype: integer
  max count: 1
  max inclusive: 365
  message: Response time frame must be between 1 and 365 days.
  min count: 0
  min inclusive: 1
  path: responseTimeFrame
property:
  datatype: string
  in: search_warrant
  in: subpoena
  in: court_order
  in: emergency_request
  in: preservation_request
  max count: 1
  message: Legal process used must be from the allowed list.
  min count: 0
  path: legalProcessUsed
target class: LegalDataDisclosureAction

Mass User Behavior Analysis Shape
type: NodeShape
comment: Validation shape for mass user behavior analysis instances.
property:
  datatype: dateTime
  max count: 1
  message: Mass user behavior analysis must specify start time.
  min count: 1
  path: startTime
property:
  datatype: decimal
  max count: 1
  max inclusive: 100.0
  message: Automated processing percentage must be between 0.0 and 100.0.
  min count: 0
  min inclusive: 0.0
  path: automatedProcessingPercentage
target class: MassUserBehaviorAnalysis

Mass User Database Shape
type: NodeShape
comment: Validation shape for mass user database instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 100000000
  message: User count must be between 1000 and 100 million for mass databases.
  min count: 0
  min inclusive: 1000
  path: userCount
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 3650
  message: Processing timeframe must be between 1 and 3650 days.
  min count: 0
  min inclusive: 1
  path: processingTimeframeDays
target class: MassUserDatabase

Massive Platform Situation
type: Class
comment: Situation involving platforms with massive user bases requiring specialized investigation approaches. Modeled as gUFO Situation.
subclass of: Situation

Messaging Service Shape
type: NodeShape
comment: Validation shape for messaging service instances.
property:
  datatype: string
  max count: 1
  max length: 100
  message: Messaging service must have a name (2-100 characters).
  min count: 1
  min length: 2
  path: name
property:
  datatype: string
  in: none
  in: in-transit
  in: end-to-end
  in: partial
  max count: 1
  message: Encryption level must be from the allowed list.
  min count: 0
  path: encryptionLevel
property:
  datatype: boolean
  max count: 1
  message: Anonymous chat allowance must be a boolean value.
  min count: 0
  path: allowsAnonymousChat
property:
  datatype: boolean
  max count: 1
  message: Conversation logging must be a boolean value.
  min count: 0
  path: conversationLogging
target class: MessagingService

Moderation Throughput Metrics Shape
type: NodeShape
comment: Validates moderation throughput/latency metrics used to quantify bottlenecks.
property:
  datatype: decimal
  max count: 1
  message: Review latency hours must be a non-negative decimal when present.
  min count: 0
  min inclusive: 0.0
  path: reviewLatencyHours
property:
  datatype: nonNegativeInteger
  max count: 1
  message: Throughput per day must be a non-negative integer when present.
  min count: 0
  path: throughputPerDay
property:
  datatype: nonNegativeInteger
  max count: 1
  message: Flag volume per month must be a non-negative integer when present.
  min count: 0
  path: flagVolumePerMonth
target class: ModerationThroughputMetrics

Multi-Platform Situation
type: Class
comment: Situation involving coordination across multiple platforms and service providers. Modeled as gUFO Situation.
subclass of: Situation

Online Dating Platform
type: Class
comment: A platform for meeting and dating online (e.g., Tinder, Bumble, Grindr, dating websites). Modeled as gUFO Object.
subclass of: Object
subclass of: ObservableObject

Platform Cooperation Situation
type: Class
comment: Situation involving cooperative efforts between platforms and law enforcement. Modeled as gUFO Situation.
subclass of: Situation

Platform Deployment Phase
type: Phase
type: Class
comment: Phase when platform is deployed and becomes operational. Modeled as anti-rigid gUFO Phase.
subclass of: ElectronicServiceProvider

Platform Growth Phase
type: Phase
type: Class
comment: Phase of platform expansion and user base growth. Modeled as anti-rigid gUFO Phase.
subclass of: ElectronicServiceProvider

Platform Investigation Phase
type: Phase
type: Class
comment: Phase when platform is under law enforcement investigation. Modeled as anti-rigid gUFO Phase.
subclass of: ElectronicServiceProvider

Platform Moderation Phase
type: Phase
type: Class
comment: Phase of active content moderation and policy enforcement. Modeled as anti-rigid gUFO Phase.
subclass of: ElectronicServiceProvider

Platform Operation
type: Class
comment: Coordinated law enforcement operation targeting specific platforms or services. Modeled as gUFO Event.
subclass of: Event
subclass of: Action
equivalent class: CriminalEvent

Platform Operator Cross Reference Shape
type: NodeShape
comment: Validates that platforms have associated operators.
sparql:
  message: Platform should have an associated electronic service provider operator.
  select: SELECT $this WHERE { $this a ?platformType . FILTER (?platformType IN ( cacontology-platforms:SocialMediaPlatform, cacontology-platforms:MessagingService, cacontology-platforms:VideoStreamingPlatform, cacontology-platforms:FileHostingService, cacontology-platforms:GamePlatform )) FILTER NOT EXISTS { ?esp cacontology-platforms:operatedBy $this . } }
target class: FileHostingService
target class: GamePlatform
target class: MessagingService
target class: SocialMediaPlatform
target class: VideoStreamingPlatform

Platform Takedown Phase
type: Phase
type: Class
comment: Phase of platform takedown and shutdown operations. Modeled as anti-rigid gUFO Phase.
subclass of: ElectronicServiceProvider

Private Message
type: Class
comment: Private messages or direct communications on social media platforms.
subclass of: SocialMediaEvidence

Profile Browsing Anonymous
type: Class
comment: Ability to browse and contact user profiles anonymously without revealing identity.
subclass of: AnonymousContactOpportunity

Retention Period Validation Shape
type: NodeShape
comment: Validates logical consistency of retention periods.
sparql:
  message: Anonymous user data retention should not exceed general user data retention.
  select: SELECT $this WHERE { $this cacontology-platforms:userDataRetentionPeriod ?userRetention ; cacontology-platforms:anonymousUserDataRetention ?anonRetention . FILTER (?anonRetention > ?userRetention) }
target class: DataRetentionPolicy

Social Media App Data
type: Class
comment: Application data from social media apps stored on devices.
subclass of: ElectronicDeviceEvidence

Social Media Platform Shape
type: NodeShape
comment: Validation shape for social media platform instances.
property:
  datatype: string
  max count: 1
  max length: 100
  message: Social media platform must have a name (2-100 characters).
  min count: 1
  min length: 2
  path: name
property:
  datatype: boolean
  max count: 1
  message: Registration requirement must be a boolean value.
  min count: 0
  path: requiresRegistration
property:
  datatype: string
  in: social_media
  in: photo_sharing
  in: video_sharing
  in: microblogging
  in: professional_networking
  max count: 1
  message: Platform type must be from the allowed list.
  min count: 0
  path: platformType
property:
  datatype: string
  in: adults
  in: teens
  in: children
  in: all_ages
  in: professionals
  max count: 1
  message: Primary user base must be from the allowed list.
  min count: 0
  path: primaryUserBase
target class: SocialMediaPlatform

Social Media Post
type: Class
comment: Individual posts, updates, or content shared on social media platforms.
subclass of: SocialMediaEvidence

Stored Social Media Content
type: Class
comment: Social media content downloaded and stored on electronic devices.
subclass of: ElectronicDeviceEvidence

Technical Service Provider
type: Class
comment: Organizations providing technical infrastructure (hosting, CDN, DNS, etc.) that may be involved in content distribution. Modeled as gUFO Organization.
subclass of: Organization

Temporal Validation Shape
type: NodeShape
comment: Validates temporal consistency for platform actions.
sparql:
  message: Start time must be before end time when both are specified.
  select: SELECT $this WHERE { $this uco-core:startTime ?start ; uco-core:endTime ?end . FILTER (?start >= ?end) }
target class: AccountSuspensionAction
target class: ContentModerationAction
target class: DataPreservationAction
target class: LargeScalePlatformTakedown
target class: LegalDataDisclosureAction
target class: MassUserBehaviorAnalysis

User Risk Classification Shape
type: NodeShape
comment: Validation shape for user risk classification instances.
property:
  datatype: string
  in: low
  in: medium
  in: high
  in: critical
  max count: 1
  message: User risk level must be from the allowed list.
  min count: 1
  path: userRiskLevel
target class: UserRiskClassification

User Scale Classification Shape
type: NodeShape
comment: Validation shape for user scale classification instances.
property:
  datatype: string
  in: small
  in: medium
  in: large
  in: massive
  max count: 1
  message: Platform scale must be from the allowed list.
  min count: 1
  path: platformScale
property:
  datatype: boolean
  max count: 1
  message: Million plus users indicator must be a boolean value.
  min count: 0
  path: millionPlusUsers
target class: UserScaleClassification

User Verification System Shape
type: NodeShape
comment: Validation shape for user verification system instances.
property:
  datatype: string
  in: none
  in: self_declaration
  in: credit_card
  in: id_verification
  in: parental_consent
  in: third_party
  max count: 1
  message: Age verification method must be from the allowed list.
  min count: 0
  path: ageVerificationMethod
property:
  datatype: boolean
  max count: 1
  message: Identity verification requirement must be a boolean value.
  min count: 0
  path: identityVerificationRequired
property:
  datatype: string
  in: none
  in: weak
  in: moderate
  in: strong
  in: government_id
  max count: 1
  message: Verification strength must be from the allowed list.
  min count: 0
  path: verificationStrength
target class: UserVerificationSystem

Video Streaming Platform Shape
type: NodeShape
comment: Validation shape for video streaming platform instances.
property:
  datatype: string
  max count: 1
  max length: 100
  message: Video streaming platform must have a name (2-100 characters).
  min count: 1
  min length: 2
  path: name
property:
  datatype: boolean
  max count: 1
  message: Age verification requirement must be a boolean value.
  min count: 0
  path: ageVerificationRequired
target class: VideoStreamingPlatform

account status
type: DatatypeProperty
comment: Status of account (active, suspended, deleted, preserved).
domain: SocialMediaAccount
range: string

account username
type: DatatypeProperty
comment: Username or handle for social media account.
domain: SocialMediaAccount
range: string

action duration
type: DatatypeProperty
comment: Duration of platform action.
domain: ContentModerationAction
range: duration

anonymity level
type: DatatypeProperty
comment: Level of anonymity provided (full_anonymous, pseudo_anonymous, semi_verified, fully_verified).
domain: AnonymityProtectionLevel
range: string

content type
type: DatatypeProperty
comment: Type of content (text, image, video, document).
domain: SocialMediaEvidence
range: string

coordinated by
type: ObjectProperty
comment: Organization coordinating multi-platform investigation.
domain: PlatformInvestigationCoordination
range: Organization

correlates with account
type: ObjectProperty
comment: Links device evidence to related social media account.
domain: ElectronicDeviceEvidence
range: SocialMediaAccount

correlates with device
type: ObjectProperty
comment: Links social media evidence to related device evidence.
domain: SocialMediaEvidence
range: ElectronicDeviceEvidence

cross platform anonymity
type: DatatypeProperty
comment: Whether anonymity is maintained across connected platforms or services.
domain: AnonymityProtectionLevel
range: boolean

cross platform match
type: ObjectProperty
comment: Links evidence found on different platforms but from same user.
domain: SocialMediaEvidence
range: SocialMediaEvidence

data disclosed
type: ObjectProperty
comment: Links a disclosure action to the specific data that was disclosed.
domain: LegalDataDisclosureAction
range: ObservableObject

device type
type: DatatypeProperty
comment: Type of electronic device (computer, phone, tablet, storage media).
domain: ElectronicDeviceEvidence
range: string

devices searched
type: DatatypeProperty
comment: Number of devices searched in simultaneous operation.
domain: SimultaneousSearchWarrant
range: nonNegativeInteger

discovered during
type: ObjectProperty
comment: Links evidence to the investigative action during which it was discovered.
domain: SocialMediaEvidence
range: Action

discovery timestamp
type: DatatypeProperty
comment: Timestamp when evidence was discovered by investigators.
domain: SocialMediaEvidence
range: dateTime

enables temporary accounts
type: ObjectProperty
comment: Links platform to temporary account systems enabled.
domain: AnonymousChatPlatform
range: TemporaryAccountSystem

enqueued for moderation
type: ObjectProperty
source: Community & Intelligence Beyond Detection (Global Emancipation Network), 2026-02-10.
comment: Links a content item or moderation-relevant observable object to a moderation queue for review/processing.
domain: ObservableObject
range: ContentModerationQueue

evidence category
type: DatatypeProperty
comment: Category of evidence (possession, distribution, production, communication).
domain: SocialMediaEvidence
range: string

evidence timestamp
type: DatatypeProperty
comment: Timestamp when evidence was created or posted.
domain: SocialMediaEvidence
range: dateTime

facilitates random matching
type: ObjectProperty
comment: Links contact opportunity to random user matching systems.
domain: AnonymousContactOpportunity
range: RandomUserMatching

found on device
type: DatatypeProperty
comment: Whether evidence was found on electronic device.
domain: ElectronicDeviceEvidence
range: boolean

found on social media
type: DatatypeProperty
comment: Whether evidence was found on social media platform.
domain: SocialMediaEvidence
range: boolean

governed by disclosure policy
type: ObjectProperty
comment: Links platform to identity disclosure policies governing anonymous users.
domain: AnonymousChatPlatform
range: IdentityDisclosurePolicy

has action begin point
type: DatatypeProperty
comment: Temporal begin point for platform action.
domain: ContentModerationAction
range: dateTimeStamp
sub property of: hasBeginPointInXSDDateTimeStamp

has action end point
type: DatatypeProperty
comment: Temporal end point for platform action.
domain: ContentModerationAction
range: dateTimeStamp
sub property of: hasEndPointInXSDDateTimeStamp

has backlog situation
type: ObjectProperty
source: Community & Intelligence Beyond Detection (Global Emancipation Network), 2026-02-10.
comment: Links a moderation queue to a backlog situation indicating capacity constraints.
domain: ContentModerationQueue
range: ReviewBacklogSituation

has content moderation capability
type: ObjectProperty
comment: Links a platform to its content moderation capabilities.
range: ContentModerationCapability

has data retention policy
type: ObjectProperty
comment: Links a platform to its data retention policy.
range: DataRetentionPolicy

has legal compliance capability
type: ObjectProperty
comment: Links a platform to its legal compliance capabilities.
range: LegalComplianceCapability

has phase begin point
type: DatatypeProperty
comment: Temporal begin point for platform phase.
domain: Phase
range: dateTimeStamp
sub property of: hasBeginPointInXSDDateTimeStamp

has phase end point
type: DatatypeProperty
comment: Temporal end point for platform phase.
domain: Phase
range: dateTimeStamp
sub property of: hasEndPointInXSDDateTimeStamp

has platform begin point
type: DatatypeProperty
comment: Temporal begin point for platform operation.
domain: ElectronicServiceProvider
range: dateTimeStamp
sub property of: hasBeginPointInXSDDateTimeStamp

has platform end point
type: DatatypeProperty
comment: Temporal end point for platform operation.
domain: ElectronicServiceProvider
range: dateTimeStamp
sub property of: hasEndPointInXSDDateTimeStamp

has user verification system
type: ObjectProperty
comment: Links a platform to its user verification system.
range: UserVerificationSystem

identity disclosure circumstances
type: DatatypeProperty
comment: Circumstances under which anonymous user identity may be disclosed (never, legal_request, safety_violation, platform_choice).
domain: IdentityDisclosurePolicy
range: string

legal authority
type: ObjectProperty
comment: The legal authority (court, agency) that requested the data disclosure.
domain: LegalDataDisclosureAction
range: Organization

legal process contact info
type: DatatypeProperty
comment: Contact information for submitting legal process requests.
domain: LegalComplianceCapability
range: string

maintains anonymity level
type: ObjectProperty
comment: Links platform to anonymity protection levels maintained.
domain: AnonymousChatPlatform
range: AnonymityProtectionLevel

offers contact opportunity
type: ObjectProperty
comment: Links platform to anonymous contact opportunities provided.
domain: AnonymousChatPlatform
range: AnonymousContactOpportunity

operated by
type: ObjectProperty
comment: Links a platform or service to the organization that operates it.
range: ElectronicServiceProvider

phase duration
type: DatatypeProperty
comment: Duration of platform phase.
domain: Phase
range: duration

platform duration
type: DatatypeProperty
comment: Duration of platform operation from launch to shutdown.
domain: ElectronicServiceProvider
range: duration

platforms investigated
type: DatatypeProperty
comment: Number of platforms investigated in coordinated effort.
domain: PlatformInvestigationCoordination
range: nonNegativeInteger

provides anonymous feature
type: ObjectProperty
comment: Links anonymous chat platform to specific anonymity features provided.
domain: AnonymousChatPlatform
range: GuestChatFeature

provides open chat access
type: ObjectProperty
comment: Links contact opportunity to open chat room access.
domain: AnonymousContactOpportunity
range: OpenChatRooms

reports throughput metrics
type: ObjectProperty
source: Community & Intelligence Beyond Detection (Global Emancipation Network), 2026-02-10.
comment: Links a moderation queue to operational throughput/latency metrics.
domain: ContentModerationQueue
range: ModerationThroughputMetrics

search warrant required
type: DatatypeProperty
comment: Whether search warrant was required to obtain this evidence.
domain: SocialMediaEvidence
range: boolean

social media platform
type: DatatypeProperty
comment: Name of social media platform where evidence was found.
domain: SocialMediaEvidence
range: string

subsidiary of
type: ObjectProperty
comment: Links a platform or organization to its parent company.
range: Organization

Behavioral Prevention Shape
type: NodeShape
comment: Validation shape for behavioral prevention instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 36.0
  message: Behavioral prevention duration should be between 1 and 36 months.
  min count: 0
  min inclusive: 1.0
  path: programDuration
target class: BehavioralPrevention

Child Abuse Prevention Month
type: Class
comment: National Child Abuse Prevention Month coordinated awareness activities.
subclass of: PreventionCampaign

Child Safety Education Shape
type: NodeShape
comment: Validation shape for child safety education instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Child safety education must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
property:
  datatype: string
  in: preschool
  in: elementary
  in: middle_school
  in: high_school
  in: young_adult
  in: all_ages
  max count: 1
  message: Age group must be from the allowed list.
  min count: 0
  path: ageGroup
property:
  datatype: dateTime
  max count: 1
  message: Child safety education must specify start time.
  min count: 1
  path: startTime
target class: ChildSafetyEducation

Community Education Shape
type: NodeShape
comment: Validation shape for community education instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Community education must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
property:
  datatype: dateTime
  max count: 1
  message: Community education must specify start time.
  min count: 1
  path: startTime
target class: CommunityEducation

Community Educator
type: Class
comment: Educator working in community prevention programs.
subclass of: Role

Community Engagement Shape
type: NodeShape
comment: Validation shape for community engagement instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 1.0
  message: Community participation must be between 0.0 and 1.0.
  min count: 0
  min inclusive: 0.0
  path: communityParticipation
target class: CommunityEngagement

Community Newsletter System
type: Class
comment: Regular newsletter communication system for ongoing community engagement and safety updates.
subclass of: CommunityEmailList

Community Outreach Coordination Validation Shape
type: NodeShape
comment: Validates that community outreach has coordinators.
sparql:
  message: Community outreach should have assigned coordinators.
  select: SELECT $this WHERE { $this a cacontology-prevention:CommunityOutreach . FILTER NOT EXISTS { $this cacontology-prevention:coordinatedBy ?coordinator . ?coordinator a cacontology-prevention:SafetyCoordinator . } }
target class: CommunityOutreach

Community Outreach Shape
type: NodeShape
comment: Validation shape for community outreach instances.
property:
  datatype: dateTime
  max count: 1
  message: Community outreach must specify start time.
  min count: 1
  path: startTime
property:
  datatype: string
  max count: 1
  max length: 200
  message: Community outreach must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
target class: CommunityOutreach

Data Quality Shape
type: NodeShape
comment: Validates data quality for prevention entities.
property:
  datatype: dateTime
  max count: 1
  message: Creation time should be specified when available.
  min count: 0
  path: createdTime
property:
  datatype: dateTime
  max count: 1
  message: Modification time should be specified when available.
  min count: 0
  path: modifiedTime
target class: EducationPortal
target class: EducationalResource
target class: PreventionMetrics
target class: PreventionProgram
target class: SafetyProtocol

Digital Literacy
type: Class
comment: Education on digital literacy and safe technology use.
subclass of: ChildSafetyEducation

Digital Safety Shape
type: NodeShape
comment: Validation shape for digital safety instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Digital safety program must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
target class: DigitalSafety

Education Portal Resource Validation Shape
type: NodeShape
comment: Validates that education portals provide educational resources.
sparql:
  message: Education portal should provide educational resources.
  select: SELECT $this WHERE { $this a cacontology-prevention:EducationPortal . FILTER NOT EXISTS { $this cacontology-prevention:providesResource ?resource . ?resource a cacontology-prevention:EducationalResource . } }
target class: EducationPortal

Education Portal Shape
type: NodeShape
comment: Validation shape for education portal instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Education portal must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 10000000
  message: Education portal reach must be between 1 and 10000000 when specified.
  min count: 0
  min inclusive: 1
  path: educationPortalReach
target class: EducationPortal

Educational Resource Shape
type: NodeShape
comment: Validation shape for educational resource instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Educational resource must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
property:
  datatype: string
  max count: 1
  max length: 1000
  message: Educational resource description should be 10-1000 characters when specified.
  min count: 0
  min length: 10
  path: description
property:
  datatype: string
  max count: 20
  max length: 50
  message: Language availability should be 2-50 characters (up to 20 languages).
  min count: 0
  min length: 2
  path: languageAvailability
property:
  datatype: string
  in: children
  in: parents
  in: educators
  in: healthcare_providers
  in: community_members
  in: professionals
  in: general_public
  max count: 1
  message: Target audience must be from the allowed list.
  min count: 0
  path: targetAudience
target class: EducationalResource

Educator Training Shape
type: NodeShape
comment: Validation shape for educator training instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Educator training must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
property:
  datatype: dateTime
  max count: 1
  message: Educator training must specify start time.
  min count: 1
  path: startTime
target class: EducatorTraining

Environmental Prevention Shape
type: NodeShape
comment: Validation shape for environmental prevention instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 60.0
  message: Environmental prevention duration should be between 1 and 60 months.
  min count: 0
  min inclusive: 1.0
  path: programDuration
target class: EnvironmentalPrevention

Healthcare Provider Training Shape
type: NodeShape
comment: Validation shape for healthcare provider training instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Healthcare provider training must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
property:
  datatype: dateTime
  max count: 1
  message: Healthcare provider training must specify start time.
  min count: 1
  path: startTime
target class: HealthcareProviderTraining

Language Availability Validation Shape
type: NodeShape
comment: Validates language availability for educational resources.
sparql:
  message: Educational resources for diverse communities should have multiple languages.
  select: SELECT $this WHERE { $this cacontology-prevention:targetAudience "community_members" . FILTER NOT EXISTS { $this cacontology-prevention:languageAvailability ?lang1 . $this cacontology-prevention:languageAvailability ?lang2 . FILTER (?lang1 != ?lang2) } }
target class: EducationalResource

Online Safety Education Shape
type: NodeShape
comment: Validation shape for online safety education instances.
property:
  datatype: string
  in: preschool
  in: elementary
  in: middle_school
  in: high_school
  in: young_adult
  in: all_ages
  max count: 1
  message: Online safety education must specify age group.
  min count: 1
  path: ageGroup
target class: OnlineSafetyEducation

Parent Community Email List
type: Class
comment: Specialized email list for parent and community safety updates and archived publication access.
subclass of: CommunityEmailList

Parent Education Shape
type: NodeShape
comment: Validation shape for parent education instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Parent education must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
property:
  datatype: dateTime
  max count: 1
  message: Parent education must specify start time.
  min count: 1
  path: startTime
target class: ParentEducation

Parental Control Shape
type: NodeShape
comment: Validation shape for parental control instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Parental control must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
target class: ParentalControl

Platform Safety Shape
type: NodeShape
comment: Validation shape for platform safety instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Platform safety must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
target class: PlatformSafety

Prevention Advocate
type: Class
comment: Advocate promoting prevention initiatives.
subclass of: Role

Prevention Curriculum Shape
type: NodeShape
comment: Validation shape for prevention curriculum instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Prevention curriculum must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
target class: PreventionCurriculum

Prevention Effectiveness Shape
type: NodeShape
comment: Validation shape for prevention effectiveness instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 1.0
  message: Prevention effectiveness must be between 0.0 and 1.0.
  min count: 0
  min inclusive: 0.0
  path: preventionEffectiveness
target class: PreventionEffectiveness

Prevention Effectiveness Validation Shape
type: NodeShape
comment: Validates prevention program effectiveness metrics.
sparql:
  message: Large prevention programs should have effectiveness metrics.
  select: SELECT $this WHERE { $this cacontology-prevention:participantCount ?count . FILTER (?count > 1000) FILTER NOT EXISTS { ?effectiveness a cacontology-prevention:PreventionEffectiveness ; cacontology-prevention:preventionEffectiveness ?score . } }
target class: PreventionProgram

Prevention Material Shape
type: NodeShape
comment: Validation shape for prevention material instances.
property:
  datatype: string
  in: children
  in: parents
  in: educators
  in: healthcare_providers
  in: community_members
  in: professionals
  in: general_public
  max count: 1
  message: Prevention material must specify target audience.
  min count: 1
  path: targetAudience
target class: PreventionMaterial

Prevention Metrics Shape
type: NodeShape
comment: Validation shape for prevention metrics instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Prevention metrics name should be 5-200 characters when specified.
  min count: 0
  min length: 5
  path: name
target class: PreventionMetrics

Prevention Program Delivery Validation Shape
type: NodeShape
comment: Validates that prevention programs have delivery specialists.
sparql:
  message: Prevention program should have assigned specialists.
  select: SELECT $this WHERE { $this a cacontology-prevention:PreventionProgram . FILTER NOT EXISTS { $this cacontology-prevention:deliveredBy ?specialist . ?specialist a cacontology-prevention:PreventionSpecialist . } }
target class: PreventionProgram

Prevention Program Shape
type: NodeShape
comment: Validation shape for prevention program instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Prevention program must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
property:
  datatype: dateTime
  max count: 1
  message: Prevention program must specify start time.
  min count: 1
  path: startTime
property:
  datatype: dateTime
  max count: 1
  message: Prevention program may specify end time.
  min count: 0
  path: endTime
property:
  datatype: decimal
  max count: 1
  max inclusive: 120.0
  message: Program duration must be between 0.5 and 120 months.
  min count: 0
  min inclusive: 0.5
  path: programDuration
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 1000000
  message: Participant count must be between 1 and 1000000 when specified.
  min count: 0
  min inclusive: 1
  path: participantCount
target class: PreventionProgram

Primary Prevention Shape
type: NodeShape
comment: Validation shape for primary prevention instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 1000000
  message: Primary prevention participant count must be between 1 and 1000000 when specified.
  min count: 0
  min inclusive: 1
  path: participantCount
target class: PrimaryPrevention

Program Duration Validation Shape
type: NodeShape
comment: Validates program duration consistency.
sparql:
  message: Long-term prevention programs should have appropriate participant counts.
  select: SELECT $this WHERE { $this cacontology-prevention:programDuration ?duration ; cacontology-prevention:participantCount ?count . FILTER (?duration > 24.0 && ?count < 10) }
target class: PreventionProgram

Public Awareness Shape
type: NodeShape
comment: Validation shape for public awareness instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Public awareness campaign must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
property:
  datatype: dateTime
  max count: 1
  message: Public awareness campaign must specify start time.
  min count: 1
  path: startTime
target class: PublicAwareness

Risk Assessment Tool Shape
type: NodeShape
comment: Validation shape for risk assessment tool instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Risk assessment tool must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
target class: RiskAssessmentTool

Risk Prevention Shape
type: NodeShape
comment: Validation shape for risk prevention instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 100000
  message: Risk prevention participant count must be between 1 and 100000 when specified.
  min count: 0
  min inclusive: 1
  path: participantCount
target class: RiskPrevention

Risk Reduction Shape
type: NodeShape
comment: Validation shape for risk reduction instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 1.0
  message: Risk reduction level must be between 0.0 and 1.0.
  min count: 0
  min inclusive: 0.0
  path: riskReductionLevel
target class: RiskReduction

Safety Guideline Shape
type: NodeShape
comment: Validation shape for safety guideline instances.
property:
  datatype: string
  in: children
  in: parents
  in: educators
  in: healthcare_providers
  in: community_members
  in: professionals
  in: general_public
  max count: 1
  message: Safety guideline must specify target audience.
  min count: 1
  path: targetAudience
target class: SafetyGuideline

Safety Protocol Implementation Validation Shape
type: NodeShape
comment: Validates that safety protocols are implemented by organizations.
sparql:
  message: Safety protocol should be implemented by organizations.
  select: SELECT $this WHERE { $this a cacontology-prevention:SafetyProtocol . FILTER NOT EXISTS { ?org cacontology-prevention:implementsProtocol $this . ?org a uco-identity:Organization . } }
target class: SafetyProtocol

Safety Protocol Shape
type: NodeShape
comment: Validation shape for safety protocol instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Safety protocol must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
property:
  datatype: string
  in: planned
  in: active
  in: completed
  in: suspended
  in: cancelled
  max count: 1
  message: Implementation status must be from the allowed list.
  min count: 0
  path: implementationStatus
target class: SafetyProtocol

School Allegation Protocol Shape
type: NodeShape
comment: Validation shape for school allegation protocol instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: School allegation protocol must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
target class: SchoolAllegationProtocol

School Counselor Training Shape
type: NodeShape
comment: Validation shape for school counselor training instances.
property:
  datatype: dateTime
  max count: 1
  message: School counselor training must specify start time.
  min count: 1
  path: startTime
target class: SchoolCounselorTraining

School Distribution
type: Class
comment: Distribution of educational materials to schools.
subclass of: Action

School Policy Shape
type: NodeShape
comment: Validation shape for school policy instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: School policy must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
target class: SchoolPolicy

School Safety Program Shape
type: NodeShape
comment: Validation shape for school safety program instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: School safety program must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
target class: SchoolSafetyProgram

Secondary Prevention Shape
type: NodeShape
comment: Validation shape for secondary prevention instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 100000
  message: Secondary prevention participant count must be between 1 and 100000 when specified.
  min count: 0
  min inclusive: 1
  path: participantCount
target class: SecondaryPrevention

Sextortion Awareness Shape
type: NodeShape
comment: Validation shape for sextortion awareness instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Sextortion awareness program must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
target class: SextortionAwareness

Sextortion Education Shape
type: NodeShape
comment: Validation shape for sextortion education instances.
property:
  datatype: string
  in: middle_school
  in: high_school
  in: young_adult
  max count: 1
  message: Sextortion education must target appropriate age groups.
  min count: 1
  path: ageGroup
target class: SextortionEducation

Sextortion Response Shape
type: NodeShape
comment: Validation shape for sextortion response instances.
property:
  datatype: string
  in: active
  in: planned
  max count: 1
  message: Sextortion response must be active or planned.
  min count: 1
  path: implementationStatus
target class: SextortionResponse

Sextortion Warning Sign Shape
type: NodeShape
comment: Validation shape for sextortion warning sign instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Sextortion warning sign must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
target class: SextortionWarningSign

Student Education Shape
type: NodeShape
comment: Validation shape for student education instances.
property:
  datatype: string
  in: elementary
  in: middle_school
  in: high_school
  max count: 1
  message: Student education must specify appropriate age group.
  min count: 1
  path: ageGroup
target class: StudentEducation

Target Audience Validation Shape
type: NodeShape
comment: Validates target audience appropriateness for child safety education.
sparql:
  message: Child safety education should have appropriate age groups.
  select: SELECT $this WHERE { $this a cacontology-prevention:OnlineSafetyEducation ; cacontology-prevention:ageGroup "preschool" . }
target class: ChildSafetyEducation

Teacher Training Shape
type: NodeShape
comment: Validation shape for teacher training instances.
property:
  datatype: dateTime
  max count: 1
  message: Teacher training must specify start time.
  min count: 1
  path: startTime
target class: TeacherTraining

Temporal Validation Shape
type: NodeShape
comment: Validates temporal consistency for prevention activities.
sparql:
  message: Start time must be before end time when both are specified.
  select: SELECT $this WHERE { $this uco-core:startTime ?start ; uco-core:endTime ?end . FILTER (?start >= ?end) }
target class: ChildSafetyEducation
target class: CommunityEducation
target class: CommunityOutreach
target class: EducatorTraining
target class: HealthcareProviderTraining
target class: ParentEducation
target class: PreventionProgram
target class: PublicAwareness

Tertiary Prevention Shape
type: NodeShape
comment: Validation shape for tertiary prevention instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 10000
  message: Tertiary prevention participant count must be between 1 and 10000 when specified.
  min count: 0
  min inclusive: 1
  path: participantCount
target class: TertiaryPrevention

Twelve Plus Education
type: Class
comment: Safety education targeted specifically for students 12 years and older.
subclass of: AgeTargetedEducation

accesses archive
type: ObjectProperty
comment: Community member accesses archived publication system.
domain: Person
range: ArchivePublicationSystem

active participant count
type: DatatypeProperty
comment: Number of currently active participants in interactive courses.
domain: InteractiveCourseSystem
range: nonNegativeInteger

addresses sextortion
type: ObjectProperty
comment: Education addresses specific sextortion warning signs.
domain: SextortionEducation
range: SextortionWarningSign

affiliate organization count
type: DatatypeProperty
comment: Number of organizations in the ICAC affiliate network.
domain: ICACAffiliateNetwork
range: nonNegativeInteger

affiliated with
type: ObjectProperty
comment: Organization is formally affiliated with ICAC network.
domain: Organization
range: ICACAffiliateNetwork

arrests from disclosures
type: DatatypeProperty
comment: Number of arrests resulting from outreach-generated disclosures.
domain: CommunityOutreachEffectiveness
range: nonNegativeInteger

assesses risk
type: ObjectProperty
comment: Risk factor assessed by the tool.
domain: RiskAssessmentTool
range: UcoObject

average disclosure time
type: DatatypeProperty
comment: Average time in hours from presentation to victim disclosure.
domain: PostPresentationDisclosure
range: decimal

average help seeking time
type: DatatypeProperty
comment: Average time in minutes users spend accessing FAQ information.
domain: FAQUsageMetrics
range: decimal

average listening duration
type: DatatypeProperty
comment: Average listening duration in minutes per episode.
domain: PodcastEngagementMetrics
range: decimal

community reporting increase
type: DatatypeProperty
comment: Percentage increase in community reporting following initiative.
domain: CommunityPartnershipInitiative
range: decimal

coordinated by
type: ObjectProperty
comment: Coordinator responsible for outreach program.
domain: CommunityOutreach
range: SafetyCoordinator

coordinated with
type: ObjectProperty
comment: Links awareness initiative to coordinating agencies.
domain: NationwideAwarenessInitiative
range: Organization

coordinates with
type: ObjectProperty
comment: Coordination activity involves specific affiliate organization.
domain: AffiliateCoordination
range: Organization

coordination meeting frequency
type: DatatypeProperty
comment: Frequency of affiliate coordination meetings and activities.
domain: AffiliateCoordination
range: string

course completion rate
type: DatatypeProperty
comment: Course completion rate percentage (0.0-1.0) for interactive safety courses.
domain: InteractiveCourseMetrics
range: decimal

course module count
type: DatatypeProperty
comment: Number of interactive modules in the course system.
domain: InteractiveCourseSystem
range: nonNegativeInteger

delivered by
type: ObjectProperty
comment: Specialist delivering the prevention program.
domain: PreventionProgram
range: PreventionSpecialist

disclosure barriers addressed
type: DatatypeProperty
comment: Number of disclosure barriers identified and addressed.
domain: DisclosureBarrierReduction
range: nonNegativeInteger

disclosures generated
type: DatatypeProperty
comment: Number of victim disclosures generated by outreach program.
domain: CommunityOutreachEffectiveness
range: nonNegativeInteger

discrete access count
type: DatatypeProperty
comment: Number of discrete accesses to safety information.
domain: DiscreetAccessSystem
range: nonNegativeInteger

distributed via email list
type: ObjectProperty
comment: Educational resource is distributed through community email list.
domain: EducationalResource
range: CommunityEmailList

distributed to
type: ObjectProperty
comment: Organization (school) receiving poster distribution.
domain: InformationPoster
range: Organization

educates on
type: ObjectProperty
comment: Topic or subject covered by educational resource.
domain: EducationalResource
range: UcoObject

email list subscriber count
type: DatatypeProperty
comment: Number of active subscribers to community email list.
domain: CommunityEmailList
range: nonNegativeInteger

email open rate
type: DatatypeProperty
comment: Email open rate percentage (0.0-1.0) for community communications.
domain: EmailListEngagementMetrics
range: decimal

enables discreet access
type: ObjectProperty
comment: QR code enables discreet access to safety information.
domain: QRCodeIntegration
range: DiscreetAccessSystem

enables rapid response
type: ObjectProperty
comment: Links disclosure to rapid response capability.
domain: PostPresentationDisclosure
range: RapidResponseDisclosureWorkflow

engages community
type: ObjectProperty
comment: Community organization engaged by outreach.
domain: CommunityOutreach
range: Organization

engages parents
type: ObjectProperty
comment: Links vigilance program to parent participants.
domain: ParentalVigilanceProgram
range: Person

enhanced by
type: ObjectProperty
comment: Interactive course system is enhanced by multimedia educational content.
domain: InteractiveCourseSystem
range: MultimediaEducationContent

FAQ access count
type: DatatypeProperty
comment: Total number of accesses to the FAQ knowledge base.
domain: FAQUsageMetrics
range: nonNegativeInteger

FAQ item count
type: DatatypeProperty
comment: Number of frequently asked questions in the knowledge base.
domain: FAQKnowledgeBase
range: nonNegativeInteger

hosts content on
type: ObjectProperty
comment: Podcast series hosts educational content on platform integration system.
domain: PodcastEducationSeries
range: EducationPlatformIntegration

identifies trusted adult
type: ObjectProperty
comment: Links program to trusted adult identification.
domain: TrustedAdultIdentification
range: Person

implements protocol
type: ObjectProperty
comment: Safety protocol implemented by organization.
domain: Organization
range: SafetyProtocol

integrates QR code
type: ObjectProperty
comment: Poster integrates QR code for information access.
domain: InformationPoster
range: QRCodeIntegration

integrates to platform
type: ObjectProperty
comment: Multimedia content integrates with education platform systems.
domain: MultimediaEducationContent
range: EducationPlatformIntegration

maintains email list
type: ObjectProperty
comment: Organization maintains community email list for ongoing communication.
domain: Organization
range: CommunityEmailList

measures engagement of
type: ObjectProperty
comment: Engagement metrics measure effectiveness of community communication system.
domain: CommunityEngagementMetrics
range: CommunityEmailList

monitors usage of
type: ObjectProperty
comment: Usage metrics monitor access patterns of FAQ knowledge base.
domain: FAQUsageMetrics
range: FAQKnowledgeBase

parental engagement rate
type: DatatypeProperty
comment: Rate of parental engagement in vigilance program (0.0-1.0).
domain: ParentalVigilanceProgram
range: decimal

podcast download count
type: DatatypeProperty
comment: Total number of podcast episode downloads.
domain: PodcastEngagementMetrics
range: nonNegativeInteger

podcast episode count
type: DatatypeProperty
comment: Number of episodes in the podcast education series.
domain: PodcastEducationSeries
range: nonNegativeInteger

posters distributed
type: DatatypeProperty
comment: Number of posters distributed in campaign.
domain: PosterDistributionMetrics
range: nonNegativeInteger

presentation attendance
type: DatatypeProperty
comment: Number of students attending safety presentation.
domain: SchoolPresentationProgram
range: nonNegativeInteger

prevents bullying
type: DatatypeProperty
comment: Whether system helps prevent bullying and shaming.
domain: DiscreetAccessSystem
range: boolean

prevents mechanism
type: ObjectProperty
comment: Mechanism or behavior prevented by program.
domain: PreventionProgram
range: UcoObject

provides resource
type: ObjectProperty
comment: Educational resource provided by portal.
domain: EducationPortal
range: EducationalResource

publication archive size
type: DatatypeProperty
comment: Number of archived publications available in the system.
domain: ArchivePublicationSystem
range: nonNegativeInteger

publishes to archive
type: ObjectProperty
comment: Educational resource is published to archive publication system.
domain: EducationalResource
range: ArchivePublicationSystem

QR code enabled
type: DatatypeProperty
comment: Whether campaign uses QR codes for information access.
domain: EducationalPosterCampaign
range: boolean

QR code scans
type: DatatypeProperty
comment: Number of QR code scans recorded.
domain: QRCodeEngagementMetrics
range: nonNegativeInteger

queries FAQ
type: ObjectProperty
comment: Community member queries FAQ knowledge base for information.
domain: Person
range: FAQKnowledgeBase

rapid response capability
type: DatatypeProperty
comment: Whether rapid response (sub-24 hour) capability is available.
domain: RapidResponseDisclosureWorkflow
range: boolean

reduces barrier
type: ObjectProperty
comment: Links strategy to disclosure barrier it addresses.
domain: DisclosureBarrierReduction
range: UcoObject

reduces shaming
type: ObjectProperty
comment: System reduces shaming associated with seeking help.
domain: DiscreetAccessSystem
range: BullyingPrevention

resource sharing frequency
type: DatatypeProperty
comment: Frequency of resource sharing activities (daily, weekly, monthly, quarterly).
domain: AffiliateResourceSharing
range: string

results in arrest
type: ObjectProperty
comment: Links outreach-triggered investigation to arrest.
domain: OutreachTriggeredInvestigation
range: Action

schools targeted
type: DatatypeProperty
comment: Number of schools targeted by poster campaign.
domain: EducationalPosterCampaign
range: nonNegativeInteger

sextortion warning signs count
type: DatatypeProperty
comment: Number of warning signs covered in education.
domain: SextortionEducation
range: nonNegativeInteger

shares resources with
type: ObjectProperty
comment: Resource sharing activity involves specific affiliate organization.
domain: AffiliateResourceSharing
range: Organization

statewide coverage
type: DatatypeProperty
comment: Percentage of state covered by campaign (0.0-1.0).
domain: StatewideCampaignMetrics
range: decimal

supported by
type: ObjectProperty
comment: Links disclosure to support system that enabled it.
comment: Organization supporting the prevention program.
domain: PostPresentationDisclosure
domain: PreventionProgram
range: SafeDisclosureEnvironment
range: Organization

target age group
type: DatatypeProperty
comment: Age group targeted by poster campaign (e.g., '12+').
domain: EducationalPosterCampaign
range: string

targets audience
type: ObjectProperty
comment: Target audience for prevention program.
domain: PreventionProgram
range: Person

tracks podcast metrics
type: ObjectProperty
comment: Metrics system tracks engagement data for podcast education series.
domain: PodcastEngagementMetrics
range: PodcastEducationSeries

tracks progress of
type: ObjectProperty
comment: Tracking system monitors progress of interactive course participants.
domain: CourseCompletionTracking
range: InteractiveCourseSystem

triggers disclosure
type: ObjectProperty
comment: Links outreach activity to victim disclosure it triggered.
domain: VictimDisclosureTriggering
range: PostPresentationDisclosure

trusted adults identified
type: DatatypeProperty
comment: Number of trusted adults identified by children in program.
domain: TrustedAdultIdentification
range: nonNegativeInteger

Active Production Phase Shape
type: NodeShape
comment: Validation for active production phase instances.
property:
  datatype: string
  in: recording
  in: editing
  in: streaming
  in: distribution_preparation
  max count: 1
  message: Active production phase must specify current production activity.
  min count: 1
  path: productionActivity
target class: ActiveProductionPhase

Bathroom Surveillance
type: Class
comment: Specific surveillance of bathroom facilities, as observed in Vermont case.
subclass of: PrivateSpaceSurveillance

Bedroom Surveillance
type: Class
comment: Specific surveillance of sleeping areas and bedrooms.
subclass of: PrivateSpaceSurveillance

Concealment Container
type: Class
comment: Object used to hide recording equipment such as backpacks, furniture, or everyday items with modifications.
subclass of: Object
subclass of: ObservableObject

Controlled Environment
type: Class
comment: Location specifically prepared or modified for production activities.
subclass of: ProductionLocation

Data Quality Shape
type: NodeShape
comment: Validates data quality for production offenses.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Label should be between 5 and 200 characters when provided.
  min count: 0
  min length: 5
  path: label
property:
  datatype: string
  max count: 1
  max length: 1000
  message: Comment should be between 10 and 1000 characters when provided.
  min count: 0
  min length: 10
  path: comment
target class: ProductionOffense

Digital Manipulation
type: Class
comment: Digital alteration or enhancement of images or videos to create child sexual abuse material.
subclass of: ContentCreation

Equipment Usage Validation Shape
type: NodeShape
comment: Validates that production offenses have appropriate equipment.
sparql:
  message: Production offense should specify equipment used for recording or streaming.
  select: SELECT $this WHERE { $this a cacontology-production:ProductionOffense ; cacontology-production:productionMethod ?method . FILTER (?method IN ("direct_recording", "video_recording", "live_streaming")) FILTER NOT EXISTS { $this cacontology-production:usesEquipment ?equipment . ?equipment a cacontology-production:RecordingDevice . } }
target class: ProductionOffense

Extended Operation Validation Shape
type: NodeShape
comment: Validates extended production operation consistency.
sparql:
  message: Extended operation duration should be consistent with total sessions.
  select: SELECT $this WHERE { $this cacontology-production:operationDuration ?duration ; cacontology-production:totalSessions ?sessions . FILTER (?sessions > (?duration * 10)) }
target class: ExtendedProductionOperation

Extended Production Operation Shape
type: NodeShape
comment: Validation shape for extended production operation instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 3650.0
  message: Extended operation duration must be between 7 days and 10 years.
  min count: 1
  min inclusive: 7.0
  path: operationDuration
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 5000
  message: Extended operation must have between 5 and 5000 total sessions.
  min count: 1
  min inclusive: 5
  path: totalSessions
target class: ExtendedProductionOperation

FacilitatesProductionShape
type: PropertyShape
class: ProductionOffense
description: Links facilitator to production they assist
min count: 0
name: facilitates production
path: facilitatesProduction

Facilitator Shape
type: NodeShape
comment: Validation shape for facilitator role instances.
property:
  datatype: string
  in: equipment_provider
  in: location_provider
  in: victim_recruiter
  in: technical_support
  in: distribution_coordinator
  in: financial_facilitator
  max count: 1
  message: Facilitator must specify facilitation type from the allowed list.
  min count: 1
  path: facilitationType
target class: Facilitator

Hidden Recording Device
type: Class
comment: Covert recording equipment designed to capture content without victim awareness.
subclass of: RecordingDevice

Image Post-Processing Shape
type: NodeShape
comment: Validation shape for image post-processing instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 1000
  message: Image post-processing must specify modification count between 1 and 1000.
  min count: 1
  min inclusive: 1
  path: modificationCount
property:
  datatype: string
  max count: 1
  max length: 100
  message: Modification software must be specified (2-100 characters).
  min count: 1
  min length: 2
  path: modificationSoftware
target class: ImagePostProcessing

Live Production Event Shape
type: NodeShape
comment: Validation shape for live production event instances.
property:
  datatype: string
  max count: 1
  max length: 100
  message: Live production event must specify streaming platform (2-100 characters).
  min count: 1
  min length: 2
  path: streamingPlatform
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 10000
  message: Viewer count must be between 1 and 10000 when specified.
  min count: 0
  min inclusive: 1
  path: viewerCount
target class: LiveProductionEvent

Live Stream Content
type: Class
comment: Content transmitted in real-time during live production events.
subclass of: ProducedContent

Mobile Recording Device
type: Class
comment: Mobile phone, tablet, or portable device used for recording.
subclass of: RecordingDevice

ModifiesImagesShape
type: PropertyShape
class: UcoObject
description: Links post-processing to image modification
min count: 0
name: modifies images
path: modifiesImages

OverlaysTextShape
type: PropertyShape
class: ImagePostProcessing
description: Links text overlay to image modification
min count: 0
name: overlays text
path: overlaysText

Primary Producer Shape
type: NodeShape
comment: Validation shape for primary producer instances.
property:
  datatype: boolean
  has value: true
  max count: 1
  message: Primary producer must have leadership role set to true.
  min count: 1
  path: leadershipRole
target class: PrimaryProducer

ProducedAtShape
type: PropertyShape
class: Location
description: Links production to location where it occurred
min count: 0
name: produced at
path: producedAt

Produced Image
type: Class
comment: Still images created through production activities.
subclass of: ProducedContent

Produced Video
type: Class
comment: Video content created through production activities.
subclass of: ProducedContent

Producer Role Conflict Shape
type: NodeShape
comment: Prevents conflicting roles from being assigned simultaneously.
sparql:
  message: Individual cannot simultaneously be Producer and VictimRole.
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/production#
      prefix: cacontology-production
    declare:
      namespace: https://cacontology.projectvic.org/gufo#
      prefix: cacontology-gufo
  select: PREFIX cacontology-production: <https://cacontology.projectvic.org/production#> PREFIX cacontology-gufo: <https://cacontology.projectvic.org/gufo#> PREFIX gufo: <http://purl.org/nemo/gufo#> SELECT ?this WHERE { ?entity gufo:playsRole ?this . ?entity gufo:playsRole ?victimRole . ?this a cacontology-production:Producer . ?victimRole a cacontology-gufo:VictimRole . ?this cacontology-production:hasRoleBeginPoint ?producerBegin . ?victimRole cacontology-production:hasRoleBeginPoint ?victimBegin . FILTER(?producerBegin <= ?victimBegin) OPTIONAL { ?this cacontology-production:hasRoleEndPoint ?producerEnd } OPTIONAL { ?victimRole cacontology-production:hasRoleEndPoint ?victimEnd } FILTER( (!BOUND(?producerEnd) && !BOUND(?victimEnd)) || (!BOUND(?producerEnd) && ?victimBegin <= ?victimEnd) || (!BOUND(?victimEnd) && ?producerBegin <= ?producerEnd) || (BOUND(?producerEnd) && BOUND(?victimEnd) && !((?producerEnd < ?victimBegin) || (?victimEnd < ?producerBegin))) ) }
target class: Producer

Producer Shape
type: NodeShape
comment: Validation shape for producer role instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 50.0
  message: Production experience must be between 0 and 50 years.
  min count: 0
  min inclusive: 0.0
  path: productionExperience
property:
  datatype: string
  in: novice
  in: intermediate
  in: advanced
  in: expert
  in: professional
  max count: 1
  message: Technical skill level must be from the allowed list.
  min count: 0
  path: technicalSkillLevel
target class: Producer

ProducesContentShape
type: PropertyShape
class: UcoObject
description: Links producer to content they create
min count: 0
name: produces content
path: producesContent

Production Cross Reference Shape
type: NodeShape
comment: Validates cross-references between production and related entities.
sparql:
  message: Production offense should have at least one producer or facilitator.
  select: SELECT $this WHERE { $this a cacontology-production:ProductionOffense . FILTER NOT EXISTS { { ?producer cacontology-production:producesContent $this } UNION { ?facilitator cacontology-production:facilitatesProduction $this } } }
target class: ProductionOffense

Production Distribution Phase
type: Phase
type: Class
comment: Phase during which produced content is distributed or shared.
subclass of: ProductionOffense

Production Equipment Shape
type: NodeShape
comment: Validation shape for production equipment instances.
property:
  datatype: string
  in: camera
  in: smartphone
  in: tablet
  in: laptop
  in: desktop
  in: recording_device
  in: lighting_equipment
  in: audio_equipment
  in: editing_software
  in: streaming_equipment
  max count: 1
  message: Equipment must specify type from the allowed list.
  min count: 1
  path: equipmentType
property:
  datatype: string
  in: new
  in: good
  in: fair
  in: poor
  in: damaged
  in: modified
  max count: 1
  message: Equipment condition must be from the allowed list.
  min count: 0
  path: equipmentCondition
target class: ProductionEquipment

Production Event Shape
type: NodeShape
comment: gUFO validation for production events ensuring proper temporal modeling.
property:
  datatype: dateTimeStamp
  max count: 1
  message: Production event must have exactly one begin point.
  min count: 1
  path: hasBeginPointInXSDDateTimeStamp
property:
  datatype: dateTimeStamp
  max count: 1
  message: Production event may have an end point.
  min count: 0
  path: hasEndPointInXSDDateTimeStamp
sparql:
  message: Event begin point must be before end point.
  prefixes:
    declare:
      namespace: http://purl.org/nemo/gufo#
      prefix: gufo
  select: SELECT ?this WHERE { ?this gufo:hasBeginPointInXSDDateTimeStamp ?begin . ?this gufo:hasEndPointInXSDDateTimeStamp ?end . FILTER(?begin >= ?end) }
target class: Event

Production Location Shape
type: NodeShape
comment: Validation shape for production location instances.
property:
  datatype: string
  in: open
  in: restricted
  in: controlled
  in: secured
  in: locked
  max count: 1
  message: Access control must be from the allowed list.
  min count: 0
  path: accessControl
property:
  datatype: string
  in: residential
  in: commercial
  in: institutional
  in: outdoor
  in: vehicle
  in: temporary
  in: mobile
  max count: 1
  message: Production location must specify type from the allowed list.
  min count: 1
  path: locationType
property:
  datatype: string
  in: public
  in: semi_private
  in: private
  in: highly_private
  in: isolated
  max count: 1
  message: Production location must specify privacy level from the allowed list.
  min count: 1
  path: privacyLevel
target class: ProductionLocation

Production Offense Shape
type: NodeShape
comment: Validation shape for CSAM production offense instances.
property:
  datatype: string
  in: direct_recording
  in: photography
  in: video_recording
  in: live_streaming
  in: photography_with_modification
  in: multi_session_recording
  in: edited_compilation
  max count: 1
  message: Production offense must specify exactly one production method from the allowed list.
  min count: 1
  path: productionMethod
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 1000
  message: Session count must be between 1 and 1000 when specified.
  min count: 0
  min inclusive: 1
  path: sessionCount
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 50
  message: Production offense must specify victim count between 1 and 50.
  min count: 1
  min inclusive: 1
  path: victimCount
property:
  datatype: decimal
  max count: 1
  max inclusive: 10080.0
  message: Duration must be between 1 minute and 1 week (10080 minutes).
  min count: 0
  min inclusive: 1.0
  path: durationMinutes
property:
  datatype: dateTime
  max count: 1
  message: Production offense may have a start time.
  min count: 0
  path: startTime
property:
  datatype: dateTime
  max count: 1
  message: Production offense may have an end time.
  min count: 0
  path: endTime
target class: ProductionOffense

Production Phase Shape
type: NodeShape
comment: gUFO-enhanced validation shape for production phases with anti-rigidity constraints.
property:
  datatype: dateTimeStamp
  max count: 1
  message: Production phase may have at most one begin point.
  min count: 0
  path: hasProductionPhaseBeginPoint
property:
  datatype: dateTimeStamp
  max count: 1
  message: Production phase may have an end point.
  min count: 0
  path: hasProductionPhaseEndPoint
sparql:
  message: Phase begin point must be before end point.
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/production#
      prefix: cacontology-production
  select: PREFIX cacontology-production: <https://cacontology.projectvic.org/production#> SELECT ?this WHERE { ?this cacontology-production:hasProductionPhaseBeginPoint ?begin . ?this cacontology-production:hasProductionPhaseEndPoint ?end . FILTER(?begin >= ?end) }
sparql:
  message: Phase instances must be anti-rigid (cannot exist without being instantiated by entities).
  prefixes:
    declare:
      namespace: http://purl.org/nemo/gufo#
      prefix: gufo
  select: PREFIX gufo: <http://purl.org/nemo/gufo#> PREFIX owl: <http://www.w3.org/2002/07/owl#> SELECT ?this WHERE { ?this a gufo:Phase . FILTER NOT EXISTS { ?this a owl:Class . } FILTER NOT EXISTS { ?entity ?property ?this . ?property rdfs:subPropertyOf* gufo:hasPhase . } }
target class: Phase

Production Preparation Phase
type: Phase
type: Class
comment: Phase involving preparation and setup for production activities.
subclass of: ProductionOffense

Production Role Shape
type: NodeShape
comment: gUFO-enhanced validation shape for production roles with anti-rigidity and temporal constraints.
property:
  datatype: dateTimeStamp
  max count: 1
  message: Production role may have at most one begin point.
  min count: 0
  path: hasRoleBeginPoint
property:
  datatype: dateTimeStamp
  max count: 1
  message: Production role may have an end point.
  min count: 0
  path: hasRoleEndPoint
sparql:
  message: Role begin point must be before end point.
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/production#
      prefix: cacontology-production
  select: PREFIX cacontology-production: <https://cacontology.projectvic.org/production#> SELECT ?this WHERE { ?this cacontology-production:hasRoleBeginPoint ?begin . ?this cacontology-production:hasRoleEndPoint ?end . FILTER(?begin >= ?end) }
sparql:
  message: Role instances must be anti-rigid (cannot exist without being played by entities).
  prefixes:
    declare:
      namespace: http://purl.org/nemo/gufo#
      prefix: gufo
  select: PREFIX gufo: <http://purl.org/nemo/gufo#> PREFIX owl: <http://www.w3.org/2002/07/owl#> SELECT ?this WHERE { ?this a gufo:Role . FILTER NOT EXISTS { ?this a owl:Class . } FILTER NOT EXISTS { ?entity ?property ?this . ?property rdfs:subPropertyOf* gufo:playsRole . } }
target class: Role

Production Situation Shape
type: NodeShape
comment: gUFO validation for production situations ensuring proper modeling of ongoing states.
sparql:
  message: Situations should involve multiple entities or persist over time.
  prefixes:
    declare:
      namespace: http://purl.org/nemo/gufo#
      prefix: gufo
  select: SELECT ?this WHERE { ?this a gufo:Situation . FILTER NOT EXISTS { { SELECT ?this WHERE { ?this gufo:involves ?entity1 . ?this gufo:involves ?entity2 . FILTER(?entity1 != ?entity2) } } UNION { SELECT ?this WHERE { ?this gufo:hasBeginPointInXSDDateTimeStamp ?begin . ?this gufo:hasEndPointInXSDDateTimeStamp ?end . FILTER(?end > ?begin) } } } }
target class: Situation

Recording Device Shape
type: NodeShape
comment: Validation shape for recording device instances.
property:
  datatype: string
  in: low
  in: standard
  in: high
  in: ultra_high
  in: professional
  max count: 1
  message: Recording quality must be from the allowed list.
  min count: 0
  path: recordingQuality
property:
  datatype: decimal
  max count: 1
  max inclusive: 100000.0
  message: Storage capacity must be between 0.1 GB and 100 TB.
  min count: 0
  min inclusive: 0.1
  path: storageCapacity
target class: RecordingDevice

Residential Production Site
type: Class
comment: Private residence used for production activities.
subclass of: ProductionLocation

Stationary Camera
type: Class
comment: Fixed camera equipment including webcams, digital cameras, and video cameras.
subclass of: RecordingDevice

Temporal Validation Shape
type: NodeShape
comment: Validates temporal consistency in production offenses.
sparql:
  message: Start time must be before end time when both are specified.
  select: SELECT $this WHERE { $this uco-core:startTime ?start ; uco-core:endTime ?end . FILTER (?start >= ?end) }
target class: ProductionOffense

Text Overlay Shape
type: NodeShape
comment: Validation shape for text overlay instances.
property:
  datatype: string
  in: victim_name
  in: victim_name_and_slang
  in: explicit_text
  in: identifying_text
  in: threatening_text
  in: instructional_text
  max count: 1
  message: Text overlay must specify text type from the allowed list.
  min count: 1
  path: textType
property:
  datatype: string
  in: overlay_on_image
  in: caption_below
  in: watermark
  in: corner_placement
  in: center_placement
  max count: 1
  message: Text overlay must specify placement from the allowed list.
  min count: 1
  path: textPlacement
target class: TextOverlay

UsesEquipmentShape
type: PropertyShape
class: ProductionEquipment
description: Links production to equipment used
min count: 0
name: uses equipment
path: usesEquipment

concealment location
type: DatatypeProperty
comment: Specific location where device was concealed (bathroom, bedroom, living_area).
domain: DeviceConcealment
range: string

concealment method
type: DatatypeProperty
comment: Specific technique used to hide recording device (fabric_cut, false_bottom, hollow_object).
domain: DeviceConcealment
range: string

developmental documentation
type: DatatypeProperty
comment: Whether abuse documentation captured victim's physical development over time.
domain: ExtendedProductionPeriod
range: boolean

device brand
type: DatatypeProperty
comment: Brand or manufacturer of recording device.
domain: RecordingDevice
range: string

device model
type: DatatypeProperty
comment: Model number or name of recording device.
domain: RecordingDevice
range: string

distribution intent
type: DatatypeProperty
comment: Whether content was produced for distribution (personal_use, intended_distribution, commercial).
domain: ProductionOffense
range: string

edited with
type: ObjectProperty
comment: Links edited content to editing equipment used.
domain: EditedContent
range: EditingEquipment

evidence of
type: ObjectProperty
comment: Links produced content to the production offense it evidences.
domain: ProducedContent
range: ProductionOffense

evidence recovered
type: DatatypeProperty
comment: Whether physical evidence of production was recovered.
domain: ProductionOffense
range: boolean

facilitated by
type: ObjectProperty
comment: Links production activity to individual who facilitated it.
domain: ProductionOffense
range: ProductionFacilitator

forensic value
type: DatatypeProperty
comment: Forensic value of production evidence (high, medium, low).
domain: ProducedContent
range: string

image count
type: DatatypeProperty
comment: Number of images produced during production activities.
domain: ProductionOffense
range: integer

immediate distribution
type: DatatypeProperty
comment: Whether content was distributed immediately after production.
domain: ProductionOffense
range: boolean

involves victim
type: ObjectProperty
comment: Links production activity to victim involved.
domain: ProductionOffense
range: ProductionVictim

location access
type: DatatypeProperty
comment: Access control at production location (unrestricted, controlled, restricted).
domain: ProductionLocation
range: string

location security
type: DatatypeProperty
comment: Security measures at production location (isolated, private, public).
domain: ProductionLocation
range: string

metadata preserved
type: DatatypeProperty
comment: Whether original metadata from production was preserved.
domain: ProducedContent
range: boolean

modification description
type: DatatypeProperty
comment: Description of physical modifications made to enable concealment.
domain: PhysicalDeviceModification
range: string

part of series
type: ObjectProperty
comment: Links individual session to larger production series.
domain: ProductionSession
range: ProductionSeries

privacy expectation
type: DatatypeProperty
comment: Level of privacy expectation in surveillance location (high, medium, low).
domain: PrivateSpaceSurveillance
range: string

produced by
type: ObjectProperty
comment: Links production activity to the individual who produced it.
domain: ProductionOffense
range: Producer

produces
type: ObjectProperty
comment: Links production activity to content created.
domain: ProductionOffense
range: ProducedContent

production complexity
type: DatatypeProperty
comment: Complexity level of production (basic, intermediate, sophisticated).
domain: ProductionOffense
range: string

production end date
type: DatatypeProperty
comment: Date when production activities ended.
domain: ProductionOffense
range: dateTime

production period
type: DatatypeProperty
comment: Duration of production activities in days.
domain: ExtendedProductionPeriod
range: integer

production start date
type: DatatypeProperty
comment: Date when production activities began.
domain: ProductionOffense
range: dateTime

recorded with
type: ObjectProperty
comment: Links produced content to the device used for recording.
domain: ProducedContent
range: RecordingDevice

recording capability
type: DatatypeProperty
comment: Recording capabilities of device (photo_only, video_only, both).
domain: RecordingDevice
range: string

resulting content
type: ObjectProperty
comment: Links production session to content created during that session.
domain: ProductionSession
range: ProducedContent

session duration
type: DatatypeProperty
comment: Duration of individual production session in minutes.
domain: ProductionSession
range: integer

session location
type: ObjectProperty
comment: Links production session to its physical location.
domain: ProductionSession
range: ProductionLocation

surveillance angle
type: DatatypeProperty
comment: Camera angle or positioning for surveillance (pointing_toward_bathroom, wide_angle, focused).
domain: PrivateSpaceSurveillance
range: string

systematic nature
type: DatatypeProperty
comment: Whether production shows systematic, ongoing pattern rather than isolated incidents.
domain: ExtendedProductionPeriod
range: boolean

total content volume
type: DatatypeProperty
comment: Total amount of content produced in megabytes.
domain: ProductionOffense
range: decimal

triggered investigation
type: ObjectProperty
comment: Links production offense to investigation it triggered.
domain: ProductionOffense
range: Investigation

victim age
type: DatatypeProperty
comment: Age of victim at time of production.
domain: ProductionVictim
range: integer

victim age progression
type: DatatypeProperty
comment: Age range documented showing victim's development (e.g., '13-16').
domain: ExtendedProductionPeriod
range: string

victim awareness
type: DatatypeProperty
comment: Whether victim was aware of recording (aware, unaware, coerced).
domain: ProductionSession
range: string

video count
type: DatatypeProperty
comment: Number of videos produced during production activities.
domain: ProductionOffense
range: integer

Extracurricular Recruitment
type: Class
comment: Recruitment occurring during extracurricular activities or school events.
subclass of: AfterSchoolRecruitment

Lunch Break Recruitment
type: Class
comment: Recruitment occurring during lunch breaks or between classes.
subclass of: SchoolHoursRecruitment

Mandatory Reporting Activation
type: Class
comment: Activation of mandatory reporting requirements by school personnel.
subclass of: SchoolBasedReporting

Peer Pressure Vulnerability
type: Class
comment: Susceptibility to peer pressure enabling recruitment through classmates.
subclass of: SchoolVulnerabilityFactor

Recruitment Incentive
type: Class
comment: Incentives offered to existing victims for successful recruitment of new victims.
subclass of: CoercedPeerRecruitment

Recruitment Punishment
type: Class
comment: Punishment threatened or applied to victims who fail to recruit new victims.
subclass of: CoercedPeerRecruitment

School Counselor
type: Class
comment: School counselor who may receive disclosures from trafficking victims.
subclass of: SchoolStaffMember

Social Connection Leverage
type: Class
comment: Leveraging existing social connections between victims to facilitate new recruitment.
subclass of: FriendshipExploitation

Social Isolation at School
type: Class
comment: Student isolation within school environment making them vulnerable to recruitment.
subclass of: SchoolVulnerabilityFactor

Student Network Exploitation
type: Class
comment: Exploitation of student social networks and peer relationships for trafficking recruitment.
subclass of: SchoolBasedRecruitment

Teacher Reporter
type: Class
comment: Teacher who identifies signs of trafficking or receives disclosures from students.
subclass of: SchoolStaffMember

attends school
type: ObjectProperty
comment: Links student to educational institution they attend.
domain: Person
range: EducationalInstitution

exhibits vulnerability
type: ObjectProperty
comment: Links victim to vulnerability factors they exhibit.
domain: Person
range: SchoolVulnerabilityFactor

exploits vulnerability
type: ObjectProperty
comment: Links recruitment to vulnerability factor being exploited.
domain: SchoolBasedRecruitment
range: SchoolVulnerabilityFactor

mitigates vulnerability
type: ObjectProperty
comment: Links school intervention to vulnerability factor it addresses.
domain: SchoolBasedReporting
range: SchoolVulnerabilityFactor

operates in network
type: ObjectProperty
comment: Links trafficking operation to recruitment network it utilizes.
domain: TraffickingOperation
range: PeerRecruitmentNetwork

recruits victim
type: ObjectProperty
comment: Links recruiting victim to new victim they recruit.
domain: Person
range: Person

reports to school
type: ObjectProperty
comment: Links victim to school where they made disclosure.
domain: Person
range: EducationalInstitution

triggers investigation
type: ObjectProperty
comment: Links school-based reporting to investigation it triggers.
domain: SchoolBasedReporting
range: Investigation

Academic Struggles Shape
type: NodeShape
comment: Validation shape for academic struggles instances.
property:
  datatype: string
  in: failing
  in: below_average
  in: average
  in: above_average
  in: excellent
  max count: 1
  message: Academic performance level must be from allowed list.
  min count: 1
  path: academicPerformanceLevel
target class: AcademicStruggles

Attendance Problems Shape
type: NodeShape
comment: Validation shape for attendance problems instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 1.0
  message: Attendance rate must be 0.0-1.0 (percentage).
  min count: 1
  min inclusive: 0.0
  path: attendanceRate
target class: AttendanceProblems

Classmate Introduction Shape
type: NodeShape
comment: Validation shape for classmate introduction instances.
property:
  class: Person
  max count: 1
  message: Classmate introduction must specify who victim is introduced to.
  min count: 1
  path: introducesTo
property:
  datatype: decimal
  max count: 1
  max inclusive: 365.0
  message: Average recruitment time must be 0.1-365 days.
  min count: 0
  min inclusive: 0.1
  path: averageRecruitmentTime
target class: ClassmateIntroduction

Classmate Recruitment Network Shape
type: NodeShape
comment: Validation shape for classmate recruitment network instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 10
  message: Classmate recruitment network must involve 1-10 schools.
  min count: 1
  min inclusive: 1
  path: schoolsInvolved
property:
  class: EducationalInstitution
  message: Classmate recruitment network must target at least one school.
  min count: 1
  path: targetsSchool
target class: ClassmateRecruitmentNetwork

Coerced Peer Recruitment Shape
type: NodeShape
comment: Validation shape for coerced peer recruitment instances.
property:
  datatype: string
  max count: 1
  max length: 500
  message: Coerced recruitment must have description 10-500 characters.
  min count: 1
  min length: 10
  path: description
target class: CoercedPeerRecruitment

Recruitment Networks Data Quality Shape
type: NodeShape
comment: General data quality constraints for recruitment networks module.
property:
  datatype: string
  message: All recruitment network entities must have non-empty labels, comments, or descriptions.
  min length: 1
  path:
    alternative path: label
    alternative path: comment
    alternative path: description
target node: recruitment-networks#

Educational Institution Shape
type: NodeShape
comment: Validation shape for educational institution instances.
property:
  datatype: string
  in: public
  in: private
  in: charter
  in: alternative
  in: homeschool
  in: online
  max count: 1
  message: School type must be public, private, charter, alternative, homeschool, or online.
  min count: 1
  path: schoolType
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 5000
  message: Student population must be 10-5000.
  min count: 0
  min inclusive: 10
  path: studentPopulation
property:
  datatype: string
  in: low
  in: middle
  in: high
  in: mixed
  max count: 1
  message: Socioeconomic level must be low, middle, high, or mixed.
  min count: 0
  path: socioeconomicLevel
property:
  datatype: string
  max count: 1
  max length: 200
  message: Educational institution must have label 3-200 characters.
  min count: 1
  min length: 3
  path: label
target class: EducationalInstitution

Educational Reporting Data Quality Shape
type: NodeShape
comment: Data quality constraints for educational reporting instances.
property:
  datatype: string
  message: School-based reporting must specify staff role making report.
  min count: 1
  path: reportingStaffRole
property:
  datatype: dateTime
  message: School-based reporting must have reporting timestamp.
  min count: 1
  path: startTime
target class: SchoolBasedReporting

Network Size Consistency Shape
type: NodeShape
comment: Validates consistency between network size and victim recruiter count.
sparql:
  message: Victim recruiter count cannot exceed total network size.
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/recruitment-networks#
      prefix: cacontology-recruitment
  select: SELECT $this WHERE { $this cacontology-recruitment:networkSize ?size ; cacontology-recruitment:victimRecruitersCount ?recruiters . FILTER (?recruiters > ?size) }
target class: PeerRecruitmentNetwork

Peer Recruitment Network Shape
type: NodeShape
comment: Validation shape for peer recruitment network instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 50
  message: Peer recruitment network must have 2-50 participants.
  min count: 1
  min inclusive: 2
  path: networkSize
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 20
  message: Network must have 1-20 victim recruiters.
  min count: 1
  min inclusive: 1
  path: victimRecruitersCount
property:
  class: Person
  message: Recruitment network must include at least one recruiting victim.
  min count: 1
  path: includesRecruitingVictim
target class: PeerRecruitmentNetwork

Recruitment Consistency Shape
type: NodeShape
comment: Validates consistency between recruitment attempts and successes.
sparql:
  message: Successful recruitments cannot exceed total recruitment attempts.
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/recruitment-networks#
      prefix: cacontology-recruitment
  select: SELECT $this WHERE { $this cacontology-recruitment:successfulRecruitments ?successful ; cacontology-recruitment:recruitmentAttempts ?attempts . FILTER (?successful > ?attempts) }
target class: VictimMediatedRecruitment

Recruitment Quota Shape
type: NodeShape
comment: Validation shape for recruitment quota instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 10
  message: Recruitment quota must specify 1-10 required recruitments.
  min count: 1
  min inclusive: 1
  path: successfulRecruitments
target class: RecruitmentQuota

Recruitment Timing Shape
type: NodeShape
comment: Validation shape for recruitment timing instances.
property:
  datatype: dateTime
  max count: 1
  message: Recruitment timing may have start time.
  min count: 0
  path: startTime
property:
  datatype: dateTime
  max count: 1
  message: Recruitment timing may have end time.
  min count: 0
  path: endTime
target class: RecruitmentTiming

School Based Recruitment Shape
type: NodeShape
comment: Validation shape for school-based recruitment instances.
property:
  datatype: string
  in: elementary
  in: middle
  in: high
  in: mixed
  in: alternative
  max count: 1
  message: Grade level must be elementary, middle, high, mixed, or alternative.
  min count: 1
  path: gradeLevel
property:
  datatype: dateTime
  max count: 1
  message: School-based recruitment may have start time.
  min count: 0
  path: startTime
target class: SchoolBasedRecruitment

School Based Reporting Shape
type: NodeShape
comment: Validation shape for school-based reporting instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 365.0
  message: Reporting delay must be 0-365 days.
  min count: 0
  min inclusive: 0.0
  path: reportingDelay
property:
  datatype: string
  in: social_worker
  in: counselor
  in: teacher
  in: administrator
  in: nurse
  in: resource_officer
  max count: 1
  message: Reporting staff role must be from allowed list.
  min count: 1
  path: reportingStaffRole
property:
  datatype: boolean
  max count: 1
  message: Must specify if mandatory reporting was triggered.
  min count: 1
  path: mandatoryReportingTrigger
property:
  datatype: dateTime
  max count: 1
  message: School-based reporting must have start time.
  min count: 1
  path: startTime
target class: SchoolBasedReporting

School Reporting Timeliness Shape
type: NodeShape
comment: Validates reasonable reporting timelines for school-based reports.
sparql:
  message: Mandatory reporting should occur within 24 hours when triggered.
  prefixes:
    declare:
      namespace: https://cacontology.projectvic.org/recruitment-networks#
      prefix: cacontology-recruitment
  select: SELECT $this WHERE { $this cacontology-recruitment:mandatoryReportingTrigger true ; cacontology-recruitment:reportingDelay ?delay . FILTER (?delay > 1.0) }
target class: SchoolBasedReporting

School Social Worker Shape
type: NodeShape
comment: Validation shape for school social worker instances.
property:
  datatype: string
  max count: 1
  max length: 100
  message: School social worker must have label 3-100 characters.
  min count: 1
  min length: 3
  path: label
target class: SchoolSocialWorker

School Staff Member Shape
type: NodeShape
comment: Validation shape for school staff member instances.
property:
  class: EducationalInstitution
  max count: 1
  message: School staff member must be employed at one institution.
  min count: 1
  path: employedAt
target class: SchoolStaffMember

School Vulnerability Factor Shape
type: NodeShape
comment: Validation shape for school vulnerability factor instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 1.0
  message: Vulnerability score must be 0.0-1.0.
  min count: 0
  min inclusive: 0.0
  path: vulnerabilityScore
property:
  datatype: string
  max count: 1
  max length: 150
  message: Vulnerability factor must have label 5-150 characters.
  min count: 1
  min length: 5
  path: label
target class: SchoolVulnerabilityFactor

Social Worker Report Shape
type: NodeShape
comment: Validation shape for social worker report instances.
property:
  class: SchoolPoliceContact
  max count: 1
  message: Social worker report must include law enforcement contact.
  min count: 1
  path: contactsLawEnforcement
target class: SocialWorkerReport

Victim Mediated Recruitment Shape
type: NodeShape
comment: Validation shape for victim-mediated recruitment instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 20
  message: Successful recruitments must be 0-20.
  min count: 0
  min inclusive: 0
  path: successfulRecruitments
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 100
  message: Recruitment attempts must be 1-100.
  min count: 0
  min inclusive: 1
  path: recruitmentAttempts
property:
  class: Person
  max count: 1
  message: Victim-mediated recruitment must specify facilitating victim.
  min count: 1
  path: facilitatedBy
target class: VictimMediatedRecruitment

Victim School Disclosure Shape
type: NodeShape
comment: Validation shape for victim school disclosure instances.
property:
  class: SchoolStaffMember
  max count: 1
  message: School disclosure must specify receiving staff member.
  min count: 1
  path: receivesReport
target class: VictimSchoolDisclosure

Appellate Disposition Shape
type: NodeShape
comment: Validation shape for appellate dispositions.
property:
  datatype: string
  in: affirmed
  in: reversed
  in: vacated
  in: remanded
  in: affirmed_in_part_reversed_in_part
  in: dismissed
  in: other
  max count: 1
  message: Disposition type must be one of: affirmed, reversed, vacated, remanded, affirmed_in_part_reversed_in_part, dismissed, other.
  min count: 1
  path: dispositionType
property:
  message: Appellate disposition should have an rdfs:label.
  min count: 1
  path: label
target class: AppellateDisposition

Appellate Issue Shape
type: NodeShape
comment: Validation shape for appellate issues (issue → disposition, optional evidence-rule and standard-of-review links).
property:
  message: Appellate issue must have an rdfs:label.
  min count: 1
  path: label
property:
  class: AppellateDisposition
  message: Appellate issue must link to at least one AppellateDisposition via issueDisposition.
  min count: 1
  path: issueDisposition
property:
  class: StandardOfReview
  message: appliesStandardOfReview must point to a StandardOfReview.
  min count: 0
  path: appliesStandardOfReview
property:
  class: EvidenceRule
  message: citesEvidenceRule must point to an EvidenceRule.
  min count: 0
  path: citesEvidenceRule
target class: AppellateIssue

AppliesEnhancementShape
type: PropertyShape
class: EnhancementFactor
description: Links guidelines to enhancement factors
min count: 0
name: applies enhancement
path: appliesEnhancement

Arraignment Proceeding
type: Class
comment: Initial court appearance where charges are formally read and plea is entered. Modeled as gUFO Event.
subclass of: LegalProceeding

CSAM Accessing and Viewing
type: Class
comment: Charge for intentionally accessing and viewing child sexual abuse material. Modeled as gUFO Object.
subclass of: CSAM Possession

CSAM Causing Production
type: Class
comment: Charge for causing or facilitating the production of child sexual abuse material, distinct from direct production. Modeled as gUFO Object.
subclass of: CSAM Production

CSAM Distribution
type: Class
comment: Charge for distribution of child sexual abuse material. Modeled as gUFO Object.
subclass of: FederalCharge

CSAM Receiving on Cellular Device
type: Class
comment: Charge for receiving child sexual abuse material on cellular phone or mobile device. Modeled as gUFO Object.
subclass of: CSAM Possession

Carriage Service CSAM Transmission
type: Class
comment: Use of carriage service to cause child abuse material to be transmitted to self, contrary to section 474.22(1)(a)(ii) Criminal Code (Cth). Maximum penalty 15 years imprisonment. Modeled as gUFO Object.
subclass of: FederalCharge

Carriage Service Indecent Communication
type: Class
comment: Use of carriage service to transmit indecent communication to person under 16 years, contrary to section 474.27A Criminal Code (Cth). Maximum penalty 10 years imprisonment. Modeled as gUFO Object.
subclass of: FederalCharge

Community Service
type: Class
comment: Sentence requiring unpaid work for community benefit. Modeled as gUFO Object.
subclass of: CriminalSentence

Computer Seduce Solicit Lure Shape
type: NodeShape
comment: Validation shape for F.S. 847.0135(3) computer solicitation charges.
comment: Validation shape for Florida computer lure charges.
property:
  datatype: string
  in: seduce
  in: solicit
  in: lure
  in: entice
  in: multiple
  max count: 1
  message: Must specify type of solicitation from the allowed list.
  min count: 1
  path: solicitationType
property:
  datatype: string
  max count: 1
  message: May specify the communication platform used.
  min count: 0
  path: communicationPlatform
property:
  datatype: langString
  max count: 1
  message: Computer lure charge should have a label.
  min count: 0
  path: label
property:
  datatype: string
  in: messaging app
  in: social media
  in: email
  in: chat room
  in: gaming platform
  in: video chat
  in: other
  max count: 1
  message: Computer lure method should be from the allowed list.
  min count: 0
  path: computerLureMethod
target class: ComputerSeduceSolicitLure

Contributing to Delinquency Shape
type: NodeShape
comment: Validation shape for F.S. 827.04 contributing to delinquency charges.
comment: Validation shape for Florida contributing to delinquency charges.
property:
  datatype: string
  in: delinquency
  in: dependency
  in: both
  max count: 1
  message: Must specify whether contribution was to delinquency, dependency, or both.
  min count: 1
  path: contributionType
property:
  datatype: langString
  max count: 1
  message: Contributing charge should have a label.
  min count: 0
  path: label
property:
  datatype: boolean
  max count: 1
  message: May specify if contribution to child delinquency occurred.
  min count: 0
  path: childDelinquencyContribution
target class: ContributingToDelinquency

Conviction Record Shape
type: NodeShape
comment: Validation shape for conviction record instances.
property:
  datatype: dateTime
  max count: 1
  message: Conviction record must specify conviction date.
  min count: 1
  path: convictionDate
property:
  datatype: string
  in: jury_verdict
  in: bench_trial
  in: plea_agreement
  in: default_judgment
  in: summary_conviction
  max count: 1
  message: Conviction record must specify conviction type from the allowed list.
  min count: 1
  path: convictionType
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 100
  message: Conviction record must have between 1 and 100 charges.
  min count: 1
  min inclusive: 1
  path: chargeCount
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 50
  message: Prior convictions must be between 0 and 50.
  min count: 0
  min inclusive: 0
  path: priorConvictions
target class: ConvictionRecord

Criminal Fine Shape
type: NodeShape
comment: Validation shape for criminal fine instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 1000000.0
  message: Fine amount must be between $1 and $1,000,000.
  min count: 1
  min inclusive: 1.0
  path: fineAmount
property:
  datatype: string
  in: statutory_fine
  in: discretionary_fine
  in: alternative_fine
  in: cost_of_prosecution
  in: forfeiture
  max count: 1
  message: Criminal fine must specify fine type from the allowed list.
  min count: 1
  path: fineType
property:
  datatype: dateTime
  max count: 1
  message: Criminal fine may specify payment deadline.
  min count: 0
  path: paymentDeadline
target class: CriminalFine

Criminal Sentence Concurrency Business Rule
type: NodeShape
comment: Business rule: a sentence MUST NOT be declared concurrent with itself.
sparql:
  message: A criminal sentence cannot be concurrentWith itself.
  select: SELECT $this WHERE { $this cacontology-sentencing:concurrentWith $this . }
target class: CriminalSentence

Criminal Sentence Shape
type: NodeShape
comment: Validation shape for criminal sentences, including concurrency semantics for concurrent jail/probation terms (as in the Utah Christensen 2021 sentences).
property:
  datatype: string
  in: concurrent
  in: consecutive
  in: mixed
  max count: 1
  message: Sentence concurrency, when provided, must be one of: concurrent, consecutive, mixed.
  min count: 0
  path: sentenceConcurrency
property:
  class: CriminalSentence
  message: Sentences linked via concurrentWith must point to other CriminalSentence instances.
  min count: 0
  path: concurrentWith
target class: CriminalSentence

Data Quality Shape
type: NodeShape
comment: Validates data quality for sentencing outcomes.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Label should be between 5 and 200 characters when provided.
  min count: 0
  min length: 5
  path: label
property:
  datatype: string
  max count: 1
  max length: 1000
  message: Comment should be between 10 and 1000 characters when provided.
  min count: 0
  min length: 10
  path: comment
target class: SentencingOutcome

Defendant Role
type: Role
type: Class
comment: Role of individual charged with ICAC crimes. Modeled as anti-rigid gUFO Role.
subclass of: Role
equivalent class: OffenderRole

Defense Attorney Role
type: Role
type: Class
comment: Role of defense attorney representing ICAC defendants. Modeled as anti-rigid gUFO Role.
subclass of: Role

Direct Promotion of Sexual Performance Shape
type: NodeShape
comment: Validation shape for F.S. 827.071(4) promoting sexual performance by a child charges.
comment: Validation shape for Florida direct promotion charges.
property:
  datatype: string
  in: direct_promotion
  in: directing
  in: producing
  in: facilitating
  max count: 1
  message: Must specify type of promotion from the allowed list.
  min count: 1
  path: promotionType
property:
  datatype: langString
  max count: 1
  message: Direct promotion charge should have a label.
  min count: 0
  path: label
property:
  datatype: boolean
  max count: 1
  message: May specify if sexual performance promotion occurred.
  min count: 0
  path: sexualPerformancePromotion
target class: DirectPromotionOfSexualPerformance

Enhancement Factor Shape
type: NodeShape
comment: Validation shape for enhancement factor instances.
property:
  datatype: string
  in: victim_vulnerability
  in: leadership_role
  in: use_of_technology
  in: commercial_purpose
  in: distribution_scale
  in: repeat_offender
  in: violence_threat
  max count: 1
  message: Enhancement factor must specify enhancement type from the allowed list.
  min count: 1
  path: enhancementType
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 10
  message: Enhancement factor must have enhancement value between 1 and 10.
  min count: 1
  min inclusive: 1
  path: enhancementValue
property:
  datatype: string
  max count: 1
  max length: 500
  message: Enhancement justification must be between 10 and 500 characters.
  min count: 1
  min length: 10
  path: enhancementJustification
target class: EnhancementFactor

Evidence Rule Shape
type: NodeShape
comment: Validation shape for evidence rules cited in appellate issues.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Evidence rule must include a ruleCitation string (5-200 chars).
  min count: 1
  min length: 5
  path: ruleCitation
property:
  message: Evidence rule should have an rdfs:label.
  min count: 1
  path: label
target class: EvidenceRule

Evidentiary Ruling (Issue)
type: Class
source: United States v. McCormack (9th Cir. 2017) opinion (CourtListener).
comment: Appellate issue concerning a trial court evidentiary ruling, including admission/exclusion decisions and related prejudice analysis (e.g., under Federal Rules of Evidence). Modeled as gUFO Object.
subclass of: AppellateIssue

Felony Charge Shape
type: NodeShape
comment: Validation shape for felony charge instances.
property:
  datatype: string
  in: first_degree
  in: second_degree
  in: third_degree
  in: fourth_degree
  in: unclassified
  in: capital
  max count: 1
  message: Felony charge must specify felony level from the allowed list.
  min count: 1
  path: felonyLevel
property:
  datatype: boolean
  max count: 1
  message: Felony charge must specify if it is a violent crime.
  min count: 1
  path: violentCrime
target class: FelonyCharge

Florida State Charge Shape
type: NodeShape
comment: Validation shape for Florida state charge instances in ICAC cases.
comment: Validation shape for Florida state criminal charges.
property:
  datatype: string
  max count: 1
  message: Florida state charge must specify Florida Statute reference (e.g., 'F.S. 847.0135').
  min count: 1
  path: floridaStatute
  pattern: ^F\.S\. [0-9]+\.[0-9]+.*$
property:
  datatype: string
  in: capital_felony
  in: life_felony
  in: first_degree_felony
  in: second_degree_felony
  in: third_degree_felony
  in: first_degree_misdemeanor
  in: second_degree_misdemeanor
  max count: 1
  message: Florida charge must specify classification from the allowed list.
  min count: 1
  path: chargeClassification
property:
  datatype: langString
  max count: 1
  message: Florida charge should have a label.
  min count: 0
  path: label
property:
  datatype: string
  max count: 1
  message: Florida statute should follow F.S. format (e.g., 'F.S. 847.0135').
  min count: 0
  path: floridaStatute
  pattern: ^F\.S\. [0-9]+\.[0-9]+.*$
property:
  datatype: string
  in: Capital Felony
  in: Life Felony
  in: First Degree Felony
  in: Second Degree Felony
  in: Third Degree Felony
  in: First Degree Misdemeanor
  in: Second Degree Misdemeanor
  max count: 1
  message: Charge classification must be from the allowed Florida list.
  min count: 0
  path: chargeClassification
target class: FloridaStateCharge

FollowsGuidelinesShape
type: PropertyShape
class: SentencingGuidelines
description: Links sentencing to guidelines used
min count: 0
name: follows guidelines
path: followsGuidelines

Georgia State Charge Shape
type: NodeShape
comment: Validation shape for Georgia state charge instances in CAC cases.
property:
  message: Georgia state charge should have an rdfs:label.
  min count: 1
  path: label
target class: GeorgiaStateCharge

Imprisonment Sentence Shape
type: NodeShape
comment: Validation shape for imprisonment sentence instances.
property:
  datatype: string
  in: federal_prison
  in: state_prison
  in: county_jail
  in: minimum_security
  in: medium_security
  in: maximum_security
  in: supermax
  max count: 1
  message: Imprisonment sentence must specify facility type from the allowed list.
  min count: 1
  path: facilityType
property:
  datatype: boolean
  max count: 1
  message: Imprisonment sentence must specify parole eligibility.
  min count: 1
  path: paroleEligibility
property:
  datatype: decimal
  max count: 1
  max inclusive: 50.0
  message: Minimum time served must be between 0 and 50 years.
  min count: 0
  min inclusive: 0.0
  path: minimumServed
target class: ImprisonmentSentence

IncludesFineShape
type: PropertyShape
class: CriminalFine
description: Links sentencing to criminal fine
min count: 0
name: includes fine
path: includesFine

IncludesRestitutionShape
type: PropertyShape
class: RestitutionOrder
description: Links sentencing to restitution order
min count: 0
name: includes restitution
path: includesRestitution

Judge Role
type: Role
type: Class
comment: Role of judge presiding over ICAC legal proceedings. Modeled as anti-rigid gUFO Role.
subclass of: Role

Judicial System Situation
type: Class
comment: Broader situation involving judicial system processing of ICAC cases. Modeled as gUFO Situation.
subclass of: Situation

Jury Role
type: Role
type: Class
comment: Role of jury members in ICAC trial proceedings. Modeled as anti-rigid gUFO Role.
subclass of: Role

Legal Charge Shape
type: NodeShape
comment: Validation shape for legal charge instances.
property:
  datatype: string
  max count: 1
  max length: 100
  message: Legal charge must specify statute reference (5-100 characters).
  min count: 1
  min length: 5
  path: statuteReference
property:
  datatype: decimal
  max count: 1
  max inclusive: 99.0
  message: Maximum penalty must be between 0 and 99 years.
  min count: 1
  min inclusive: 0.0
  path: maximumPenalty
property:
  datatype: string
  in: guilty
  in: not_guilty
  in: no_contest
  in: alford_plea
  in: not_entered
  max count: 1
  message: Plea entered must be from the allowed list.
  min count: 0
  path: pleaEntered
property:
  datatype: string
  in: felony
  in: misdemeanor
  in: infraction
  in: violation
  in: contempt
  in: federal_crime
  max count: 1
  message: Legal charge must specify charge type from the allowed list.
  min count: 1
  path: chargeType
property:
  datatype: string
  in: class_a
  in: class_b
  in: class_c
  in: class_d
  in: class_e
  in: unclassified
  in: capital
  max count: 1
  message: Legal charge must specify charge class from the allowed list.
  min count: 1
  path: chargeClass
target class: LegalCharge

Legal Proceeding Shape
type: NodeShape
comment: Validation shape for legal proceeding instances, including pretrial bail status (e.g., held without bail in the Utah Christensen case).
property:
  datatype: string
  in: released_on_bail
  in: held_without_bail
  in: released_on_own_recognizance
  in: bail_denied
  in: bail_revoked
  max count: 1
  message: Bail status, when provided, must be one of: released_on_bail, held_without_bail, released_on_own_recognizance, bail_denied, bail_revoked.
  min count: 0
  path: bailStatus
target class: LegalProceeding

Life Imprisonment Sentence
type: Class
source: United States v. McCormack (9th Cir. 2017) opinion (CourtListener).
comment: Prison sentence of life imprisonment (typically without a fixed term duration). Modeled as gUFO Object.
subclass of: PrisonSentence

Live Streaming Offense
type: Class
comment: Offense involving live streaming of child abuse, often carrying severe sentences. Modeled as gUFO Object.
subclass of: CommonwealthChildAbuseOffense

Mandatory Minimum Sentencing
type: Class
comment: Sentencing under mandatory minimum provisions for Commonwealth child sexual abuse offenses. Modeled as gUFO Object.
subclass of: PrisonSentence

Monetary Penalty
type: Class
comment: Financial penalty including fines, restitution, or forfeiture. Modeled as gUFO Object.
subclass of: CriminalSentence

Online Enticement
type: Class
comment: Charge for online enticement of minors for illegal sexual activity. Modeled as gUFO Object.
subclass of: FederalCharge

Payment Deadline Validation Shape
type: NodeShape
comment: Validates payment deadline consistency.
sparql:
  message: Payment deadline should be in the future when specified.
  select: SELECT $this WHERE { $this cacontology-sentencing:paymentDeadline ?deadline . FILTER (?deadline <= NOW()) }
target class: CriminalFine

Plea Bargaining
type: Class
comment: Negotiation process between prosecution and defense for plea agreement. Modeled as gUFO Event.
subclass of: LegalProceeding

Post-Conviction Phase
type: Phase
type: Class
comment: Phase after conviction including appeals and compliance. Modeled as anti-rigid gUFO Phase.
subclass of: LegalProceeding

Pre-Trial Phase
type: Phase
type: Class
comment: Phase before trial including arraignment and plea bargaining. Modeled as anti-rigid gUFO Phase.
subclass of: LegalProceeding

Probation Officer Role
type: Role
type: Class
comment: Role of probation officer supervising ICAC offenders. Modeled as anti-rigid gUFO Role.
subclass of: Role

Probation Sentence Shape
type: NodeShape
comment: Validation shape for probation sentence instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 50
  message: Probation sentence must have between 1 and 50 conditions.
  min count: 1
  min inclusive: 1
  path: probationConditions
property:
  datatype: string
  in: unsupervised
  in: administrative
  in: standard
  in: intensive
  in: electronic_monitoring
  in: residential
  max count: 1
  message: Probation sentence must specify supervision level from the allowed list.
  min count: 1
  path: supervisionLevel
property:
  datatype: string
  in: monthly
  in: bi_weekly
  in: weekly
  in: daily
  in: as_directed
  in: none
  max count: 1
  message: Probation sentence must specify reporting frequency from the allowed list.
  min count: 1
  path: reportingFrequency
target class: ProbationSentence

Professional License Surrender Condition Shape
type: NodeShape
comment: Validation shape for conditions requiring surrender of a professional license.
property:
  class: ProfessionalLicense
  message: License surrender condition must reference at least one ProfessionalLicense via requiresLicenseSurrender.
  min count: 1
  path: requiresLicenseSurrender
property:
  class: Person
  message: License surrender condition must specify the person it applies to via conditionAppliesToPerson.
  min count: 1
  path: conditionAppliesToPerson
target class: ProfessionalLicenseSurrenderCondition

Prosecutor Role
type: Role
type: Class
comment: Role of prosecutor handling ICAC criminal charges. Modeled as anti-rigid gUFO Role.
subclass of: Role

RequiresTreatmentShape
type: PropertyShape
class: TreatmentOrder
description: Links sentencing to treatment order
min count: 0
name: requires treatment
path: requiresTreatment

Restitution Order Shape
type: NodeShape
comment: Validation shape for restitution order instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 10000000.0
  message: Restitution amount must be between $1 and $10,000,000.
  min count: 1
  min inclusive: 1.0
  path: restitutionAmount
property:
  datatype: string
  in: lump_sum
  in: monthly_payments
  in: quarterly_payments
  in: annual_payments
  in: income_based
  in: deferred
  max count: 1
  message: Restitution order must specify payment schedule from the allowed list.
  min count: 1
  path: paymentSchedule
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 1000
  message: Restitution order must specify victim count between 1 and 1000.
  min count: 1
  min inclusive: 1
  path: victimCount
property:
  datatype: string
  in: pending
  in: current
  in: delinquent
  in: completed
  in: defaulted
  in: modified
  max count: 1
  message: Payment status must be from the allowed list.
  min count: 0
  path: paymentStatus
target class: RestitutionOrder

Restitution Validation Shape
type: NodeShape
comment: Validates restitution order consistency.
sparql:
  message: Restitution amount should be reasonable for victim count.
  select: SELECT $this WHERE { $this cacontology-sentencing:restitutionAmount ?amount ; cacontology-sentencing:victimCount ?victims . FILTER (?amount > (?victims * 100000)) }
target class: RestitutionOrder

ResultsFromChargeShape
type: PropertyShape
class: LegalCharge
description: Links sentencing outcome to legal charge
min count: 1
name: results from charge
path: resultsFromCharge

Sentence Duration Validation Shape
type: NodeShape
comment: Validates sentence duration consistency.
sparql:
  message: Imprisonment sentences should have duration specified.
  select: SELECT $this WHERE { $this cacontology-sentencing:sentenceType "imprisonment" . FILTER NOT EXISTS { $this cacontology-sentencing:sentenceDuration ?duration . } }
target class: SentencingOutcome

Sentencing Cross Reference Shape
type: NodeShape
comment: Validates cross-references between sentencing and related entities.
sparql:
  message: Sentencing outcome must result from at least one legal charge.
  select: SELECT $this WHERE { $this a cacontology-sentencing:SentencingOutcome . FILTER NOT EXISTS { $this cacontology-sentencing:resultsFromCharge ?charge . } }
target class: SentencingOutcome

Sentencing Guidelines Shape
type: NodeShape
comment: Validation shape for sentencing guidelines instances.
property:
  datatype: string
  in: federal_guidelines
  in: state_guidelines
  in: advisory_guidelines
  in: mandatory_minimums
  in: judicial_discretion
  max count: 1
  message: Sentencing guidelines must specify guideline system from the allowed list.
  min count: 1
  path: guidelineSystem
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 43
  message: Base offense level must be between 1 and 43.
  min count: 1
  min inclusive: 1
  path: baseOffenseLevel
property:
  datatype: string
  in: I
  in: II
  in: III
  in: IV
  in: V
  in: VI
  max count: 1
  message: Criminal history category must be from I to VI.
  min count: 1
  path: criminalHistoryCategory
property:
  datatype: integer
  max count: 1
  max inclusive: 20
  message: Adjustment points must be between -10 and 20.
  min count: 0
  min inclusive: -10
  path: adjustmentPoints
target class: SentencingGuidelines

Sentencing Hearing
type: Class
comment: Court proceeding where sentence is determined and imposed. Modeled as gUFO Event.
subclass of: LegalProceeding

Sentencing Outcome Shape
type: NodeShape
comment: Validation shape for sentencing outcome instances.
property:
  datatype: string
  in: imprisonment
  in: probation
  in: suspended_sentence
  in: community_service
  in: fine
  in: restitution
  in: treatment_order
  in: mixed_sentence
  max count: 1
  message: Sentencing outcome must specify sentence type from the allowed list.
  min count: 1
  path: sentenceType
property:
  datatype: decimal
  max count: 1
  max inclusive: 50.0
  message: Sentence duration must be between 0 and 50 years.
  min count: 0
  min inclusive: 0.0
  path: sentenceDuration
property:
  datatype: dateTime
  max count: 1
  message: Sentencing outcome must specify sentence date.
  min count: 1
  path: sentenceDate
property:
  datatype: string
  in: federal
  in: state
  in: local
  in: military
  in: tribal
  in: international
  max count: 1
  message: Sentencing outcome must specify jurisdiction from the allowed list.
  min count: 1
  path: jurisdiction
property:
  datatype: string
  in: no_appeal
  in: appeal_pending
  in: appeal_denied
  in: appeal_granted
  in: sentence_modified
  in: conviction_overturned
  max count: 1
  message: Appeal status must be from the allowed list.
  min count: 0
  path: appealStatus
target class: SentencingOutcome

Sentencing Phase
type: Phase
type: Class
comment: Phase focused on sentencing determination and imposition. Modeled as anti-rigid gUFO Phase.
subclass of: LegalProceeding

Sentencing Reasonableness Issue
type: Class
source: United States v. McCormack (9th Cir. 2017) opinion (CourtListener).
comment: Appellate issue challenging the procedural and/or substantive reasonableness of a sentence (e.g., under 18 U.S.C. § 3553(a)). Modeled as gUFO Object.
subclass of: AppellateIssue

Sex Trafficking
type: Class
comment: Charge for sex trafficking of minors. Modeled as gUFO Object.
subclass of: FederalCharge

Sextortion Charge
type: Class
comment: Criminal charge specifically related to sextortion involving sexual extortion of children through online blackmail. Modeled as gUFO Object.
subclass of: FederalCharge

Sexual Exploitation of a Minor (GA) Charge Shape
type: NodeShape
comment: Validation shape for Georgia sexual exploitation of a minor charge instances.
property:
  message: Charge instance should have an rdfs:label.
  min count: 1
  path: label
target class: SexualExploitationOfMinorCharge

Soliciting Explicit Material
type: Class
comment: Offense of soliciting sexually explicit material from children (e.g., from 10 foreign children via social media). Modeled as gUFO Object.
subclass of: CommonwealthChildAbuseOffense

Standard of Review Shape
type: NodeShape
comment: Validation shape for standards of review.
property:
  datatype: string
  in: abuse_of_discretion
  in: de_novo
  in: clear_error
  in: plain_error
  in: substantial_evidence
  in: reasonableness
  in: other
  max count: 1
  message: Standard of review type must be one of: abuse_of_discretion, de_novo, clear_error, plain_error, substantial_evidence, reasonableness, other.
  min count: 1
  path: standardOfReviewType
property:
  message: Standard of review should have an rdfs:label.
  min count: 1
  path: label
target class: StandardOfReview

Sufficiency of Evidence Issue
type: Class
source: United States v. McCormack (9th Cir. 2017) opinion (CourtListener).
comment: Appellate issue challenging whether the evidence was sufficient to sustain a conviction under the applicable legal standard. Modeled as gUFO Object.
subclass of: AppellateIssue

Supervised Release
type: Class
comment: Period of supervision following completion of prison sentence. Modeled as gUFO Object.
subclass of: CriminalSentence

Temporal Validation Shape
type: NodeShape
comment: Validates temporal consistency in conviction records.
sparql:
  message: Conviction date must be before or equal to sentence date.
  select: SELECT $this WHERE { $this cacontology-sentencing:convictionDate ?convictionDate . ?sentence cacontology-sentencing:resultsFromCharge ?charge ; cacontology-sentencing:sentenceDate ?sentenceDate . ?charge cacontology-sentencing:convictionRecord $this . FILTER (?convictionDate > ?sentenceDate) }
target class: ConvictionRecord

Trafficking of Persons for Sexual Servitude (GA) Charge Shape
type: NodeShape
comment: Validation shape for Georgia trafficking-for-sexual-servitude charge instances.
property:
  message: Charge instance should have an rdfs:label.
  min count: 1
  path: label
target class: TraffickingOfPersonsForSexualServitudeCharge

Traveling To Meet After Computer Lure Shape
type: NodeShape
label: Traveling to Meet After Computer Lure Shape
comment: Validation shape for F.S. 847.0135(4) traveling to meet a minor after computer lure charges.
comment: Validation shape for Florida traveling to meet charges.
property:
  datatype: boolean
  max count: 1
  message: Must specify whether actual travel occurred.
  min count: 1
  path: travelOccurred
property:
  datatype: boolean
  has value: true
  max count: 1
  message: Electronic communication must have been used for this charge.
  min count: 1
  path: electronicCommunicationUsed
property:
  datatype: langString
  max count: 1
  message: Traveling charge should have a label.
  min count: 0
  path: label
property:
  datatype: boolean
  max count: 1
  message: May specify if travel to the location occurred.
  min count: 0
  path: travelOccurred
property:
  datatype: boolean
  max count: 1
  message: May specify if electronic communication was used.
  min count: 0
  path: electronicCommunicationUsed
target class: TravelingToMeetAfterComputerLure

Treatment Order Shape
type: NodeShape
comment: Validation shape for treatment order instances.
property:
  datatype: string
  in: psychological_counseling
  in: sex_offender_treatment
  in: substance_abuse_treatment
  in: anger_management
  in: mental_health_treatment
  in: cognitive_behavioral_therapy
  max count: 1
  message: Treatment order must specify treatment type from the allowed list.
  min count: 1
  path: treatmentType
property:
  datatype: decimal
  max count: 1
  max inclusive: 260.0
  message: Treatment duration must be between 1 and 260 weeks (5 years).
  min count: 1
  min inclusive: 1.0
  path: treatmentDuration
property:
  datatype: string
  in: court_approved
  in: state_certified
  in: private_practice
  in: institutional
  in: community_based
  max count: 1
  message: Treatment order must specify treatment provider from the allowed list.
  min count: 1
  path: treatmentProvider
property:
  datatype: boolean
  max count: 1
  message: Treatment order must specify if compliance is required.
  min count: 1
  path: complianceRequired
target class: TreatmentOrder

Trial Phase
type: Phase
type: Class
comment: Active trial phase with proceedings and evidence presentation. Modeled as anti-rigid gUFO Phase.
subclass of: LegalProceeding

Trial Proceeding
type: Class
comment: Formal trial process with jury or judge determining guilt or innocence. Modeled as gUFO Event.
subclass of: LegalProceeding

Victim Role
type: Role
type: Class
comment: Role of victim in ICAC legal proceedings. Modeled as anti-rigid gUFO Role.
subclass of: Role
equivalent class: VictimRole

applies to
type: ObjectProperty
comment: Links criminal sentence to the charge it addresses.
domain: CriminalSentence
range: CriminalCharge

current phase
type: ObjectProperty
comment: The current active phase of the legal proceeding.
domain: LegalProceeding
range: Phase

has charge
type: ObjectProperty
comment: Links legal proceeding to criminal charges involved.
domain: LegalProceeding
range: CriminalCharge

has legal phase
type: ObjectProperty
comment: Links legal proceeding to its phases.
domain: LegalProceeding
range: Phase

has phase begin point
type: DatatypeProperty
comment: Temporal begin point for legal phase.
domain: Phase
range: dateTimeStamp
sub property of: hasBeginPointInXSDDateTimeStamp

has phase end point
type: DatatypeProperty
comment: Temporal end point for legal phase.
domain: Phase
range: dateTimeStamp
sub property of: hasEndPointInXSDDateTimeStamp

has proceeding begin point
type: DatatypeProperty
comment: Temporal begin point for legal proceeding.
domain: LegalProceeding
range: dateTimeStamp
sub property of: hasBeginPointInXSDDateTimeStamp

has proceeding end point
type: DatatypeProperty
comment: Temporal end point for legal proceeding.
domain: LegalProceeding
range: dateTimeStamp
sub property of: hasEndPointInXSDDateTimeStamp

has role
type: ObjectProperty
comment: Links individual to their role in legal proceeding.
domain: Person
range: Role

has role begin point
type: DatatypeProperty
comment: Temporal begin point for legal role.
domain: Role
range: dateTimeStamp
sub property of: hasBeginPointInXSDDateTimeStamp

has role end point
type: DatatypeProperty
comment: Temporal end point for legal role.
domain: Role
range: dateTimeStamp
sub property of: hasEndPointInXSDDateTimeStamp

has sentence begin point
type: DatatypeProperty
comment: Temporal begin point for sentence implementation.
domain: CriminalSentence
range: dateTimeStamp
sub property of: hasBeginPointInXSDDateTimeStamp

has sentence end point
type: DatatypeProperty
comment: Temporal end point for sentence completion.
domain: CriminalSentence
range: dateTimeStamp
sub property of: hasEndPointInXSDDateTimeStamp

involves charge count
type: DatatypeProperty
comment: Number of charges involved in legal situation.
domain: LegalCaseSituation
range: integer

involves participant count
type: DatatypeProperty
comment: Number of participants involved in legal situation.
domain: Situation
range: integer

participates in proceeding
type: ObjectProperty
comment: Links role to legal proceeding participated in.
domain: Role
range: LegalProceeding

phase duration
type: DatatypeProperty
comment: Duration of legal phase.
domain: Phase
range: duration

proceeding duration
type: DatatypeProperty
comment: Duration of legal proceeding from start to completion.
domain: LegalProceeding
range: duration

raises issue
type: ObjectProperty
comment: Links an appeal process to an appellate issue raised for review.
domain: AppealProcess
range: AppellateIssue

results sentence
type: ObjectProperty
comment: Links legal proceeding to resulting criminal sentence.
domain: LegalProceeding
range: CriminalSentence

role duration
type: DatatypeProperty
comment: Duration of individual's legal role.
domain: Role
range: duration

situation complexity
type: DatatypeProperty
comment: Complexity level of legal situation (1-5 scale).
domain: Situation
range: integer

transitions to phase
type: ObjectProperty
comment: Links one legal phase to the next phase in sequence.
domain: Phase
range: Phase

Address History
type: Class
comment: Historical record of registered addresses.
subclass of: UcoObject

Address Verification Cross Reference Shape
type: NodeShape
comment: Validates that registered offenders have current address information.
sparql:
  message: Registered sex offender must have at least one registered address.
  select: SELECT $this WHERE { $this a cacontology-registry:RegisteredSexOffender . FILTER NOT EXISTS { $this cacontology-registry:residesAt ?address . ?address a cacontology-registry:RegisteredAddress . } }
target class: RegisteredSexOffender

Age Validation Shape
type: NodeShape
comment: Validates age-related constraints for registered offenders.
sparql:
  message: Offender must be at least 18 years old at time of registration.
  select: SELECT $this WHERE { $this cacontology-registry:dateOfBirth ?dob ; cacontology-registry:hasRegistrationRecord ?record . ?record cacontology-registry:registrationDate ?regDate . BIND(YEAR(?regDate) - YEAR(?dob) AS ?age) FILTER (?age < 18) }
target class: RegisteredSexOffender

Community Notification
type: Class
comment: Notification to community about registered sex offender.
subclass of: Action

Compliance Violation Shape
type: NodeShape
comment: Validation shape for compliance violation instances.
property:
  datatype: string
  max count: 1
  max length: 1000
  message: Violation must have a description (10-1000 characters).
  min count: 1
  min length: 10
  path: description
property:
  datatype: dateTime
  max count: 1
  message: Violation must specify occurrence time.
  min count: 1
  path: startTime
property:
  datatype: string
  in: failure_to_register
  in: false_information
  in: late_update
  in: residency_restriction_violation
  max count: 1
  message: Violation category, when provided, must be one of: failure_to_register, false_information, late_update, residency_restriction_violation.
  min count: 0
  path: violationCategory
target class: ComplianceViolation

Contact Restriction
type: Class
comment: Restriction on contact with certain individuals or groups.
subclass of: RegistrationRestriction

Convicting Offense Shape
type: NodeShape
comment: Validation shape for convicting offense instances.
property:
  datatype: string
  max count: 1
  max length: 1000
  message: Offense must have a description (10-1000 characters).
  min count: 1
  min length: 10
  path: offenseDescription
property:
  datatype: date
  max count: 1
  message: Offense must specify conviction date.
  min count: 1
  path: convictionDate
property:
  datatype: string
  max count: 1
  max length: 100
  message: Sentence length should be 1-100 characters when specified.
  min count: 0
  min length: 1
  path: sentenceLength
target class: ConvictingOffense

Court Order
type: Class
comment: Court order mandating sex offender registration.
subclass of: ObservableObject

Data Quality Shape
type: NodeShape
comment: Validates data quality for registry entities.
property:
  datatype: dateTime
  max count: 1
  message: Creation time should be specified when available.
  min count: 0
  path: createdTime
property:
  datatype: dateTime
  max count: 1
  message: Modification time should be specified when available.
  min count: 0
  path: modifiedTime
target class: ConvictingOffense
target class: RegisteredSexOffender
target class: RegistrationRecord

Education Information Shape
type: NodeShape
comment: Validation shape for education information instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Education must specify institution name (2-200 characters).
  min count: 1
  min length: 2
  path: name
target class: EducationInformation

Employment Information Shape
type: NodeShape
comment: Validation shape for employment information instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Employment must specify employer name (2-200 characters).
  min count: 1
  min length: 2
  path: name
property:
  datatype: date
  max count: 1
  message: Employment may specify start date.
  min count: 0
  path: startTime
target class: EmploymentInformation

Employment Restriction
type: Class
comment: Restriction on types of employment.
subclass of: RegistrationRestriction

Failure to Register Offense
type: Class
comment: Criminal offense for failing to register or update required information in a sex offender registry. Typically serves as a registry-triggering or enhancing offense for compliance analytics.
subclass of: ConvictingOffense

False Information Registration Offense
type: Class
comment: Criminal offense for knowingly providing false or misleading information in connection with sex offender registration (e.g., false address, contact information, or online identifiers).
subclass of: ConvictingOffense

Geographic Restriction
type: Class
comment: Geographic area where offender is restricted from being.
subclass of: RegistrationRestriction

Identifying Mark
type: Class
comment: Distinctive physical mark (scar, tattoo, birthmark) for identification.
subclass of: UcoObject

Internet Information
type: Class
comment: Internet-related information for registered sex offender.
subclass of: UcoObject

Internet Restriction
type: Class
comment: Restriction on internet use or online activities.
subclass of: RegistrationRestriction

Internet Service Provider
type: Class
comment: Internet service provider used by registered sex offender.
subclass of: Organization

Notification Tier
type: Class
comment: Classification tier determining level of community notification required.
subclass of: UcoObject

Offender Profile Shape
type: NodeShape
comment: Validation shape for offender profile instances.
property:
  datatype: dateTime
  max count: 1
  message: Profile must specify creation time.
  min count: 1
  path: createdTime
property:
  datatype: dateTime
  max count: 1
  message: Profile may specify last update time.
  min count: 0
  path: lastUpdate
target class: OffenderProfile

Offender Registration Cross Reference Shape
type: NodeShape
comment: Validates that registered offenders have required registration records.
sparql:
  message: Registered sex offender must have at least one registration record.
  select: SELECT $this WHERE { $this a cacontology-registry:RegisteredSexOffender . FILTER NOT EXISTS { $this cacontology-registry:hasRegistrationRecord ?record . ?record a cacontology-registry:RegistrationRecord . } }
target class: RegisteredSexOffender

Offense Classification
type: Class
comment: Classification of sexual offense (felony/misdemeanor, degree, special categories).
subclass of: UcoObject

Photograph
type: Class
comment: Official photograph of registered sex offender.
subclass of: ObservableObject

Physical Description Shape
type: NodeShape
comment: Validation shape for physical description instances.
property:
  datatype: string
  max count: 1
  message: Height must be in format X'XX" or XXX cm when specified.
  min count: 0
  path: height
  pattern: ^[0-9]'[0-9]{1,2}"$|^[0-9]{2,3} cm$
property:
  datatype: string
  max count: 1
  message: Weight must be in format XXX lbs or XXX kg when specified.
  min count: 0
  path: weight
  pattern: ^[0-9]{2,3} lbs$|^[0-9]{2,3} kg$
property:
  datatype: string
  in: brown
  in: blue
  in: green
  in: hazel
  in: gray
  in: black
  in: unknown
  max count: 1
  message: Eye color must be from the allowed list.
  min count: 0
  path: eyeColor
property:
  datatype: string
  in: black
  in: brown
  in: blonde
  in: red
  in: gray
  in: white
  in: bald
  in: unknown
  max count: 1
  message: Hair color must be from the allowed list.
  min count: 0
  path: hairColor
property:
  datatype: string
  in: white
  in: black
  in: hispanic
  in: asian
  in: native_american
  in: pacific_islander
  in: other
  in: unknown
  max count: 1
  message: Race must be from the allowed list.
  min count: 0
  path: race
target class: PhysicalDescription

Primary Residence Shape
type: NodeShape
comment: Validation shape for primary residence instances.
property:
  datatype: date
  max count: 1
  message: Primary residence must specify start date.
  min count: 1
  path: startTime
target class: PrimaryResidence

Public Website
type: Class
comment: Public website for searching sex offender registry information.
subclass of: ObservableObject

Recidivism Post-Registration Business Rule
type: NodeShape
comment: Business rule: a recidivist sex offender SHOULD have at least one postRegistrationEvent linked to post-registration abuse/CSAM incidents.
sparql:
  message: Recidivist sex offenders should have at least one postRegistrationEvent representing post-registration abuse or CSAM incidents.
  select: SELECT $this WHERE { $this a cacontology-registry:RecidivistSexOffender . FILTER NOT EXISTS { $this cacontology-registry:postRegistrationEvent ?event . } }
target class: RecidivistSexOffender

Recidivist Sex Offender Shape
type: NodeShape
comment: Validation shape for recidivist sex offenders, ensuring post-registration offending events can be linked for analytics (e.g., Utah Christensen Garfield County CSAM case).
property:
  class: ChildSexualAbuseEvent
  message: Post-registration events must be modeled as ChildSexualAbuseEvent (or subclasses) when present.
  min count: 0
  path: postRegistrationEvent
target class: RecidivistSexOffender

Registered Address Shape
type: NodeShape
comment: Validation shape for registered address instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Address must have a street (5-200 characters).
  min count: 1
  min length: 5
  path: street
property:
  datatype: string
  max count: 1
  max length: 100
  message: Address must have a city (2-100 characters).
  min count: 1
  min length: 2
  path: city
property:
  datatype: string
  max count: 1
  max length: 50
  message: Address must have a state (2-50 characters).
  min count: 1
  min length: 2
  path: state
property:
  datatype: string
  max count: 1
  message: Postal code must be in format XXXXX or XXXXX-XXXX.
  min count: 1
  path: postalCode
  pattern: ^[0-9]{5}(-[0-9]{4})?$
target class: RegisteredAddress

Registered Sex Offender Shape
type: NodeShape
comment: Validation shape for registered sex offender instances.
property:
  class: SexOffenderRegistry
  message: Offender must be registered in at least one registry.
  min count: 1
  path: registeredIn
property:
  datatype: string
  max count: 1
  max length: 100
  message: Offender must have a full name (2-100 characters).
  min count: 1
  min length: 2
  path: fullName
property:
  datatype: date
  max count: 1
  message: Offender must have a date of birth.
  min count: 1
  path: dateOfBirth
property:
  datatype: string
  max count: 1
  message: SSN must follow format XXX-XX-XXXX when provided.
  min count: 0
  path: socialSecurityNumber
  pattern: ^[0-9]{3}-[0-9]{2}-[0-9]{4}$
property:
  datatype: string
  in: Male
  in: Female
  in: Unknown
  max count: 1
  message: Sex must be Male, Female, or Unknown.
  min count: 1
  path: sex
target class: RegisteredSexOffender

Registration Alert
type: Class
comment: Alert generated by registry system (non-compliance, address change, etc.).
subclass of: UcoObject

Registration Date Validation Shape
type: NodeShape
comment: Validates that registration dates are logical and consistent.
sparql:
  message: Registration date must be after conviction date.
  select: SELECT $this WHERE { $this a cacontology-registry:RegistrationRecord ; cacontology-registry:registrationDate ?regDate ; cacontology-registry:basedOnOffense ?offense . ?offense cacontology-registry:convictionDate ?convDate . FILTER (?regDate < ?convDate) }
sparql:
  message: Expiration date must be after registration date when specified.
  select: SELECT $this WHERE { $this cacontology-registry:registrationDate ?regDate ; cacontology-registry:expirationDate ?expDate . FILTER (?expDate <= ?regDate) }
target class: RegistrationRecord

Registration Frequency Validation Shape
type: NodeShape
comment: Validates registration frequency requirements based on tier.
sparql:
  message: Tier 1 offenders should register annually.
  select: SELECT $this WHERE { $this cacontology-registry:tier 1 ; cacontology-registry:registrationFrequency ?freq . FILTER (?freq != "annual") }
sparql:
  message: Tier 2 offenders should register semi-annually.
  select: SELECT $this WHERE { $this cacontology-registry:tier 2 ; cacontology-registry:registrationFrequency ?freq . FILTER (?freq != "semi-annual") }
sparql:
  message: Tier 3 offenders should register quarterly.
  select: SELECT $this WHERE { $this cacontology-registry:tier 3 ; cacontology-registry:registrationFrequency ?freq . FILTER (?freq != "quarterly") }
target class: RegistrationRecord

Registration Offense Cross Reference Shape
type: NodeShape
comment: Validates that registration records are based on convicting offenses.
sparql:
  message: Registration record must be based on at least one convicting offense.
  select: SELECT $this WHERE { $this a cacontology-registry:RegistrationRecord . FILTER NOT EXISTS { $this cacontology-registry:basedOnOffense ?offense . ?offense a cacontology-registry:ConvictingOffense . } }
target class: RegistrationRecord

Registration Record Shape
type: NodeShape
comment: Validation shape for registration record instances.
property:
  datatype: string
  max count: 1
  max length: 50
  message: Registration record must have a registration number (5-50 characters).
  min count: 1
  min length: 5
  path: registrationNumber
property:
  datatype: date
  max count: 1
  message: Registration record must specify registration date.
  min count: 1
  path: registrationDate
property:
  datatype: date
  max count: 1
  message: Registration record may specify expiration date.
  min count: 0
  path: expirationDate
property:
  datatype: integer
  max count: 1
  max inclusive: 3
  message: Registration tier must be 1, 2, or 3.
  min count: 1
  min inclusive: 1
  path: tier
property:
  datatype: boolean
  max count: 1
  message: Registration record must specify if lifetime registration is required.
  min count: 1
  path: lifetimeRegistration
target class: RegistrationRecord

Registration Status Shape
type: NodeShape
comment: Validation shape for registration status instances.
property:
  datatype: string
  in: active
  in: inactive
  in: non_compliant
  in: delinquent
  in: absconded
  in: deceased
  in: incarcerated
  max count: 1
  message: Registration status must be from the allowed list.
  min count: 1
  path: name
property:
  datatype: dateTime
  max count: 1
  message: Status must specify start time.
  min count: 1
  path: startTime
target class: RegistrationStatus

Registry Officer
type: Class
comment: Officer responsible for sex offender registration management.
subclass of: Role

Registry System
type: Class
comment: Information system used to manage sex offender registry.
subclass of: UcoObject

Sex Offender Registry Shape
type: NodeShape
comment: Validation shape for sex offender registry instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Registry must have a name (5-200 characters).
  min count: 1
  min length: 5
  path: name
property:
  class: Organization
  max count: 1
  message: Registry must specify managing organization.
  min count: 1
  path: managedBy
target class: SexOffenderRegistry

Social Media Account
type: Class
comment: Social media account belonging to registered sex offender.
subclass of: OnlineIdentifier

Temporal Validation Shape
type: NodeShape
comment: Validates temporal consistency for registry actions and records.
sparql:
  message: Start time must be before end time when both are specified.
  select: SELECT $this WHERE { $this uco-core:startTime ?start ; uco-core:endTime ?end . FILTER (?start >= ?end) }
target class: RegistrationRecord
target class: RegistrationUpdate
target class: VerificationCheck

Temporary Address
type: Class
comment: Temporary address where offender will be residing.
subclass of: RegisteredAddress

Vehicle Information Shape
type: NodeShape
comment: Validation shape for vehicle information instances.
property:
  datatype: string
  max count: 1
  max length: 50
  message: Vehicle must specify make (2-50 characters).
  min count: 1
  min length: 2
  path: make
property:
  datatype: string
  max count: 1
  max length: 50
  message: Vehicle must specify model (1-50 characters).
  min count: 1
  min length: 1
  path: model
property:
  datatype: integer
  max count: 1
  max inclusive: 2030
  message: Vehicle year must be between 1900 and 2030 when specified.
  min count: 0
  min inclusive: 1900
  path: year
property:
  datatype: string
  max count: 1
  max length: 15
  message: License plate should be 2-15 characters when specified.
  min count: 0
  min length: 2
  path: licensePlate
target class: VehicleInformation

Verification Check Shape
type: NodeShape
comment: Validation shape for verification check instances.
property:
  datatype: dateTime
  max count: 1
  message: Verification check must specify start time.
  min count: 1
  path: startTime
property:
  class: Person
  max count: 1
  message: Verification check must specify performing officer.
  min count: 1
  path: performer
target class: VerificationCheck

Victim Information Shape
type: NodeShape
comment: Validation shape for victim information instances.
property:
  datatype: integer
  max count: 1
  max inclusive: 25
  message: Victim age must be between 0 and 25 when specified.
  min count: 0
  min inclusive: 0
  path: victimAge
property:
  datatype: integer
  max count: 1
  message: Victim count must be at least 1 when specified.
  min count: 0
  min inclusive: 1
  path: victimCount
property:
  datatype: string
  in: stranger
  in: acquaintance
  in: family_member
  in: authority_figure
  in: romantic_partner
  in: unknown
  max count: 1
  message: Victim relationship must be from the allowed list.
  min count: 0
  path: victimRelationship
target class: VictimInformation

Work Location Shape
type: NodeShape
comment: Validation shape for work location instances.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Work location must have a name (2-200 characters).
  min count: 1
  min length: 2
  path: name
target class: WorkLocation

age acknowledgment method
type: DatatypeProperty
comment: Method by which offender acknowledged victim's age (verbal, written, direct_question).
domain: AgeAwareExploitation
range: string

arrest timing
type: DatatypeProperty
comment: Timing of arrest in relation to compliance activity (arrival, during, departure).
domain: ComplianceBasedArrest
range: string

attends school
type: ObjectProperty
comment: Educational institution where offender is enrolled.
domain: RegisteredSexOffender
range: SchoolLocation

based on offense
type: ObjectProperty
comment: Criminal offense that triggered registration requirement.
domain: RegistrationRecord
range: ConvictingOffense

compliance type
type: DatatypeProperty
comment: Type of compliance activity used for arrest coordination (annual_review, quarterly_check, address_update).
domain: ComplianceBasedArrest
range: string

content types received
type: DatatypeProperty
comment: Types of explicit content solicited and received from victim.
domain: BidirectionalContentExchange
range: string

content types sent
type: DatatypeProperty
comment: Types of explicit content sent to victim (text, images, audio, video).
domain: BidirectionalContentExchange
range: string

coordinated with compliance
type: ObjectProperty
comment: Links investigation to compliance-based arrest coordination.
domain: Action
range: ComplianceBasedArrest

coordinates between agencies
type: ObjectProperty
comment: Links investigation to agencies coordinating across state boundaries.
domain: CrossStateDigitalInvestigation
range: Organization

coordination timeframe
type: DatatypeProperty
comment: Timeframe in days between investigation completion and compliance-based arrest.
domain: ComplianceScheduleCoordination
range: decimal

crosses states
type: ObjectProperty
comment: Links cross-state recidivism to states involved.
domain: CrossStateRecidivism
range: Location

demonstrates age awareness
type: ObjectProperty
comment: Links exploitation pattern to age-aware criminal activity.
domain: DigitalRecidivismPattern
range: AgeAwareExploitation

employed at
type: ObjectProperty
comment: Location where offender is employed.
domain: RegisteredSexOffender
range: WorkLocation

executed at
type: ObjectProperty
comment: Links search warrant to registered address where it was executed.
domain: OffenderDeviceSearchWarrant
range: RegisteredAddress

executed during
type: ObjectProperty
comment: Links arrest to specific compliance activity during which it was executed.
domain: RegistrationReviewArrest
range: AnnualRegistrationReview

exhibits recidivism
type: ObjectProperty
comment: Links registered offender to recidivist classification.
domain: RegisteredSexOffender
range: RecidivistSexOffender

exploitation duration months
type: DatatypeProperty
comment: Duration of digital exploitation in months.
domain: DigitalRecidivismPattern
range: decimal

has alias
type: ObjectProperty
comment: Known alias used by registered sex offender.
domain: RegisteredSexOffender
range: Alias

has compliance
type: ObjectProperty
comment: Compliance history for registered sex offender.
domain: RegisteredSexOffender
range: ComplianceHistory

has online identifier
type: ObjectProperty
comment: Online identifier used by registered sex offender.
domain: RegisteredSexOffender
range: OnlineIdentifier

has profile
type: ObjectProperty
comment: Offender profile containing comprehensive information.
domain: RegisteredSexOffender
range: OffenderProfile

has registration record
type: ObjectProperty
comment: Official registration record for offender.
domain: RegisteredSexOffender
range: RegistrationRecord

involves bidirectional exchange
type: ObjectProperty
comment: Links high-volume exploitation to bidirectional content exchange.
domain: HighVolumeDigitalExploitation
range: BidirectionalContentExchange

involves high volume exploitation
type: ObjectProperty
comment: Links pattern to high-volume communication exploitation.
domain: DigitalRecidivismPattern
range: HighVolumeDigitalExploitation

involves pattern
type: ObjectProperty
comment: Links recidivist offender to digital exploitation pattern.
domain: RecidivistSexOffender
range: DigitalRecidivismPattern

lifetime supervision
type: DatatypeProperty
comment: Whether lifetime supervised release is required.
domain: RecidivistSexOffender
range: boolean

mandatory minimum years
type: DatatypeProperty
comment: Mandatory minimum sentence in years for recidivist offense.
domain: RecidivistSexOffender
range: nonNegativeInteger

maximum sentence years
type: DatatypeProperty
comment: Maximum sentence exposure (years or life).
domain: RecidivistSexOffender
range: string

message count
type: DatatypeProperty
comment: Total number of messages sent in digital exploitation.
domain: HighVolumeDigitalExploitation
range: nonNegativeInteger

owns vehicle
type: ObjectProperty
comment: Vehicle owned or operated by offender.
domain: RegisteredSexOffender
range: RegisteredVehicle

prior conviction count
type: DatatypeProperty
comment: Number of prior sexual offense convictions.
domain: RecidivistSexOffender
range: nonNegativeInteger

recidivism pattern
type: DatatypeProperty
comment: Pattern of recidivism (escalation, similar_mo, cross_jurisdictional).
domain: CrossStateRecidivism
range: string

recovers evidence
type: ObjectProperty
comment: Links forensic examination to multi-modal digital evidence recovered.
domain: VictimDeviceForensics
range: MultiModalDigitalEvidence

registration frequency
type: DatatypeProperty
comment: Required frequency of registration updates (annual, quarterly, monthly).
domain: RegistrationRequirement
range: string

resides at
type: ObjectProperty
comment: Current registered address of offender.
domain: RegisteredSexOffender
range: RegisteredAddress

sentence served
type: DatatypeProperty
comment: Sentence served for prior conviction before reoffending.
domain: RecidivistSexOffender
range: string

subject to restriction
type: ObjectProperty
comment: Restriction imposed on registered sex offender.
domain: RegisteredSexOffender
range: RegistrationRestriction

targets cross state
type: ObjectProperty
comment: Links investigation to cross-state victim targeting.
domain: CrossStateDigitalInvestigation
range: Person

triggers investigation
type: ObjectProperty
comment: Links recidivist activity to cross-state digital investigation.
domain: RecidivistSexOffender
range: CrossStateDigitalInvestigation

verified by
type: ObjectProperty
comment: Verification check confirming registration information.
domain: RegistrationRecord
range: VerificationCheck

victim age acknowledged
type: DatatypeProperty
comment: Age of victim that offender explicitly acknowledged.
domain: AgeAwareExploitation
range: nonNegativeInteger

years between offenses
type: DatatypeProperty
comment: Years between release from prior offense and new offense.
domain: RecidivistSexOffender
range: decimal

Additional Content Demand
type: Class
comment: Demand for more graphic content or additional intimate images.
subclass of: ExtortionDemand

Age Deception Sextortion
type: Class
comment: Sextortion incident involving offender lying about their age when interacting with children (e.g., posing as juvenile).
subclass of: SextortionIncident

Age Deception Shape
type: NodeShape
comment: Validation shape for age deception instances.
property:
  datatype: string
  in: peer_impersonation
  in: adult_impersonation
  in: age_ambiguity
  in: false_profile
  in: stolen_identity
  in: fictional_persona
  max count: 1
  message: Age deception must specify deception type from the allowed list.
  min count: 1
  path: deceptionType
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 25
  message: Claimed age must be between 10 and 25 years.
  min count: 0
  min inclusive: 10
  path: claimedAge
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 80
  message: Actual age must be between 18 and 80 years.
  min count: 0
  min inclusive: 18
  path: actualAge
property:
  datatype: string
  in: ineffective
  in: partially_effective
  in: effective
  in: highly_effective
  in: completely_convincing
  max count: 1
  message: Deception effectiveness must be from the allowed list.
  min count: 0
  path: deceptionEffectiveness
target class: AgeDeception

Age Deception Validation Shape
type: NodeShape
comment: Validates age deception consistency.
sparql:
  message: Claimed age should be lower than actual age in age deception.
  select: SELECT $this WHERE { $this cacontology-sextortion:claimedAge ?claimed ; cacontology-sextortion:actualAge ?actual . FILTER (?claimed >= ?actual) }
target class: AgeDeception

Compliance Duration Validation Shape
type: NodeShape
comment: Validates compliance duration consistency.
sparql:
  message: Immediate compliance should have short duration.
  select: SELECT $this WHERE { $this cacontology-sextortion:complianceLevel "immediate" ; cacontology-sextortion:complianceDuration ?duration . FILTER (?duration > 7.0) }
target class: ComplianceResponse

Compliance Response Shape
type: NodeShape
comment: Validation shape for compliance response instances.
property:
  datatype: string
  in: partial
  in: full
  in: reluctant
  in: immediate
  in: delayed
  in: conditional
  max count: 1
  message: Compliance response must specify compliance level from the allowed list.
  min count: 1
  path: complianceLevel
property:
  datatype: decimal
  max count: 1
  max inclusive: 365.0
  message: Compliance duration must be between 0 and 365 days.
  min count: 0
  min inclusive: 0.0
  path: complianceDuration
target class: ComplianceResponse

Contact List Threat
type: Class
comment: Threat to send intimate images to victim's contact list.
subclass of: SharingThreat

Data Quality Shape
type: NodeShape
comment: Validates data quality for sextortion incidents.
property:
  datatype: string
  max count: 1
  max length: 200
  message: Label should be between 5 and 200 characters when provided.
  min count: 0
  min length: 5
  path: label
property:
  datatype: string
  max count: 1
  max length: 1000
  message: Comment should be between 10 and 1000 characters when provided.
  min count: 0
  min length: 10
  path: comment
target class: SextortionIncident

Demand Message
type: Class
comment: Message making specific demands backed by threats.
subclass of: SextortionCommunication

Disappearing Message Feature
type: Class
comment: Platform feature where messages automatically delete after viewing.
subclass of: ObservableObject

Doxxing Threat Shape
type: NodeShape
comment: Validation shape for doxxing threat mechanisms.
property:
  datatype: string
  has value: doxxing
  max count: 1
  message: DoxxingThreat must have threatType 'doxxing'.
  min count: 1
  path: threatType
target class: DoxxingThreat

Emotional Manipulation
type: Class
comment: Use of emotional tactics (false love, friendship, etc.) to control victim.
subclass of: ManipulationTactic

Escalation Pattern Shape
type: NodeShape
comment: Validation shape for escalation pattern instances.
property:
  datatype: string
  in: demand_escalation
  in: threat_escalation
  in: frequency_escalation
  in: scope_escalation
  in: violence_escalation
  in: exposure_escalation
  max count: 1
  message: Escalation pattern must specify escalation type from the allowed list.
  min count: 1
  path: escalationType
property:
  datatype: string
  in: non_compliance
  in: resistance
  in: delay
  in: partial_compliance
  in: reporting_threat
  in: blocking
  in: time_passage
  max count: 1
  message: Escalation trigger must be from the allowed list.
  min count: 0
  path: escalationTrigger
property:
  datatype: string
  in: gradual
  in: moderate
  in: rapid
  in: immediate
  in: explosive
  max count: 1
  message: Escalation pattern must specify escalation speed from the allowed list.
  min count: 1
  path: escalationSpeed
target class: EscalationPattern

Extortion Phase
type: Class
comment: Final phase involving threats and blackmail using obtained images.
subclass of: SextortionProgression

Extortion Tactics Shape
type: NodeShape
comment: Validation shape for extortion tactics instances.
property:
  datatype: string
  in: screenshot_threat
  in: social_media_sharing_threat
  in: family_contact_threat
  in: school_contact_threat
  in: public_exposure_threat
  in: escalating_demands
  in: time_pressure
  max count: 1
  message: Extortion tactics must specify tactic type from the allowed list.
  min count: 1
  path: tacticType
property:
  datatype: string
  in: vague
  in: specific
  in: detailed
  in: explicit
  in: graphic
  in: personalized
  max count: 1
  message: Extortion tactics must specify threat specificity from the allowed list.
  min count: 1
  path: threatSpecificity
property:
  datatype: string
  in: low
  in: moderate
  in: high
  in: very_high
  in: demonstrated
  in: proven
  max count: 1
  message: Threat credibility must be from the allowed list.
  min count: 0
  path: threatCredibility
target class: ExtortionTactics

False Profile Creation
type: Class
comment: Creating fake profiles on platforms with false age and personal information.
subclass of: IdentityImpersonation

Financial Demand Validation Shape
type: NodeShape
comment: Validates financial sextortion demands.
sparql:
  message: Financial sextortion should specify payment method when demand amount is specified.
  select: SELECT $this WHERE { $this cacontology-sextortion:demandAmount ?amount . FILTER (?amount > 0) FILTER NOT EXISTS { $this cacontology-sextortion:paymentMethod ?method . } }
target class: FinancialSextortion

Financial Sextortion Shape
type: NodeShape
comment: Validation shape for financial sextortion instances.
property:
  datatype: decimal
  max count: 1
  max inclusive: 100000.0
  message: Demand amount must be between $1 and $100,000.
  min count: 0
  min inclusive: 1.0
  path: demandAmount
property:
  datatype: string
  in: gift_cards
  in: cryptocurrency
  in: wire_transfer
  in: cash_app
  in: venmo
  in: paypal
  in: bank_transfer
  in: prepaid_cards
  max count: 1
  message: Payment method must be from the allowed list.
  min count: 0
  path: paymentMethod
property:
  datatype: string
  in: one_time
  in: weekly
  in: monthly
  in: irregular
  in: escalating
  in: continuous
  max count: 1
  message: Payment frequency must be from the allowed list.
  min count: 0
  path: paymentFrequency
target class: FinancialSextortion

FollowsEscalationPatternShape
type: PropertyShape
class: EscalationPattern
description: Links sextortion to escalation patterns observed
min count: 0
name: follows escalation pattern
path: followsEscalationPattern

Image Acquisition Phase
type: Class
comment: Phase where intimate images are obtained from victims.
subclass of: SextortionProgression

Image Sharing Feature
type: Class
comment: Platform feature enabling image sharing in private conversations.
subclass of: ObservableObject

Initial Deception Phase
type: Class
comment: First phase involving age deception and false identity establishment.
subclass of: SextortionProgression

Instant Messaging Sextortion
type: Class
comment: Sextortion conducted through instant messaging platforms with direct private communication.
subclass of: SextortionIncident

International Coordination Shape
type: NodeShape
comment: Validation shape for international coordination instances.
property:
  datatype: string
  in: bilateral
  in: multilateral
  in: regional
  in: global
  in: ad_hoc
  in: formal_treaty
  max count: 1
  message: International coordination must specify coordination type from the allowed list.
  min count: 1
  path: coordinationType
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 50
  message: International coordination must involve between 2 and 50 countries.
  min count: 1
  min inclusive: 2
  path: countriesInvolved
property:
  datatype: string
  in: poor
  in: limited
  in: moderate
  in: good
  in: excellent
  in: exemplary
  max count: 1
  message: Coordination effectiveness must be from the allowed list.
  min count: 0
  path: coordinationEffectiveness
target class: InternationalCoordination

InvolvesAgeDeceptionShape
type: PropertyShape
class: AgeDeception
description: Links sextortion to age deception tactics used
min count: 0
name: involves age deception
path: involvesAgeDeception

Peer Impersonation Shape
type: NodeShape
comment: Validation shape for peer impersonation instances.
property:
  datatype: string
  in: fake_profile
  in: stolen_photos
  in: age_appropriate_language
  in: shared_interests
  in: school_references
  in: peer_network_infiltration
  max count: 1
  message: Peer impersonation must specify impersonation method from the allowed list.
  min count: 1
  path: impersonationMethod
property:
  datatype: string
  max count: 1
  message: Target age group must be in format like '12-14', '15', 'teens', or 'pre_teens'.
  min count: 1
  path: targetAgeGroup
  pattern: ^[0-9]+-[0-9]+$|^[0-9]+$|^teens$|^pre_teens$
target class: PeerImpersonation

Personal Meeting Demand
type: Class
comment: Demand for in-person meeting or physical contact.
subclass of: ExtortionDemand

Private Messaging Feature
type: Class
comment: Platform feature enabling private direct communication.
subclass of: ObservableObject

Progressive Escalation Shape
type: NodeShape
comment: Validation shape for progressive escalation instances.
property:
  datatype: nonNegativeInteger
  max count: 1
  max inclusive: 10
  message: Progressive escalation must have between 2 and 10 escalation stages.
  min count: 1
  min inclusive: 2
  path: escalationStages
property:
  datatype: string
  in: linear
  in: exponential
  in: irregular
  in: cyclical
  in: stepped
  max count: 1
  message: Progressive escalation must specify stage progression from the allowed list.
  min count: 1
  path: stageProgression
target class: ProgressiveEscalation

Property Destruction Threat Shape
type: NodeShape
comment: Validation shape for property destruction threat mechanisms.
target class: PropertyDestructionThreat