DCAT-AP-SE Processor är ett verktyg för att automatisera framställningen av metadata enligt metadataspecifikationen DCAT-AP-SE , som används för att publicera information om datamängder och API:er på Sveriges dataportal. Verktyget tar en API-definition som indata och genererar en RDF-fil redo för skördning av dataportalen. Som indata stöds API-definitioner i formaten OpenAPI och RAML, samt separata metadatafiler på JSON-format för OAS2/RAML0.8 eller för API:er utan en formell definition. Detta verktyg är framtaget för att enkelt kunna integreras i en CI/CD-pipeline eller köras fristående.
Sveriges dataportal synliggör information om datamängder (d.v.s. metadata) där själva datamängderna och åtkomstpunkterna finns publicerade hos olika aktörer. Detta sker genom att Sveriges dataportal automatiskt inhämtar, ”skördar”, informationen hos publicerande aktör. En aktör kan vara både från offentlig och privat sektor samt från civilsamhället.
En förutsättning för att dataportalen ska kunna synliggöra bland annat information om datamängder och dess API:er, är att aktörerna upprättar och publicerar informationen enligt en gemensam och standardiserad metadataspecifikation som är tillgänglig för skördning. Den specifikationen heter DCAT-AP-SE och är speciellt framtagen för att passa Sveriges dataportal på grund av den är tillräckligt övergripande för att passa inhämtning av metadata från olika typer av organisationer och datadomäner. Det möjliggör en enhetlig beskrivning av datamängder för att förenkla insamling, sökning och presentation av data på Sveriges dataportal. Följande information innehåller mycket tekniska termer och begrepp. För att kunna tillgodogöra sig informationen bör därför någon med sådan typ av kompetens läsa instruktionen.
I syfte att hjälpa producenter av metadata, som ska skördas till dataportalen, har detta verktyg tagits fram för att kunna införlivas i godtycklig CI/CD driven kedja eller köras separat. Verktyget skapar en metadataspecifikation på RDF-format utifrån en API-definition alternativt separat metadatafil. RDF är det språk som används för att uttrycka metadata om ting på webben. En central egenskap med RDF är att man använder webbadresser (URI:er) för att referera till ting i olika påståenden.
Bygg en container image från koden i detta repository.
När container startas finns ett webbaserat UI och ett REST API tillgängligt att använda efter behov.
Kör med docker:
docker build --no-cache -t "dcatprocessor" .
docker run -it --rm -p 8080:8080 dcatprocessor:latest
Kör med Podman:
podman build --no-cache -t "dcatprocessor" .
podman run -it --rm -p 8080:8080 dcatprocessor:latest
Alternativt, finns det också en experimentell färdigbyggd image för att testa.
docker run ghcr.io/diggsweden/dcat-ap-processor:latest
podman run ghcr.io/diggsweden/dcat-ap-processor:latest
ANVÄND INTE OVAN IMAGE I PRODUKTIONSYFTEN - Den är endast avsedd för lokal test, och inga garantier lämnas på säkerhetsuppdateringar med mera.
Det finns stöd för formaten OpenAPI eller RAML.
- OpenAPI 3.x tillägg av metadata sker via extensions
Lägg till en extension x-dcat och underliggande metadata hanteras. - RAML1.x tillägg av metadata sker via annotations
Definiera en annotationType och använd den sedan. - OAS2.x och RAML0.8 tillägg av metadata sker via separat metadatafil på json format.
Verktyget kan användas på följande sätt.
Starta docker container, öppna browser till http://localhost:8080
Det finns val för att:
- skicka in en sträng med API-definitionen.
- bifoga en fil med API-definitionen.
- ange en katalog som håller flera API-definitioner.
Verktyget levererar resultatet som svar på sidan.
Anropa endpoints med valfritt verktyg. I utveckling har vi använt curl från git bash, t.ex:
curl "http://localhost:8080/dcat-generation/files/?dir=<path-to-your-folder>"
Vid lyckat anrop kommer en XML med genererad RFD att returneras.
Jenkins pipeline exempel Jenkinsfile.
Vid användning av CLI kan enstaka filer pekas ut ( -f ) eller en hel mapp ( -d )
Bygg en java JAR fil.
mvn clean package -DskipTests
Konvertera en specifikationsfil och få DCAT-data till stdout:
java -jar dcat-ap-processor-0.0.3-SNAPSHOT.jar -f FIL
Konvertera en katalog med specifikationsfiler och få DCAT-data till stdout:
java -jar dcat-ap-processor-0.0.3-SNAPSHOT.jar -d KATALOG
Sekvensdiagram över flödet i verktyget.

