Zum Inhalt

Such-Schnittstelle

Allgemeines

Die REST-Schnittstelle beinhaltet alle Schnittstellen, die Anfragen direkt an die InGrid Recherche stellen. Dabei werden die Anfragen in InGrid Queries transformiert, an den iBus versendet und die Antworten in das jeweils geforderte Format umgewandelt.

Unterstützte Schnittstellen:

  • OpenSearch Schnittstelle
  • ATOM Download Service
  • GOVDATA Schnittstelle

InGrid Komponente REST-Schnittstelle

Systemvoraussetzungen

Systembestandteil Anforderung
Hardware Arbeitsspeicher 500 MB RAM
Festplattenspeicher 1 GB frei
Prozessor Dual Core CPU
Software Java Java 21

Installation

Docker

Info

Zugang zum Docker Repository

docker login docker-registry.wemove.com
login: readonly
password: readonly

Beispiel docker-compose.yml
  ingrid-interface-search:
    image: docker-registry.wemove.com/ingrid-interface-search
    restart: unless-stopped
    environment:
      - TZ=Europe/Berlin
    volumes:
      - ./interface-search/logs/interface-search:/opt/ingrid/ingrid-interface-search/logs
      - ./interface-search/interface-search.properties:/opt/ingrid/ingrid-interface-search/conf/interface-search.properties
      - ./interface-search/descriptor.xml:/opt/ingrid/ingrid-interface-search/conf/descriptor.xml
      - ./interface-search/communication.xml:/opt/ingrid/ingrid-interface-search/conf/communication.xml
    deploy:
      resources:
        limits:
          memory: 512M
    networks:
      - informationgrid-network

From Installer

Um die InGrid Search Schnittstelle direkt auf einem System zu installieren, müssen folgende Vorbedingungen erfüllt sein:

  • Java (>= v21)

Die Installation der InGrid Search Schnittstelle (z.B. nach /opt/ingrid/interface-search) erfolgt dann mit diesen Schritten:

Download

Download: https://distributions.informationgrid.eu/ingrid-interface-search/

Install

Um die Installationsroutine zu starten, doppel-klicken Sie auf das Installationsprogramm oder geben Sie folgenden Befehl auf der Kommandozeile ein:

java -jar ingrid-interface-search-VERSION-installer.jar

Der Installer ist sowohl per graphischer Oberfläche als auch Kommandozeileneingabe ausführbar. Bitte folgen Sie den Anweisungen des Installationsprogrammes. Das Installationsprogramm installiert die Komponente im gewünschten Verzeichnis und passt die Konfigurationsdateien an.

Sie können nun die Komponente mit

sh start.sh start

starten.

Aktualisierung

Neues Release von https://distributions.informationgrid.eu/ingrid-interface-search/ herunterladen.

Komponente stoppen.

sh start.sh stop

Aktuelles Installationsverzeichnis sichern:

cp -r /opt/ingrid/ingrid-interface-search BACKUP_DIRECTORY

Die Aktualisierung erfolgt über den Installer.

java -jar ingrid-interface-search-NEW-VERSION-installer.jar

Während der Installation bitte "Upgrade" auswählen und das Installationsverzeichnis Verzeichnis angeben.

Komponente starten.

sh start.sh start

Betrieb

start.sh [start|stop|restart|status]

Die LOG Ausgaben finden sich in der Datei log.log und console.log.

Konfiguration

Parameter der Schnittstelle

Wesentliche Parameter sind über das ingrid-search.properties im Unterverzeichnis "conf" zu konfigurieren. Alle möglichen Werte können hier eingesehen werden:

https://github.com/informationgrid/ingrid-interface-search/blob/master/src/main/resources/interface-search.properties

Beispielkonfiguration
# port of the opensearch interface
server.port=8183

# max. number of returned hits per page for the opensearch interface
opensearch.max.requested.hits=10000

# opensearch descriptor file
opensearch.descriptor.file=conf/descriptor.xml

# interface url displayed in opensearch results
# use this in case of application is behind a reverse-proxy
opensearch.proxy.url=http://dev.informationgrid.eu/search/opensearch

# url to display detailed view of metadata results
# use this in case of providing links to details of metadata results
# only makes sence, if the query has the parameter xml=0
metadata.details.url=http://dev.informationgrid.eu/trefferanzeige

# enable/disable caching during bus queries
enable.caching=false

# max timeout for ibus search queries.
# After timeout milliseconds the ibus must interrupt iplug search processes.
ibus.search.max.timeout=60000

# metadata access URL pattern
# used by the ATOM download service
metadata.access.url=http://dev.informationgrid.eu/csw?REQUEST=GetRecordById&SERVICE=CSW&VERSION=2.0.2&id={uuid}&elementSetName=full

# atom download service access url
atom.download.service.url=http://dev.informationgrid.eu/search/dls

