What the Ontology Shows: A Statistic Sees 22 Target Types. A Hierarchy Suggests Two Kinds of War., 1970-2020

What the Ontology Shows: A Statistic Sees 22 Target Types. A Hierarchy Suggests Two Kinds of War., 1970-2020
GTD structural signature analysis · August 2026

A statistic sees 22 target types. A hierarchy suggests two kinds of war.

Two thirds of the shifts a changepoint detector finds in fifty years of terrorism data are gaps in the reporting. Thirty survive. Some of those groups changed what they attack; others changed only how. That split is real but fragile: it depends on how you decide which targets belong together.

We built a formal ontology over fifty years of coded terrorism incidents to find out whether a group’s change in tactics is detectable in the public record before anyone announces it. It is, and the model reported 97 such moments. Sixty-seven were false. The database is assembled from press reports, so when coverage of a group thins out, or stops recording what weapon was used, or shifts from one country to another, the numbers move even though nothing about the group has changed, and a detector reads that as a change in tactics. These false signals cluster at the top of any ranking by size, so the most dramatic-looking findings are reliably the emptiest. Filter them and 30 remain, which hold up where we checked them against the historical record: a Spanish group pivoting to extorting businessmen, a Colombian one escalating attacks on oil pipelines for leverage before peace talks. That is the finding this piece defends. Section 6 asks a further question, whether those 30 divide into groups that changed what they attack versus only how, and reports both a suggestive answer and the reasons we do not think it is yet load-bearing.

What this is not This is not a criticism of the Global Terrorism Database. Every limitation described here follows from the fact that event data is assembled from press reporting, and every one of them is documented by START in the GTD codebook and FAQ: uneven source availability across countries and years, the “Unknown” weapon and target codes, collection-methodology changes in 1998, 2008, and 2012, and the missing 1993 records. START is unusually transparent about all of it. The failure this piece describes belongs to the analysis, not the archive. A changepoint detector run over GTD without accounting for documented limitations will report the limitations as findings, and it will report the worst-sampled ones most confidently.
DATA SNAPSHOT: 209,706 incidents, 1970–2020, from the GTD 0522dist release (START, University of Maryland). 232 perpetrator groups meet the minimum-incident threshold (≥50) for signature profiling. After applying a 10-incident-per-year floor, 94 groups have enough adequately-sampled years to test for structural breaks. All figures below refer to this snapshot and are reproducible from the archived pipeline.
97
Breaks reported
before filtering
67
Traced to the reporting,
not the groups
30
Breaks that survive
on adequate samples
3
Distinct failure modes
identified and testable
§ 1 · What survives

Thirty breaks, twenty-three groups, fifty years.

Each point below is a group-year where the model detected a structural shift in operational signature that rests on real data: at least ten recorded incidents in both the year of the break and the year before it. Note the vertical range. Nothing survives above 0.78, and the largest, most active organizations cluster low, between 0.06 and 0.24. Before filtering, this chart ran all the way to 1.0, and those maximum-magnitude points were the emptiest.

Named organization Generic GTD label, excluded from case analysis
Y-axis: break magnitude (Jensen–Shannon divergence at changepoint, 0–1). Bubble size: total incidents for that group. Hover any point for group, year, and magnitude.
§ 2 · How the method works

A group’s mix of tactics is a fingerprint. We measure when the fingerprint changes.

Every incident in the database is coded with a weapon type and a target type: explosives against a business, firearms against police. For any group in any year, count how often each combination occurs and you get a breakdown, like a pie chart. Call that the group’s tactical fingerprint for that year.

