Published August 24, 2026 | Version v1

Synthetic relational databases and reference OCELs

Authors/Creators

  • 1. ROR icon RWTH Aachen University

Description

# Synthetic relational databases and reference OCELs

## Overview

This dataset contains six deterministic, fully synthetic relational source-system databases for benchmarking relational-to-object-centric event-log extraction. Each source database is paired with one canonical reference OCEL serialized in all five formats supported by the OCEL 2.1 format revision.

The source databases are deliberately **not event logs**. Business milestones are distributed over domain-native tables and mixed with technical state, duplicates, corrections, retries, historical rows, projections, or redundant evidence. The reference OCELs are the extraction oracles: they fuse redundant evidence into canonical business events, normalize timestamps to UTC, retain stable source provenance, and relate each event to all relevant business objects.

All data is synthetic. It contains no real people, organizations, claims, patients, permits, commercial documents, or battery assets.

## Scenarios

| Scenario | Domain | Primary / secondary case notion | Source rows | OCEL events | OCEL objects | Event types | Object types |
|---|---|---|---:|---:|---:|---:|---:|
| ForgeFlow (`forgeflow`) | engineer-to-order manufacturing | SalesOrder / Shipment | 140,355 | 97,884 | 59,036 | 48 | 28 |
| TrialVersion (`trialversion`) | clinical-trial execution | Participant / Sample | 240,809 | 74,661 | 33,858 | 56 | 19 |
| ProcureChange (`procurechange`) | industrial procure-to-pay | PurchaseRequisition / Invoice | 730,158 | 100,504 | 46,353 | 55 | 20 |
| ClaimStream (`claimstream`) | insurance claims | Claim / Exposure | 115,248 | 99,715 | 40,610 | 58 | 21 |
| PermitFlow (`permitflow`) | building-permit approval | PermitApplication / Inspection | 133,276 | 118,084 | 32,783 | 63 | 17 |
| BatteryVault (`batteryvault`) | circular battery lifecycle | BatteryPack / ServiceOrder | 158,791 | 88,346 | 25,779 | 60 | 18 |

### Relational persistence patterns

- **ForgeFlow — engineer-to-order manufacturing.** Normalized OLTP with business milestones distributed across commercial, engineering, supply, quality, fulfilment, and finance evidence tables. The source database has 58 application tables.
- **TrialVersion — clinical-trial execution.** In-table version histories with valid time, recording time, logical identities, edit sessions, and historized relations. The source database has 24 application tables.
- **ProcureChange — industrial procure-to-pay.** SAP-style change documents and archive copies combined with requisition, receipt, inspection, invoice, accounting, and payment tables. The source database has 44 application tables.
- **ClaimStream — insurance claims.** Append-only, schema-versioned event store supplemented by command results, inbox records, snapshots, projections, sagas, and an outbox. The source database has 18 application tables.
- **PermitFlow — building-permit approval.** Workflow-engine execution, activity, task, variable, message, migration, job, and incident histories linked to domain tables. The source database has 38 application tables.
- **BatteryVault — circular battery lifecycle.** Bitemporal Data Vault hubs, historized links and satellites, identifier crosswalks, and a balanced asset journal/ledger. The source database has 63 application tables.

Every scenario uses 3,000 primary instances and deterministic seed `20260820`. The reference logs include qualified event-to-object and object-to-object relations, temporal object attribute changes, activity-specific event attributes, resource roles/calendars, exception paths, and stable source table/record provenance.

## File naming and layout

For each scenario slug `<name>`, the folder contains:

| Filename | Meaning |
|---|---|
| `<name>.sqlite` | Relational source-system SQLite database. This is the extraction input, not an OCEL. |
| `<name>.xmlocel.gz` | Gzip-compressed OCEL XML serialization. |
| `<name>.jsonocel.gz` | Gzip-compressed OCEL JSON serialization. |
| `<name>.ocel.sqlite` | OCEL relational SQLite serialization. Do not confuse it with `<name>.sqlite`. |
| `<name>.ocel.csv` | Compact, single-file OCEL 2.1 CSV serialization. |
| `<name>.ocel.zip` | OCEL 2.1 bundled ZIP using typed Parquet tables. This is a multi-table interchange format, not merely a compressed copy of another file. |