# atom download service feed access url extension pattern
atom.download.service.feed.extension=/service/{servicefeed-uuid}

# atom download service feed list access url extension pattern
atom.download.service.feedlist.extension=/service-list?q={searchTerms}

# atom download dataset feed access url extension pattern
atom.download.dataset.feed.extension=/dataset/{servicefeed-uuid}/{datasetfeed-uuid}

# atom download opensearch definition url extension pattern
atom.download.opensearch.definition.extension=/opensearch-description/{servicefeed-uuid}

# atom download service: opensearch get result url template
atom.download.opensearch.get.results.template=/service/{servicefeed-uuid}?q={searchTerms}

# atom download service: opensearch describe spatial dataset url template
atom.download.opensearch.describe.spatial.dataset.template=/dataset/{servicefeed-uuid}/?spatial_dataset_identifier_code={inspire_dls:spatial_dataset_identifier_code?}&spatial_dataset_identifier_namespace={inspire_dls:spatial_dataset_identifier_namespace?}&language={language?}

# atom download service: opensearch get spatial dataset url template
atom.download.opensearch.get.spatial.dataset.template=/get-dataset/{servicefeed-uuid}/?spatial_dataset_identifier_code={inspire_dls:spatial_dataset_identifier_code?}&spatial_dataset_identifier_namespace={inspire_dls:spatial_dataset_identifier_namespace?}&crs={inspire_dls:crs?}&language={language?}

# atom download service: comma separated supported languages other languages will be ignored
atom.download.opensearch.supported.languages=de

# atom download service: connect timeout for external http calls
atom.url.connect.timeout=1000

# atom download service: read timeout for external http calls
atom.url.read.timeout=1000

# opensearch channel title
opensearch.channel.title=

# opensearch channel description
opensearch.channel.description=

# opensearch channel language
opensearch.channel.language=

# opensearch channel copyright
opensearch.channel.copyright=

# opensearch channel link
opensearch.channel.link=

opensearch.dcat.contributor_id=http://dcat-ap.de/def/contributors/NUMIS

opensearch.dcat.catalog.publisher.name=MU_Niedersachsen

opensearch.dcat.catalog.publisher.url=https://numis.niedersachsen.de

opensearch.dcat.catalog.description=Das niedersächsiche Umweltportal

opensearch.dcat.catalog.title=NUMIS

Benutzung mit Apache mod_proxy

Um die Schnittstelle über Port 80 erreichen zu können, bietet sich die Verwendung eines proxys an. Dies kann einfach mit dem Apache-Modul mod_proxy realisiert werden. Im Apache müssen folgende Module installiert sein:

  • mod_proxy
  • mod_proxy_connect
  • mod_proxy_http

In der Apache Konfiguration muss folgendes eingetragen werden:

#
# ProxyEngine
#
ProxyRequests Off
ProxyPass /search http://localhost:8183
ProxyPassReverse /search http://localhost:8183

ProxyPass /opensearch http://localhost:8183/opensearch
ProxyPassReverse /opensearch http://localhost:8183/opensearch

Der angegebene Port muss mit dem Port der Schnittstelle übereinstimmen.

Nun ist die Schnittstelle auch über http://SERVER_DOMAIN/search/... erreichbar.

Die Schnittstelle kann sowohl per HTTPS als auch per HTTP benutzt werden. Wichtig ist bei der oben beschriebenen Proxy Weiterleitung, dass Anfragen, die per HTTPS an den Proxy gestellt werden, auch so an die Schnittstelle weitergeleitet werden, dass diese den HTTPS Aufruf erkennt. Die kann durch folgende Ergänzung im der Apache Konfiguration erfolgen:

RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"

InGrid Communication

Die Datei conf/communication.xml enthält die Konfigurationen der InGrid Kommunikationsschicht.

<?xml version="1.0" encoding="UTF-8"?>
<communication xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="communication.xsd">
    <client name="/ingrid-group:iplug-management-'Ihr-Name'">
        <connections>
            <server name="/ingrid-group:ibus-'Ihr-Name'">
                <socket port="9900" timeout="10" ip="127.0.0.1" />
                <messages maximumSize="1048576" threadCount="100" />
            </server>
        </connections>
    </client>
    <messages queueSize="2000" handleTimeout="10"/>
</communication>

Die einzelnen Parameter haben folgende Bedeutung:

Parameter Beschreibung
client/@name Eindeutige ID des iPLugs
server/@name Eindeutige ID des InGrid iBus
socket/@port Port unter dem die Administrations GUI zu erreichen ist
socket/@timeout Timeout der Socketverbindungen in sec
message/@maximumSize max. zulässige Größe einer Message in Bytes, die über den iBus versendet werden kann
message/@threadCount Anzahl der Verbindungen (Threads), die der iBus gleichzeitig aufrecht erhalten kann
message/@handleTimeout Timeout einer Message in sec (Wie lange wartet der iBus auf die Beantwortung einer Message.)
message/@queueSize Message Queue (Wie viele Nachrichten können in der Warteschlange des iBus enthalten sein.)

Schnittstellen

OpenSearch Schnittstelle

Warning

Die Opensearch Spezifikation wird nicht mehr weiterentwickelt und gilt als veraltet. Die Schnittstelle wird in Zukunft durch eine OGC-API Records Schnittstelle ersetzt.

Die OpenSearch Schnittstelle basiert auf der OpenSearch Spezifikation https://github.com/dewitt/opensearch. Sie dient vor allem der Integration der InGrid Suche in andere Systeme.

Die Definition der Schnittstelle wurde erweitert, um die Besonderheiten der Ingrid-Suche abbilden zu können.

Die Schnittstelle wird per HTTP/GET angefragt. Sie hat 2 Methoden:

  • Anfordern des OpenSearch descriptors (descriptor)
  • Absetzen einer Suche (query)

Über die query-Methode ist es auch möglich Detailinformationen über den oder die Datensätze zu bekommen. Diese werden dann für jeden Hit in die Antwort (RSS2.0 kompatibles XML-Format) geschrieben.

Request

Folgende Parameter sind zulässig:

Methode Parameter Beschreibung
descriptor Keine Parameter, liefert den OpenSearch Descriptor, der die Such-Anfrage Syntax beschreibt
query q Die Query entspricht dem Query-String im Portal.
p angeforderte Seite der Suchergebnisse; Standard: 1
h Treffer pro Seite; Standard: 10
t Timeout für die Such-Anfragen an das InGrid System.

Dieses Timeout beeinflusst nur die Such-Anfragen an die iPlugs, welche nur einen Teil der Kommunikation darstellen. Die eigentliche Dauer eines OpenSearch Aufrufen ist etwas länger, dennoch kann die Ausführungszeit, evtl. auf Kosten der Ergebnismenge, beeinflusst werden. Das max. Timeout wird über die Einstellung ibus.search.max.timeout in der ingrid-opensearch.properties gesetzt. Über den Parameter t kann kein Timeout definiert werden, was höher als das maximale Timeout ist. Wird der Parameter nicht angegeben, wird als Timeout immer das maximale Timeout verwendet.
xml Art des Trefferlinks bei Metadatentreffern (Standard: xml=0)

Bei xml=1 verweisen die Links für Metadatentreffer auf dieselbe Opensearch-Schnittstelle, welche dann die Detailinformation zum jeweiligen Datensatz aufbereitet und ausgibt.

Bei xml=0 verweisen die Links für Metadatentreffer auf die Detaildarstellung der Portalkomponente.
georss Geo-Referenzierung mit ausgeben (Standard: georss=0)
ingrid Zusätzliche InGrid Informationen wie partner, provider etc. per Ergebnis mit ausgeben (Standard: ingrid=0)
detail Fügt in die Antwort die Detailinformationen zu jedem Treffer im InGridDataFormat (IDF) hinzu, wenn 'ingrid = 1' und 'xml = 0'; Standard: 0
uvp Liefert die Antwort auf die Anfrage im Stil des UVP RSS-Feeds zurück (Standard: uvp=0)

Bsp:

https://dev.informationgrid.eu/interface-search/opensearch/descriptor

... liefert den OpenSearch Descriptor, der die Schnittstelle beschreibt.

https://dev.informationgrid.eu/interface-search/opensearch/query?q=wasser+boden+datatype:default+ranking:score&p=1&h=20

... fordert 20 Ergebnisse aus den 'default' Datenquellen (all datenliefernden iPlugs) der ersten Seite für die query "wasser boden" an, sortiert nach Relevanz. Der Link zum Detail von Metadaten verweist auf die Portal-Darstellung (Parameter xml=0 oder nicht angegeben).

https://dev.informationgrid.eu/interface-search/opensearch/query?q=boden+datatype:metadata+ranking:score&p=1&h=20&ingrid=1&xml=1

... fordert 20 Ergebnisse aus den 'metadata' Datenquellen (z.B. InGrid Editor oder CSW iPlugs) der ersten Seite für die query "boden" an, sortiert nach Relevanz. Zusätzliche InGrid Informationen werden je Ergebnis mit ausgegeben (Parameter ingrid=1 ). Der Link zum Detail von Metadaten verweist auf die OpenSearch-Darstellung (Parameter xml=1 ).

https://uvp-verbund.de/interface-opensearch/query?q=datatype:default+ranking:date&uvp=1

... fordert die 10 aktuellesten UVP-Datensätze, sortiert nach Änderungsdatum an. Die Ausgabe wird UVP-spezifisch dargestellt und enthält Felder wie "guid", "pubDate", "uvp:latest-phase" und "author".