Step 1 · line the fingerprints up over time A single year’s fingerprint means nothing alone. What matters is whether it resembles last year’s. So for each group we lay its fingerprints out in order, one per active year, and ask how much consecutive years differ. Stable tactics produce a flat line. A change produces a spike, and a spike is something you can see.
Step 2 · put a number on “how different” Eyeballing works for one group. There are 232 here. So the comparison becomes a measurement: Jensen–Shannon divergence, a standard statistic for the distance between two distributions, producing a number from 0 (identical) to 1 (no tactics in common).
Step 3 · drop the years too thin to measure This step is why this analysis reports 30 breaks and not 97, and it is the step most often skipped. Divergence between two sparse years is degenerate: a year with two incidents and a year with three that happen to differ produce a score of exactly 1.0, the maximum, on no evidence. We require at least ten incidents in a year for it to enter the series at all. Thin years are dropped rather than filled in, because a year with three incidents carries no usable information about a distribution and any imputed value would be invented.
Step 4 · find the shift automatically Across the remaining series, a changepoint algorithm called PELT locates the year where the jump is too large to be ordinary year-to-year variation. That year is the structural break. Nothing in this step knows what happened in the news. It sees only coded tactics.
Step 5 · check the result against a formal definition Steps 1 through 4 could be done in a spreadsheet, and the arithmetic would be right. But a spreadsheet has no concept of what a tactical signature is, only that two columns match. We define operational signature formally, as a class in an OWL ontology, then hand the rule and the data to an independent reasoner (HermiT) and ask it to check every candidate against the definition itself. Section 7 shows what that verification looks like on a real record.
§ 3 · The three failure modes

Sixty-seven false positives, and why each one fooled the model.

Each of these is a known property of press-derived event data, described in GTD’s own documentation. What follows is what happens when a detector is run without accounting for them. Each has a mechanism, each is testable, and each will recur in any event dataset assembled from press reporting.

Failure modeScaleWhat the model was actually detecting
Thin samples 59 of 97 A year with 1–9 incidents on one side of the break. Divergence saturates at 1.0 automatically. The model was measuring a group’s decline in activity, not any change in its tactics.
Reporting gaps 5 of 30 remaining “Unknown” is the second-most-common weapon type groups appear to shift toward. It is not a tactic; it is GTD correctly recording that the source reporting did not specify a weapon. FARC’s largest 1994 shift is a 40% jump in Unknown, which tracks reporting quality rather than behaviour.
Geographic mix 2 of 30 remaining The PKK’s 1995 “break” is the clearest. Its tactics in Turkey did not change. Its tactics in Germany did not change. What changed was that 91 of 126 recorded incidents that year were German, and Turkish coverage fell from 167 to 31.
Each of these produces a large, confident, entirely false result. All three are invisible if you look only at the magnitude score, and all three are obvious the moment you look at the underlying counts.
The PKK's 1995 break is a change in coverage, not in tactics Two panels. In Turkey, PKK tactics are firearms against military and police both before and after 1995, unchanged. In Germany, tactics are incendiary attacks on business both before and after, unchanged. What changed is the mix: Turkish incidents fell from 167 to 31 while German incidents rose from 36 to 91, so the combined distribution shifted even though neither operation did. NEITHER OPERATION CHANGED. ONLY THE MIX BETWEEN THEM DID. Inside Turkey 1991–94  firearms → military, police 1995–97  firearms → police, military Same posture, same weapons. Unchanged. Inside Germany 1991–94  incendiary → business 1995–97  incendiary → business Same posture, same weapons. Unchanged. WHAT ACTUALLY MOVED: WHICH COUNTRY GOT RECORDED Turkey  167 incidents → 31     Germany  36 → 91 The detector reported a 0.54-magnitude tactical break. There was no tactical break.
The PKK case, in detail Turkey-only tactics, 1991–94: firearms against military (34%) and police (14%). Turkey-only, 1995–97: firearms against police (14%) and military (9%). Germany-only, 1991–94: incendiary against business (25%). Germany-only, 1995–97: incendiary against business (70%). Two stable operations. One shifting mix between them. The detector reported a 0.54-magnitude tactical break, and there was no tactical break. Note also that GTD contains no incidents at all for 1993, for any group: the 1993 records were lost by Pinkerton before the dataset was handed to START, retrospective re-collection recovered only about 15% of estimated attacks, and START excluded the year deliberately rather than publish a misleadingly low count. That is a documented and defensible choice, but it means any year-over-year series spanning 1993 has a hole in it that the analyst, not the archive, has to handle.
§ 4 · The lead case

What a real break looks like: GRAPO, 1984.

The Spanish Maoist group GRAPO spent the early 1980s attacking the state. Between 1981 and 1983 its recorded tactics are dominated by explosives against government targets (39%) and firearms against police (35%). From 1984 the fingerprint inverts toward a different target class entirely: explosives against business jumps from 13% to 44%.

