# NDE Datasetregister

Het Datasetregister van het Netwerk Digitaal Erfgoed is de catalogus van Nederlandse erfgoeddata: archieven, musea, bibliotheken en gemeenten melden er hun datasetbeschrijvingen aan, het register haalt die op, controleert ze en zet ze in een SPARQL-endpoint. Op 16 oktober 2026 stonden er 3.401 datasets met een geldige registratie in, van 159 uitgevers. Het register bevat beschrijvingen, niet de data zelf: elke beschrijving wijst naar downloads of API's (OAI-PMH, SPARQL, IIIF) bij de instelling. Het wordt beheerd en onderhouden door het Nationaal Archief.

- Uitgever: Netwerk Digitaal Erfgoed, Nationaal Archief
- Gebied: Nederland · Laagste detail: dataset
- Periode: actueel (beschrijvingen worden steeds opnieuw opgehaald) · Ververst: dagelijks
- Toegang: Open · Licentie: Per datasetbeschrijving; meestal CC BY 4.0 of CC0 (geldt voor de metadata, niet voor de collectiestukken)
- Koppelsleutels: IRI van de dataset, uitgever (IRI van de organisatie)
- Status: ok (2026-10-16) · 3.391 datasets met een geldige registratie
- URL: https://datasetregister.netwerkdigitaalerfgoed.nl

## Wat kun je ermee?
- **Welke erfgoeddata zijn er over mijn plaats?.** Zoek in de titels en trefwoorden op een plaatsnaam. Je vindt dan archieven van verenigingen, notarissen en bedrijven, fotocollecties en museumcatalogi die elk een eigen download of API hebben.
- **Wat mag ik ermee?.** Elke beschrijving noemt een licentie. Van de 3.401 datasets staan er 1.832 onder CC BY 4.0, 1.098 onder CC0 en 436 onder CC BY-SA 4.0. Die licentie geldt voor de beschrijving; voor de stukken zelf kijk je bij de instelling.
- **Alle linked-data-ingangen van het erfgoed.** Filter de distributies op dct:conformsTo: 147 datasets hebben een SPARQL-endpoint, 94 een OAI-PMH-ingang, 17 IIIF. Zo bouw je een lijst van machineleesbare ingangen voor een eigen zoekdienst.
- **Wie publiceert wat?.** Tel datasets per uitgever: Het Utrechts Archief (1.572), Stadsarchief Rotterdam (696) en Streekarchief Voorne-Putten (346) beschrijven elk archief(blok) als eigen dataset; musea melden vaak één grote collectie aan. Aantallen datasets zeggen dus weinig over de omvang.

## Zo verwerk je het
1. **Zoek in de website of via SPARQL.** De zoekpagina Doorzoek maakt van je zoekvraag een SPARQL-query die je kunt openen en aanpassen. Het endpoint is vrij toegankelijk; vraag om application/sparql-results+json voor JSON.
   `https://datasetregister.netwerkdigitaalerfgoed.nl/sparql`
2. **Alleen geldige registraties.** Het register telt een dataset mee als zijn registratie geldig is: schema:subjectOf/schema:additionalType is …/registry/valid. Zonder die voorwaarde krijg je ook verdwenen (gone) en ongeldige beschrijvingen: 3.461 in plaats van 3.401.
3. **Van beschrijving naar data.** Elke dataset heeft een of meer dcat:distribution met dcat:accessURL of dcat:downloadURL, een mediatype en soms dct:conformsTo (het protocol). Die adressen zijn van de instelling zelf; het register bewaart geen data.