Deskriptor-Response

Der Deskriptor der Opensearch-Schnittstelle gibt an, wie die Schnittstelle angefragt werden kann. Als Antwort erhält man eine oder mehrere URLs mit Platzhaltern, mit der man individuelle Anfragen stellen kann. Kommen mehrere URLs in einer Antwort vor, dann werden verschiedene Ausgabetypen unterstützt, wie z.B. rss und atom. Die Platzhalter sind im folgenden aufgeführt:

Platzhalter Optional Beschreibung
{ingridsearch:timeout} X Siehe Parameter "t" der Methode "query"
{searchTerms} Siehe Parameter "q" der Methode "query"
{geo:box} X Angabe von einer BoundingBox mit den Koordinaten "x1 y1 x2 y2"
{startPage} X Siehe Parameter "p" der Methode "query"
{count} X Siehe Parameter "h" der Methode "query"
{ingridsearch:ingrid} X Siehe Parameter "ingrid" der Methode "query"
{ingridsearch:detail} X Siehe Parameter "detail" der Methode "query"
{ingridsearch:xml} X Siehe Parameter "xml" der Methode "query"
{ingridsearch:georss} X Siehe Parameter "georss" der Methode "query"

Ein Beispiel-Deskriptor sieht folgendermaßen aus:

<?xml version="1.0" encoding="utf-8"?>
<openSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"
     xmlns:georss="http://www.georss.org/georss"
     xmlns:ingridsearch="http://www.portalu.de/opensearch/extension/1.0"
     xmlns:geo="http://a9.com/-/opensearch/extensions/geo/1.0/">
  <ShortName>InGrid OpenSearch</ShortName>
  <Description>Here you can search inside the InGrid-Portal.</Description>
  <Tags>ingrid opensearch web</Tags>
  <Contact>contact@wemove.com</Contact>
  <Url type="application/rss+xml" template="http://harrison.its-technidata.de/opensearch/query?q={searchTerms}+datatype:default+ranking:score&amp;bbox={geo:box?}&amp;p={startPage?}&amp;h={count?}&amp;xml={ingridsearch:xml?}&amp;detail={ingridsearch:detail?}&amp;georss={ingridsearch:georss?}&amp;ingrid={ingridsearch:ingrid?}&amp;format=rss" />
 </OpenSearchDescription>

Die anzufragende URL befindet sich im Attribut template des Tags Url. Der Typ des Ausgabeformats verbirgt sich hinter type und ist in diesem Fall application/rss+xml. Ein Fragezeichen ? in einem Platzhalter bedeutet, dass dieser Parameter optional ist. In diesem Beispiel wird nur verlangt, dass {searchTerms} mit einem entsprechenden Wert ersetzt wird. Mehr Informationen über den Deskriptor findet man hier https://github.com/dewitt/opensearch.

Response

Die Antwort der Schnittstelle erfolgt im RSS 2.0 kompatiblen XML-Format. Die Schnittstelle erweitert das RSS2.0 Format um bestimmte Elemente. Das folgende XML Schema beschreibt die Erweiterungen.

Klick, um das XML Schema zu sehen
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.wemove.com/ingrid/opensearchextension/0.1/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:idf="http://www.portalu.de/IDF/1.0" xmlns:ingridsearch="http://www.wemove.com/ingrid/opensearchextension/0.1/">
  <xs:import schemaLocation="ingrid-opensearch.xsd"/>
  <xs:import namespace="http://a9.com/-/spec/opensearch/1.1/" schemaLocation="opensearch.xsd"/>
  <xs:element name="plugid" type="xs:string"/>
  <xs:element name="docid" type="xs:integer"/>
  <xs:element name="altdocid" type="xs:string"/>
  <xs:element name="provider" type="xs:string"/>
  <xs:element name="provider-name" type="xs:string"/>
  <xs:element name="partner" type="xs:string"/>
  <xs:element name="partner-name" type="xs:string"/>
  <xs:element name="source" type="xs:string"/>
  <xs:element name="udk-class" type="xs:integer"/>
  <xs:element name="udk-addr-class" type="xs:integer"/>
  <xs:element name="wms-url" type="xs:anyURI"/>
  <xs:element name="details">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="idf:html"/>
        <xs:element maxOccurs="unbounded" ref="ingridsearch:detail"/>
        <xs:element ref="ingridsearch:detail-subrecord" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="detail-subrecord">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="ingridsearch:detail"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="detail">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ingridsearch:detail-key"/>
        <xs:element ref="ingridsearch:detail-key-localized" minOccurs="0"/>
        <xs:element ref="ingridsearch:detail-value"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="detail-key" type="xs:string">
  </xs:element>
  <xs:element name="detail-key-localized" type="xs:string">
  </xs:element>
  <xs:element name="detail-value" type="xs:string">
  </xs:element>
