Geonovum / DCAT-AP-NL30

dcat3-ap-nl
2 stars 2 forks source link

Hoe/waar wordt beschreven of een (van de) dataservice(s) een REST API, GraphQL API, WFS, etc. is? #119

Open dvh opened 1 month ago

dvh commented 1 month ago

Wellicht heb ik het niet goed begrepen en kan dit issue zo gesloten worden, maar het is mij niet helemaal duidelijk hoe dit beschreven wordt.

Concrete usecase als afnemer: ik haal de dcat informatie van een dataset op en wil weten of er ook een REST API voor deze dataset beschikbaar is.

Als dit zo is zou het volgens mij een dataservice moeten zijn waarbij application profile dit aangeeft. De waarde hiervan lijkt echter een URI te zijn; wat zijn dan de correcte waarden voor "REST" of "GraphQL" bijvoorbeeld? Of is er een andere property waarmee dit beschreven wordt?

idevisser commented 1 month ago

Je kunt dit inderdaad bij application profile aangeven. Voor REST kun je verwijzen naar https://gitdocumentatie.logius.nl/publicatie/api/adr/

dvh commented 1 month ago

Hmmm... Dat is een URI, en bovendien naar de REST API Design Rules (die niet voor elke REST API gelden). Als het per se een URI moet zijn dan zou het m.i. een keuze moeten zijn uit een set voorgedefinieerde URI's die verwijzen naar het type API.

Update: Ik heb me er meer in verdiept en begrijp nu dat DCAT niks zegt over de inhoud van de URI's. Wellicht moeten we vanuit Kennisplatform API's, URI's munten die hier gebruikt kunnen worden en als bijsluiter leveren aan aanbieders van datasets. De enige vraag die ik dan nog wel heb is dat conformsTo lijkt te gaan om welke standaarden geïmplementeerd zijn. In die context snap ik de link naar de REST API Design Rules wel. Maar "REST" of "GraphQL" zijn geen standaarden; mogen die hier dan wel in?

idevisser commented 1 month ago

Als een API ergens gespecificeerd is, kun je naar die specificatie verwijzen, met de eigenschap conformsTo. Maar dat gaat niet werken voor GraphQL, dat is ook geen API. Dit profiel is alleen voor het beschrijven van datasets en dataservices.

Bakkej commented 1 month ago

Als we kijken naar de voorbeelden zien we dat dct:conformsTo bij dataservices inderdaad gebruikt wordt om aan te geven wat voor 'soort' dataservice het is. Precies waar @dvh naar zoekt. Specifiek wordt in dit geval aangegeven welk protocol gehanteerd wordt. Dit kan bijvoorbeeld WFS, SOAP, REST of SPARQL zijn maar zeker ook Graphql. Application profile vind ik wel een verwarrende term hiervoor; de term application profile wordt namelijk vaak gebruikt voor een data specificatie of schema, zo ook bij catalog record. In DCAT-AP-VL heet application profile bij een data service dan ook conform aan protocol een hanteren daarbij een codelijst

Er lijkt niet altijd een defacto manier te zijn om protocollen aan te duiden; op data.europa.eu staan al 15 URI's voor WMS en 13 voor WFS. Voor graphql weet ik niet of daar een de facto URI voor is. Ik denk dat het goed is voor de interoperabiliteit als we hier een lijn in trekken.

Voor het Stelselcatalogus DSO is er gekeken om met dct:type dataservices te typeren als 'REST API` of andere 'soorten dataservices'. voorbeelden uit DCAT voor conformsTo: