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

ColumnTypeDescription
idstringA fingerprint of the statement: the SHA-1 hash of entity ID, property and value. The same claim keeps the same ID across builds.
entity_idstringThe record ID (crown-…) the value belongs to.
canonical_idstringThe 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.
propstringThe property name, such as name or birthDate.
prop_typestringThe property type, such as name, date or country. See Property types.
schemastringThe schema of the entity, such as Person or Sanction.
valuestringThe value, cleaned to the format of its type.
datasetstringThe source register that gave the value.
langstringLanguage of the value. Empty today.
original_valuestringThe value before cleaning, where it differs. Empty today.
first_seentimestampWhen the record carrying this value was first loaded.
last_seentimestampWhen 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.

Planned work. A statement view on each record page, showing every value with its register and dates, is possible from the data we hold and is awaiting an owner decision on priority.

How records are matched and grouped is on Methodology.

Last updated 2026-10-04