NDE Dataset Register
The Dataset Register of the Dutch Digital Heritage Network is the catalogue of Dutch heritage data: archives, museums, libraries and municipalities register their dataset descriptions, the register harvests and validates them and loads them into a SPARQL endpoint. On 16 October 2026 it held 3,401 datasets with a valid registration from 159 publishers. The register contains descriptions, not the data itself: each description points to downloads or APIs (OAI-PMH, SPARQL, IIIF) at the institution. It is maintained by the National Archives.
Everything that's in it3,409
All datasets in the Dataset Register of the Dutch Digital Heritage Network, by institution, fetched every night. Every dataset has its own page with licence and distributions (download, SPARQL, OAI-PMH).
Heritage datasets in the NDE Dataset Register by licence: most CC BY 4.0 (1,833 datasets), then CC0 1.0 and CC BY-SA 4.0
Heritage datasets in the NDE Dataset Register by licence, October 2026, in datasets. Total: 3,409; the largest 12 of 14 categories are shown. CC BY 4.0 is 54% of the total. The licence applies to the dataset description (the metadata), not necessarily to the collection items themselves. Variants of the same licence URI (http or https, with or without slash) are counted together.
What can you do with it?4 ideas
What heritage data exist about my town?
Search titles and keywords for a place name. You will find archives of societies, notaries and companies, photo collections and museum catalogues, each with its own download or API.
What am I allowed to do?
Every description names a licence. Of the 3,401 datasets, 1,832 are under CC BY 4.0, 1,098 under CC0 and 436 under CC BY-SA 4.0. That licence covers the description; for the items themselves check with the institution.
All linked data entry points in heritage
Filter the distributions on dct:conformsTo: 147 datasets have a SPARQL endpoint, 94 an OAI-PMH endpoint, 17 IIIF. That gives you a list of machine-readable entry points for your own search service.
Who publishes what?
Count datasets per publisher: Het Utrechts Archief (1,572), Stadsarchief Rotterdam (696) and Streekarchief Voorne-Putten (346) describe each archive as a separate dataset; museums often register one large collection. Dataset counts therefore say little about size.
How to process it3 steps
Search the website or via SPARQL
The search page turns your query into a SPARQL query that you can open and adjust. The endpoint is freely accessible; ask for application/sparql-results+json to get JSON.
https://datasetregister.netwerkdigitaalerfgoed.nl/sparql
Only valid registrations
The register counts a dataset when its registration is valid: schema:subjectOf/schema:additionalType is …/registry/valid. Without that condition you also get gone and invalid descriptions: 3,461 instead of 3,401.
From description to data
Each dataset has one or more dcat:distribution with dcat:accessURL or dcat:downloadURL, a media type and sometimes dct:conformsTo (the protocol). Those addresses belong to the institution; the register stores no data.
Interesting combinations


Which Rijksmuseum data exist besides the search API?
The Rijksmuseum has 16 datasets in the register, with LDES, IIIF and Linked Art as protocols. That shows which entry points the museum itself lists.


