Developer Guide
Welcome to the CAC Ontology Developer Guide. This documentation is designed for software engineers, data architects, and system integrators who are implementing the CAC Ontology in their applications and workflows.
Adoption & Mapping
Adopting the CAC Ontology involves mapping your existing data models and schemas to the semantic concepts defined in the ontology. This process ensures your data is interoperable with other systems using CAC, CASE, and UCO.
Namespaces
All CAC Ontology modules utilize a standardized namespace structure. When generating RDF data, ensure you declare the correct namespaces:
Base Namespace: https://cacontology.projectvic.org
| Prefix | URI | Description |
|---|---|---|
cacontology |
https://cacontology.projectvic.org# |
Base namespace |
cacontology-core |
https://cacontology.projectvic.org/core# |
Core investigation framework |
uco-core |
https://ontology.unifiedcyberontology.org/uco/core/ |
UCO Core |
case-investigation |
https://ontology.caseontology.org/case/investigation/ |
CASE Investigation |
Mapping Strategy
- Analyze Source Data: Identify the key entities in your data (e.g., Reports, Suspects, Victims, Digital Media).
- Generate UUIDs: Assign a unique UUID v4 to every serialized object to ensure global uniqueness and alignment with CASE/UCO standards.
- Select Ontology Classes: Map your entities to the corresponding CAC Ontology classes. Refer to the Entity Reference and Documentation.
- Map Properties: Align your data fields with the ontology’s object and data properties.
- Define Relationships: Establish links between entities using object properties (e.g.,
cacontology-core:hasSuspect,cacontology-core:hasVictim).
Integration with CASE, UCO, and gUFO
The CAC Ontology is designed for seamless integration with the broader cyber-investigation ecosystem.
- CASE & UCO: CAC Ontology extends the Cyber-investigation Analysis Standard Expression (CASE) and Unified Cyber Ontology (UCO). It inherits classes and properties from these standards, allowing you to use CAC-specific concepts alongside standard cyber-investigation structures. This ensures compatibility with tools that support CASE/UCO.
- gUFO: The ontology integrates the Unified Foundational Ontology (gUFO) to provide a rigorous metaphysical foundation. This enhances temporal modeling (e.g., roles like ‘Suspect’ are temporal phases) and enables more robust validation and reasoning capabilities.
Serialization
We recommend using Turtle (.ttl) or JSON-LD for serializing CAC Ontology data. These formats are human-readable (Turtle) and web-friendly (JSON-LD).
Example Turtle Serialization:
@prefix cacontology: <https://cacontology.projectvic.org#> .
@prefix cacontology-core: <https://cacontology.projectvic.org/core#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
# Example: Create a CAC investigation using UUID v4
:kb-f8e2c0b0-3b1a-4b9e-8c1d-9f2e3a4b5c6d a cacontology-core:CACInvestigation ;
cacontology-core:status "active" ;
cacontology-core:hasReport :kb-a1b2c3d4-e5f6-4a5b-8c9d-0e1f2a3b4c5d .
:kb-a1b2c3d4-e5f6-4a5b-8c9d-0e1f2a3b4c5d a cacontology-core:Report ;
cacontology-core:reportDate "2025-11-23"^^xsd:date ;
cacontology-core:summary "Initial tip received via hotline." .
Validation
The CAC Ontology includes a comprehensive SHACL validation system available in the testing/ directory of the repository.
Docker Validation System
You can validate your data using the provided Docker configuration. This system runs automated checks against your RDF data using predefined SHACL shapes.
- Locate Testing Directory: Access the validation system in the repository.
- Run Validation:
# From the repository root docker compose -f testing/docker-compose.yaml up -d - Process: The system will mount your ontology files and example data, validating them against the SHACL shapes defined in the ontology modules.
Examples & Resources
We provide extensive resources to assist with implementation:
Example Knowledge Graphs
Review our collection of Example Knowledge Graphs to see complete, valid RDF datasets for various scenarios:
Click to view all Knowledge Graph Examples
- 764-network-extremist-enterprise-example.ttl
- arkansas-operation-cyber-highway-safety-check-example.ttl
- brooklyn-fiesco-november-2024-example.ttl
- brooklyn-lee-december-2024-example.ttl
- brooklyn-morton-october-2024-example.ttl
- brooklyn-teacher-march-2025-example.ttl
- brooklyn-trafficking-april-2025-example.ttl
- brooklyn-trafficking-ring-example.ttl
- buffalo-vermont-case-example.ttl
- bushwick-case-example.ttl
- ceos-federal-law-example.ttl
- douglas-comprehensive-case.ttl
- enhanced-investigation-lifecycle.ttl
- europol-kidflix-operation-example.ttl
- gary-simon-teacher-case-example.ttl
- gufo-phase1-example.ttl
- gufo-phase2-temporal-example.ttl
- haitian-orphanage-geilenfeld-example.ttl
- hartford-vermont-case-example.ttl
- hotline-lifecycle.ttl
- idaho-operation-unhinged-example.ttl
- illinois-attorney-general-case-example.ttl
- international-coordination-example.ttl
- investigation-lifecycle.ttl
- national-icac-directory-example.ttl
- operation-cumberland-ai-csam-example.ttl
- operation-restore-justice-example.ttl
- palmisano-louisiana-registered-offender-example.ttl
- rhode-island-production-case.ttl
- sa-jacet-decade-operation-example.ttl
- sex-offender-registry-integration-example.ttl
- utah-dominic-christensen-example.ttl
- utah-operation-hive-strike-example.ttl
- valdez-olivar-maryland-case-example.ttl
- vermont-case-example.ttl
- wa-sextortion-case-example.ttl
Found in the repository under examples/examples_knowledge_graphs.
SPARQL Queries
Explore Example SPARQL Queries for analytics and data retrieval patterns:
Click to view all SPARQL Query Examples
- age-at-time-analytics.rq
- comprehensive-case-analytics.rq
- find_automated_reports.rq
- find_cross_border_actions.rq
- find_duplicate_evidence.rq
- find_live_stream_incidents.rq
- find_open_reports.rq
- find_platform_cooperation_analytics.rq
- find_report_statistics.rq
- find_rescue_chains.rq
- find_rescue_statistics.rq
- find_unhandled_reports.rq
- gufo-enhanced-analytics.rq
- utah-dominic-christensen-analytics.rq
Found in the repository under examples/example_SPARQL_queries.
Documentation
- CAC Ontology v2.2.0 Documentation: The official documentation source, including architecture, design, and user guides.
Contributing
We encourage developer contributions to the ontology.
- Propose Changes: If you identify a need for a new class, property, or fix, please open an issue on our GitHub repository.
- Follow Guidelines: Please review our Contributing Guidelines before submitting pull requests or issues.