nlsfi / hakunapi

OGC API Features Java server
https://github.com/nlsfi/hakunapi
MIT License
11 stars 3 forks source link

Enhanced support for OGC API Features : Part 3 (Filtering) and CQL 2 standards #48

Open teezip opened 1 year ago

teezip commented 1 year ago

Background

The support for OGC API Features : Part 3 (Filtering) and CQL 2 standards in Hakunapi has been developed in late 2021 and early 2022 based on the draft standards versions. Still (2023-05-29) waiting for standards to be approved. At least after approval also support in Hakunapi should be enhanced.

First need to analyze and document

Links (drafts)

OGC API Features

Common Query Language (CQL2)

teezip commented 6 months ago

GitHub folder in OGC API Features repository for part 3 and cql2: https://github.com/opengeospatial/ogcapi-features/tree/master/extensions/filtering

OGC Standard roadmap https://www.ogc.org/standards/roadmap/

OGC API github "Part 3: Filtering / Common Query Language (CQL2)" -project page https://github.com/opengeospatial/ogcapi-features/projects/4

Seems that this standard part is getting ready. In 2024-03-24 there was 6 future-work, 1 todo and 144 done items.

Implementation (server and client) status: https://github.com/opengeospatial/ogcapi-features/tree/master/implementations

At least ldproxy, CubeWerx Suite, GDAL and ArcGIS Runtime API announce support for some conformance classes of Part 3.

As noted in background description of this issue in development of Hakunapi the support was originally implemented in late 2021 and early 2022 based on the draft standards version, then the development has been waiting the final standards (part 3 + cql 2).

teezip commented 6 months ago

Currently (2024-03-20) supported conformance classes by Hakunapi: https://github.com/nlsfi/hakunapi/blob/main/src/hakunapi-core/src/main/java/fi/nls/hakunapi/core/ConformanceClass.java

Conformance classes that relate to OGC API - Features - Part 3: Filtering or CQL2

    FILTER("http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/filter"),
    FEATURES_FILTER("http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/features-filter"),

    TEMPORAL_OPERATORS("http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/temporal-operators"),
    ARRAY_OPERATORS("http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/array-operators"),
    PROPERTY_PROPERTY_COMPARISONS("http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/property-property"),
    CUSTOM_FUNCTIONS("http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/functions"),
    ARITHMETIC_EXPRESSIONS("http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/arithmetic"),

    // Common Query Language CQL 2
    BASIC_CQL("http://www.opengis.net/spec/cql2/1.0/conf/basic-cql2"),
    ADVANCED_COMPARISON_OPERATORS("http://www.opengis.net/spec/cql2/1.0/conf/advanced-comparison-operators"),
    BASIC_SPATIAL_OPERATORS("http://www.opengis.net/spec/cql2/1.0/conf/basic-spatial-operators"),
    SPATIAL_OPERATORS("http://www.opengis.net/spec/cql2/1.0/conf/spatial-operators"),
    FUNCTIONS("http://www.opengis.net/spec/cql2/1.0/conf/functions"),
    CQL2_TEXT_ENCODING("http://www.opengis.net/spec/cql2/1.0/conf/cql2-text"),
    CASE_INSENSITIVE_COMPARISON("http://www.opengis.net/spec/cql2/1.0/conf/case-insensitive-comparison"),
    CQL2_JSON_ENCODING("http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/cql2-json"),

All these need to be checked when the standard is finalized. At least classes with "operators" word need to be changed to classess with "functions" name according to the latest drafts.

Following maybe should be supported too:

Queryables
http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/queryables

Queryables as Query Parameters
http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/queryables-query-parameters

Other checks need also.

jampukka commented 1 week ago

See #115