Which KB datasets are registered?
The 17 KB datasets in the register are the same as the dataset descriptions on data.bibliotheken.nl (NBT, STCN, thesauri), each with a SPARQL and download address.
Similar sources
- Europeana
Europeana aggregates the objects themselves (with images) from European institutions, but requires a key. The Dataset Register only describes datasets, without a key.
data.overheid.nlThe same set-up (a catalogue of descriptions) for government data. Heritage datasets rarely appear there.
- Open Archives (Open Archieven)
Open Archives holds the person records themselves, searchable by name; in the register Open Archives appears with 306 dataset descriptions: genealogical metadata and linksets per participating archive.
What to watch out for
- A dataset is not always the same size
Some archives register every archive group separately (Het Utrechts Archief: 1,572 datasets), others one whole collection. Do not compare institutions by number of datasets.
- Licence of the description
According to the register itself, the licence applies to the metadata. The underlying collection items may fall under a different, sometimes stricter licence.
- Dates missing or in the future
124 of the 3,401 datasets have no dct:modified. Only use complete dates up to today when looking at freshness.
APISPARQL 1.1 (QLever) en REST · read 16 Oct 2026
Reading (SPARQL) without a key. Registering is for institutions; the register keeps an allow list of domains (/api/allowed-domains). tested
datasets with a valid registration (SPARQL count, 16 Oct 2026 around 23:45; 3,401 earlier that day) tested
sparql-results+jsoncsvtsvjson-ldturtle
Base URL
https://datasetregister.netwerkdigitaalerfgoed.nl/sparql
Endpoints 7
- GET
/sparql?query=…SPARQL query in the URL. With Accept: application/json or application/sparql-results+json the standard JSON, text/csv a table. The response also has meta.query-time-ms. - POST
/sparqlThe same query as form field query= (handy for long queries). - GET
/api/datasets?url=…REST: is a description at this URL already registered? - POST
/api/datasetsREST: register a dataset description (for institutions; see allowed-domains). - POST
/api/datasets/validateREST: validate a description in the body against the NDE requirements; PUT with a URL validates what is at that address. - GET
/api/shaclREST: the SHACL shape used to validate descriptions. - GET
/api/allowed-domains?url=…REST: is the domain on the allow list?
Filtering tested
SPARQL 1.1 with prefixes dcat: <http://www.w3.org/ns/dcat#>, dct: <http://purl.org/dc/terms/>, schema: <https://schema.org/> (https). FILTER(CONTAINS(LCASE(?title), "…")) for text search.
Parameters 3
query | The SPARQL query (GET in the URL or POST as form field). | tested |
Accept | application/sparql-results+json (also for application/json), text/csv. | tested |
schema:subjectOf/schema:additionalType | Registration status: <https://data.netwerkdigitaalerfgoed.nl/registry/valid> for valid descriptions; without this filter you also count gone and invalid ones. | tested |
Predicates of a dataset and its distributions (selection) 14
| Name | Type | Meaning |
|---|---|---|
dcat:Dataset | klasse | Een datasetbeschrijving (IRI van de instelling zelf) |
dct:title / dct:description | tekst | Titel en beschrijving (vaak in meerdere talen) |
dct:publisher / dct:creator | uri | Uitgever en maker (organisatie-IRI) |
dct:license | uri | Licentie; CC0 komt zowel met http:// als https:// voor |
dcat:keyword / dcat:theme | tekst | Trefwoorden en thema's |
dct:modified / dct:created / dct:issued | datum | Datums volgens de instelling; ontbreken soms of liggen in de toekomst |
dct:spatial / dct:temporal | tekst | Gebied en periode (bij een minderheid) |
dcat:distribution | uri | Verwijzing naar een distributie (18.623 in totaal, ruim 5 per dataset) |
dcat:distribution / dcat:accessURL, dcat:downloadURL | url | Adres van de data bij de instelling |
dcat:distribution / dcat:mediaType, dct:conformsTo | tekst | Formaat en protocol (SPARQL, OAI-PMH, IIIF …) |
dcat:distribution / dcat:byteSize | getal · byte | Grootte van de download |
schema:subjectOf / schema:additionalType | uri | Status van de registratie (…/registry/valid) |
Show all 14
| Name | Type | Meaning |
|---|---|---|
schema:contentRating | uri | Beoordeling van de beschrijving door het register |
schema:dateRead / nde:dateCrawled | datetime | Wanneer het register de beschrijving het laatst ophaalde |
Limits and pitfalls
- No documented limit or key. Counts over the whole register took 50 to 70 ms. tested
- robots.txt only disallows search.php, show.php and viaurl.php of the old app; /sparql and /api are allowed. tested
- Count only valid registrations (schema:subjectOf/schema:additionalType …/registry/valid): 3,392 on 16 Oct 2026 around 23:45, while 3,401 were counted earlier that day. The number fluctuates because the register keeps re-fetching descriptions. tested
- schema: here is https://schema.org/ (https), dct: is http://purl.org/dc/terms/ (with a slash). Different from the KB. tested
- Each registered description sits in its own graph (the registration URL); besides that there are graphs with registrations, ratings, SHACL results and distribution reachability (…/sparql/distribution-health). tested
- Counting licences by URI: CC0 appears as http:// (1,063) and https:// (34). Normalise before adding up. tested
- The register holds descriptions, not collection data: fetch the data from the institution via dcat:accessURL or dcat:downloadURL. from the description
Try it HTTP 200 · 391 ms · 16 Oct
https://datasetregister.netwerkdigitaalerfgoed.nl/sparql?query=PREFIX dcat%3A <http%3A%2F%2Fwww.w3.org%2Fns%2Fdcat%23> PREFIX dct%3A <http%3A%2F%2Fpurl.org%2Fdc%2Fterms%2F> PREFIX schema%3A <https%3A%2F%2Fschema.org%2F> SELECT %3Flicentie (COUNT(DISTINCT %3Fd) AS %3Fdatasets) WHERE { %3Fd a dcat%3ADataset %3B dct%3Alicense %3Flicentie %3B schema%3AsubjectOf%2Fschema%3AadditionalType <https%3A%2F%2Fdata.netwerkdigitaalerfgoed.nl%2Fregistry%2Fvalid> } GROUP BY %3Flicentie ORDER BY DESC(%3Fdatasets) LIMIT 5
{
"head": {
"vars": [
"licentie",
"datasets"
]
},
"results": {
"bindings": [
{
"licentie": {
"type": "uri",
"value": "http://creativecommons.org/licenses/by/4.0/"
},
"datasets": {
"datatype": "http://www.w3.org/2001/XMLSchema#int",
"type": "literal",
"value": "1832"
}
},
{
"licentie": {
"type": "uri",
"value": "http://creativecommons.org/publicdomain/zero/1.0/"
},
"datasets": {
"datatype": "http://www.w3.org/2001/XMLSchema#int",
"type": "literal",
"value": "1063"
}
}
]
},
"meta": {
"query-time-ms": 42,
"result-size-total": 5
}
}Shortened response, saved at harvest time. Click the URL for the real, current response.
Read from NDE requirements for dataset descriptions (DCAT / schema.org) · OpenAPI 3.0.3 description of the REST API (register, validate, SHACL) · FAQ for users. Labels: from the description stated in what the api itself publishes. tested from our own small call. platform applies to every api on this platform, per its documentation. experience learned while building open data index.
How to fetch it
curl -H "Accept: application/sparql-results+json" --data-urlencode 'query=PREFIX dcat: <http://www.w3.org/ns/dcat#> PREFIX schema: <https://schema.org/> SELECT (COUNT(DISTINCT ?d) AS ?n) WHERE { ?d a dcat:Dataset ; schema:subjectOf/schema:additionalType <https://data.netwerkdigitaalerfgoed.nl/registry/valid> }' https://datasetregister.netwerkdigitaalerfgoed.nl/sparqlMore from NDE in our index
1 datasets in NDE Datasetregister. These changed most recently.
More in this topic
See how this page is built
bron: nde-datasetregister
blokken: []
secties:
- ideeen
- verwerken
- koppelingen
- vergelijkbaar
- beperkingen
- code
cache:
tag: bron:nde-datasetregister
ververs: na statuscheck, als de bron nieuwer is
statuscheck:
methode: "SPARQL: aantal datasets met een geldige registratie en de nieuwste
dct:modified (niet in de toekomst)"
verwacht: dagelijks
Source: content/bronnen/nde-datasetregister.yaml · Markdown