GRAPO tactical composition before and after the 1984 break Bar comparison of GRAPO's coded tactics. Before 1984: explosives against government 39 percent, firearms against police 35 percent, explosives against business 13 percent. From 1984: explosives against business 44 percent, explosives against government 12 percent, firearms against police 9 percent. 1981–1983 · n=23 incidents Explosives→Government 39% Firearms→Police 35% Explosives→Business 13% 1984–1988 · n=34 incidents Explosives→Business 44% Explosives→Government 12% Firearms→Police 9% Detected break 1984 magnitude 0.40 Detected from tactic codes alone. The model has no access to news, court records, or the group’s own communiqués.

The historical record explains this precisely. 1984 is the year GRAPO ran an organised extortion campaign against Spanish businessmen, what it called the revolutionary tax; roughly a hundred paid that year. On 5 September three separate commandos attacked businessmen who had refused, killing one in Madrid and the chairman of the Employers’ Association in Seville. The same year Spain passed an anti-terrorist law that drove the group to break into smaller mobile cells. A funding campaign and a structural reorganisation, both visible in the tactic codes as a single detected break.

Why this validates rather than scoops GRAPO’s 1984 campaign is documented in Spanish press archives, in a contemporaneous Washington Post report of the September 5 attacks, and in the organisation’s own published history. The model did not discover it. The model recovered it from coded tactics without being told, which is what makes the other 29 breaks worth taking seriously.
§ 5 · A second case

ELN, 2014: escalation as leverage.

Colombia’s ELN shows a detected break in 2014 (magnitude 0.43). Its signature tactic, explosives against utilities, barely moves (21% to 23%), but the composition around it shifts toward police and military targets, and recorded incidents rise from 34 to 184 across the surrounding three-year windows.

The context is documented. Colombia’s Ministry of Defense recorded 259 pipeline attacks in 2013, close to 20% above the previous year, and from 2014 pipeline attacks began to be accompanied by sniper attacks on workers. Through this period the ELN was manoeuvring for its own negotiations while the FARC’s Havana talks approached a conclusion, and analysts describe the group using attacks on oil infrastructure and kidnappings to strengthen its hand at the table. The break is real, and it is a negotiating posture rather than a change of doctrine.

Research status Two of the 30 surviving breaks have been researched to this depth. Both check out. The remaining 28 have not been individually verified against historical sources, and this piece makes no claim about them beyond the fact that they rest on adequate data. Three of the 30 are additionally flagged for high Unknown-weapon share and should be treated as suspect (FARC 1994, LRA 2017, ADF 2019).
§ 6 · Two kinds of break

An exploratory result, and why we are not leading with it.

Thirty surviving breaks, ranked by magnitude, look like one list of events differing only in degree. They may not be. Some groups appear to have changed the kind of target they attack; others kept attacking the same kind by different means. That distinction is invisible to the divergence score, which treats GTD’s 22 target codes as 22 unrelated labels, making Police and Military exactly as different as Police and Religious Institutions.

So we gave the ontology a hierarchy: military and police are the armed state; government offices, utilities and telecoms the administrative state; business, transport and ports the economy; citizens, schools, churches, journalists and NGOs civilians; rival militias and parties other armed factions. On that hierarchy, 13 of the 30 breaks cross a boundary and 17 stay inside one, and break magnitude does not distinguish the two (cluster-level permutation test, p=0.86).

GTD's 22 flat target codes grouped into five posture categories The 22 target types GTD records, grouped under five superclasses: armed state (military, police) 29.9 percent of incidents, administrative state 16.8 percent, the economy 15.0 percent, civilians 31.8 percent, and other armed factions 2.9 percent. These groupings are analytic choices made for this analysis, not standard categories. WHAT THE DATABASE RECORDS: 22 UNRELATED LABELS Military · Police · Government (General) · Government (Diplomatic) · Utilities · Telecommunication Business · Transportation · Maritime · Airports & Aircraft · Food or Water Supply · NGO Private Citizens · Religious Figures/Institutions · Educational Institution · Journalists & Media Tourists · Terrorists/Non-State Militia · Violent Political Party · Abortion Related · Unknown · Other one possible grouping, ours FIVE POSTURES (AN ANALYTIC CHOICE, NOT A STANDARD) armed state military, police 29.9% administrative state govt, utilities, telecoms 16.8% the economy business, transport, ports 15.0% civilians citizens, churches, press 31.8% other factions militias, parties 2.9% Percentages are the share of all 209,706 coded incidents. Two-way alternatives (state vs non-state, hard vs soft targets) are equally defensible and produce roughly half as many boundary crossings. The grouping is an input to the result, not a consequence of it.

