Design Museum Gent API
Home
Developers
Policy
Github
Swagger
Home
Developers
Policy
Github
Swagger

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

ParameterTypeDefaultDescription
bucketinteger10Bucket size in years. Clamped to 5–100. 10 is a decade; 25 and 50 stay legible for long ranges
yearFrominteger1600Start of the axis. Objects falling entirely before this are excluded
yearTointeger2030End of the axis. Maximum 2100
onDisplayboolean—Set to true to restrict to objects currently in the collection presentation
qstring—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:

SpanObjects
Exact year2,577
1–5 years2,326
6–25 years2,168
26–100 years2,376
Over a century362

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 weight in 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

FieldDescription
bucket_sizeBucket width in years, as applied
year_from, year_toThe range covered
total_weightSum of all bucket weights — the number of objects with a production date inside the range
total_acquiredObjects with an acquisition year inside the range
bucketsOne entry per period, ascending. Trailing empty buckets are omitted

Each bucket:

FieldDescription
yearFirst year of the bucket
weightProduction, distributed. The honest measure — a real share of the collection
share_pctweight as a percentage of total_weight
object_countObjects 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_countObjects dated to a single year inside this bucket. The subset needing no interpretation
spread_factorobject_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
acquiredObjects that entered the collection in this period
acquired_pctacquired as a percentage of total_acquired
filterReady-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:

DecadeProduction weightAcquired
1900773112
193052415
19401929
1970634361
19806752,417
19901,5031,790
2010124828
  • 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.

Last Updated:: 9/19/26, 7:32 AM
Contributors: Olivier.VanD'huynslager