3.3. Metadata interoperabiliteit
3.3.1. Waarom metadata essentieel is voor datastations
Metadata speelt een cruciale rol in een datastation. Zonder goede metadata weten onderzoekers en systemen niet welke data beschikbaar is, wat de kwaliteit ervan is, en onder welke voorwaarden deze gebruikt mag worden. Metadata maakt het mogelijk om:
- Datasets te vinden: Een onderzoeker kan in een catalogus zoeken naar datasets over hartfalen in een bepaalde leeftijdsgroep.
- Datasets te begrijpen: De beschrijving vertelt welke variabelen er zijn, hoe de data is verzameld, en welke beperkingen er gelden.
- Datasets automatisch te verwerken: Systemen kunnen op basis van gestandaardiseerde metadata beoordelen of een dataset geschikt is voor een bepaalde analyse.
Voor het realiseren van interoperabiliteit tussen datastations is het van groot belang dat metadata op een gestandaardiseerde manier wordt beschreven. Hiervoor zijn internationale standaarden en profielen ontwikkeld.
DCAT (Data Catalog Vocabulary) is een W3C-standaard die oorspronkelijk is ontworpen voor het beschrijven van datasets in datacatalogi. Het biedt een gemeenschappelijk vocabulaire waarmee organisaties hun datasets kunnen beschrijven, ongeacht het domein. DCAT versie 3 (2024) introduceert onder andere de DatasetSeries klasse voor het beschrijven van gerelateerde datasets.
DCAT-AP is een Europees applicatieprofiel van DCAT, ontwikkeld door de Europese Commissie. Het verfijnt DCAT met extra verplichte en aanbevolen velden die relevant zijn voor Europese overheidsdata, zoals toegangsrechten en toepasselijke wetgeving. DCAT-AP vormt de basis voor veel nationale datacatalogi.
HealthDCAT-AP is een uitbreiding van DCAT-AP specifiek voor de gezondheidszorgsector. Het voegt metadata-elementen toe die essentieel zijn voor gezondheidsdata, zoals:
- Gezondheidscategorieën (EHR, beelden, genomische data)
- Populatiekenmerken (leeftijdsbereik, aantal unieke individuen)
- Coderingssystemen (SNOMED CT, ICD-10, LOINC)
- Retentieperiodes en bewaartermijnen
- De verantwoordelijke Health Data Access Body (HDAB)
Het Health-RI metadata schema is een Nederlands profiel gebaseerd op DCAT-AP en HealthDCAT-AP, met specifieke aanpassingen voor de Health-RI Datacatalogus. Dit schema definieert welke metadata-elementen verplicht, aanbevolen of optioneel zijn voor Nederlandse gezondheidsdata.
3.3.2. DCAT-klassen in een datastation
In DCAT worden verschillende klassen gebruikt om de structuur van een datacatalogus te beschrijven. Voor datastations zijn de volgende klassen het meest relevant.
De catalogus: dcat:Catalog
Een dcat:Catalog vertegenwoordigt het datastation zelf als een verzameling van datasets en dataservices. De catalogus fungeert als het toegangspunt voor gebruikers en systemen die willen weten welke data beschikbaar is. De catalogus beschrijft niet alleen welke datasets er zijn, maar ook via welke services deze toegankelijk zijn. De volgende eigenschappen zijn essentieel voor een catalogus:
| Eigenschap | Beschrijving | Voorbeeld |
|---|---|---|
dct:title |
Naam van de catalogus | "Data Catalogus Ziekenhuis X" |
dct:description |
Beschrijving van de inhoud | "Catalogus met klinische datasets voor onderzoek" |
dct:publisher |
Organisatie die de catalogus publiceert | Ziekenhuis X |
dcat:dataset |
Verwijzingen naar datasets | Links naar beschikbare datasets |
dcat:service |
Verwijzingen naar dataservices | Links naar API-endpoints |
In de praktijk kan één organisatie meerdere catalogi hebben. Bijvoorbeeld een ziekenhuis kan een catalogus hebben voor beeldvormende data (MRI, CT, PET) en een aparte catalogus voor klinische data uit het EPD.
De dataset: dcat:Dataset
Een dcat:Dataset vertegenwoordigt een logische verzameling van gegevens die als eenheid wordt beschreven en beschikbaar gesteld. De granulariteit van een dataset is niet technisch voorgeschreven, maar wordt bepaald door de organisatie van de dataleverancier en de manier waarop onderzoekers de data willen kunnen vinden en aanvragen. Datasets kunnen bijvoorbeeld worden georganiseerd:
- Per ziektebeeld: "COVID-19 opnamegegevens 2020-2024"
- Per domein: "Cardiologie patiëntgegevens"
- Per onderzoeksproject: "IMPROVE-studie diabetes cohort"
Voor datasets in de gezondheidszorg zijn de volgende metadata-elementen in het bijzonder relevant:
| Categorie | HealthDCAT-AP elementen | Doel |
|---|---|---|
| Populatie | numberOfUniqueIndividuals, numberOfRecords, populationCoverage, minTypicalAge, maxTypicalAge |
Inzicht in omvang en samenstelling |
| Terminologie | hasCodingSystem |
Welke coderingssystemen worden gebruikt (SNOMED, ICD-10, LOINC) |
| Juridisch | accessRights, applicableLegislation |
Toegangsvoorwaarden en wetgeving (EHDS, AVG) |
| Kwaliteit | hasQualityAnnotation |
Verwijzing naar kwaliteitsrapportage |
| Privacy | retentionPeriod, hdab |
Bewaartermijn en verantwoordelijke instantie |
De dataset serie: dcat:DatasetSeries
De klasse dcat:DatasetSeries is bedoeld voor het beschrijven van verzamelingen van gerelateerde datasets die afzonderlijk worden gepubliceerd maar logisch samenhangen. Dit is bijzonder geschikt voor:
- Periodieke cohorten: Jaarlijks gepubliceerde extracties van dezelfde patiëntpopulatie
- Versies van onderzoeksdatasets: Opeenvolgende versies van een cohort na correcties of uitbreidingen
- Longitudinale data: Meetmomenten in een follow-up studie
De serie definieert gemeenschappelijke metadata (zoals toegangsrechten en coderingssystemen), terwijl individuele datasets hun specifieke kenmerken behouden (zoals het aantal records en de temporele dekking).
De distributie: dcat:Distribution
Een dcat:Distribution beschrijft een concrete realisatie van een dataset: hoe de data daadwerkelijk kan worden verkregen of benaderd. Eén dataset kan meerdere distributies hebben:
| Type distributie | Beschrijving | Typisch gebruik |
|---|---|---|
| Bulk export | Eenmalige download van de volledige dataset | Onderzoek in een centrale BVO |
| API-toegang | Programmatische toegang via een service | Federatieve analyse |
| Synthetische sample | Representatieve testdata | Ontwikkeling en validatie van algoritmes |
| View/subset | Voorgedefinieerde selectie | Specifiek onderzoeksdoel |
De distributie specificeert technische details zoals het bestandsformaat (dcat:mediaType), de toegangs-URL (dcat:accessURL), en eventueel een verwijzing naar de onderliggende dataservice.
De dataservice: dcat:DataService
Een dcat:DataService beschrijft een operationele service die toegang biedt tot datasets. Waar een distributie een statische momentopname of downloadbaar bestand vertegenwoordigt, biedt een dataservice dynamische toegang tot de onderliggende data. De service kan realtime queries uitvoeren, actuele data opvragen, of zelfs berekeningen uitvoeren zonder dat de data het datastation verlaat. Verschillende typen dataservices zijn mogelijk, bijvoorbeeld:
| Type dataservice | Voorbeeld | Beschrijving |
|---|---|---|
| FHIR API | https://fhir.example.org/ |
REST API volgens HL7 FHIR standaard |
| OMOP query service | SQL-interface voor OMOP-CDM | Gestandaardiseerde queries op OMOP-database |
| DICOM WADO-RS | Web access voor medische beelden | Ophalen van beelden via web protocol |
| Federatief endpoint | KIK-V of PLUGIN-node | Ontvangst en uitvoering van algoritmes |
Voor automatische verwerking door systemen is het essentieel dat de dataservice duidelijk maakt hoe deze benaderd kan worden. Dit wordt gedaan via:
dcat:endpointURL: Het basisadres van de servicedcat:endpointDescription: Link naar de technische documentatie (bijv. OpenAPI specificatie of FHIR CapabilityStatement)dct:conformsTo: De standaard waaraan de service voldoet
3.3.3. Statische versus dynamische databronnen
Een belangrijk onderscheid bij het modelleren van databronnen is het verschil tussen statische en dynamische databronnen. Dit onderscheid heeft directe gevolgen voor hoe metadata wordt beheerd en hoe versiebeheer wordt toegepast.
Statische databronnen: cohorten en extracties
Statische databronnen zijn datasets die op een bepaald moment zijn gedefinieerd en geëxtraheerd. De data verandert na extractie niet meer, wat zorgt voor reproduceerbaarheid van onderzoeksresultaten. Dit type databron is gebruikelijk bij onderzoeksprojecten waar een vaste populatie en observatieperiode worden gedefinieerd. Typische voorbeelden van statische databronnen zijn:
- Onderzoekscohorten: Een vooraf gedefinieerde groep patiënten voor een specifieke studie
- Periodieke snapshots: Jaarlijkse of kwartaal-extracties van een bronsysteem
- Geanonimiseerde datasets: Eenmalig gegenereerde datasets voor open onderzoek
Voor statische databronnen is expliciet versiebeheer essentieel:
| Eigenschap | Gebruik | Voorbeeld |
|---|---|---|
dcat:version |
Versienummer van de dataset | "2024.1" |
dct:issued |
Datum van publicatie | "2024-03-15" |
dct:modified |
Datum van laatste wijziging | "2024-03-20" |
dcat:inSeries |
Koppeling aan een serie | Link naar de overkoepelende DatasetSeries |
dcat:prev |
Verwijzing naar vorige versie | Link naar vorige dataset |
De DatasetSeries klasse is bijzonder nuttig voor statische databronnen wanneer:
- Er periodiek nieuwe versies van dezelfde soort data worden gepubliceerd
- Onderzoekers de mogelijkheid moeten hebben om specifieke versies te selecteren
- Er gemeenschappelijke metadata is die op serie-niveau kan worden gedefinieerd
Dynamische databronnen: actieve databases
Dynamische databronnen zijn databases die continu worden bijgewerkt, zoals EPD-systemen, OMOP-CDM databases of XNAT-omgevingen. Het is hier niet zinvol om bij elke data-wijziging een nieuwe versie aan te maken.
Voor dynamische databronnen adviseren we de volgende aanpak:
| Aspect | Aanbeveling |
|---|---|
| De database als geheel | Beschrijf als dcat:Dataset met dcat:accrualPeriodicity om de update-frequentie aan te geven |
| Versiebeheer | Gebruik dcat:version alleen voor structurele wijzigingen (bijv. upgrade van OMOP CDM v5.3 naar v5.4) |
| Temporele dekking | Gebruik dct:temporal met alleen een startdatum (geen einddatum) om aan te geven dat de data actief groeit |
| Statistieken | Update periodiek de populatiestatistieken (numberOfRecords, numberOfUniqueIndividuals) met bijbehorende dct:modified |
| Schema-documentatie | Beschrijf via dcat:Distribution met verwijzing naar schema-documentatie |
Praktijkvoorbeeld: versioning strategie
Een ziekenhuis heeft een OMOP-CDM database die dagelijks wordt bijgewerkt met nieuwe patiëntgegevens. De metadata wordt als volgt beheerd:
- Schema-versie:
dcat:version= "OMOP CDM v5.4" – wijzigt alleen bij upgrade van het datamodel - Update-frequentie:
dcat:accrualPeriodicity= DAILY – geeft aan dat data dagelijks wordt toegevoegd - Statistieken:
numberOfRecordsennumberOfUniqueIndividualsworden maandelijks bijgewerkt, metdct:modifiedop de bijgewerkte datum - Temporele dekking:
dct:temporalmet startdatum 2018-01-01 en geen einddatum
3.3.4. Metadata voor primair versus secundair gebruik
Bij het beschrijven van metadata is het belangrijk om onderscheid te maken tussen primair en secundair gebruik van gegevens. Dit onderscheid beïnvloedt welke metadata-elementen de nadruk krijgen.
Primair gebruik: focus op de service
Voor primair gebruik (directe zorgverlening) blijven bronsystemen leidend. In DCAT wordt vooral beschreven wat er beschikbaar is en hoe het kan worden geraadpleegd. Omdat niet voor elke individuele patiënt een dataset wordt aangemaakt, ligt de nadruk op het beschrijven van het bronsysteem en de bijbehorende dataservice.
De dcat:DataService speelt hier een centrale rol. Het is van belang dat de service goed wordt beschreven, zodat een vragend systeem (bijvoorbeeld een ander EPD of een zorgapplicatie) de data correct kan opvragen en gebruiken.
Secundair gebruik: focus op inhoud en context
Voor secundair gebruik (onderzoek, beleid, innovatie) verschuift de nadruk naar de inhoud en kwaliteit van de data, evenals de context waarin de gegevens zijn verzameld. HealthDCAT-AP maakt expliciete modellering van deze aspecten mogelijk:
| Aspect | HealthDCAT-AP elementen |
|---|---|
| Toegangsrechten | NON_PUBLIC, RESTRICTED, PUBLIC |
| Wetgeving | Verwijzingen naar EHDS, AVG, nationale wetten |
| Doelbinding | dpv:hasPurpose (bijv. academisch onderzoek, volksgezondheid) |
| Rechtmatige grondslag | dpv:hasLegalBasis (bijv. publiek belang, toestemming) |
| Kwaliteit | Verwijzing naar kwaliteitsrapportages via dqv:hasQualityAnnotation |
| HDAB | healthdcatap:hdab – de verantwoordelijke Health Data Access Body |
Endpoint descriptions voor automatische verwerking
Wanneer een catalogus browser of federatieve query-engine automatisch de mogelijkheden van een dataservice wil bepalen, moet bekend zijn welk type specificatie de dcat:endpointDescription bevat. Een FHIR CapabilityStatement heeft bijvoorbeeld een andere structuur dan een OpenAPI specificatie, en systemen moeten weten hoe ze deze moeten interpreteren. Door het type specificatie expliciet te maken met dct:conformsTo, kan een systeem de juiste keuze maken en de beschikbare mogelijkheden ontdekken.
Combineren van endpointDescription met conformsTo
Combineer dcat:endpointDescription altijd met dct:conformsTo om het type specificatie expliciet te maken:
<https://example.org/service/fhir-api> a dcat:DataService ;
dcat:endpointURL <https://fhir.example.org/> ;
dcat:endpointDescription <https://fhir.example.org/metadata> ;
# Expliciet aangeven dat het een FHIR CapabilityStatement betreft
dct:conformsTo <http://hl7.org/fhir/StructureDefinition/CapabilityStatement> .
<https://example.org/service/rest-api> a dcat:DataService ;
dcat:endpointURL <https://api.example.org/> ;
dcat:endpointDescription <https://api.example.org/openapi.json> ;
# Expliciet aangeven dat het een OpenAPI specificatie betreft
dct:conformsTo <https://spec.openapis.org/oas/v3.1.0> .
3.3.5. Voorbeelden van metadata voor een datastation
De volgende voorbeelden illustreren hoe verschillende typen databronnen in een datastation kunnen worden beschreven met DCAT en HealthDCAT-AP. Elk voorbeeld demonstreert specifieke aspecten van de standaard.
Voorbeeld 1: FHIR-systeem (dynamische databron)
Een FHIR-systeem in een ziekenhuis kan op verschillende manieren worden ontsloten. In dit voorbeeld wordt een COVID-19 dataset beschreven die dynamisch groeit naarmate er nieuwe opnames worden geregistreerd.
Kenmerken van dit voorbeeld:
- Dynamische dataset met dagelijkse updates
- Secundair gebruik met beperkte toegang
- Volledige HealthDCAT-AP metadata inclusief populatiekenmerken en coderingssystemen
- Kwaliteitsrapportage gekoppeld via DQV
@prefix dcat: <http://www.w3.org/ns/dcat#> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix dcatap: <http://data.europa.eu/r5r/> .
@prefix dpv: <https://w3id.org/dpv#> .
@prefix dqv: <http://www.w3.org/ns/dqv#> .
@prefix oa: <http://www.w3.org/ns/oa#> .
@prefix healthdcatap: <https://healthdcat-ap.eu/ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
# De catalogus: vertegenwoordigt het datastation
<https://example.org/catalog/fhir> a dcat:Catalog ;
dct:title "Catalogus – FHIR (voorbeeld)"@nl ;
dct:description "Catalogus met FHIR-gebaseerde datasets van Ziekenhuis X."@nl ;
dcat:dataset <https://example.org/dataset/fhir-covid-admissions> ;
dcat:service <https://example.org/service/fhir-api> .
# De dataset: COVID-19 opnamegegevens
<https://example.org/dataset/fhir-covid-admissions> a dcat:Dataset ;
dct:title "Dataset – COVID-19 opnames (FHIR, secundair gebruik)"@nl ;
dct:description "Dynamische dataset met COVID-19 opnamegegevens uit het EPD-systeem van Ziekenhuis X. Bevat demografische gegevens, opname-informatie, diagnoses en behandelingen."@nl ;
# Dynamische dataset: update frequentie in plaats van versie per wijziging
dcat:accrualPeriodicity <http://publications.europa.eu/resource/authority/frequency/DAILY> ;
# Toegangsrechten en toepasselijke wetgeving
dct:accessRights <http://publications.europa.eu/resource/authority/access-right/RESTRICTED> ;
dcatap:applicableLegislation
<http://data.europa.eu/eli/reg/2025/327/oj>, # EHDS Regulation
<http://data.europa.eu/eli/reg/2016/679/oj> ; # AVG/GDPR
# Gezondheidscategorie en verantwoordelijke HDAB
healthdcatap:healthCategory <https://healthdcat-ap.eu/vocab/health-category/EHRS> ;
healthdcatap:hdab <https://hdab.nl/> ;
# Populatiekenmerken (periodiek bijgewerkt)
healthdcatap:numberOfUniqueIndividuals "85000"^^xsd:nonNegativeInteger ;
healthdcatap:numberOfRecords "430000"^^xsd:nonNegativeInteger ;
healthdcatap:populationCoverage "Opnames van volwassen patiënten met bevestigde COVID-19 diagnose in Ziekenhuis X."@nl ;
healthdcatap:minTypicalAge "18"^^xsd:nonNegativeInteger ;
healthdcatap:maxTypicalAge "95"^^xsd:nonNegativeInteger ;
# Temporele dekking: groeiende dataset zonder einddatum
dct:temporal [
a dct:PeriodOfTime ;
dcat:startDate "2020-03-01"^^xsd:date
] ;
# Gebruikte coderingssystemen voor semantische interoperabiliteit
healthdcatap:hasCodingSystem
<https://www.wikidata.org/wiki/Q45127>, # ICD-10
<https://www.wikidata.org/wiki/Q1753883>, # SNOMED CT
<https://www.wikidata.org/wiki/Q502480> ; # LOINC
# Doelbinding en rechtmatige grondslag (Data Privacy Vocabulary)
dpv:hasPurpose dpv:AcademicResearch, dpv:PublicHealth ;
dpv:hasLegalBasis dpv:PublicInterest ;
dpv:hasPersonalData dpv:HealthData ;
# Bewaartermijn
healthdcatap:retentionPeriod [
a dct:PeriodOfTime ;
dcat:startDate "2020-03-01"^^xsd:date ;
dcat:endDate "2030-03-01"^^xsd:date
] ;
# Kwaliteitsrapportage
dqv:hasQualityAnnotation <https://example.org/qualitycertificate/fhir-covid-dq-report> ;
dcat:distribution <https://example.org/distribution/fhir-covid-bulk> .
# Kwaliteitsrapport
<https://example.org/qualitycertificate/fhir-covid-dq-report> a dqv:QualityCertificate ;
dct:title "Kwaliteitsrapport – COVID-19 opnames (FHIR)"@nl ;
oa:hasTarget <https://example.org/dataset/fhir-covid-admissions> ;
oa:hasBody <https://example.org/docs/quality/fhir-covid-admissions-quality-report.pdf> .
# Distributie: hoe de data kan worden verkregen
<https://example.org/distribution/fhir-covid-bulk> a dcat:Distribution ;
dct:title "Distributie – FHIR bulk export (via aanvraag)"@nl ;
dct:description "Bulk export van FHIR resources. Toegang via formele aanvraagprocedure."@nl ;
dcat:accessURL <https://example.org/access-request/fhir-covid-admissions> ;
dcat:accessService <https://example.org/service/fhir-api> .
# Dataservice: de FHIR API
<https://example.org/service/fhir-api> a dcat:DataService ;
dct:title "Dataservice – FHIR API Ziekenhuis X"@nl ;
dct:description "HL7 FHIR R4 API voor gestructureerde patiëntgegevens."@nl ;
dct:conformsTo <http://hl7.org/fhir/R4> ;
dcat:endpointURL <https://fhir.ziekenhuisx.nl/> ;
dcat:endpointDescription <https://fhir.ziekenhuisx.nl/metadata> ;
dcat:servesDataset <https://example.org/dataset/fhir-covid-admissions> .
Voorbeeld 2: XNAT-omgeving met DICOM-beelden (dynamische databron)
Een XNAT-omgeving bevat medische beelden die regelmatig worden aangevuld. Dit voorbeeld toont hoe beeldvormende data wordt beschreven, inclusief afgeleide producten zoals segmentaties.
Kenmerken van dit voorbeeld:
- Imaging-specifieke metadata
- Meerdere distributies voor dezelfde dataset (originele beelden en afgeleide segmentaties)
- Endpoint description met verwijzing naar OpenAPI specificatie
@prefix dcat: <http://www.w3.org/ns/dcat#> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix dcatap: <http://data.europa.eu/r5r/> .
@prefix dpv: <https://w3id.org/dpv#> .
@prefix dqv: <http://www.w3.org/ns/dqv#> .
@prefix oa: <http://www.w3.org/ns/oa#> .
@prefix healthdcatap: <https://healthdcat-ap.eu/ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
<https://example.org/catalog/xnat> a dcat:Catalog ;
dct:title "Catalogus – Beeldvormende data (XNAT)"@nl ;
dct:description "Catalogus met DICOM-collecties uit de XNAT-omgeving van het radiologie-onderzoekscentrum."@nl ;
dcat:dataset <https://example.org/dataset/dicom-neuro-mri> .
<https://example.org/dataset/dicom-neuro-mri> a dcat:Dataset ;
dct:title "Dataset – Neurologie MRI collectie"@nl ;
dct:description "Dynamische collectie van neurologische MRI-scans voor onderzoek naar neurodegeneratieve aandoeningen. Bevat T1, T2 en FLAIR sequenties."@nl ;
# Wekelijkse toevoegingen van nieuwe scans
dcat:accrualPeriodicity <http://publications.europa.eu/resource/authority/frequency/WEEKLY> ;
# Niet-publieke toegang
dct:accessRights <http://publications.europa.eu/resource/authority/access-right/NON_PUBLIC> ;
dcatap:applicableLegislation
<http://data.europa.eu/eli/reg/2025/327/oj>,
<http://data.europa.eu/eli/reg/2016/679/oj> ;
# Imaging-specifieke gezondheidscategorie
healthdcatap:healthCategory <https://healthdcat-ap.eu/vocab/health-category/EHRS> ;
healthdcatap:hdab <https://hdab.nl/> ;
healthdcatap:healthTheme <https://healthdcat-ap.eu/vocab/health-theme/NONCOMMUNICABLE_DISEASES> ;
# Populatiekenmerken
healthdcatap:numberOfUniqueIndividuals "1200"^^xsd:nonNegativeInteger ;
healthdcatap:numberOfRecords "4800"^^xsd:nonNegativeInteger ;
healthdcatap:populationCoverage "Patiënten met neurologische indicatie; selectie op basis van studie/protocol."@nl ;
# Conformiteit aan DICOM standaard
dct:conformsTo <https://www.wikidata.org/wiki/Q81095> ;
# Bewaartermijn
healthdcatap:retentionPeriod [
a dct:PeriodOfTime ;
dcat:startDate "2024-01-01"^^xsd:date ;
dcat:endDate "2029-01-01"^^xsd:date
] ;
# Kwaliteitscertificaat
dqv:hasQualityAnnotation <https://example.org/qualitycertificate/xnat-neuro-mri-qc> ;
# Twee distributies: originele beelden en afgeleide producten
dcat:distribution
<https://example.org/distribution/xnat-dicom-bulk>,
<https://example.org/distribution/xnat-derived-segmentation> .
<https://example.org/qualitycertificate/xnat-neuro-mri-qc> a dqv:QualityCertificate ;
dct:title "Kwaliteitscertificaat – Neurologie MRI"@nl ;
oa:hasTarget <https://example.org/dataset/dicom-neuro-mri> ;
oa:hasBody <https://example.org/docs/quality/xnat-neuro-mri-qc.pdf> .
# Distributie voor originele DICOM-beelden
<https://example.org/distribution/xnat-dicom-bulk> a dcat:Distribution ;
dct:title "Distributie – DICOM bulk set"@nl ;
dct:description "Originele DICOM-bestanden met volledige metadata headers."@nl ;
dcat:accessURL <https://example.org/access-request/dicom-neuro-mri> ;
dcat:mediaType <https://www.iana.org/assignments/media-types/application/dicom> ;
dcat:accessService <https://example.org/service/xnat> .
# Distributie voor afgeleide segmentaties
<https://example.org/distribution/xnat-derived-segmentation> a dcat:Distribution ;
dct:title "Distributie – Afgeleide segmentaties"@nl ;
dct:description "Automatisch gegenereerde hersenstructuur segmentaties (FreeSurfer)."@nl ;
dcat:accessURL <https://example.org/access-request/dicom-neuro-mri/derived> ;
dpv:hasPurpose dpv:AcademicResearch ;
dpv:hasLegalBasis dpv:PublicInterest ;
dcat:accessService <https://example.org/service/xnat> .
# De XNAT dataservice met OpenAPI documentatie
<https://example.org/service/xnat> a dcat:DataService ;
dct:title "Dataservice – XNAT REST API"@nl ;
dct:description "XNAT REST API voor programmatische toegang tot de beeldcollectie."@nl ;
dcat:endpointURL <https://xnat.ziekenhuisx.nl/> ;
dcat:endpointDescription <https://xnat.ziekenhuisx.nl/xapi/openapi.json> ;
dct:conformsTo <https://spec.openapis.org/oas/v3.0.0> ;
dcat:servesDataset <https://example.org/dataset/dicom-neuro-mri> .
Voorbeeld 3: OMOP-CDM database (dynamische databron)
Een OMOP-CDM database vormt een gestandaardiseerde representatie van klinische data. Dit voorbeeld toont hoe een diabetes-cohort binnen een OMOP-database wordt beschreven.
Kenmerken van dit voorbeeld:
- Schema-versioning (OMOP CDM versie)
- Meerdere distributies met verschillende toegangsvormen
- Verwijzing naar specifieke OMOP concept codes
@prefix dcat: <http://www.w3.org/ns/dcat#> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix dcatap: <http://data.europa.eu/r5r/> .
@prefix dpv: <https://w3id.org/dpv#> .
@prefix healthdcatap: <https://healthdcat-ap.eu/ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
<https://example.org/catalog/omop> a dcat:Catalog ;
dct:title "Catalogus – OMOP-CDM Ziekenhuis X"@nl ;
dct:description "Catalogus met OMOP-CDM gebaseerde datasets voor observationeel onderzoek."@nl ;
dcat:dataset <https://example.org/dataset/omop-diabetes> .
<https://example.org/dataset/omop-diabetes> a dcat:Dataset ;
dct:title "Dataset – Type 2 diabetes cohort (OMOP-CDM)"@nl ;
dct:description "Dynamische dataset met gegevens van patiënten met type 2 diabetes in OMOP-CDM formaat. Inclusief medicatie, lab-uitslagen, consulten en comorbiditeiten."@nl ;
# Dagelijkse ETL-updates
dcat:accrualPeriodicity <http://publications.europa.eu/resource/authority/frequency/DAILY> ;
# Schema-versie: wijzigt alleen bij CDM upgrade
dcat:version "OMOP CDM v5.4"^^xsd:string ;
dct:accessRights <http://publications.europa.eu/resource/authority/access-right/RESTRICTED> ;
dcatap:applicableLegislation
<http://data.europa.eu/eli/reg/2025/327/oj>,
<http://data.europa.eu/eli/reg/2016/679/oj> ;
healthdcatap:healthCategory <https://healthdcat-ap.eu/vocab/health-category/EHRS> ;
healthdcatap:hdab <https://hdab.nl/> ;
# Populatiekenmerken
healthdcatap:numberOfUniqueIndividuals "25000"^^xsd:nonNegativeInteger ;
healthdcatap:numberOfRecords "375000"^^xsd:nonNegativeInteger ;
healthdcatap:populationCoverage "Volwassenen met type 2 diabetes; inclusie op basis van OMOP concept sets voor diabetes diagnose en/of medicatie."@nl ;
healthdcatap:minTypicalAge "40"^^xsd:nonNegativeInteger ;
healthdcatap:maxTypicalAge "70"^^xsd:nonNegativeInteger ;
# Coderingssystemen in de OMOP-CDM
healthdcatap:hasCodingSystem
<https://www.wikidata.org/wiki/Q1753883>, # SNOMED CT
<https://www.wikidata.org/wiki/Q45127>, # ICD-10
<https://www.wikidata.org/wiki/Q502480> ; # LOINC
dpv:hasPurpose dpv:AcademicResearch ;
dpv:hasLegalBasis dpv:Consent, dpv:PublicInterest ;
dpv:hasPersonalData dpv:HealthData ;
# Verwijzing naar specifieke codes in de coderingssystemen
healthdcatap:hasCodeValues
<https://icd.who.int/browse10/2019/en#/E11>, # Type 2 diabetes mellitus (ICD-10)
<https://loinc.org/LA10552-0>, # Diabetes Type 2 (LOINC)
<http://purl.bioontology.org/ontology/SNOMEDCT/372567009> ; # Metformin (SNOMED CT)
# Temporele dekking: actief groeiende database
dct:temporal [
a dct:PeriodOfTime ;
dcat:startDate "2018-01-01"^^xsd:date
] ;
dcat:distribution
<https://example.org/distribution/omop-diabetes-sqlview>,
<https://example.org/distribution/omop-diabetes-export> .
# SQL view voor federatieve toegang
<https://example.org/distribution/omop-diabetes-sqlview> a dcat:Distribution ;
dct:title "Distributie – SQL view (federatief)"@nl ;
dct:description "Beveiligde SQL view voor federatieve queries binnen een geautoriseerde omgeving."@nl ;
dcat:accessURL <https://example.org/access-request/omop-diabetes/sql> ;
dcat:accessService <https://example.org/service/omop-sql> .
# Export voor centrale analyse
<https://example.org/distribution/omop-diabetes-export> a dcat:Distribution ;
dct:title "Distributie – Data export (centraal)"@nl ;
dct:description "Gepseudonimiseerde export voor verwerking in een centrale BVO."@nl ;
dcat:accessURL <https://example.org/access-request/omop-diabetes/export> ;
dpv:hasPurpose dpv:AcademicResearch ;
dpv:hasLegalBasis dpv:PublicInterest ;
dcat:accessService <https://example.org/service/omop-sql> .
<https://example.org/service/omop-sql> a dcat:DataService ;
dct:title "Dataservice – OMOP Query Service"@nl ;
dct:description "SQL-interface voor gestandaardiseerde queries op de OMOP-CDM database."@nl ;
dcat:endpointURL <https://data.ziekenhuisx.nl/omop/query> ;
dcat:servesDataset <https://example.org/dataset/omop-diabetes> .
Voorbeeld 4: Onderzoekscohort als DatasetSeries (statische databron)
Voor onderzoekscohorten die periodiek worden gepubliceerd is dcat:DatasetSeries bijzonder geschikt. Dit voorbeeld toont een jaarlijks gepubliceerd hartfalen-cohort met meerdere versies.
Kenmerken van dit voorbeeld:
- Gemeenschappelijke metadata op serie-niveau
- Individuele versies met specifieke populatiestatistieken
- Relaties tussen versies via
dcat:prev,dcat:first,dcat:last
@prefix dcat: <http://www.w3.org/ns/dcat#> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix dcatap: <http://data.europa.eu/r5r/> .
@prefix dpv: <https://w3id.org/dpv#> .
@prefix healthdcatap: <https://healthdcat-ap.eu/ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
<https://example.org/catalog/research> a dcat:Catalog ;
dct:title "Catalogus – Onderzoekscohorten"@nl ;
dct:description "Catalogus met voorgedefinieerde onderzoekscohorten voor secundair gebruik."@nl ;
dcat:dataset <https://example.org/dataset-series/heart-failure-cohort> .
# De DatasetSeries: gemeenschappelijke metadata voor alle versies
<https://example.org/dataset-series/heart-failure-cohort> a dcat:DatasetSeries ;
dct:title "Cohort serie – Hartfalen patiënten"@nl ;
dct:description "Jaarlijks gepubliceerd cohort van patiënten met hartfalen, geëxtraheerd uit het EPD-systeem. Elke versie bevat een snapshot van patiënten die aan de inclusiecriteria voldoen tot en met het voorgaande jaar."@nl ;
# Periodieke publicatie
dcat:accrualPeriodicity <http://publications.europa.eu/resource/authority/frequency/ANNUAL> ;
dct:accessRights <http://publications.europa.eu/resource/authority/access-right/RESTRICTED> ;
dcatap:applicableLegislation
<http://data.europa.eu/eli/reg/2025/327/oj>,
<http://data.europa.eu/eli/reg/2016/679/oj> ;
healthdcatap:healthCategory <https://healthdcat-ap.eu/vocab/health-category/EHRS> ;
healthdcatap:hdab <https://hdab.nl/> ;
healthdcatap:healthTheme <https://healthdcat-ap.eu/vocab/health-theme/NONCOMMUNICABLE_DISEASES> ;
healthdcatap:hasCodingSystem
<https://www.wikidata.org/wiki/Q1753883>, # SNOMED CT
<https://www.wikidata.org/wiki/Q45127> ; # ICD-10
dpv:hasPurpose dpv:AcademicResearch ;
dpv:hasLegalBasis dpv:PublicInterest ;
dpv:hasPersonalData dpv:HealthData ;
# Navigatie door de serie
dcat:first <https://example.org/dataset/heart-failure-cohort-2023> ;
dcat:last <https://example.org/dataset/heart-failure-cohort-2025> ;
dcat:seriesMember
<https://example.org/dataset/heart-failure-cohort-2023>,
<https://example.org/dataset/heart-failure-cohort-2024>,
<https://example.org/dataset/heart-failure-cohort-2025> .
# Versie 2023: eerste publicatie
<https://example.org/dataset/heart-failure-cohort-2023> a dcat:Dataset ;
dct:title "Cohort – Hartfalen 2023"@nl ;
dct:description "Eerste versie van het hartfalen cohort, bevat patiënten t/m 2022."@nl ;
dcat:version "2023.1"^^xsd:string ;
dct:issued "2023-03-15"^^xsd:date ;
dcat:inSeries <https://example.org/dataset-series/heart-failure-cohort> ;
healthdcatap:numberOfUniqueIndividuals "5200"^^xsd:nonNegativeInteger ;
healthdcatap:numberOfRecords "78000"^^xsd:nonNegativeInteger ;
dct:temporal [
a dct:PeriodOfTime ;
dcat:startDate "2018-01-01"^^xsd:date ;
dcat:endDate "2022-12-31"^^xsd:date
] ;
dcat:distribution <https://example.org/distribution/heart-failure-2023-parquet> .
# Versie 2024: uitgebreid cohort
<https://example.org/dataset/heart-failure-cohort-2024> a dcat:Dataset ;
dct:title "Cohort – Hartfalen 2024"@nl ;
dct:description "Tweede versie van het hartfalen cohort, uitgebreid met patiënten uit 2023."@nl ;
dcat:version "2024.1"^^xsd:string ;
dct:issued "2024-03-15"^^xsd:date ;
dcat:inSeries <https://example.org/dataset-series/heart-failure-cohort> ;
dcat:prev <https://example.org/dataset/heart-failure-cohort-2023> ;
healthdcatap:numberOfUniqueIndividuals "6100"^^xsd:nonNegativeInteger ;
healthdcatap:numberOfRecords "91500"^^xsd:nonNegativeInteger ;
dct:temporal [
a dct:PeriodOfTime ;
dcat:startDate "2018-01-01"^^xsd:date ;
dcat:endDate "2023-12-31"^^xsd:date
] ;
dcat:distribution <https://example.org/distribution/heart-failure-2024-parquet> .
# Versie 2025: meest recente versie
<https://example.org/dataset/heart-failure-cohort-2025> a dcat:Dataset ;
dct:title "Cohort – Hartfalen 2025"@nl ;
dct:description "Derde versie van het hartfalen cohort, uitgebreid met patiënten uit 2024."@nl ;
dcat:version "2025.1"^^xsd:string ;
dct:issued "2025-03-15"^^xsd:date ;
dcat:inSeries <https://example.org/dataset-series/heart-failure-cohort> ;
dcat:prev <https://example.org/dataset/heart-failure-cohort-2024> ;
healthdcatap:numberOfUniqueIndividuals "7300"^^xsd:nonNegativeInteger ;
healthdcatap:numberOfRecords "109500"^^xsd:nonNegativeInteger ;
dct:temporal [
a dct:PeriodOfTime ;
dcat:startDate "2018-01-01"^^xsd:date ;
dcat:endDate "2024-12-31"^^xsd:date
] ;
dcat:distribution <https://example.org/distribution/heart-failure-2025-parquet> .
# Distributies in Parquet formaat
<https://example.org/distribution/heart-failure-2023-parquet> a dcat:Distribution ;
dct:title "Distributie – Hartfalen 2023 (Parquet)"@nl ;
dcat:accessURL <https://example.org/access-request/heart-failure-2023> ;
dcat:mediaType <https://www.iana.org/assignments/media-types/application/vnd.apache.parquet> .
<https://example.org/distribution/heart-failure-2024-parquet> a dcat:Distribution ;
dct:title "Distributie – Hartfalen 2024 (Parquet)"@nl ;
dcat:accessURL <https://example.org/access-request/heart-failure-2024> ;
dcat:mediaType <https://www.iana.org/assignments/media-types/application/vnd.apache.parquet> .
<https://example.org/distribution/heart-failure-2025-parquet> a dcat:Distribution ;
dct:title "Distributie – Hartfalen 2025 (Parquet)"@nl ;
dcat:accessURL <https://example.org/access-request/heart-failure-2025> ;
dcat:mediaType <https://www.iana.org/assignments/media-types/application/vnd.apache.parquet> .
Voorbeeld 5: Validatieset voor federated learning (statische databron zonder serie)
Een gestandaardiseerde validatieset die door meerdere datastations wordt gebruikt om federated learning modellen te testen is een praktisch voorbeeld van een statische databron zonder DatasetSeries.
Kenmerken van dit voorbeeld:
- Centrale validatieset gedistribueerd naar meerdere datastations
- Dataset moet stabiel blijven voor vergelijkbare evaluatieresultaten
- Eenmalig samengesteld voor een specifiek federated learning project
- Gebruikt voor lokale validatie tijdens iteratief modeltraining
@prefix dcat: <http://www.w3.org/ns/dcat#> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix dcatap: <http://data.europa.eu/r5r/> .
@prefix dpv: <https://w3id.org/dpv#> .
@prefix healthdcatap: <https://healthdcat-ap.eu/ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
<https://example.org/catalog/federated-learning> a dcat:Catalog ;
dct:title "Catalogus – Federated learning project"@nl ;
dct:description "Datasets voor een federated learning project over sepsis voorspelling."@nl ;
dcat:dataset <https://example.org/dataset/sepsis-validation-set> .
# Vaste validatieset voor federated learning: geen serie
<https://example.org/dataset/sepsis-validation-set> a dcat:Dataset ;
dct:title "Dataset – Sepsis voorspelling validatieset"@nl ;
dct:description "Gestandaardiseerde validatieset voor een federated learning project over sepsis voorspelling. Deze dataset wordt door alle deelnemende ziekenhuizen gebruikt om lokaal getrainde modellen te evalueren op dezelfde testcases. Bevat 500 ICU-opnames met laboratoriumwaarden, vitale parameters en sepsis-uitkomsten. De dataset is representatief samengesteld uit data van alle deelnemers en blijft ongewijzigd gedurende het project voor vergelijkbaarheid van resultaten."@nl ;
# Vaste versie voor het project
dcat:version "1.0"^^xsd:string ;
dct:issued "2024-09-01"^^xsd:date ;
# Statische dataset: geen updates tijdens projectduur
dcat:accrualPeriodicity <http://publications.europa.eu/resource/authority/frequency/NEVER> ;
# Gepseudonimiseerd, alleen beschikbaar voor projectpartners
dct:accessRights <http://publications.europa.eu/resource/authority/access-right/RESTRICTED> ;
dcatap:applicableLegislation
<http://data.europa.eu/eli/reg/2025/327/oj>,
<http://data.europa.eu/eli/reg/2016/679/oj> ;
healthdcatap:healthCategory <https://healthdcat-ap.eu/vocab/health-category/EHRS> ;
healthdcatap:hdab <https://hdab.nl/> ;
healthdcatap:healthTheme <https://healthdcat-ap.eu/vocab/health-theme/BLOOD_INFECTIONS> ;
# Vaste samenstelling voor reproduceerbare evaluatie
healthdcatap:numberOfUniqueIndividuals "500"^^xsd:nonNegativeInteger ;
healthdcatap:numberOfRecords "12000"^^xsd:nonNegativeInteger ; # 24 uur × 500 patiënten
healthdcatap:populationCoverage "Volwassen IC-patiënten met verdenking op sepsis. Balans tussen positieve en negatieve cases (50/50). Data afkomstig uit 8 deelnemende ziekenhuizen voor representativiteit."@nl ;
healthdcatap:minTypicalAge "18"^^xsd:nonNegativeInteger ;
healthdcatap:maxTypicalAge "90"^^xsd:nonNegativeInteger ;
# Historische periode waaruit data is geselecteerd
dct:temporal [
a dct:PeriodOfTime ;
dcat:startDate "2022-01-01"^^xsd:date ;
dcat:endDate "2023-12-31"^^xsd:date
] ;
# Geharmoniseerde coderingen voor cross-site gebruik
healthdcatap:hasCodingSystem
<https://www.wikidata.org/wiki/Q502480> ; # LOINC
# Conform OMOP-CDM voor interoperabiliteit
dct:conformsTo <https://ohdsi.github.io/CommonDataModel/cdm54.html> ;
dpv:hasPurpose dpv:AcademicResearch ;
dpv:hasLegalBasis dpv:PublicInterest ;
dpv:hasPersonalData dpv:PseudonymizedData ;
dcat:distribution <https://example.org/distribution/sepsis-validation-parquet> .
# Distributie: eenmalige download voor deelnemers
<https://example.org/distribution/sepsis-validation-parquet> a dcat:Distribution ;
dct:title "Distributie – Validatieset (Parquet)"@nl ;
dct:description "Validatieset in OMOP-CDM formaat (Parquet). Beschikbaar voor alle datastations in het consortium."@nl ;
dcat:accessURL <https://example.org/access-request/sepsis-validation> ;
dcat:downloadURL <https://example.org/downloads/sepsis-fl-project/validation-set-v1.0.parquet> ;
dcat:mediaType <https://www.iana.org/assignments/media-types/application/vnd.apache.parquet> ;
dcat:byteSize "8388608"^^xsd:nonNegativeInteger .
3.3.6. Relatie met het vijflagenmodel
De metadata-standaarden die in dit document worden beschreven, sluiten aan bij het vijflagenmodel voor datastations:
- Laag 3 (het datastation): De
dcat:Catalogendcat:Datasetbeschrijvingen vormen de basis voor de catalogusfunctie van het datastation. Het datastation moet haar catalogus publiceren in HealthDCAT-AP formaat. - Laag 4 (orchestratie): De
dcat:DataServicebeschrijvingen maken het mogelijk voor federatieve query-engines en catalogus browsers om automatisch de mogelijkheden van een datastation te ontdekken. - Laag 5 (gebruik): De metadata over toegangsrechten, doelbinding en kwaliteit ondersteunt onderzoekers bij het selecteren van geschikte datasets voor hun onderzoeksvraag.