We stress-tested that result before building anything on it, and it did not survive well enough to headline. Four problems, in order of severity.

TestResultWhat it means
Alternative hierarchies FAILS Three equally defensible groupings (state vs non-state; hard vs soft targets; people/authority/infrastructure) give 7, 6, and 9 crossings rather than 13, and agree with our labels on only 70–80% of breaks. Nothing in the data selects five categories over two or three.
Statistical power UNDERPOWERED At n=13 vs 17 the test has 28% power to detect a magnitude difference of 0.10 and 56% at 0.15. On a 0–0.78 range those are not small effects. The null is failure to detect, not evidence of absence.
Independence VIOLATED The 30 breaks come from 23 groups. FARC and ELN contribute three each, ETA, PKK and Hezbollah two. 40% of observations are non-independent, so we replaced the Mann–Whitney with a permutation test that shuffles labels at group level.
Bootstrap stability 8 OF 30 UNSTABLE Resampling incidents within each window flips the classification more than 20% of the time for eight breaks, including Hezbollah 2006 (59%), Muslim extremists 2015 (47%) and FARC 2009 (41%). These rest on near-ties between the top two categories.
Crossed a boundary (13) Stayed within one (17)
Classes are intermixed at every magnitude. Cluster-level permutation test on magnitude, p=0.86. Treat the colours as provisional: eight of these thirty flip under bootstrap resampling, and a different hierarchy would recolour six to nine of them.
The idea is sound and the machinery works. What we cannot yet show is that the particular five-way split is the right one, rather than one of several defensible choices that happens to produce a readable number.
What would settle it A hierarchy validated independently of this dataset, from counterterrorism doctrine or from coder agreement studies, rather than constructed by us for this analysis. Failing that, a corpus large enough to give real power: the same test at n=150 rather than n=30 would detect a magnitude difference of 0.10 reliably. We also tested whether crossing a boundary predicts a change in lethality over the following three years. It does not (p=0.263).
§ 7 · The ontology layer

Signatures are reasoner-verified, not self-asserted.

The pipeline never writes “this is a signature.” It writes the raw facts, weapon and target, and an independent reasoner decides whether those facts satisfy a formal definition. Below is one real record from the two graph files the pipeline produces, before and after that reasoning step. The only line that differs is the one HermiT added.

REAL DATA, DIRECT FROM THE GRAPH FILES — NOT PARAPHRASED
BEFORE REASONING · gtd_ontology_full.ttl
gtdo:sig_Tupac_Amaru_Revolutionary
_Movement__MRTA_0
    a owl:NamedIndividual ;
    gtdo:frequency 167 ;
    gtdo:involvesWeapon
        gtdo:weapon_Explosives ;
    gtdo:targets
        gtdo:target_Business .
This record says: here is a thing, and it happened 167 times. It involves the weapon Explosives, and it targets Business. That is all. Nothing here calls it a signature.
AFTER HERMIT · gtd_ontology_full_materialized.ttl
gtdo:sig_Tupac_Amaru_Revolutionary
_Movement__MRTA_0
    a gtdo:OperationalSignature,
        owl:NamedIndividual ;
    gtdo:frequency 167 ;
    gtdo:involvesWeapon
        gtdo:weapon_Explosives ;
    gtdo:targets
        gtdo:target_Business .
Same weapon, same target, same count. One line added: this thing is now also a signature. HermiT added it after checking the facts against the rule. We did not write it.
This record is a group’s aggregate tactic pair, which is why it survives as a valid signature even though the same group’s break was rejected by the sample-size filter. The two are different objects: a signature summarises a group’s whole history, a break is a claim about a specific year. 1,233 signatures were reasoned into OperationalSignature across the corpus, with zero inconsistencies flagged.
OperationalSignature (defined class)
Not a primitive type we assert. An OWL equivalentClass restriction: any individual satisfying both involvesWeapon some WeaponType and targets some TargetType is classified into it by the reasoner.
SignatureEpoch
A time-bounded interval during which a group’s distribution was stable, reified with validFrom / validUntil so breaks are queryable graph objects rather than rows in a table.
SPARQL cross-group convergence
A query joining PerpetratorGroup → exhibitsSignature → involvesWeapon/targets surfaces tactic pairs shared by groups with no other apparent connection in the data.
§ 8 · What we did not do

