Design Museum Gent API
The Design Museum Gent API provides access to collection data, agents, concepts, exhibitions, and curated sets. Data is exposed in JSON-LD format, making use of Linked Art, CIDOC-CRM, and OSLO standards.
Overview
Within the REST service (V1) we distinguish two main categories:
- Collections: Paginated lists of objects sharing a similar schema, e.g., all objects of a certain type, filtered by color, or on display.
- Single entities: Metadata for a single object, agent, concept, or exhibition, used to populate subject pages or detailed views.
Collections endpoints support pagination and filters. Single entities are retrieved using unique identifiers.
Collections
Pagination
Collection endpoints use Hydra Core Vocabulary for pagination. Each response includes a hydra:view component:
| Field | Description |
|---|---|
hydra:first | Link to the first page |
hydra:last | Link to the last page |
hydra:previous | Link to the previous page (null if first page) |
hydra:next | Link to the next page (null if last page) |
EDTF
Time-based fields use the Extended Date/Time Format (EDTF) to describe precise periods. See the official documentation for details.
Fetching Data Examples
Shell
curl -H "Accept: application/json" \
"https://data.designmuseumgent.be/v1/id/objects?fullRecord=true&license=ALL&pageNumber=1"
python
endpoint="https://data.designmuseumgent.be/v1/id/exhibitions" # url to start crawl
def connect(endpoint):
r = requests.get(endpoint)
#check status code
if r.status_code == 200:
data = r.json()
return data
else:
print("error connecting to API")
def crawl(endpoint):
payload = connect(endpoint)
print(payload["hydra:view"]["@id"])
## DO SOMETHING HERE
# iterate over pages of payload
if payload["hydra:view"].get("hydra:next"):
print("next page: " + payload["hydra:view"]["hydra:next"])
crawl(payload["hydra:view"]["hydra:next"])
else:
print(payload)
print("done")
JavaScript
const endpoint = 'https://data.designmuseumgent.be/v1/id/objects';
async function connect(endpoint) {
try {
const response = await fetch(endpoint);
if (response.ok) {
return await response.json();
} else {
console.error('Error connecting to API');
return null;
}
} catch (error) {
console.error('Error:', error);
return null;
}
}
async function crawl(endpoint) {
const payload = await connect(endpoint);
if (!payload) return;
console.log(payload["hydra:view"]["@id"]);
// DO SOMETHING HERE WITH THE PAYLOAD
if (payload["hydra:view"]["hydra:next"]) {
console.log("next page: " + payload["hydra:view"]["hydra:next"]);
await crawl(payload["hydra:view"]["hydra:next"]);
} else {
console.log(payload);
console.log("done");
}
}
crawl(endpoint);
objects
The objects collection API provides access to all the published objects in the collection of Design Museum Gent. The number of exposed objects grows daily. Currently, 7761 have been exposed.
endpoint:
GET https://data.designmuseumgent.be/v1/id/objects
response format
The API returns JSON-LD formatted data with the following context:
- Cultureel Erfgoed Object (OSLO)
- Cultureel Erfgoed Event (OSLO)
- Hydra Core Vocabulary
| code | description |
|---|---|
| 200 | succesful request containing a paginated collection of all the objects (metadata + digital reproduction) in JSON-LD format making use of Linked Art and CIDOC-CRM |
| 422 | the syntax of the GET request is correct but the record doesn't exist. |
| 429 | rate limit exceeed |
filters
| Parameter | Description | Example |
|---|---|---|
| pageNumber | Page number (starts at 1) | ?pageNumber=1 |
| itemsPerPage | Number of objects per page | ?itemsPerPage=10 |
| fullRecord | Show complete record | ?fullRecord=true |
| license | Filter by license type | ?license=ALL |
| onDisplay | Return only items that are currently on display (ex:onDisplay = true) | ?onDisplay=true |
| hasImage | Filter out the items that have a digital reproduction | ?hasImage=true |
| colors | Include extracted color information (ex:colors, ex:colorNames) | ?colors=true |
These filters can be combined. To combine a filter they can be chained using the & character. The example below shows how to combine the filters onDisplay and hasImage to retrieve only objects that are on display and have a digital reproduction.
GET https://data.designmuseumgent.be/v1/id/objects?onDisplay=true&hasImage=true
entities
gecureerdeSet.bestaatUitcontains an array with single entities. For further information on how to handle these objects nd what they contain take a look at the object API.
additional metadata
The following additional metadata is exposed for each object using the filters described above:
ex:colors: contains an array with colors that are detected in the digital reproduction using open-cv. These colors are returned as hex values.ex:colorNames: returns an array of https://www.w3schools.com/colors/colors_names.asp. These are used to cluster the objects in a more manageable and indexable fashion (instead of having all possible HEX values). A full list of the used css colors and there corresponding HEX code can be retrieved using the color-api.ex:onDisplay: returns a boolean value indicating whether the object is currently on display or not.
non-public objects
the objects collection api only contains objects that have been made publicly available. For specific cases and applications the museum can make an exception and provide access to the whole collection (including non-public objects). This API however, is only made accessible on demand and needs a specific API Key.
endpoint:
GET https://data.designmuseumgent.be/v1/id/private-objects/?apiKey=API_KEY
agents
the Agents collections API provides access to all the agents in the collection of Design Museum Gent. This means that the API contains information on artists, curators, organizations, ... that have contributed to, or are related to objects in the collection.
endpoint:
GET https://data.designmuseumgent.be/v1/id/agents
response format
The API returns JSON-LD formatted data with the following context:
- Cultureel Erfgoed Object (OSLO)
- Cultureel Erfgoed Event (OSLO)
- Hydra Core Vocabulary
| code | description |
|---|---|
| 200 | succesful request containing a paginated collection of all the agents (metadata) in JSON-LD format making use of Linked Art and CIDOC-CRM |
| 422 | the syntax of the GET request is correct but the record doesn't exist. |
| 429 | rate limit exceeed |
filters
| Parameter | Description | Example |
|---|---|---|
| pageNumber | Page number (starts at 1) | ?pageNumber=1 |
| itemsPerPage | Number of objects per page | ?itemsPerPage=10 |
| fullRecord | Show complete record | ?fullRecord=true |
entities
gecureerdeSet.bestaatUitcontains an array with single entities. For further information on how to handle these objects nd what they contain take a look at the agent API.
concepts
the concepts collection API provides access to all the concepts in the collection of Design Museum Gent. This means that the API contains information on concepts that are used to describe objects in the collection.
endpoint:
GET https://data.designmuseumgent.be/v1/id/concepts
response format
the API returns a JSON-LD formatted object with the following context:
- Generiek Basis (OSLO)
- Hydra Core Vocabulary
- CIDOC-CRM vocabulary
- Linked Art vocabulary
| code | description |
|---|---|
| 200 | succesful request containing a paginated collection of all the concepts (metadata in JSON-LD format making use of Linked Art and CIDOC-CRM |
filters
| Parameter | Description | Example |
|---|---|---|
| pageNumber | Page number (starts at 1) | ?pageNumber=1 |
| itemsPerPage | Number of objects per page | ?itemsPerPage=10 |
| fullRecord | Show complete record | ?fullRecord=true |
entities
gecureerdeSet.bestaatUit contains an array with single entities. For further information on how to handle these objects nd what they contain take a look at the concept API.
exhibitions
The exhibition collection API provides access to all the exhibitions in the collection of Design Museum Gent. This means that the API contains information on exhibitions that are related to objects in the collection. The Exhibition API also exposes relationships to objects from the collection shown in these exhibitions.
endpoint:
GET https://data.designmuseumgent.be/v1/id/exhibitions
response format
the API returns JSON-LD formatted data with the following context:
| code | description |
|---|---|
| 200 | successful request containing a paginated collection of all the exhibitions (metadata) and links to to objects in the collection shown at this exhibition. |
filters
| Parameter | Description | Example |
|---|---|---|
| pageNumber | Page number (starts at 1) | ?pageNumber=1 |
| itemsPerPage | Number of objects per page | ?itemsPerPage=10 |
| fullRecord | Show complete record | ?fullRecord=true |
entities
gecureerdeSet.bestaatUit contains an array with single entities. For further information on how to handle these objects nd what they contain take a look at the exhibition API.
single entities
object
the object API provides access to information on a single object in the collection. This object can be retrieved using the corresponding identifier.
GET https://data.designmuseumgent.be/v1/id/object/{identifier}
response format
the API returns a JSON-LD formatted object with the following context:
- Cultureel Erfgoed Object (OSLO)
- Cultureel Erfgoed Event (OSLO)
- Hydra Core Vocabulary
- CIDOC-CRM vocabulary
- Linked Art vocabulary
| code | description |
|---|---|
| 200 | Returns a JSON-LD object containing exhaustive metadata on a single object from the collection of Design Museum Gent. The metadata exposes relationships to other data objects that are published by the museum such as other objects, agents, concepts, exhibitions, etc. Based on the parameters, this will be a complex object or an easy abstraction of the metadata of the object. |
| 422 | the syntax of the GET request is correct but the record doesn't exist. |
| 410 | the object has been permantly removed |
| 429 | rate limit exceeed |
metadata
note: although we try to provide a complete record, some fields are not always filled. In that case the fields are not in the returned metadata scheme. for a full overview of the scheme, please refer to the Swagger documentation.
Basic Identification
| Field | Description | Example |
|---|---|---|
@id | Unique URI of the object | "https://stad.gent/id/mensgemaaktobject/dmg/530004060/..." |
@type | Object type (CIDOC-CRM class) | "http://www.cidoc-crm.org/cidoc-crm/E22_Man-Made_Object" |
prov:generatedAtTime | Timestamp of record generation | "2023-12-06T00:01:11.291Z" |
Object Identification
| Field | Description | Example |
|---|---|---|
ns/adms#identifier | Array of identification numbers | |
└── priref | Internal database reference | "530004060" |
└── objectnummer | Public object number | "0019_ROOD" |
Descriptive Information
| Field | Description | Example |
|---|---|---|
cidoc-crm/P102_has_title | Title of the object | {"@value": "Opklapbare speeltafel met inlegwerk", "@language": "nl"} |
cidoc-crm/P3_has_note | Descriptive text | {"@value": "Gesloten is het tafelblad...", "@language": "nl"} |
Physical Properties
| Field | Description | Example |
|---|---|---|
cidoc-crm/P43_has_dimension | Dimensions | Array of height, width, depth |
└── value | Numeric value | "76.6" |
└── unitText | Unit of measurement | "cm" |
└── type | Type of measurement | "hoogte", "breedte", "diepte" |
Production & Provenance
| Field | Description | Example |
|---|---|---|
cidoc-crm/P108i_was_produced_by | Production information | |
└── P4_has_time-span | Production period | "1900/1920" |
cidoc-crm/P50_has_current_keeper | Current owner | "http://www.wikidata.org/entity/Q1809071" |
Digital Representation
| Field | Description | Example |
|---|---|---|
cidoc-crm/P129i_is_subject_of | Link to digital object | |
└── @id | IIIF manifest URL | "https://api.collectie.gent/iiif/presentation/v2/manifest/dmg:0019_ROOD" |
Related objects
The objects in the collection are structured as "Koepelrecords" (object that has parts but is clustered for logistic reasons) and "Enkelvoudig records" (single entities). The API exposes links to the objects in the collection that are related to the object in question. For example a set of cutlery is a "koepelrecord" that has parts (cutlery pieces) that are related to the set of cutlery. The API exposes links to the parts of the set of cutlery.
these relationships are exposed in the following fields:
if it has parts (koepelrecord) fe. 2009-0082_0-8
"crm:P46_has_component": [
{
"@id": "https://data.designmuseumgent.be/v1/id/object/2009-0082_1-8"
},
{
"@id": "https://data.designmuseumgent.be/v1/id/object/2009-0082_2-8"
},
{
"@id": "https://data.designmuseumgent.be/v1/id/object/2009-0082_3-8"
},
{
"@id": "https://data.designmuseumgent.be/v1/id/object/2009-0082_4-8"
},
{
"@id": "https://data.designmuseumgent.be/v1/id/object/2009-0082_5-8"
},
{
"@id": "https://data.designmuseumgent.be/v1/id/object/2009-0082_6-8"
},
{
"@id": "https://data.designmuseumgent.be/v1/id/object/2009-0082_7-8"
},
{
"@id": "https://data.designmuseumgent.be/v1/id/object/2009-0082_8-8"
}
]
if it is part of a set (koepelrecord): fe. 2009-0082_8-8
"crm:P46i_forms_part_of": {
"@id": "https://data.designmuseumgent.be/v1/id/object/2009-0082_0-8"
}
filters
| Parameter | Description | Example |
|---|---|---|
| easy | switch between FULL RECORD containing ALL METADATA or an abstracted, simplified view of the RECORD. | ?easy=false |
agent
the agent API provides access to information on a single agent related to the collection of Design Museum Gent. This agent record can be retrieved using its corresponding identifier (PID)
GET https://data.designmuseumgent.be/v1/id/agent/{PID}
response format
Basic Identification
| Field | Description | Example |
|---|---|---|
@id | Unique URI of the agent (Stad Gent URI) | "https://stad.gent/id/agent/530020619/..." |
@type | Type of agent | "http://purl.org/dc/terms/Agent" |
prov:generatedAtTime | Timestamp of record generation | "2024-11-13T02:04:44.281Z" |
owl:sameAs | Link to external authority record | "http://www.wikidata.org/entity/Q28871672" |
Agent Identification
| Field | Description | Example |
|---|---|---|
ns/adms#identifier | Array of identification numbers | |
└── priref | Internal database reference | "530020619" |
└── referentienummer | Reference number | "DMG-A-02055" |
Personal Information
| Field | Description | Example |
|---|---|---|
foaf:givenName | First name | "Lionel" |
foaf:familyName | Last name | "Milton" |
persoon#volledigeNaam | Full name | "Milton, Lionel" |
persoon#geslacht | Gender | "http://publications.europa.eu/resource/authority/human-sex/MALE" |
Birth Information
| Field | Description | Example |
|---|---|---|
persoon#heeftGeboorte | Birth details | |
└── datum | Birth date | "1974" |
└── plaats | Birth place | "http://vocab.getty.edu/tgn/7014214" |
Nationality
| Field | Description | Example |
|---|---|---|
persoon#heeftNationaliteit | Nationality information | |
└── P3_has_note | Nationality description | {"@value": "Amerikaans", "@language": "nl"} |
Administrative Information
| Field | Description | Example |
|---|---|---|
prov:wasAttributedTo | Institution responsible for the record | "http://www.wikidata.org/entity/Q1809071" |
skos:inScheme | Conceptual scheme the agent belongs to | "https://stad.gent/id/conceptscheme/agent" |
dcterms:isVersionOf | Link to base record | "https://stad.gent/id/agent/530020619" |
Biography
If there is a Wikipedia page for the agent, the API will harvest the biography (snippet) from this page using the wikipedia API. This information is not always available and can be empty. Together with the biography, the API also exposes links to the Wikipedia page and license.
| Language | Example Note (truncated) | Source | License |
|---|---|---|---|
nl | Olivetti (voluit: Ing. C. Olivetti & Co., SpA.) is een Italiaanse fabriek van computers, printers en andere kantoormachines. Oprichtingsjaar 1908… | nl.wikipedia.org | CC BY-SA 4.0 |
en | Olivetti S.p.A. is an Italian manufacturer of computers, tablets, smartphones, printers and other business products. Known for innovative design… | en.wikipedia.org | CC BY-SA 4.0 |
fr | Olivetti S.p.A. est une société italienne fondée par Camillo Olivetti en 1908 à Ivrée… | fr.wikipedia.org | CC BY-SA 4.0 |
example response:
[
{
"@value": "Olivetti (voluit: Ing. C. Olivetti & Co., SpA.) is een Italiaanse fabriek van computers, printers en andere kantoormachines.\nOlivetti is in 1908 nabij Turijn opgericht door Camillo Olivetti als fabriek van schrijfmachines...",
"@language": "nl",
"dcterms:source": "https://nl.wikipedia.org/wiki/Olivetti",
"dcterms:license": "https://creativecommons.org/licenses/by-sa/4.0/"
},
{
"@value": "Olivetti S.p.A. is an Italian manufacturer of computers, tablets, smartphones, printers and other such business products...",
"@language": "en",
"dcterms:source": "https://en.wikipedia.org/wiki/Olivetti",
"dcterms:license": "https://creativecommons.org/licenses/by-sa/4.0/"
},
{
"@value": "Olivetti S.p.A. est une société italienne fondée par Camillo Olivetti en 1908 à Ivrée...",
"@language": "fr",
"dcterms:source": "https://fr.wikipedia.org/wiki/Olivetti",
"dcterms:license": "https://creativecommons.org/licenses/by-sa/4.0/"
}
]
concept
The concept API provides access to information on a single concept related to the collection of Design Museum Gent. This concept record can be retrieved using its corresponding identifier (PID)
endpoint:
GET https://data.designmuseumgent.be/v1/id/concept/{CONCEPT-PID}
response format
Basic Information
| Field | Description | Example |
|---|---|---|
@id | Unique URI of the exhibition (Stad Gent URI) | "https://stad.gent/id/concept/530006321/2023-02-21T00:00:20.385Z" |
@type | Type of the record | "skos:Concept" |
prov:generatedAtTime | Timestamp of record generation | "2024-11-13T02:04:44.281Z" |
Concept Identification
| Field | Description | Example |
|---|---|---|
skos:prefLabel | preffered label of the concept | "meubilair (objectnaam)" |
owl:sameAs | Link to external authority record | "http://www.wikidata.org/entity/Q28871672" |
skos:broader | Link to broader terms (parents) in the terminology list | "https://stad.gent/id/concept/530009038" |
skos:narrower | link to narrower terms (childs) in the terminology list | "https://stad.gent/id/concept/530010589" |
exhibition
The exhibition API provides access to information on a single exhibition related to the collection of Design Museum Gent. This exhibition record can be retrieved using its corresponding identifier (PID)
endpoint:
GET https://data.designmuseumgent.be/v1/id/exhibition/{EXHIBITION-PID}
response format
Basic Identification
| Field | Description | Example |
|---|---|---|
@id | Unique URI of the exhibition (Stad Gent URI) | "https://stad.gent/id/agent/530020619/..." |
@type | Type of the record | "prov:Activity" |
prov:generatedAtTime | Timestamp of record generation | "2024-11-13T02:04:44.281Z" |
Exhibition Identification
| Field | Description | Example |
|---|---|---|
ns/adms#identifier | Array of identification numbers | |
└── priref | Internal database reference | "530020619" |
└── referentienummer | Reference number | "TE_1988-001" |
"cidoc:P1_is_identified_by" | title of the exhibition | "Kunst en tapijt. Traditie en vernieuwing in België" |
| "cidoc:P4_has_time-span" | period when the exhibition took place (EDTF) | `"1988-03-18/1988-05-29" |
Links to the Collection
This API exposes links to more information on the objects that were also shown in the exhibition.
| Field | Description | Example |
|---|---|---|
cidoc:P16_used_specific_object | (array of) objects that are shown in the collection | |
└── cidoc:P102_has_title | title of the object (in @value) | "Kunst en tapijt. Traditie en vernieuwing in België" |
ns/adms#identifier | Array of identification numbers | |
└── priref | Internal database reference | "536003710" |
└── referentienummer | Reference number | "TE_1988-001_Affiche" |
curated sets
Next to the "traditional" datasets and endpoints that closely resemble the data model of the authentic data, we also provide curated sets of data that are more focused on a specific topic, or are the result of a specific project such as an artist commission.
color api
The color API provides access to objects from the collection indexed by color. Via this API you can find objects that are colored in a specific way. fe. all objects that are colored red.
endpoint:
GET https://data.designmuseumgent.be/v1/color-api/{color}
to retrieve a list of the colors we use to tag:
GET https://data.designmuseumgent.be/v1/colors/
pattern api
The patterns API provides access to a selection of patterns derived from our collection. These patterns can be used for creative purposes of different sorts and are sorted in different subcollections which will and can be expanded on the base of projects that make use of them.
endpoint:
GET https://data.designmuseumgent.be/v1/pattern-api?collection={SUBCOLLECTION}
subcollections
At this point the provided subcollections are:
- tegels (tiles)
- panelen (wooden panels)
for example:
GET https://data.designmuseumgent.be/v1/pattern-api?collection=tegels
returns only patterns derived from tiles from the collection.
response format
| Field | Description | Example |
|---|---|---|
@id | Unique URI of the object from which the pattern has been substracted | "https://data.designmuseumgent.be/v1/id/object/1976-0013" |
image | crop of the image, containing te pattern, using IIIF | "https://api.collectie.gent/iiif/image/iiif/2/22e9971481d352e495535de1d87539a9-transcode-1976-0013.jpg/760,193,1960,1940/full/0/default.jpg" |
billboardseries
The billboard series API provides access to information on the billboards that were shown at the museum in collaboration with 019.
endpoint:
GET https://data.designmuseumgent.be/v1/id/exhibitions/billboardseries
response format
Exhibition Information
| Field | Description | Example |
|---|---|---|
@type | type of the record | "Activtiet" |
"Entiteit.type" | type of the entity (Exhibition) | "http://vocab.getty.edu/aat/300417531" |
"Gebeurtenis.tijd" | period when the billboard was shown (EDTF) | "2019-11-15/2020-01-24" |
"Gebeurtenis.plaats" | location where the billboard was shown (always Design Museum Gent) | "https://www.wikidata.org/entity/Q1809071" |
Billboard information
"Activiteit.gebruiktObject" exposes extra information on the Billboard that was shown; who made it, when was it made, what does it show as well as a link to the digital reproduction (documentation).
| Field | Description | Example |
|---|---|---|
"@type"" | type of the object (always human-made-object) | "MensgemaaktObject" |
"MensgemaaktObject.titel" | title of the artwork shown on the billboard | "Phantom Radio" |
"MaterieelDing.productie" | information on how/be whome the artwork is made | |
└── Activiteit.uitgevoerdDoor | maker(s) of the artwork (also link to wikidata) | "Talking Letterheads" |
"MensgemaaktObject.beschrijving" | description of the work (in both dutch and english) | "An interview marathon by Phantom Radio with contemporary Belgian graphic designers, hosted by Gerard Herman & Dylan Belgrado…eroen Wille. Part of the exhibition Off the Grid. Belgian Graphic Design from the 1960s and 1970s as Seen by Sara De Bondt." |
"Entiteit.isHetOnderwerpVan" | link to the digital produciton of the installation | "https://019-ghent.org/wp-content/uploads/2020/04/MDC_019_BBDMG_talkingletterheads_001_LR-1.jpg" |
lost in diffusion
data dumps
We offer data dumps for our collection endpoints. If you would like to make use of this service please send a message to olivier.vandhuynslager@stad.gent, and we will provide you with an access token. With a token you can request a data dump using the following endpoint:
GET https://data.designmuseumgent.be/v1/dump/:type?apiKey=APIKEY
response format
the dump will generate and download a json-ld file of all the objects in that collection. The structure of that response is the same as defined in the corresponding collection. The desired collection can be defined in the URL request:
GET https://data.designmuseumgent.be/v1/dump/objects?apiKey=APIKEY
GET https://data.designmuseumgent.be/v1/dump/agents?apiKey=APIKEY
GET https://data.designmuseumgent.be/v1/dump/exhibitions?apiKey=APIKEY
GET https://data.designmuseumgent.be/v1/dump/concepts?apiKey=APIKEY
CHAI-T
A custom endpoint built for the project CHAI-T. This endpoint aggregates concepts data from partnering institutions (VAI, MoMU and Design Museum Gent) and provides a single endpoint for all concepts.