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.
Choose your path
- Model with the CASE/UCO SDK: Use typed builders in Python, C#, Java, or Rust — or the MCP server with an LLM — to produce validated CASE/UCO/CAC graphs. See Model with AI and https://github.com/vulnmaster/CASE-UCO-SDK
- Model documents with AI: Start from a document (press release, report, policy memo, court filing, tool export):
process_document_file→ route → build graph →validate_graph. Primary interchange is JSON-LD. - Map existing structured data: You already have a database, schema, or JSON model and want to map it into CAC Ontology classes/properties.
CASE/UCO SDK
The CASE/UCO SDK is the fastest path for developers and AI agents to model cyber-domain and CAC investigation data:
- Multi-language bindings: Python, C#, Java, Rust
- MCP server with dozens of modeling recipes
- Support for CASE, UCO, CAC Ontology, and SOLVE-IT
- Graph validation and change-proposal workflows aligned with CAC Ontology v3.1.0 / CASE/UCO 1.5.0
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 |
|---|---|---|
cac-core |
https://cacontology.projectvic.org/core# |
Semantic Spine (v3.1.0) |
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 the repository docs: https://github.com/Project-VIC-International/CAC-Ontology/tree/main/docs
- 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). v3.1.0 pins imports to CASE/UCO 1.5.0. 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, including the CASE/UCO SDK.
- gUFO: The ontology integrates the Unified Foundational Ontology (gUFO) (pinned to 1.0.0 in v3.1.0) to provide a rigorous metaphysical foundation. Alignment is mediated through the Semantic Spine (
cac-core:namespace) and thecacontology-bridge-gufo.ttlbridge module, giving domain modules a single, predictable anchoring layer. This enhances temporal modeling (e.g., roles like ‘Suspect’ are temporal phases) and enables more robust validation and reasoning capabilities.
Serialization
For application and SDK adopters, prefer JSON-LD (the CASE/UCO SDK default). Turtle (.ttl) remains excellent for ontology modules and human-authored CAC Ontology example suites. Both are valid RDF serializations.
Example Turtle Serialization:
@prefix cac-core: <https://cacontology.projectvic.org/core#> .
@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 with spine-anchored classes
:kb-f8e2c0b0-3b1a-4b9e-8c1d-9f2e3a4b5c6d a cacontology:CACInvestigation ;
cacontology:status "active" ;
cacontology:hasReport :kb-a1b2c3d4-e5f6-4a5b-8c9d-0e1f2a3b4c5d .
# Phases, Roles, Events inherit spine types through the class hierarchy
:kb-c5d6e7f8-a1b2-4c3d-9e0f-1a2b3c4d5e6f a cacontology:InitialPhase ; # inherits cac-core:Phase
rdfs:label "Cybertip Triage" .
:kb-d7e8f9a0-b1c2-4d3e-af01-2b3c4d5e6f7a a cacontology:ReceiveCybertipAction ; # inherits cac-core:InvestigativeAction
rdfs:label "Process incoming NCMEC CyberTip" .
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:
CASE/UCO SDK
- SDK repository: https://github.com/vulnmaster/CASE-UCO-SDK
- AI / MCP workflow: Model with AI
Example Knowledge Graphs
Review the Examples & Gallery for curated entry points, or browse the canonical example suite in GitHub:
- Example knowledge graphs (canonical): https://github.com/Project-VIC-International/CAC-Ontology/tree/main/examples_knowledge_graphs
SPARQL Queries
Browse the canonical SPARQL suites in GitHub:
- SPARQL analytics suites (canonical): https://github.com/Project-VIC-International/CAC-Ontology/tree/main/example_SPARQL_queries
Documentation
- Repository documentation (canonical): https://github.com/Project-VIC-International/CAC-Ontology/tree/main/docs
- Presentation: https://www.figma.com/deck/sP6RILkazvPti5xx3DVqnl
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.