Production
Info
Two different times run through a collection. There is when each object was made, and there is when the museum took it in. They are rarely the same, and this endpoint returns both on the same periods so the distance between them can be measured.
endpoint:
GET https://data.designmuseumgent.be/v2/id/production
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
bucket | integer | 10 | Bucket size in years. Clamped to 5–100. 10 is a decade; 25 and 50 stay legible for long ranges |
yearFrom | integer | 1600 | Start of the axis. Objects falling entirely before this are excluded |
yearTo | integer | 2030 | End of the axis. Maximum 2100 |
onDisplay | boolean | — | Set to true to restrict to objects currently in the collection presentation |
q | string | — | Full text search on titles, descriptions and object numbers. Narrows both measures to a subset |
GET https://data.designmuseumgent.be/v2/id/production
GET https://data.designmuseumgent.be/v2/id/production?bucket=25&yearFrom=1400
GET https://data.designmuseumgent.be/v2/id/production?onDisplay=true
GET https://data.designmuseumgent.be/v2/id/production?q=affiche&bucket=5&yearFrom=1880
Scope
This describes the objects published through this API — around ten thousand of the twenty-four thousand the museum holds. Which objects have been published, and in what order, is a decision made by people and it shapes every figure here. This is a view of the catalogue, not of the collection.
Two measures, two kinds of time
The response carries both on every bucket. They are not the same quantity and should not be read as shares of one another.
Production — a span, so it is weighted
Nearly every published object carries a production date, but only about a quarter carry an exact year. The rest are spans:
| Span | Objects |
|---|---|
| Exact year | 2,577 |
| 1–5 years | 2,326 |
| 6–25 years | 2,168 |
| 26–100 years | 2,376 |
| Over a century | 362 |
A histogram of first years would pin an object dated 1900/2000 to 1900 and draw it as confidently as one dated 1937 — inventing precision for three quarters of the collection.
Instead each object contributes a total weight of exactly 1, spread evenly across every year of its span. An object dated 1937 puts its whole weight on one year; an object dated 1900/2000 puts 1/101 on each of 101 years.
- The total area is the number of dated objects, so
weightin a bucket is a genuine share of the collection. - Vague dating shows up as flatness, not as a false peak. A period that looks low may simply be one where the objects are loosely dated.
Spans that cross the axis edge
Weight is divided by the span as recorded, not as clamped to the requested range. An object dated 1500/1900 shown on a yearFrom=1700 axis contributes only its visible fifth. Dividing by the clamped span would pull off-axis weight into view and inflate the edge buckets.
Acquisition — a point, so it is counted
An acquisition date is not a span. The museum took the object on one day, so acquired is a plain count with no weighting and no interpretation.
Two things follow:
- It is spiky, and that is correct. Collections grow in events. 173 objects share an acquisition date of 1990-02-16, 152 share 2020-09-10, 136 share 2012-04-20 — single bequests and purchases entering on one date. A smooth curve would misrepresent how a collection actually grows.
- It begins in 1904, a year after the museum was founded. Everything before that is necessarily zero.
Coverage is lower than for production: 7,481 of 10,238 published objects carry an acquisition year. The rest have an acquisition event with no date recorded, or none at all.
Response fields
| Field | Description |
|---|---|
bucket_size | Bucket width in years, as applied |
year_from, year_to | The range covered |
total_weight | Sum of all bucket weights — the number of objects with a production date inside the range |
total_acquired | Objects with an acquisition year inside the range |
buckets | One entry per period, ascending. Trailing empty buckets are omitted |
Each bucket:
| Field | Description |
|---|---|
year | First year of the bucket |
weight | Production, distributed. The honest measure — a real share of the collection |
share_pct | weight as a percentage of total_weight |
object_count | Objects whose production span touches this bucket. Wide spans are counted in full in every bucket they cross, so this sums to far more than the collection. Not a share of anything |
exact_count | Objects dated to a single year inside this bucket. The subset needing no interpretation |
spread_factor | object_count / weight. How vaguely this period is dated: 1 means every object here is pinned to a year; 9 means the average object spans nine buckets |
acquired | Objects that entered the collection in this period |
acquired_pct | acquired as a percentage of total_acquired |
filter | Ready-to-use URL listing the objects produced in this period |
filter follows production, not acquisition
The filter URL uses ?date=, which selects objects by production span. There is currently no object filter for acquisition year, so a bucket's acquired count cannot be clicked through to its objects.
Reading spread_factor
It declines steadily over time — around 9 in the fifteenth century, around 2 in the twentieth. That is not a fact about the objects but about the records: it measures when dating became precise. exact_count tells the same story from the other direction.
What the two series show
Plotted together, the gap between them is the finding:
| Decade | Production weight | Acquired |
|---|---|---|
| 1900 | 773 | 112 |
| 1930 | 524 | 15 |
| 1940 | 192 | 9 |
| 1970 | 634 | 361 |
| 1980 | 675 | 2,417 |
| 1990 | 1,503 | 1,790 |
| 2010 | 124 | 828 |
- The 1980s are the collection's defining decade — 2,417 objects acquired, far more than any other, most of them already decades old. The museum was collecting backwards.
- After 2010 the relationship inverts. Production falls to 124 while acquisition stays at 828: recent acquisitions are of older things.
- Both thin sharply through the 1930s and 1940s. The collection neither acquired much then nor holds much made then.
Example response
{
"@context": {
"crm": "http://www.cidoc-crm.org/cidoc-crm/",
"rdfs": "http://www.w3.org/2000/01/rdf-schema#",
"hydra": "http://www.w3.org/ns/hydra/core#"
},
"@id": "https://data.designmuseumgent.be/v2/id/production",
"@type": "hydra:Collection",
"rdfs:label": "Time index",
"bucket_size": 10,
"year_from": 1600,
"year_to": 2030,
"total_weight": 9684.221,
"total_acquired": 7481,
"buckets": [
{
"year": 1980,
"weight": 675.205,
"share_pct": 6.97,
"object_count": 1165,
"exact_count": 138,
"spread_factor": 1.7,
"acquired": 2417,
"acquired_pct": 32.31,
"filter": "https://data.designmuseumgent.be/v2/id/objects?date=1980/1989"
},
{
"year": 1990,
"weight": 1502.784,
"share_pct": 15.52,
"object_count": 1858,
"exact_count": 203,
"spread_factor": 1.2,
"acquired": 1790,
"acquired_pct": 23.93,
"filter": "https://data.designmuseumgent.be/v2/id/objects?date=1990/1999"
}
]
}
Related object filters
The production years drive the date filters on the objects collection:
GET https://data.designmuseumgent.be/v2/id/objects?date=1950/1969
GET https://data.designmuseumgent.be/v2/id/objects?dateFrom=1900
GET https://data.designmuseumgent.be/v2/id/objects?sortBy=dateBegin&sortOrder=asc
Those filter with overlap logic — an object is returned when its production span overlaps the requested range — so they select the same objects a bucket's object_count counts, not the ones its weight describes. Objects with no recorded production date are excluded from all of them.
An object's span covers both its production and creation events: something designed in 1898 and produced in 1902 matches any query overlapping 1898–1902.