</xs:schema>

Request vom MapClient

Die Suche nach Diensten im MapClient erfolgt über die OpenSearch Schnittstelle. Die Suche nach "Wasser" im MapClient setzt z.B. folgenden Request ab.

https://dev.informationgrid.eu/ingrid-webmap-client/rest/search/query?q=Wasser&lang=de&type=services&searchUrl=https://dev.informationgrid.eu/interface-opensearch/query?q=Wasser+t011_obj_serv_op_connpoint.connect_point:http*+t011_obj_serv.type:view+cache:off+datatype:metadata+ranking:score&ingrid=1&h=100

der folgende Open Search Query auslöst

https://dev.informationgrid.eu/interface-opensearch//query?q=Wasser+t011_obj_serv_op_connpoint.connect_point:http*+t011_obj_serv.type:view+cache:off+datatype:metadata+ranking:score&ingrid=1&h=100

Das Ergebnis liefert Kartendienste mit "Wasser", die im MapClient hinzugefügt werden können.

ATOM Download Service Feed Schnittstelle

INSPIRE-relevante Daten, welche durch Daten-Metadaten beschrieben sind, müssen über Download-Dienste verfügbar gemacht werden. Wie ein Download Dienst realisiert sein kann, ist in “Technical Guidance for the implementation of INSPIRE Download Services” beschrieben.

Info

Die Grundidee dabei ist, dass vom Metadaten-Erfasser im InGrid Editor Serivce-Metadatensätze für einen oder mehrere Download-Dienste angelegt werden. Diese Service-Metadatensätze werden mit Daten-Metadatensätzen verknüpft. Für jeden dieser Daten-Dienste-Kopplungen wird durch die ATOM Download Service Feed Schnittstelle solcher Download-Dienst automatisch bereitgestellt.

Für jeden Service-Metadatensatz wird dabei ein Service-Feed erstellt, in dem Referenzen auf die gekoppelten Daten-Metadatensätzen abgelegt sind.

Für jeden Daten-Metadatensatz kann ein Daten-Feed abgerufen werden, dessen URL als entry Element des Service-Feeds abgebildet wird. Im Daten-Feed werden alle Download-Optionen für diesen Datensatz eingetragen.

Folgende Kopplungen können im InGrid Editor angegeben werden:

  • Auswahl eines entsprechenden Daten Objektes über Dargestellte Daten
  • Erstellen eines GetRecordByID CSW Request als "Datendownload" Verweis (Der Verweis wird von der ATOM Schnittstelle automatisch verfolgt.)

Im InGrid Editor kann dies über einen Eintrag in "Dargestellte Daten" im der Datensatzklasse Geodatendienst erfolgen.

Eine weitere Anforderung an die dynamisch generierten Download-Services ist die Bereitstellung eines OpenSearch-Interfaces mit einem fest definierten Satz an Operationen.

Methoden

Die unterschiedlichen Methoden der Schnittstelle werde über unterschiedliche Zugriffs-Pfade abgebildet:

Download Service Feed dls/service/{service-uuid}?q=<query>
dls/service/{service-uuid}?q=<query>
  • service-uuid repräsentiert die UUID eines Metatdatensatzes vom Typ Geodatendienst (ISO: service).
  • query repäsentiert eine Suchanfrage. Es werden nur Daten-Feeds im Service Feed referenziert, die über die Suchanfrage gefunden wurden.
Dataset Feed dls/dataset/{service-uuid}/{dataset-uuid}
dls/dataset/{service-uuid}/{dataset-uuid}
  • service-uuid repräsentiert die UUID eines Metatdatensatzes vom Typ Geodatendienst (ISO: service).
  • dataset-uuid repräsentiert eine gekoppelten Datensatz vom Typ Geodatensatz (ISO: dataset). Die dataset-uuid kann auch aus einer GetRecordById Url bestehen, wenn die Download Daten über eine solche URL im Geodatendienst beschrieben sind.
OpenSearch: Generic Search Operation dls/service/{service-uuid}?q=<query>

dls/service/{service-uuid}?q=<query>
Gleiche Funktion, wie Download Service Feed

OpenSearch: Describe Spatial Data Set Operation dls/dataset/{servicefeed-uuid}/?spatial_dataset_identifier_code={inspire_dls:spatial_dataset_identifier_code?}&spatial_dataset_identifier_namespace={inspire_dls:spatial_dataset_identifier_namespace?}&language={language?}

Die Methode liefert einen Dataset ATOM Feed zurück.

