Features - Searchspecdraftimplproposal
Das Modul Search unterstützt den Abruf von Features aus mehreren Collections sowie für gespeicherte Abfragen.
Umfang
Dieses Modul unterstützt die Suche nach Features aus einer oder mehreren Collections. Das heißt, es unterstützt Abfragen, die mit den Filtermechanismen, die durch die Module Features und Filter zur Verfügung stehen, nicht oder nicht bequem ausgedrückt werden können.
Beispiele für die Arten von Abfragen:
- Abfragen mit einem langen Ausdruckstext, der nicht bequem als URL angegeben werden kann;
- Abfragen, die in einer einzigen Anfrage Ressourcen aus einer oder mehreren Collections abrufen;
- gespeicherte Abfragen;
- gespeicherte Abfragen, die mehrere Collections referenzieren;
- gespeicherte Abfragen mit Parametern.
Eine Query Expression wird als JSON-Objekt ausgedrückt.
Das Query-Expression-Objekt kann eine einzelne Abfrage (Key-Value-Paare "collections", "filter", "properties" und "sortby") oder mehrere Abfragen (Key-Value-Paar "queries" mit einem Array von Abfrageobjekten) in einer einzigen Anfrage beschreiben.
Für jede Abfrage:
- Der Wert von "collection" ist ein Array mit einem Element, dem Identifikator der abzufragenden Feature Collection.
- Der Wert von "filter" ist ein CQL2 JSON-Filterausdruck. Siehe das Filter-Modul.
- Der Wert von "filterCrs" ist die URI des Koordinatenreferenzsystems der Koordinaten in einem "filter". Der Standardwert ist "http://www.opengis.net/def/crs/OGC/1.3/CRS84" (WGS 84, Longitude/Latitude).
- Der Wert von "properties" ist ein Array mit den Namen der Eigenschaften, die in die Antwort aufgenommen werden sollen. Siehe das Projections-Modul.
- Der Wert von "sortby" wird zum Sortieren der Merkmale in der Antwort verwendet. Siehe das Sorting-Modul.
Für mehrere Abfragen:
- Wenn mehrere Abfragen angegeben werden, werden die Ergebnisse zusammengeführt. Die Antwort ist eine einzelne Feature Collection. Die Feature-IDs in der Antwort auf eine Abfrage mit mehreren Feature Collections müssen eindeutig sein. Da der Bezeichner eines Features nur pro Feature Collection eindeutig sein muss, müssen sie mit der Feature-Collection-ID kombiniert werden. Es wird eine Verkettung mit "." als Verbindungszeichen verwendet (z. B. "apronelement.123456").
- Die direkten Key-Value-Paare "filter" und "properties" stellen 'globale' Bedingungen dar, die in jeder Abfrage mit dem entsprechenden Key-Value-Paar kombiniert werden müssen. Die globale und die lokale Eigenschaftsauswahlliste werden verkettet. Die globalen und lokalen Filter werden mit dem logischen Operator kombiniert, der durch das Mitglied "filterOperator" angegeben wird.
- Das globale Mitglied "filter" darf nur auf Queryables verweisen, die allen abgefragten Collections gemeinsam sind.
- Das globale Mitglied "properties" darf nur auf Presentables verweisen, die allen abgefragten Collections gemeinsam sind.
Allgemeines:
- Ein "Titel" und eine "Beschreibung" für die Query Expression können hinzugefügt werden. Es wird dringend empfohlen, beides anzugeben, um Benutzern die Abfrage zu erklären.
- Das Element "limit" gilt für die gesamte Ergebnismenge.
- "sortby" wird nur pro Abfrage angewendet. Ein globales "sortby" würde erfordern, dass die Ergebnisse aller Abfragen zuerst kompiliert werden und dann die kombinierte Ergebnismenge sortiert wird. Dies würde das "Streaming" der Antwort nicht unterstützen.
- Im Falle einer parametrisierten gespeicherten Abfrage kann der Abfrageausdruck JSON-Objekte mit einem Member "$parameter" enthalten. Der Wert von "$parameter" ist ein Objekt mit einem Key-Value-Paar, bei dem der Schlüssel der Parametername und der Wert ein JSON-Schema ist, das den Parameter beschreibt. Bei der Ausführung der gespeicherten Abfrage werden alle Objekte mit einem "$parameter"-Member durch den Wert des Parameters für diese Abfrageausführung ersetzt. Kommagetrennte Parameterwerte werden in ein Array umgewandelt, wenn der Parameter vom Typ "array" ist.
- Parameter können auch in einem Member "parameters" im Abfrageausdruck angegeben werden und mit "$ref" referenziert werden.
Limitierungen
Für parametrisierte gespeicherte Abfragen gelten die folgenden Beschränkungen:
- Parameter können nur in Filterausdrücken vorkommen.
- Das JSON-Schema eines Parameters unterstützt eine Teilmenge der Sprache. Insbesondere werden
patternProperties
,additionalProperties
,allOf
,oneOf
,prefixItems
,additionalItems
unditems: false
nicht unterstützt. - POST zur Ausführung einer gespeicherten Abfrage wird nicht unterstützt. Dies wird hinzugefügt, nachdem die Spezifikation in OGC diskutiert wurde (z.B. ob die Nutzlast JSON oder URL-kodierte Abfrageparameter sein sollen).
Ad-hoc-Queries haben die folgenden Beschränkungen:
- Paging wird für Ad-Hoc-Queries nicht unterstützt. Bis zur Klärung sollten ausreichend große Werte für
limit
verwendet werden. Siehe Issue 906.
Konformitätsklassen
Dieses Modul implementiert die OGC-API-Features-Erweiterungen, die in dem OGC Testbed-18 Filtering Service and Rule Set Engineering Report spezifiziert sind (wird noch veröffentlicht). Die Implementierung wird sich im Zuge der weiteren Standardisierung der Spezifikation noch ändern.
Operationen
Ressource | Pfad | Methoden | Formate | Beschreibung |
---|---|---|---|---|
Ad-hoc Query | search | POST | CSV, CityJSON, CityJSON-Seq, FlatGeobuf, GML, GeoJSON, HTML, JSON-FG | Eine Ad-hoc-Query ausführen |
Stored Queries | search | GET | Abrufen der auf dem Server verfügbaren Abfragen. | |
Stored Query | search/{queryId} | GET | CSV, CityJSON, CityJSON-Seq, FlatGeobuf, GML, GeoJSON, HTML, JSON-FG | Führt die gespeicherte Abfrage aus. Parameter werden als Abfrageparameter übergeben. |
Stored Query | search/{queryId} | DELETE, PUT | Erzeugen, Ersetzen und Löschen von Stored Queries. | |
Stored Query Definition | search/{queryId}/definition | GET | Abrufen der Definition der gespeicherten Abfrage. | |
Stored Query Parameters | search/{queryId}/parameters | GET | Abrufen der Definition der Abfrageparameter | |
Stored Query Parameter | search/{queryId}/parameters/{name} | GET | Abrufen der Details eines Abfrageparameters |
Pfad-Parameter
Name | Ressourcen | Beschreibung |
---|---|---|
queryId | Stored Query, Stored Query Definition, Stored Query Parameters, Stored Query Parameter | Der Identifikator der gespeicherten Abfrage. |
name | Stored Query Parameter | Der Name des Abfrageparameters. |
Query Parameter
Name | Ressourcen | Beschreibung |
---|---|---|
f | Search | Wählt das Ausgabeformat der Antwort. Wenn kein Wert angegeben wird, gelten die Standard-HTTP Regeln, d.h. der "Accept"-Header wird zur Bestimmung des Formats verwendet. |
f | Search | Wählt das Ausgabeformat der Antwort. Wenn kein Wert angegeben wird, gelten die Standard-HTTP Regeln, d.h. der "Accept"-Header wird zur Bestimmung des Formats verwendet. |
f | Stored Query | Wählt das Ausgabeformat der Antwort. Wenn kein Wert angegeben wird, gelten die Standard-HTTP Regeln, d.h. der "Accept"-Header wird zur Bestimmung des Formats verwendet. |
f | Stored Query Definition | Wählt das Ausgabeformat der Antwort. Wenn kein Wert angegeben wird, gelten die Standard-HTTP Regeln, d.h. der "Accept"-Header wird zur Bestimmung des Formats verwendet. |
dry-run | Stored Query | Bei true wird die Anfrage nur validiert, die gespeicherte Abfrage wird nicht geändert. |
Konfiguration
Optionen
Name | Default | Beschreibung | Typ | Seit |
---|---|---|---|---|
buildingBlock | Immer SEARCH . | string | v3.1 | |
extensionType | Deprecated Siehe buildingBlock . | string | v3.1 | |
enabled | false | Soll das Modul aktiviert werden? | boolean | v3.1 |
caching | {} | Setzt feste Werte für HTTP-Caching-Header für die Ressourcen. | object | v3.1 |
managerEnabled | false | Steuert, ob Stored Queries über PUT und DELETE verwaltet werden können. | boolean | v3.4 |
validationEnabled | false | Steuert, ob bei PUT von Stored Queries die Validierung über den Header Prefer (Wert handling=strict ) unterstützt werden soll. | boolean | v3.4 |
allLinksAreLocal | false | Signalisiert Feature-Encodern, ob alle Links auf Objekte im selben Dokuments zeigen. | boolean | v3.4 |
Beispiele
- buildingBlock: SEARCH
enabled: true
managerEnabled: true
validationEnabled: false
allLinksAreLocal: true