REST API:n för verktyget, följande två är de som finns att använda:
"/dcat-generation/files/" - Skickar man in directory (dir) som sedan skickas vidare till Managern för hantering.
"/dcat-generation/web/" - Är endpointen för Web-UI som skickar med antingen en sträng med hela apidefinitionen eller en lista med filer som sedan skickas vidare till Managern.
Tar emot anrop från REST API't eller formuläret och styr parsning, konvertering och uppskapande av RDF-data.
Använder snakeYaml för att parsa RAML1.0 och OAS3 yaml strängen, som innehåller apidefinitionen, till JSONObject.
När det gäller OAS3 json format läses den strängen in som JSONObject direkt.
RAML0.8 och/eller OAS2 på json/yaml format stöder inte annotations/extensions, så där får användaren tillgång att lägga metadata i en separat fil på json format, som parsas till JSONObject.
Använder MultiValuedMap (Apache Commons) och org.json.
För att konvertera mellan inläst metadata till element på DCAT-AP-SE format används konverteringsfiler (t.ex. TO_DCAT_OAS.json).
I senare skeden kan man enkelt lägga till nya konverteringsfiler för andra format eller ändra till nyare versioner av befintliga format.
Använder RDF4J.
Tar emot en lista av Katalog objekt och skapar matchande RDF utifrån det.
Översikt över vad som finns och fungerar enligt DCAT-AP-SE spec
Tillägg i Converter
Tillägg i RDFWorker
specifikationsfil
- Skapa konto till de bakomliggande systemen för dataportal.se eller kontrollera status om er organisation redan finns upplagd. Upprätta sedan en skördningskälla, Komma igång.
- Inför metadata i apidefinitionen, eller skapa en separat metadatafil.
- Använd verktyget för att generera en RDF fil.
- Skörda RDF filen, Hantera organisationer och skördningskällor.
- Verifiera att skördningen fungerar. Dataportalen docs har ingående information om hur skördningen fungerar samt hur en organisation sätter upp sin katalogkälla.
För att verktyget ska ges information att generera data behöver api definitionen uppdateras med metadata information.
Detta repository innehåller exempelfiler som visar hur metadata kan införas i apidefinition eller i separat metadatafil.
Attribut som stöds finns listade med beskrivning.
Utgå från exempelfilerna och ta hjälp av rekommendationer på dataportalen
Det finns exempelfiler som visar hur obligatoriska, rekommenderade och valfria värden kan läggas in.
När apidefinition/erna är uppdaterade med metadata görs de tillgängliga på en publikt nåbar folder, så att den separata pipeline som kör verktyget kan nå dem.
Se exempel enkel fil, där Katalog elementet ligger i samma fil som resterande metadata.
Exempel med obligatoriska och rekommenderade värden.
RAML
OAS YAML
OAS JSON
För API som inte har en definition (code-first) kan dataproducenten tillhandahålla separat metadata på json format
Separat JSON
Organisation med multipla API att producera RDF från använder en separat catalog.json fil för att hålla samman de ingående API:ernas metadata, se exempel under multipla filer.
För att verktyget ska generera en sammanslagen RDF-fil krävs att organisationen skapar filer enligt följande:
catalog.json - beskriver det övergripande katalog elementet och är samma för alla ingående apier.
catalog.json - Katalog elementet i separat fil på json format.
Exempel på ingående API-definitioner innehållande metadata för DCAT-AP-SE
full_example.raml - Api A på RAML format
full_example_oas.yaml - Api B på OAS3 yaml format
full_example_oas.json - Api C på OAS3 json format
full_example.json, Api D, separat metadataspecifikation på json format
DCAT-AP-SE-Processor är licensierad under EUPL-1.2
Se licens för mer information.
snakeYaml Apache license
RDF4J EDL v1.0 license
Spring boot, Spring framework Apache license
commonmark-java BSD-2 clause simplified license
jackson-dataformat-yaml Apache license
JSON-java Public domain
commons-collections4 Apache license
Mjukvaran utvecklas av DIGG och Arbetsförmedlingen.
Aktuell version är 0.9.
Detta är en första version av verktyget. Arbetsförmedlingen och Bolagsverket kommer prova mjukvaran skarpt under hösten 2022. När mjukvaran fungerar för tillräckligt många offentliga organisationer kommer versionen uppdateras till 1.0.