dls/dataset/{servicefeed-uuid}/?spatial_dataset_identifier_code={inspire_dls:spatial_dataset_identifier_code?}&spatial_dataset_identifier_namespace={inspire_dls:spatial_dataset_identifier_namespace?}&language={language?}
  • servicefeed-uuid repräsentiert die UUID eines Metatdatensatzes vom Typ Geodatendienst (ISO: service).
  • inspire_dls:spatial_dataset_identifier_code repräsentiert den Resource Identifikator der Datenquelle (ohne Namespace)
  • inspire_dls:spatial_dataset_identifier_namespace repräsentiert den Namespace des Resource Identifikators der Datenquelle
  • language Die Sprache des Datensatzes. Momentan wird der Parameter ignoriert, da die Datensätze eines Kataloges immer in einer Sprache vorliegen
OpenSearch: Get Spatial Data Set Operation dls/get-dataset/{servicefeed-uuid}/?spatial_dataset_identifier_code={inspire_dls:spatial_dataset_identifier_code?}&spatial_dataset_identifier_namespace={inspire_dls:spatial_dataset_identifier_namespace?}&crs={inspire_dls:crs?}&language={language?}

Die Methode liefert direkt zum Datendownload. Falls mehrere Downloads in den Metadaten definiert wurden, wird ein ATOM Feed mit allen Download Links zurückgeliefert.

dls/get-dataset/{servicefeed-uuid}/?spatial_dataset_identifier_code={inspire_dls:spatial_dataset_identifier_code?}&spatial_dataset_identifier_namespace={inspire_dls:spatial_dataset_identifier_namespace?}&crs={inspire_dls:crs?}&language={language?}
  • servicefeed-uuid repräsentiert die UUID eines Metatdatensatzes vom Typ Geodatendienst (ISO: service).
  • inspire_dls:spatial_dataset_identifier_code repräsentiert den Resource Identifikator der Datenquelle (ohne Namespace)
  • inspire_dls:spatial_dataset_identifier_namespace repräsentiert den Namespace des Resource Identifikators der Datenquelle
  • crs repräsentiert das Referenzsystem des Datensatzes.
  • language Die Sprache des Datensatzes. Momentan wird der Parameter ignoriert, da die Datensätze eines Kataloges immer in einer Sprache vorliegen
OpenSearch: Description dls/opensearch-description/{servicefeed-uuid}

Liefert die OpenSearch Description für den ATOM Download Service.

dls/opensearch-description/{servicefeed-uuid}
  • servicefeed-uuid repräsentiert die UUID eines Metatdatensatzes vom Typ Geodatendienst (ISO: service).
Download Service Feed HTML Client dls/

Stellt alle Download Daten über eine HTML Applikation zur Verfügung.

dls/

Das Partner-spezifisches Branding stellt den Client in einer partner-spezifischen Darstellung (Logo, Farben im Kopfbereich) dar und schränkt alle Dienste auf den jeweiligen Partner ein.

dls/#?partner={PARTNER ID: bb, be, ni, ...}

Partner-spezifisches Branding des HTML Clients und Darstellung eines spezifischen Dienstes

dls/#?serviceId={SERVICE UUID}&partner={PARTNER ID: bb, be, ni, ...} 

Stellt den Client in einer partner-spezifischen Darstellung (Logo, Farben im Kopfbereich) dar, zeigt einen bestimmten Dienst an und blendet die Diensteauswahl aus.

dls/#?serviceId={SERVICE UUID}&partner={PARTNER ID: bb, be, ni, ...}&serviceOnly

Abbildung der Datenfelder

Im folgenden wird die Abbildung der verwendeten ISO Felder auf die Felder im ATOM Feed Format dokumentiert:

