> ## Content Index
> Fetch the complete content index at: https://www.traceoriginresearch.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# What a Knowledge Graph Found in 1,172 Cuban Charge Sheets That No Case File Could Show Alone
- URL: https://www.traceoriginresearch.com/what-a-knowledge-graph-found-in-1-172-cuban-charge-sheets-that-no-case-file-could-show-alone/
- Published: 2026-08-25T05:40:37.000Z
- Updated: 2026-08-25T05:40:37.000Z
- Author: Eric Brattin

Analysis

E. Brattin  
Trace Origin LLC

Source data

Prisoners Defenders  
lista.prisonersdefenders.org

Method

OWL 2 / RDF / SKOS  
BFO-aligned ontology

Snapshot

May 2026  
9-stage reproducible pipeline

When a government charges 1,172 political prisoners, does it charge them all the same way? We built a formal knowledge graph over Cuba's political-prisoner registry to find out. The answer is no. There are two distinct prosecutorial playbooks, and which one a prisoner receives has nothing to do with who they are. 

1,172

Prisoners with  
parseable charges

75

Distinct criminal  
charges in corpus

100%

Blind validation  
stability (100/100)

9

Pipeline stages  
fully reproducible

§ 1 · The finding

## Cuba does not charge all protesters the same way. There are *two distinct playbooks.*

The Prisoners Defenders registry is the most comprehensive public record of Cuban political detention. We encoded every record into a formal knowledge graph and measured which charges tend to appear together across the entire population. Two clusters emerged. The government applies one set of charges to some protesters and a completely different charge to others. The two groups almost never overlap. 

Playbook A

The four-charge bundle

Contempt + Public Disorder + Assault + Resistance. These four charges appear together 2.8 to 3.4 times above chance. The state applies them as a package, not individually. The bundle functions to multiply sentence exposure through charge stacking. 

Typical sentence: 5 to 7 years

Playbook B

Sedition, standing alone

Sedición is charged in isolation 90% of the time. A single, heavy charge whose function is characterization: to establish on the public record that the defendant is an enemy of the constitutional order, not merely a disorderly citizen. 

Typical sentence: 10 to 14 years

§ 2 · The falsification

## The natural assumption is *wrong.*

The obvious hypothesis: Cuba assigns the harsher playbook to prisoners who are more visible, more connected, or more politically organized. A well-known dissident gets the heavier charge. An unknown protester gets the lighter bundle. We tested this. It is wrong. 

| Hypothesis we tested                                    | Result      | What the data showed               |
| ------------------------------------------------------- | ----------- | ---------------------------------- |
| Well-documented prisoners get the heavier charge        | WRONG       | 28.6% vs 29.5% — no difference     |
| IACHR-protected prisoners get the heavier charge        | WRONG       | 25.0% vs 30.5% — actually reversed |
| Politically affiliated prisoners get the heavier charge | WRONG       | No significant association at all  |
| Arrested during July 11 protests → heavier charge       | SIGNIFICANT | OR = 1.42, p = 0.027               |

> Which playbook a prisoner receives has nothing to do with who they are. It depends entirely on when they were arrested. The state applies different charge bundles to different waves of protest, not to different categories of person. Under UDHR Articles 10 and 11, that is the definition of arbitrary. 

§ 3 · Independent validation

## We asked a blind algorithm to check our work. It found the *same two playbooks.*

A natural objection: maybe the analyst drew the boundary between the two playbooks in the wrong place. So we ran a separate test. We gave a standard grouping algorithm (Louvain community detection) the raw charge data and told it nothing about our hypothesis. Find the natural groups yourself. 

100%

Stability: 100 of 100 random starts found the same two groups

97.2%

Playbook A: algorithm matched analyst for 698 of 718 prisoners

98.0%

Playbook B: algorithm matched analyst for 196 of 200 prisoners

90.2%

Standalone: 194 of 215 Sedición prisoners had no other charges

MethodLouvain community detection (Blondel et al. 2008) on the charge co-occurrence graph at default resolution (1.0). The algorithm was given no prior knowledge of the analyst-defined regimes. Results archived in 09\_community\_detection\_results.json. Script: 09\_community\_detection.py. 

§ 4 · The pipeline

## Nine reproducible stages from raw HTML to formal submission.

Each stage is a separate Python script. Each script's output is saved and verifiable. Any reviewer can re-run any step against the same data snapshot and verify every number. 

01

Scrape

Download records from PD

02

Parse

Clean and tokenize charges

03

Model

OWL 2 class hierarchy

04

Populate

Per-prisoner RDF facts

05

Check

SHACL validation

06

Enrich

Cross-source verify

07

Analyze

Statistical tests

08

Package

WGAD · IACHR · UPR

09

Validate

Louvain blind test

StandardsOWL 2 / RDF / SKOS / BFO / PROV-O / SHACL. Every fact carries provenance to its source URL. 451 of 1,172 prisoners independently verified via Brave Search API enrichment against Amnesty International, IACHR, CubaLex, OCDH, and international media. 

§ 5 · Legal framework

## UDHR and customary international law. Not the ICCPR.

Cuba has signed but not ratified the International Covenant on Civil and Political Rights. Most submissions to the WGAD about Cuba cite the ICCPR. Those citations are technically moot. Every legal argument in this project routes through the Universal Declaration of Human Rights and customary international law per WGAD Deliberation No. 9\. 

Draft submissions to three international bodies are complete: the UN Working Group on Arbitrary Detention (Categories II and III), the Inter-American Commission on Human Rights (American Declaration Articles XVIII, XXV, XXVI), and a stakeholder submission for Cuba's Fifth Cycle Universal Periodic Review in 2028\. Nine verified WGAD Cuba opinions (2021 to 2025) anchor the submissions, including Opinion 63/2021 which establishes "recurrent pattern" language. 

The full report and repository

[Read the full report](https://truthquest.github.io/cuba-charge-graph/reports/two-regimes-cuba-prisoners-report.html?ref=traceoriginresearch.com) [View the repository](https://github.com/TruthQuest/cuba-charge-graph?ref=traceoriginresearch.com) 

© 2026 Trace Origin LLC · All rights reserved · Non-commercial academic citation and journalistic quotation permitted under standard fair use · Commercial use requires prior written permission 

§ 6 · What this demonstrates

## A proof of concept for a *class of capability.*

Unstructured public records, in this case a website of prisoner records, can be converted into a formal knowledge graph that reveals corpus-level patterns invisible in any individual case file. The two-playbook finding does not exist in any single prisoner's file. It becomes visible only when you analyze the entire population together. That is the core value of structural intelligence. 

The same approach applies to any domain where public records exist but are not structured for analysis: corporate registries, court dockets, sanctions lists, offshore leaks. If the pattern interests you, or if you work in a domain where this kind of analysis could be useful, I'd welcome the conversation.