The OCEL 2.0 metamodel defines the events, objects, qualified relations, and temporal object attributes. The OCEL 2.1 format revision adds compact CSV and bundled CSV/Parquet serializations to the XML, JSON, and SQLite formats. See the [OCEL formats overview](https://www.ocel-standard.org/specification/formats/) and [bundled-format specification](https://www.ocel-standard.org/specification/formats/bundled/).

The standard interchange relation in all five formats consists of source ID, target ID, and qualifier. The generation oracle also uses `valid_from`, `valid_to`, and `relation_state` as additional in-memory/SQLite O2O metadata; formats that implement only the standard O2O fields do not carry these non-standard extra relation columns. During interchange export, O2O rows are projected onto `(source ID, target ID, qualifier)`. Rows that differ only in the non-standard temporal columns therefore become one set-valued standard O2O relation. This standardization is applied before all five writers so the five distributed serializations remain equivalent.

## Reference OCEL semantics

The five `<name>.ocel.*`/`*ocel.gz` files for a scenario are alternative serializations of the same reference log. They are not shards and should not be combined. Each reference log contains:

- canonical business events with globally stable IDs, activity names, UTC timestamps, activity-appropriate attributes, actors, roles, and source provenance;
- typed business objects with stable IDs and initial attributes;
- qualified event-to-object relationships;
- qualified object-to-object relationships;
- temporal object-attribute changes.

Event attributes include applicable subsets of `actor`, `actor_role`, `resource_calendar`, `source_system`, `source_table`, `source_record_id`, `recorded_at`, `location`, change details, exception details, amounts/currencies, and quantities/units. Sparse attributes are intentional: an amount, quantity, reason, or changed field appears only where it is meaningful.

The source database contains ambiguous and non-authoritative records by design. A source row should not automatically be interpreted as an event. Business effective time takes precedence over recording/load time; technical corrections, projections, replays, retries, and redundant messages require scenario-specific filtering or fusion.

## Using the files

Open a source database with any SQLite client, for example:

```bash
sqlite3 forgeflow.sqlite
```

Read any reference serialization with PM4Py:

```python
import pm4py

xml_log = pm4py.read_ocel2_xml("forgeflow.xmlocel.gz")
json_log = pm4py.read_ocel2_json("forgeflow.jsonocel.gz")
sqlite_log = pm4py.read_ocel2_sqlite("forgeflow.ocel.sqlite")
csv_log = pm4py.read_ocel2_csv("forgeflow.ocel.csv")
bundle_log = pm4py.read_ocel2_bundle("forgeflow.ocel.zip")
```

The upload artifacts were produced with PM4Py `2.7.23.6` using the requested writer calls:

```python
ocel = pm4py.read_ocel2_sqlite("ground_truth.ocel2.sqlite")
pm4py.write_ocel2_xml(ocel, "<name>.xmlocel.gz")
pm4py.write_ocel2_json(ocel, "<name>.jsonocel.gz")
pm4py.write_ocel2_sqlite(ocel, "<name>.ocel.sqlite")
pm4py.write_ocel2_csv(ocel, "<name>.ocel.csv")
pm4py.write_ocel2_bundle(ocel, "<name>.ocel.zip")
```

The bundle writer's default `storage_format="parquet"` was retained.

## Validation and integrity

All six committed benchmark validation reports had status `PASS`, every named check was true, and primary case-view fidelity against the oracle was `1.0` before packaging. During packaging:

1. each source and canonical oracle SHA-256 digest was checked against its scenario validation report;
2. `PRAGMA integrity_check` returned `ok` for every copied source database and generated OCEL SQLite file;
3. every generated OCEL file was read back with its matching PM4Py reader; and
4. event IDs/types, object IDs/types, qualified E2O relations, qualified O2O relations, temporal change keys, and all relevant row counts were compared with the canonical oracle.

Machine-readable results are in `validation.json`. File digests are in `SHA256SUMS`; verify them from this directory with:

```bash
sha256sum -c SHA256SUMS
```

## File inventory

| File | Size |
|---|---:|
| `batteryvault.jsonocel.gz` | 6.0 MiB |
| `batteryvault.ocel.csv` | 48.9 MiB |
| `batteryvault.ocel.sqlite` | 52.0 MiB |
| `batteryvault.ocel.zip` | 3.8 MiB |
| `batteryvault.sqlite` | 33.2 MiB |
| `batteryvault.xmlocel.gz` | 5.3 MiB |
| `claimstream.jsonocel.gz` | 6.7 MiB |
| `claimstream.ocel.csv` | 55.2 MiB |
| `claimstream.ocel.sqlite` | 57.5 MiB |
| `claimstream.ocel.zip` | 4.5 MiB |
| `claimstream.sqlite` | 47.6 MiB |
| `claimstream.xmlocel.gz` | 6.0 MiB |
| `forgeflow.jsonocel.gz` | 6.7 MiB |
| `forgeflow.ocel.csv` | 60.9 MiB |
| `forgeflow.ocel.sqlite` | 59.1 MiB |
| `forgeflow.ocel.zip` | 4.6 MiB |
| `forgeflow.sqlite` | 27.4 MiB |
| `forgeflow.xmlocel.gz` | 6.0 MiB |
| `permitflow.jsonocel.gz` | 7.5 MiB |
| `permitflow.ocel.csv` | 62.9 MiB |
| `permitflow.ocel.sqlite` | 68.9 MiB |
| `permitflow.ocel.zip` | 4.9 MiB |
| `permitflow.sqlite` | 31.1 MiB |
| `permitflow.xmlocel.gz` | 6.8 MiB |
| `procurechange.jsonocel.gz` | 7.1 MiB |
| `procurechange.ocel.csv` | 61.3 MiB |
| `procurechange.ocel.sqlite` | 64.7 MiB |
| `procurechange.ocel.zip` | 4.7 MiB |
| `procurechange.sqlite` | 136.4 MiB |
| `procurechange.xmlocel.gz` | 6.4 MiB |
| `trialversion.jsonocel.gz` | 5.0 MiB |
| `trialversion.ocel.csv` | 42.3 MiB |
| `trialversion.ocel.sqlite` | 43.9 MiB |
| `trialversion.ocel.zip` | 3.4 MiB |
| `trialversion.sqlite` | 51.7 MiB |
| `trialversion.xmlocel.gz` | 4.5 MiB |

Files

batteryvault.ocel.csv

Files (1.2 GB)

Name Size
md5:aaf59499522249b8ff920a9d97466019
6.3 MB Download
md5:4bbcb78593a314d7b1788d449c9bb4a3
51.3 MB Preview Download
md5:0229b63d70acbbe204b41572e236d9b7
54.5 MB Download
md5:96d3bb40c6ddb4515217fb52f142c63a
3.9 MB Preview Download
md5:d4d94c00a72606d78393d60e5b80398a
34.8 MB Download
md5:fa7a106b5d8f0c9c0ba0c47f0522a59e
5.6 MB Download
md5:11e2afd3172d90eefd448d938cee840e
7.0 MB Download
md5:d963fda75b40d8fe0bc3cc68496969f7
57.9 MB Preview Download
md5:0a66de4d69195f6a2fa0315b13a75978
60.3 MB Download
md5:d3ed3a93ef41e141bb0f3eec624eb6ff
4.7 MB Preview Download
md5:2d7b71dfb21870f9ced5a1eb470b7e1c
49.9 MB Download
md5:86dc0fe0fb2d7aac8ad18528246f14ff
6.3 MB Download
md5:6d66cf79e762bf2602678aa509f1ea7f
7.0 MB Download
md5:7df9960d9cbaffd0be75ef735ea64f10
63.9 MB Preview Download
md5:08a613a7301d3431e3016a44427bfbd4
62.0 MB Download
md5:5c90cbd131b5ce25194991eb375da764
4.8 MB Preview Download
md5:50136465cb971b6c6a972765fc2ce522
28.8 MB Download
md5:5c639276cb5a76b449510481a2a0865f
6.3 MB Download
md5:e1ae3075ce777bb3e5863e81722da68f
7.8 MB Download
md5:d4a38bf5c83f8b08ad2015da0eb7cd2a
66.0 MB Preview Download
md5:2b24fb915829df207f0f0f9e7715486b
72.2 MB Download
md5:5f75e79cb7417902b7a338abc41b7104
5.1 MB Preview Download
md5:d377e216ed8d55bf8d6b410b50ad71fc
32.6 MB Download
md5:509e8af87229f4ac5fee31972e109540
7.1 MB Download
md5:6be8de3e9e9732147d6c77888df34cf2
7.4 MB Download
md5:a70664c29a124bf8029d29ef4264aede
64.3 MB Preview Download
md5:0512da1b49bf22952a85e12f397db789
67.8 MB Download
md5:3011570247153f7a503105d6c142d73f
5.0 MB Preview Download
md5:843afdf6b98de2c83d6550dc95038a02
143.0 MB Download
md5:528e5cbb405560fce2fd6d6ae76ec189
6.7 MB Download
md5:84fa821298744c9a978039516858036a
3.3 kB Download
md5:d27f20ebd7755749e42055d3a05fabe5
5.3 MB Download
md5:64130498d6c8916e14d4b4d77dc75c80
44.3 MB Preview Download
md5:720ca3a544cd7b96c92f343e2b672da5
46.0 MB Download
md5:ffed739927c25b27d401be26dca2d593
3.5 MB Preview Download
md5:5e6d45276f89f0ef4d49f46fb46a6efc
54.2 MB Download
md5:f8369267abaa9bd224782d5dd6a4ad7c
4.7 MB Download