Change-event types

The canonical change-event types in the PSGC RDF deltas: the 10-type ChangeEvent.event_type enum from models/schemas.py, and which seven compute_delta() actually emits (creation, deletion, code_change, renaming, merger, split, transfer).

Author

Manuel Balmeo

compute_delta() (in rdf/delta.py) classifies the difference between two PSGC snapshots into a fixed set of canonical event types, emitted as psgc:event/... URIs (see URIs).

Canonical event types

The authoritative set is the ChangeEvent.event_type enum in models/schemas.py (10 types). compute_delta() actually emits these seven:

  • creation — a new entity appears in the later snapshot.
  • deletion — an entity disappears.
  • code_change — identity preserved (same correspondence code), but the 10-digit PSGC code changed.
  • renaming — name change, same identity.
  • merger — two or more entities combine into one.
  • split — one entity divides into two or more.
  • transfer — an entity moves to a different parent unit.

The remaining three enum values — reclassification, reenlistment, and unknown — are modelled by the schema and accepted by the parser/RDF builder, but are not currently produced by compute_delta() (reclassifications, for example, surface as a creation+deletion pair today).

Per-type triple shape

Every event is an org:ChangeEvent with a dct:date (the snapshot date), a dct:description, and an org:classification link to a psgc:concept/change-type/{type} concept. The difference between types is which organization links they carry:

Type org:originalOrganization org:resultingOrganization Meaning
creation — ✓ (1) new entity appears
deletion ✓ (1) — entity disappears
code_change ✓ (1) ✓ (1) same identity, new 10-digit PSGC code
renaming ✓ (1) ✓ (1) name change, identity preserved
merger ✓ (n) ✓ (1) several entities combine into one
split ✓ (1) ✓ (n) one entity divides into several
transfer ✓ (1) ✓ (1) entity moves to a different parent

Worked examples of these links are in Entity & event URIs.

Each committed delta carries the legal basis for its events via dct:source, the effective date via prov:generatedAtTime, and a human-readable summary via dct:description.