Service-Feed
Methode ATOM Feed Referenz ISO 19139 Referenz
Service Feed /feed Die folgende Pfade beziehen sich auf einen Geodatendienst.
/feed/title //gmd:identificationInfo//gmd:citation/gmd:CI_Citation/gmd:title/gco:CharacterString
/feed/subtitle //gmd:identificationInfo//gmd:abstract/gco:CharacterString
/feed/rights Durch ; getrennte Liste aus folgenden Elementen //gmd:identificationInfo/*/gmd:resourceConstraints/gmd:accessConstraints/*/@codeListValue und //gmd:identificationInfo/*/gmd:resourceConstraints/gmd:otherConstraints/gco:CharacterString
/feed/updated //gmd:dateStamp/gco:DateTime | //gmd:dateStamp/gco:Date[not(../gco:DateTime)]
/feed/author //gmd:identificationInfo//gmd:pointOfContact//gmd:organisationName/gco:CharacterString
Service Feed (Entries) /feed/entry/ Die folgenden Pfade beziehen sich auf die gekoppelten Geodatensätze.
/feed/entry/title //gmd:identificationInfo//gmd:citation/gmd:CI_Citation/gmd:title/gco:CharacterString
/feed/entry/rights Durch ; getrennte Liste aus folgenden Elementen //gmd:identificationInfo/*/gmd:resourceConstraints/gmd:accessConstraints/*/@codeListValue und //gmd:identificationInfo/*/gmd:resourceConstraints/gmd:otherConstraints/gco:CharacterString
/feed/entry/updated //gmd:dateStamp/gco:DateTime | //gmd:dateStamp/gco:Date[not(../gco:DateTime)]
/feed/entry/summary //gmd:identificationInfo//gmd:abstract/gco:CharacterString
/feed/entry/georss:polygon Polygon aus der vorhandene Bounding Box: //gmd:identificationInfo//gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:westBoundLongitude/gco:Decimal, //gmd:identificationInfo//gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:eastBoundLongitude/gco:Decimal, //gmd:identificationInfo//gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:southBoundLatitude/gco:Decimal, //gmd:identificationInfo//gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:northBoundLatitude/gco:Decimal
/feed/entry/category@term //gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier/gmd:code/gco:CharacterString|//gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier/gmd:code/gmx:Anchor
/feed/entry/category@label //gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier/gmd:codeSpace/gco:CharacterString
/feed/entry/inspire_dls:spatial_dataset_identifier_code Teilstring nach # aus //gmd:identificationInfo//gmd:citation//gmd:identifier/gmd:MD_Identifier/gmd:code/gco:CharacterString|//gmd:identificationInfo//gmd:citation//gmd:identifier/gmd:MD_Identifier/gmd:code/gmx:Anchor ermittelt. Falls der String kein # enthält wird der gesamte String verwendet.
/feed/entry/inspire_dls:spatial_dataset_identifier_namespace Teilstring vor # aus //gmd:identificationInfo//gmd:citation//gmd:identifier/gmd:MD_Identifier/gmd:code/gco:CharacterString|//gmd:identificationInfo//gmd:citation//gmd:identifier/gmd:MD_Identifier/gmd:code/gmx:Anchor ermittelt. Ist leer, falls der String kein # enthält.
Dataset-Feed
Methode ATOM Feed Referenz ISO 19139 Referenz
Dataset-Feed /feed Die folgende Pfade beziehen sich auf einen Geodatensatz.
/feed/title //gmd:identificationInfo//gmd:citation/gmd:CI_Citation/gmd:title/gco:CharacterString
/feed/subtitle //gmd:identificationInfo//gmd:abstract/gco:CharacterString
/feed/rights Durch ; getrennte Liste aus folgenden Elementen //gmd:identificationInfo/*/gmd:resourceConstraints/gmd:accessConstraints/*/@codeListValue und //gmd:identificationInfo/*/gmd:resourceConstraints/gmd:otherConstraints/gco:CharacterString
/feed/updated //gmd:dateStamp/gco:DateTime | //gmd:dateStamp/gco:Date[not(../gco:DateTime)]
/feed/author //gmd:identificationInfo//gmd:pointOfContact//gmd:organisationName/gco:CharacterString
Dataset-Feed (Entries) /feed/entry/ Die folgenden Pfade beziehen sich auf die Download Ressourcen des Geodatensatzes. Als Download Ressourcen werden alle Ergebnisse aus //gmd:transferOptions/gmd:MD_DigitalTransferOptions/gmd:onLine[.//gmd:function/gmd:CI_OnLineFunctionCode/@codeListValue='Download of data' or .//gmd:function/gmd:CI_OnLineFunctionCode/@codeListValue='download' or .//gmd:function/gmd:CI_OnLineFunctionCode/@codeListValue='Datendownload'] verwendet. Die nachfolgenden Pfade beziehen sich auf das gmd:onLine Element.
/feed/entry/title .//gmd:name//gco:CharacterString
/feed/entry/link@href .//gmd:linkage/gmd:URL
/feed/entry/link@type Mime-Type, wird automatisch aus den verlinkten Daten mit Hilfe Apache TIKA ermittelt. Falls unter .//gmd:applicationProfile/gco:CharacterString "gml" angegeben ist und der Download als ZIP File erkannt wurde, wird hier application/x-gmz eingetragen.
/feed/entry/updated .//gmd:name//gco:CharacterString
/feed/entry/category@term Hier werde die Daten aus dem Geoadatensatz unter //gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier/gmd:code/gco:CharacterString|//gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier/gmd:code/gmx:Anchor verwendet.
/feed/entry/category@label Hier werde die Daten aus dem Geoadatensatz unter //gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier/gmd:codeSpace/gco:CharacterString verwendet.

Endpoint für GOVDATA

Für die Weitergabe von Opendata-Metadaten an GOV.DATA.DE oder andere Opendata Portale, können die Metadaten auch im RDF/XML Format abgegeben werden.

Die Opensearch-Schnittstelle wurde dazu um einen Export im RDF/XML erweitert. Der RDF-Export kann über den Parameter format=rdf angesteuert werden.