## Interessante koppelingen
- Welke Rijksmuseum-data zijn er naast de zoek-API? → [rijksmuseum](https://www.opendataindex.nl/bron/rijksmuseum.md) via uitgever (Rijksmuseum Amsterdam). Het Rijksmuseum heeft 16 datasets in het register, met LDES, IIIF en Linked Art als protocol. Zo zie je welke ingangen het museum zelf noemt.
- Welke KB-datasets zijn aangemeld? → [kb-linked-data](https://www.opendataindex.nl/bron/kb-linked-data.md) via uitgever (KB, nationale bibliotheek). De 17 KB-datasets in het register zijn dezelfde als de datasetbeschrijvingen op data.bibliotheken.nl (NBT, STCN, thesauri), met per dataset een SPARQL- en downloadadres.

## Vergelijkbare bronnen
- [europeana](https://www.opendataindex.nl/bron/europeana.md): Europeana verzamelt de objecten zelf (met beelden) van Europese instellingen, maar vraagt een sleutel. Het Datasetregister beschrijft alleen datasets, wel zonder sleutel.
- [data-overheid](https://www.opendataindex.nl/bron/data-overheid.md): Dezelfde opzet (een catalogus van beschrijvingen) voor overheidsdata. Erfgoeddatasets staan daar zelden in.
- [open-archieven](https://www.opendataindex.nl/bron/open-archieven.md): Open Archieven heeft de persoonsvermeldingen zelf, doorzoekbaar op naam; in het register staat Open Archieven met 306 datasetbeschrijvingen: genealogische metadata en linksets per aangesloten archief.

## Waar je op moet letten
- **Een dataset is niet altijd even groot.** Sommige archieven melden elk archiefblok apart aan (Het Utrechts Archief: 1.572 datasets), andere één hele collectie. Vergelijk instellingen daarom niet op het aantal datasets.
- **Licentie van de beschrijving.** De licentie in het register geldt volgens het register zelf voor de metadata. De onderliggende collectiestukken kunnen onder een andere, soms strengere licentie vallen.
- **Datums ontbreken of liggen in de toekomst.** 124 van de 3.401 datasets hebben geen dct:modified. Neem alleen volledige datums tot vandaag mee als je naar versheid kijkt.

## API (SPARQL 1.1 (QLever) en REST)

- Basis: https://datasetregister.netwerkdigitaalerfgoed.nl/sparql
- Toegang: Lezen (SPARQL) zonder sleutel. Aanmelden is voor instellingen; het register houdt een lijst van toegestane domeinen bij (/api/allowed-domains). (getest)
- Formaten: sparql-results+json, csv, tsv, json-ld, turtle
- Omvang: 3392 datasets met een geldige registratie (SPARQL-telling, 16 okt 2026 rond 23:45; eerder die dag 3.401) (getest)
- Filteren: SPARQL 1.1 met prefixes dcat: <http://www.w3.org/ns/dcat#>, dct: <http://purl.org/dc/terms/>, schema: <https://schema.org/> (https). FILTER(CONTAINS(LCASE(?titel), "…")) om op tekst te zoeken.; SELECT, FILTER, CONTAINS, GROUP BY, COUNT(DISTINCT), OPTIONAL, pad/pad, GRAPH

### Endpoints
- `GET /sparql?query=…`: SPARQL-vraag in de URL. Met Accept: application/json of application/sparql-results+json het standaard-JSON, text/csv een tabel. Het antwoord heeft ook meta.query-time-ms.
- `POST /sparql`: Dezelfde vraag als formulierveld query= (handig voor lange vragen).
- `GET /api/datasets?url=…`: REST: staat een beschrijving op dit adres al in het register?
- `POST /api/datasets`: REST: een datasetbeschrijving aanmelden (voor instellingen; zie allowed-domains).
- `POST /api/datasets/validate`: REST: een beschrijving in de body valideren tegen de NDE-eisen; PUT met een URL valideert wat op dat adres staat.
- `GET /api/shacl`: REST: de SHACL-vorm waarmee beschrijvingen worden gecontroleerd.
- `GET /api/allowed-domains?url=…`: REST: staat het domein op de lijst van toegestane domeinen?

### Parameters
- `query`: De SPARQL-vraag (GET in de URL of POST als formulierveld). (getest)
- `Accept`: application/sparql-results+json (ook bij application/json), text/csv. (getest)
- `schema:subjectOf/schema:additionalType`: Status van de registratie: <https://data.netwerkdigitaalerfgoed.nl/registry/valid> voor geldige beschrijvingen; zonder dit filter tel je ook verdwenen en ongeldige mee. (getest)

### Predicaten van een dataset en zijn distributies (selectie) (14)
`dcat:Dataset` klasse, `dct:title / dct:description` tekst, `dct:publisher / dct:creator` uri, `dct:license` uri, `dcat:keyword / dcat:theme` tekst, `dct:modified / dct:created / dct:issued` datum, `dct:spatial / dct:temporal` tekst, `dcat:distribution` uri, `dcat:distribution / dcat:accessURL, dcat:downloadURL` url, `dcat:distribution / dcat:mediaType, dct:conformsTo` tekst, `dcat:distribution / dcat:byteSize` getal, `schema:subjectOf / schema:additionalType` uri, `schema:contentRating` uri, `schema:dateRead / nde:dateCrawled` datetime

### Limieten en valkuilen
- Geen gedocumenteerde limiet of sleutel. Tellingen over het hele register duurden 50 tot 70 ms. (getest)
- robots.txt verbiedt alleen search.php, show.php en viaurl.php van de oude app; /sparql en /api mogen. (getest)
- Tel alleen geldige registraties (schema:subjectOf/schema:additionalType …/registry/valid): 3.392 op 16 okt 2026 rond 23:45, terwijl de dag eerder 3.401 gaf. Het aantal schommelt doordat het register beschrijvingen steeds opnieuw ophaalt. (getest)
- schema: is hier https://schema.org/ (https), dct: is http://purl.org/dc/terms/ (met schuine streep). Anders dan bij de KB. (getest)
- Elke aangemelde beschrijving staat in een eigen graaf (het adres van de registratie); daarnaast grafen met registraties, beoordelingen, SHACL-uitkomsten en de bereikbaarheid van distributies (…/sparql/distribution-health). (getest)
- Licenties per URI tellen: CC0 staat er als http:// (1.063) én https:// (34). Normaliseer voor je optelt. (getest)
- Het register bevat beschrijvingen, geen collectiedata: de data haal je bij de instelling via dcat:accessURL of dcat:downloadURL. (uit de beschrijving)

### Voorbeeld
```
https://datasetregister.netwerkdigitaalerfgoed.nl/sparql?query=PREFIX%20dcat%3A%20%3Chttp%3A%2F%2Fwww.w3.org%2Fns%2Fdcat%23%3E%20PREFIX%20dct%3A%20%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Fterms%2F%3E%20PREFIX%20schema%3A%20%3Chttps%3A%2F%2Fschema.org%2F%3E%20SELECT%20%3Flicentie%20%28COUNT%28DISTINCT%20%3Fd%29%20AS%20%3Fdatasets%29%20WHERE%20%7B%20%3Fd%20a%20dcat%3ADataset%20%3B%20dct%3Alicense%20%3Flicentie%20%3B%20schema%3AsubjectOf%2Fschema%3AadditionalType%20%3Chttps%3A%2F%2Fdata.netwerkdigitaalerfgoed.nl%2Fregistry%2Fvalid%3E%20%7D%20GROUP%20BY%20%3Flicentie%20ORDER%20BY%20DESC%28%3Fdatasets%29%20LIMIT%205
```

## Zo haal je het op

### curl
```bash
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/sparql
```

### python
```python
import requests

q = """PREFIX dcat: <http://www.w3.org/ns/dcat#> PREFIX dct: <http://purl.org/dc/terms/> PREFIX schema: <https://schema.org/>
SELECT ?d ?titel WHERE {
  ?d a dcat:Dataset ; dct:title ?titel ;
     schema:subjectOf/schema:additionalType <https://data.netwerkdigitaalerfgoed.nl/registry/valid> .
  FILTER(CONTAINS(LCASE(?titel), "notaris"))
} LIMIT 10"""
r = requests.post("https://datasetregister.netwerkdigitaalerfgoed.nl/sparql", data={"query": q},
                  headers={"Accept": "application/sparql-results+json", "User-Agent": "mijnproject/1.0"}).json()
for b in r["results"]["bindings"]:
    print(b["titel"]["value"], b["d"]["value"])
```


## Wat er allemaal in zit: 3.409 datasets

Alle datasets in het Datasetregister van het Netwerk Digitaal Erfgoed, per instelling, elke nacht opgehaald. Elke dataset heeft een eigen pagina met licentie en distributies (download, SPARQL, OAI-PMH).

- Soorten: dataset 3.409
- Laatst gewijzigd: 2026-10-31 (851 in de afgelopen 30 dagen)
- Met een API-aanroep op de datasetpagina: 3.407
- Zoeken: https://www.opendataindex.nl/api/catalogus/nde?q=… of de MCP-functie zoek_datasets met herkomst=nde
- Elke rij heeft een eigen pagina: https://www.opendataindex.nl/dataset/nde/<sleutel>

### Mappen
- Het Utrechts Archief (1.572)
- Stadsarchief Rotterdam (696)
- Streekarchief Voorne-Putten (347)
- Open Archieven (306)
- Streekarchief Langstraat Heusden Altena (76)
- Van Gogh worldwide consortium, represented by the Netherlands Institute of Art History (RKD) (49)
- Nationaal Archief (34)
- Gouda Tijdmachine (29)
- KB, nationale bibliotheek (17)
- Rijksmuseum Amsterdam (16)
- Nederlands Instituut voor Beeld en Geluid (15)
- Bibliotheek UvA (10)
- GLOBALISE project (9)
- CBS (7)
- HAN - Het Hannemahuis (6)
- Literatuurmuseum (6)
- Mibudera (6)
- Rijksdienst voor het Cultureel Erfgoed (6)
- DC4EU (5)
- Gemeente Borne (5)
- MHD - Museum Huis Doorn (5)
- Digitaal Erfgoed Friesland (4)
- NIMH / Nederlands Instituut voor Militaire Historie (4)
- Amsterdam Time Machine (3)
- Erfgoed Enschede (3)
- Gemeente Zoetermeer (3)
- MHM - Moluks Historisch Museum (3)
- PeelenMaasNet (3)
- Stichting WO2Net (3)
- WRT - Gemeente Weert (3)
- Airborne Museum Hartenstein (2)
- Archeologiemuseum Huis van Hilde (HVH) (2)
- CREATE (2)
- FEHAC (2)
- Genealogie Online (2)
- Historische Vereniging Maassluis (2)
- IHLIA - LGBTI Heritage (2)
- Korpora, Erfgoed Publieke Veiligheid (2)
- KW - Kamp Westerbork (2)
- LI-MA Mediakunst (2)
- … en nog 124 mappen

## Voorbeelden met echte cijfers (1)

Per voorbeeld de bevinding, de peildatum en de aanroep die precies deze cijfers ophaalt.

- **Erfgoeddatasets in het NDE Datasetregister per licentie: het meest CC BY 4.0 (1.833 datasets), dan CC0 1.0 en CC BY-SA 4.0** (oktober 2026). Tabel SPARQL, dct:license. [Voorbeeld](https://www.opendataindex.nl/voorbeeld/nde-datasetregister-licenties)
  - `https://datasetregister.netwerkdigitaalerfgoed.nl/sparql?query=PREFIX%20dcat%3A%20%3Chttp%3A%2F%2Fwww.w3.org%2Fns%2Fdcat%23%3E%20PREFIX%20dct%3A%20%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Fterms%2F%3E%20PREFIX%20schema%3A%20%3Chttps%3A%2F%2Fschema.org%2F%3E%0ASELECT%20%3Flicentie%20(COUNT(DISTINCT%20%3Fd)%20AS%20%3Fn)%20WHERE%20%7B%0A%20%20%3Fd%20a%20dcat%3ADataset%20%3B%20schema%3AsubjectOf%2Fschema%3AadditionalType%20%3Chttps%3A%2F%2Fdata.netwerkdigitaalerfgoed.nl%2Fregistry%2Fvalid%3E%20.%0A%20%20OPTIONAL%20%7B%20%3Fd%20dct%3Alicense%20%3Flicentie%20%7D%0A%7D%20GROUP%20BY%20%3Flicentie`