The limits of this, stated plainly.

  • We did not perform causal inference. The model locates the year a distribution changed shape. Why it changed, whether strategy, leadership, resources, or pressure, is established case by case from sources outside the data.
  • Two of thirty surviving breaks have been researched in depth. Both hold up. The other 28 are unverified. We are not claiming they are all real, only that they are not disqualified by the failure modes we can test for.
  • The 10-incident floor is a judgement, not a derived constant. It is defensible and we show our reasoning, but a floor of 5 or 20 would produce a different count. The finding that most unfiltered breaks come from the reporting is robust to that choice; the exact number 30 is not.
  • The headline count depends on parameters we chose. The number of surviving breaks ranges from 10 to 69 across defensible settings of the two main knobs: the per-year incident floor (5, 10, 20) and PELT’s penalty (1.0, 1.5, 2.0). Our reported 30 is the middle cell of that grid, not a fact about the world. The direction of the main finding is stable, most unfiltered breaks are reporting artifacts at every setting, but the specific count is not.
    floor  pen=1.0  pen=1.5  pen=2.0
       5      69       40       21
      10      43      30       17
      20      20       15       10
  • The posture classification in §6 is exploratory. It fails three of four robustness checks we ran on it, and we report those failures there rather than in a footnote. It is included because the approach is worth pursuing with better validation, not because the 13/17 split is a result we would defend.
  • Absence of an explanation is not evidence of a discovery. If a break has no obvious documented cause, the likeliest reason is that we did not find the source, not that none exists. GTD is built from press reporting, so a shift large enough to detect is usually a shift someone wrote about at the time.
  • Every earlier version of this analysis was wrong. Before the sample-size floor, this piece led with a case, MRTA in 1996, that rested on one incident in the break year and five the year after. It did not survive filtering. That case is now excluded, and we mention it here because the failure is the point.
Reproducibility Every stage, from ETL through ontology construction, network analysis, changepoint detection, HermiT reasoning, and SPARQL, is a separate logged Python module with typed exceptions and no silent failure paths. The filter is a CLI flag (--min-incidents-per-year), so any reviewer can reproduce both the 97-break and the 30-break result and compare them directly.
§ 9 · Explore it yourself

All 232 profiled groups, live.

Everything above is an argument built from this dataset. Below is the dataset: every group meeting the 50-incident threshold, its tactic co-occurrence network, and its break timeline where one survived the filter. Most groups will show no breaks, which is the corrected result.

Operational signatures: GTD tactic co-occurrence
Weapon × target patterns by perpetrator group, 1970–2020
--Groups profiled
--Incidents (min. 50/group)
--Groups w/ structural breaks
Select a group from the list to view its operational signature.

Data source: Global Terrorism Database (START, University of Maryland). Analysis: tactic co-occurrence networks + Jensen–Shannon divergence changepoint detection over yearly signature distributions.
© 2026 Trace Origin · Source data: Global Terrorism Database, National Consortium for the Study of Terrorism and Responses to Terrorism (START), University of Maryland · Non-commercial academic citation and journalistic quotation permitted under standard fair use
§ 10 · What this demonstrates

An instrument, and its calibration.

A coded incident database read as a spreadsheet tells you what happened. Read as a formal knowledge graph with a reasoner over it, it tells you when a group’s behaviour changed shape. The harder and more useful result is knowing when it is lying to you: two thirds of the changes this method appears to find are properties of how the data was collected, not of the world it describes.

That distinction transfers. Any corpus assembled from reporting, whether conflict events, sanctions actions, court filings, or procurement records, carries the same three failure modes, and the same filters apply. The value here is not a finding about terrorism. It is a tested instrument and a known error profile, ready to be pointed at a corpus where the underlying events were never covered by anyone.