Bsp: https://dev.informationgrid.eu/interface-search/opensearch/query?format=rdf

Der Export ist Kompatibel zur DCAT-AP.de Version 2.0. Die Paginierung erfolgt über die PagedCollection aus dem Hydra-Namespace des W3C (https://www.w3.org/ns/hydra/spec/latest/core/) die Einstellmöglichkeiten der Datensätze pro Seite entspricht den Möglichkeiten der Items pro Seite im OpenSearch-Schnittstelle.

Der Export der Opendata-Metadaten erfolgt aus den IDF-Daten auf Basis der Mapping-Tabelle für GDI-DE, Stand 16.02.2022.

Lizenzen werden gemäß der Tabelle unter https://www.dcat-ap.de/def/licenses/ (Stand 20210721) auf DCAT-AP.de URIs gemapped. Sollte keine Lizenz URL gefunden werden oder keine Abbildung auf eine URI möglich sein wird eine Default-Lizenz angegeben (Sofern nicht anders konfiguriert http://dcat-ap.de/def/licenses/other-open).

Für die Periodizität werden gängige Bezeichnungen und Codelist-Values auf das Vokabular in http://publications.europa.eu/resource/authority/frequency gemapped. Alle Varianten kürzer als eine Stunde werden auf CONT (Kontinuierlich) abgebildet.

Das Distribution-Format wird entsprechend der Mapping-Übersicht übernommen, sofern das Format im Vokabular unter http://publications.europa.eu/resource/authority/file-type vorkommt. Ein Mapping von abweichenden Bezeichnungen kann über ein JSON-File im Classpath ergänzt werden.

Folgende Eigenschaften können über die Konfiguration interface-search.properties eingestellt werden.

Schlüssel Beschreibung
opensearch.dcat.catalog.title Katalog-Titel, z.B. Umweltdatenkatalog Niedersachsen
opensearch.dcat.catalog.description Katalog-Beschreibung, z.B. Das niedersächsiche Umweltportal
opensearch.dcat.contributor_id Datenbereitsteller, z.B. http://dcat-ap.de/def/contributors/NUMIS
opensearch.dcat.catalog.publisher.name Id des Katalog-Herausgeber, z.B. MU_Niedersachsen
opensearch.dcat.catalog.publisher.url Url Katalog-Herausgeber, z.B. https://numis.niedersachsen.de
opensearch.dcat.basequery Basis Filterung für den DCAT-AP.de Export, gilt zusätzlich zu der Abfrage aus dem Query-Parameter q. Default: datatype:metadata (t04_search.searchterm:opendata OR t04_search.searchterm:opendataident)

Die Werte müssen mit GOV.DATA abgestimmt werden.

FAQ

Wie kann ich ein Überschreiben der Datei env.sh bei einer Aktualisierung verhindern.

Info

Diese FAQ Bezieht sich nur auf die direkte Installation über den Installer.

In der Datei env.sh können Systemvariablen komponenten-spezifisch angepasst werden (z.B. Proxy oder Heap Einstellungen). Um die Einstellungen nach einer Aktualisierung nicht zu verlieren, muss die Datei env.sh nach user.env.sh kopiert werden. Die Änderungen in user.env.sh werden nicht überschrieben.

Unter welchen Bedingungen werden die Dienste im ATOM-Feed Client angezeigt?

Folgende Bedingungen müssen erfüllt sein, so dass ein Dienst mit seinen Download-Referenzen angezeigt wird:

Kopplung mit Geodatensatz

  1. Der anzuzeigende Geodatendienst muss von der Art Download-Dienste sein.
  2. Es muss die Option "Als ATOM-Download Dienst bereitstellen" aktiviert sein.
  3. Es muss mindestens eine Referenz auf ein Objekt vom Typ "Geodatensatz" vorhanden sein.
  4. Dieser Geodatensatz muss mindestens einen Verweis vom Typ "Download" besitzen.

Kopplung mit externem Datensatz

  1. wie oben
  2. wie oben
  3. Es muss mindestens ein externer Datensatz unter Dargestellte Daten/Externen Datensatz angeben hinzugefügt werden.
  4. Dieser Datensatz muss als URL die Zeichenkette "REQUEST=GetRecordById" enthalten und auf einen Geodatensatz verweisen.
  5. Dieser Geodatensatz muss mindestens einen Verweis vom Typ "Download" besitzen.

Direkter Verweis auf externem Datensatz

  1. wie oben
  2. wie oben
  3. Es muss mindestens ein Verweis vom Typ "Datendownload" hinzugefügt werden
  4. Dieser Verweis muss als URL die Zeichenkette "REQUEST=GetRecordById" enthalten und auf einen Geodatensatz verweisen.
  5. Dieser Geodatensatz muss mindestens einen Verweis vom Typ "Download" besitzen.