Documentation · Data model
Statement data model
Behind every entity is a list of statements: one row for each property value, saying which register gave it and when we saw it. This is an advanced topic; most users want entities or the simplified files instead.
Why statements
A statement is one claim: register X says that entity Y has property P with value V. Storing claims rather than finished entities lets us:
- Show where every value came from. Each name, alias and birth date carries the register that published it.
- Track when values appeared and disappeared, through first-seen and last-seen dates per value.
- Group and ungroup records of the same party without losing which register said what, because the grouping is a separate column.
An example
The first three statements for the person on Entity structure (the Monaco listing of SULTAN AZIZ AZAM), from statements.csv in the sanctions collection:
id,entity_id,canonical_id,prop,prop_type,schema,value,dataset,lang,original_value,first_seen,last_seen
44bed04083bd94817f36cb504c78db790fe7beac,crown-379759982,crown-e-d9d87cf7-081f-41c3-bcd3-42a1194a9e9d,name,name,Person,SULTAN AZIZ AZAM,monaco_siccfin_liste_nationale_de_gel_des_fonds,,,2026-09-24T11:22:17.136797+00:00,2026-09-24T11:22:17.136797+00:00
b6ed8c613f329697bad4942d1e965b7ecc7aa906,crown-379759982,crown-e-d9d87cf7-081f-41c3-bcd3-42a1194a9e9d,topics,topic,Person,sanction,monaco_siccfin_liste_nationale_de_gel_des_fonds,,,2026-09-24T11:22:17.136797+00:00,2026-09-24T11:22:17.136797+00:00
a5fa4189ae50a6cf856505cecec63bc9c4ac02ac,crown-379759982,crown-e-d9d87cf7-081f-41c3-bcd3-42a1194a9e9d,alias,name,Person,AZIZ AZAM,monaco_siccfin_liste_nationale_de_gel_des_fonds,,,2026-09-24T11:22:17.136797+00:00,2026-09-24T11:22:17.136797+00:00
The listing has its own statements under the ID crown-379759982-sanction, one each for entity, authority and program.
Columns of statements.csv
| Column | Type | Description |
|---|---|---|
id | string | A fingerprint of the statement: the SHA-1 hash of entity ID, property and value. The same claim keeps the same ID across builds. |
entity_id | string | The record ID (crown-…) the value belongs to. |
canonical_id | string | The merged entity the record belongs to (crown-e-…), or the record ID again when it has not been merged. Listing statements always repeat their own ID. See Identifiers and deduplication. |
prop | string | The property name, such as name or birthDate. |
prop_type | string | The property type, such as name, date or country. See Property types. |
schema | string | The schema of the entity, such as Person or Sanction. |
value | string | The value, cleaned to the format of its type. |
dataset | string | The source register that gave the value. |
lang | string | Language of the value. Empty today. |
original_value | string | The value before cleaning, where it differs. Empty today. |
first_seen | timestamp | When the record carrying this value was first loaded. |
last_seen | timestamp | When the record was last confirmed at the publisher. |
FollowTheMoney statement files often carry a target column as well; ours does not. Use the target field of the entity instead.
How far back the dates go
We began tracking first-seen dates when each source was first loaded. The earliest first-seen date in Crown Default is —. A value first seen on that date may have been published long before. Today the dates are per record rather than per value: every statement of a record shares the record’s dates.
Download
statements.csv is published for every collection. For Crown Default it holds — statements; links, sizes and checksums are on Using the bulk data and the Crown Default page. Use of the files is governed by our data licence.
How records are matched and grouped is on Methodology.
Last updated 2026-10-04