Concepts
Info
The concepts collection endpoint provides paginated access to the full Design Museum Gent thesaurus. Concepts are used to classify and describe objects in the collection — they include materials, techniques, object types, and other descriptive terms. For full metadata on a single concept, use the concept endpoint.
endpoint:
GET https://data.designmuseumgent.be/v2/id/concepts
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number |
itemsPerPage | integer | 10 | Number of concepts per page (max 100) |
fullRecord | boolean | false | Return full CIDOC-CRM records instead of lightweight stubs |
modifiedSince | date | — | Only return records modified on or after this date. Format: YYYY-MM-DD |
q | string | — | Full text search on preferred labels and scope notes |
language | string | — | Only return concepts with a label in the specified language. Supported: NLD, FRA, ENG |
Full text search — ?q=
The q parameter supports natural language search syntax:
| Query | Description | Example |
|---|---|---|
| Single word | Matches any concept containing the word | ?q=glas |
| Multiple words | Matches concepts containing all words | ?q=roze glas |
| Exact phrase | Matches the exact phrase | ?q="geschilderd glas" |
| OR | Matches concepts containing either word | ?q=glas OR keramiek |
| Negation | Excludes concepts containing the word | ?q=glas -keramiek |
Search covers Dutch, French and English preferred labels and scope notes. Labels are weighted higher than scope notes.
GET https://data.designmuseumgent.be/v2/id/concepts?q=glas
GET https://data.designmuseumgent.be/v2/id/concepts?q="geschilderd glas"
GET https://data.designmuseumgent.be/v2/id/concepts?q=glas&fullRecord=true
Examples:
GET https://data.designmuseumgent.be/v2/id/concepts?page=1&itemsPerPage=10
GET https://data.designmuseumgent.be/v2/id/concepts?page=1&itemsPerPage=50&fullRecord=true
Incremental harvesting
Use modifiedSince combined with fullRecord=true to efficiently harvest only records that have changed since your last sync:
GET https://data.designmuseumgent.be/v2/id/concepts?modifiedSince=2026-05-01&fullRecord=true&itemsPerPage=50
The parameter is preserved in all Hydra pagination links so you can follow hydra:next as normal. An invalid date format returns 400 Bad Request.
Response format
Data is returned as a Hydra Collection with CIDOC-CRM + SKOS members.
| Prefix | Namespace |
|---|---|
crm | http://www.cidoc-crm.org/cidoc-crm/ |
skos | http://www.w3.org/2004/02/skos/core# |
hydra | http://www.w3.org/ns/hydra/core# |
rdfs | http://www.w3.org/2000/01/rdf-schema# |
owl | https://www.w3.org/2002/07/owl# |
| Code | Description |
|---|---|
| 200 | Successful request returning a paginated collection |
| 500 | Server error |
Pagination — hydra:view
| Field | Description |
|---|---|
hydra:totalItems | Total number of concepts in the thesaurus |
hydra:first | Link to the first page |
hydra:last | Link to the last page |
hydra:previous | Link to the previous page (omitted on first page) |
hydra:next | Link to the next page (omitted on last page) |
Harvesting the full thesaurus
To harvest all concepts, start at page 1 and follow hydra:next until it is absent:
const endpoint = 'https://data.designmuseumgent.be/v2/id/concepts?fullRecord=true&itemsPerPage=50';
async function harvest(url) {
const res = await fetch(url);
const data = await res.json();
// do something with data["hydra:member"]
if (data["hydra:view"]["hydra:next"]) {
await harvest(data["hydra:view"]["hydra:next"]);
} else {
console.log('harvest complete')
}
}
harvest(endpoint);
Pagination
See the objects documentation for full pagination documentation including Link header support and harvesting examples. The same pattern applies to all collection endpoints.
Members — hydra:member
Lightweight stub (default)
By default each member contains only the minimum needed to identify the concept and resolve to its full record:
| Field | Description | Example |
|---|---|---|
@id | Internal DMG URI — resolvable to full record | https://data.designmuseumgent.be/v2/id/concept/530000049 |
@type | CIDOC-CRM class | crm:E55_Type |
rdfs:label | Dutch preferred label | "pepervat" |
"hydra:member": [
{
"@id": "https://data.designmuseumgent.be/v2/id/concept/530000049",
"@type": "crm:E55_Type",
"rdfs:label": "pepervat"
},
{
"@id": "https://data.designmuseumgent.be/v2/id/concept/530000004",
"@type": "crm:E55_Type",
"rdfs:label": "MDF"
}
]
Full record (?fullRecord=true)
When fullRecord=true each member contains the complete CIDOC-CRM + SKOS JSON-LD record including multilingual labels, scope notes, authority links, and broader/narrower hierarchy. The structure is identical to the single concept endpoint.
Multilingual labels
Labels and scope notes are available in Dutch, French and English where translations exist. French and English translations are being added as part of an ongoing translation project — not all concepts have translations yet.
Performance
fullRecord=true returns larger payloads as each record includes the full JSON-LD including hierarchy. Keep itemsPerPage at 50 or lower when using fullRecord=true.
Example response (lightweight)
{
"@context": {
"crm": "http://www.cidoc-crm.org/cidoc-crm/",
"skos": "http://www.w3.org/2004/02/skos/core#",
"rdfs": "http://www.w3.org/2000/01/rdf-schema#",
"hydra": "http://www.w3.org/ns/hydra/core#",
"owl": "https://www.w3.org/2002/07/owl#"
},
"@id": "https://data.designmuseumgent.be/v2/id/concepts",
"@type": "hydra:Collection",
"hydra:totalItems": 5832,
"hydra:view": {
"@id": "https://data.designmuseumgent.be/v2/id/concepts?page=1&itemsPerPage=10",
"@type": "hydra:PartialCollectionView",
"hydra:first": "https://data.designmuseumgent.be/v2/id/concepts?page=1&itemsPerPage=10",
"hydra:last": "https://data.designmuseumgent.be/v2/id/concepts?page=584&itemsPerPage=10",
"hydra:next": "https://data.designmuseumgent.be/v2/id/concepts?page=2&itemsPerPage=10"
},
"hydra:member": [
{
"@id": "https://data.designmuseumgent.be/v2/id/concept/530000004",
"@type": "crm:E55_Type",
"rdfs:label": "MDF"
},
{
"@id": "https://data.designmuseumgent.be/v2/id/concept/530000049",
"@type": "crm:E55_Type",
"rdfs:label": "pepervat"
}
]
}