CSW2DCAT-Brücke
Programm, das die Ergebnisse eines CSW in DCAT-AP.de übersetzt.
Das Programm wird als Server gestartet und stellt einen DCAT-AP.de konformen Katalog-Endpunkt (DCAT catalog endpoint) zur Verfügung. Beim Abruf einer Katalog-Seite wird eine CSW-Suche ausgelöst, ein Mapping der relevanten Informationen durchgeführt und das Ergebnis als DCAT-AP.de Metadaten zurückgeliefert. Die Daten-Dienste-Kopplung wird berücksichtigt, für jeden Datensatz werden gekoppelte Dienste gesucht und als Distribution zurückgeliefert.
Das Mapping orientiert sich an am Mapping der GDI-DE, geht aber an einigen Stellen darüber hinaus. So werden u.a. Format-Angaben korrekt auf das Vokabular des EU Publication Office gemappt. Syntaktisch ungültige URIs werden entfernt, da sie die spätere Verarbeitung des RDF-Dokument verhindern können.
Parameter des Katalog-Endpunkt
Über Parameter des Katalog-Endpunkts kann die CSW-Suche genauer bestimmt werden. Die Parameter werden bei der Suche an den CSW weitergegeben. Die Groß- und Kleinschreibung der Parameternamen ist wichtig. Die angegebenen Parameter werden UND-verknüpft. Parameter können mehrfach angegeben werden (was eigentlich nur bei Subject
sinnvoll ist). Folgende Parameter sind vorhanden:
- Subject
- OrganisationName
- Identifier
Mapping von DCAT zu ISO
Das Programm enthält auch eine Komponente, um DCAT-Metadaten in ISO-Metadaten umzuwandeln. Diese Komponente wird nur aktiv, wenn die Umgebungsvariable DCAT_BASE_URL
gesetzt ist. Unter http://localhost:8080/iso/list.json ist ein JSON-Array mit den relevanten Datensätze (gefiltert mit dem in der Umgebungsvariablen DCAT_ISO_KEYWORD
eingestellten Schlagwort) zu finden. Dort sind die ISO-Metadaten der Datensätze verlinkt.
Konfiguration
Die Konfiguration der CSW2DCAT-Brücke erfolgt Container-freundlich mit Hilfe von Umgebungsvariablen.
Jede Brücke benötigt mindestens zwei Informationen:
- URL der CSW-Schnittstelle, z.B. https://umweltportal.schleswig-holstein.de/csw
-
Präfix, mit dem die IRI der Datensätze gebildet werden. Soll der Datensatz mit dem Identifikator
e455a148-483c-496f-aaeb-8c5fc389d90d
den IRIhttp://registry.gdi-de.org/id/de.sh/e455a148-483c-496f-aaeb-8c5fc389d90d
bekommen, so muss als Präfixhttp://registry.gdi-de.org/id/de.sh/
angegeben werden.
Umgebungsvariable | global/pro Brücke | Bedeutung |
---|---|---|
BRIDGE_x_URL |
pro Brücke | URL der CSW-Schnittstelle |
BRIDGE_x_IRI |
pro Brücke | Präfix, mit dem die IRI der Datensätze gebildet werden |
BRIDGE_x_CONTRIBUTOR |
pro Brücke | DCAT-AP.de contributorId, die für die Datensätze gesetzt wird |
BRIDGE_x_DISTRIBUTED |
pro Brücke | ist hier eine 1 gesetzt, wird eine verteilte CSW-Suche (DistributedSearch) durchgeführt |
BRIDGE_x_TYPE_EXCLUDE |
pro Brücke | schließe Einträge vom hier angegeben Typ aus, mehrere Einträge können mit Komma getrennt werden, ein Beispiel: appplication,tile
|
BRIDGE_x_TYPE_INCLUDE |
pro Brücke | beschränke die Suche auf die hier angegebenen Typen, mehrere Einträge können mit Komma getrennt werden, ein Beispiel: dataset,datasetCollection,series
|
BRIDGE_x_REMOVE_KEYWORDS |
pro Brücke | optionale Komma-getrennte Liste von Schlüsselwörtern, die entfernt werden sollen |
BRIDGE_x_FIND_WMS_IN_INFO |
pro Brücke | gibt an, ob in den transferOptions from Typ information nach WMS gesucht werden soll. Mehr dazu bei den Details der Konfigurationsoptionen
|
BRIDGE_x_FIX_MISSING_TEMPORAL |
pro Brücke | ist hier eine 1 gesetzt, wird bei fehlender zeitlicher Coverage das Veröffentlichungsdatum als Startdatum verwendet |
BRIDGE_x_FILTER_OPENDATA |
pro Brücke | ist hier eine 1 gesetzt, wird bei jeder Suche automatisch die Filterbedingung Subject=opendata eingefügt |
BRIDGE_x_SORT_RESULTS |
pro Brücke | ist hier 0 oder false gesetzt, wird beim GetRecords -Aufruf keine Sortierung angefordert |
BRIDGE_x_IGNORE_SERIES_WITHOUT_DISTRIBUTION |
pro Brücke | ist hier 1 oder true gesetzt, werden Serien, die keinen Download oder gekoppelten Dienst haben, ignoriert und nicht mit in die Ausgabe geschrieben |
BRIDGE_PORT |
global | Nummer des TCP-Ports, auf dem das Programm hören soll |
BRIDGE_BASE_URL |
global | Adresse unter der die CSW2DCAT von außen erreichbar sein wird |
BRIDGE_VERBOSE_LOGGING |
global | (existierendes) Verzeichnis, in das alle Antworten des CSW und alle als Ausgaben erzeugten DCAT-AP.de-Dokumente geschrieben werden |
DCAT_BASE_URL |
global | Basisadresse für DCAT-AP.de konforme Metadaten, z.B. https://opendata.schleswig-holstein.de/dataset/ (aktiviert das DCAT→ISO-Mapping) |
DCAT_ISO_KEYWORD |
global | Ist das DCAT→ISO-Mapping aktiv, so wird mit diesem Schlagwort nach Datensätzen gesucht |
Als globale Einstellungen gibt es:
-
BRIDGE_PORT
- Nummer des TCP-Ports, auf dem das Programm hören soll -
BRIDGE_BASE_URL
- Adresse unter der die CSW2DCAT von außen erreichbar sein wird. In der Regel wird das Programm vermutlich hinter einem Loadbalancer laufen, der dann auch eine Auflösung der TLS-Verbindung vornimmt.
Konfiguration mit einer Brücke
Dies ist der einfache Fall, dass nur eine CSW-Schnittstelle auf DCAT-AP.de übersetzt werden soll. Es wir der CSW des Schleswig-Holsteinischen Metainformationssystem abgefragt. Der Katalog wird von außen unter https://opendata-stage.schleswig-holstein.de/csw2dcat/catalog.xml zu erreichen sein.
environment:
- BRIDGE_PORT = 8080
- BRIDGE_BASE_URL = https://opendata-stage.schleswig-holstein.de/csw2dcat/
- BRIDGE_URL = https://sh-mis.gdi-sh.de/soapServices/CSWStartup
- BRIDGE_IRI = http://registry.gdi-de.org/id/de.sh/
- BRIDGE_CONTRIBUTOR = https://www.gdi-sh.de
Konfiguration mit mehreren Brücken
Hier werden gleich mehrere CSW-Schnittstellen nach DCAT-AP.de übersetzt. Der erste Dienst ist das Schleswig-Holsteinischen Metainformationssystem und wird von außen unter https://opendata-stage.schleswig-holstein.de/csw2dcat/1/catalog.xml zu erreichen sein. Der zweite Dienst ist das Umweltportal Schleswig-Holstein und wird von außen unter https://opendata-stage.schleswig-holstein.de/csw2dcat/2/catalog.xml zu erreichen sein.
environment:
- BRIDGE_PORT = 8080
- BRIDGE_BASE_URL = https://opendata-stage.schleswig-holstein.de/csw2dcat/
- BRIDGE_1_URL = https://sh-mis.gdi-sh.de/soapServices/CSWStartup
- BRIDGE_1_IRI = http://registry.gdi-de.org/id/de.sh/
- BRIDGE_1_CONTRIBUTOR = https://www.gdi-sh.de
- BRIDGE_1_DISTRIBUTED=1
- BRIDGE_2_URL = https://umweltportal.schleswig-holstein.de/csw
- BRIDGE_2_IRI = https://umweltportal.schleswig-holstein.de/trefferanzeige?docuuid=
- BRIDGE_2_CONTRIBUTOR = https://umweltportal.schleswig-holstein.de
Kompilieren und Ausführen
Das Programm kann mit
./mvnw package
in eine ausführbares JAR-Datei target/csw2dcat-jar-with-dependencies.jar
übersetzt werden, die sich mit
java -jar target/csw2dcat-jar-with-dependencies.jar
starten lässt. Vorher müssen aber noch die entsprechenden Umgebungsvariablen gesetzt werden - siehe oben.
Ungültige Geometrien
Normalerweise enthalten die ISO-Metadaten die geographische Ausdehnung als bounding box mit vier Punkten. CKAN ist sehr empfindlich (=bricht den kompletten Import-Vorgang ab), wenn diese Koordinaten kein ordentliches Viereck bilden, z.B. auf einer Linie liegen.
Daher wird versucht, die Geometrie zu korrigieren. Normalerweise wird ein POLYGON
erzeugt. Sind aber Länge und Breite einer EX_GeographicBoundingBox
identisch, so wird ein POINT
erzeugt. Sind Länge oder Breite identisch, so wird eine LINE
erzeugt.