-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Create encoding-specific conformance classes #166
Comments
@jerstlouis The right hierarchy would be
|
Thanks @pebau, as discussed last week, the native netCDF and GeoTIFF physical encodings and logical models do not conform to the CIS logical model. The OGC® GML Application Schema - Coverages - GeoTIFF Coverage Encoding Profile and CF-netCDF 3.0 encoding using GML Coverage Application Schema used together with WCS are a different story, rooted in legacy GMLCOV, which we want to avoid in OGC API - Coverages. The GML Application Schema - Coverages - GeoTIFF Coverage Encoding Profile specifies a way for GMLCOV to reference external GeoTIFF files transferred separately (e.g., using multi-part encoding). The CF-netCDF 3.0 encoding using GML Coverage Application Schema specifies how to map a CF-netCDF datastore to a GMLCOV output. Both involved transferring the coverage primarily as GMLCOV (aka CIS 1.0). They are NOT a netCDF and GeoTIFF encoding of the coverage. We discussed this extensively last week, and several times before as well. We discussed RDF again today, and we could potentially include CIS RDF as an additional conformance class (or maybe as part of the same conformance class, since it's just mostly the same with extra context links), but we would need a dedicated media type for it. Since CIS Requirement 38 explicitly calls for JSON-LD, perhaps it could be done together with defining a proper media type for CIS JSON as an additional parameter to the CIS JSON media type? That is the topic of opengeospatial/coverage-implementation-schema#19 . For now we could potentially use Today we discussed the .n3 encoding and there was some confusion as whether that is the same data encoded in a different way, or it provides some context. It seems to me that it might be the latter, since e.g., I could not find the same rangeset encoded @joanma747 clarifications would be most welcomed. |
Shouldn't this be extensible? If you prescribe allowed options, what it someone defines COG 2.0? |
@m-mohr Yes, it is always fully extensible. As with OGC API - Features, Tiles, EDR and others, even though some conformance classes are defined in the standard itself to facilitate declaring support for common formats, the standard is clear that an HTTP Accept header can always be used to negotiate any other format (and if necessary, a future extension/part to the standard could define a conformance class for those). |
Great to hear. If I can request all file formats through media types (as long as there is one), why do they need conformance classes? |
@m-mohr For the following reasons:
|
An initial draft of the encoding-specific requirements classes have been merged with #172. |
So how do I detect a unique list all supported file formats? I'm implementing a client and it must let the user choose the file format he wants to load. As far as I understand:
I guess the relation types in links take preference over the conformance classes in such a case? Or should they be merged? If yes, is there a way to map conformance classes to media types? |
@m-mohr Tough questions ;) But they apply equally to all OGC API standards, so something to also discuss in Common and/or with the Cross-SWG issue discussions. But trying to answer each point here:
Not possible for those non-OGC conformance classes in a generic way. Clients that support specific formats can easily identify conformance classes that they recognize whether part of the standard or coming from somewhere else. The reason to include these conformance classes in the first place is to at least have a standard way to identify common formats expected to be supported by several implementations, so at least all clients can recognize these. Generically recognizing conformance classes outside of the standard is not possible.
On one hand this could be the general problem that
If a link does not include the type property, then the resource likely supports multiple (possibly several) representations, and the client should use an
Do you mean the
There is a table in the latest draft that does exactly this: NOTE: I believe all of this is consistent across all OGC API data access standards, including published Features, EDR and Tiles, as well as upcoming Maps, DGGS, 3D GeoVolumes... Perhaps we should add clarifications regarding all this in Common - Part 2: Geospatial data that these all depend on. |
Okay, so this is not a reliable way to generate a list of supported file formats. Let's look at the other ones then (i.e. the links).
It was just meant as examples to visualize the issue better. But in principle this can occur for all media types. If I want to support two different flavors of ZARR or netCDF, the same applies basically. I just think that content negotiation by media types (IANA is in priciple relatively strict with "additions" to media types) might get problematic/ambiguous.
STAC will not be a profile of Records in the first iteration, but might be in the future. It is closely aligned but not fully.
Yes.
So If I write a client such as the GDC Web Editor which let's the choice to the user and in principle supports all media types, what shall I do? I want the user to choose from all supported file formats. Should I send a
I meant if I have a list of supported file formats from the conformance classes and one from the type in the coverage links, which list should I show to users in the GDC Web Editor? I assumed the links have preference, although I can't show a list if there's no type set (see above). Good to know, thanks. |
@jerstlouis Copied from another Gitlab issue to have everything in one place:
Above, you've said above I can't reliably read that from the conformance classes. So it looks like there is no definitive way to get a list of supported file formats right now, right? This should be fixed, I think. |
That's not a reliable way either because several implementations may opt to have a single |
I didn't say that it's reliable, I just wanted to link to the discussion of the other alternative below. In fact, I added in the other post:
Otherwise, you/I can't write a user-friendly client. |
I think this is related to our earlier discussion about at which point you care about which media type to use. This is where the
Just as you said earlier, possibly in a slightly different context:
Ideally, I think a user-friendly client should not require the user to deal with formats :)
I think the list of supported formats to show would be all of those from the conformance classes, plus any additional conformance classes not in the standard that the client is aware of, plus any
Nothing better than the above, but this applies exactly the same to all OGC API data access standards, including Features. |
No! As a user I want to choose whether my end result is a COG or a netCDF. |
In a connected environment the end-user should not need to care and just see results or get an answer to their question, but this is getting philosophical :) Of course the need for intermediate exports of data still persists, so this is a use case to address.
As stated above the client can get this right now:
This may not seem ideal, but it's not that bad in practice. If OGC API - Common - Part 1 is supported, and the client supports dynamically parsing the particular API definition language used to describe the API (e.g., OpenAPI) for the deployed implementation, then of course the client can also look at the paths responses media types.
This issue opengeospatial/ogcapi-common#160 that I linked to on GitLab is the central place for this discussion I believe. Perhaps optional requirement classes to define requirements for HEAD and/or OPTIONS and/or something similar to the list of media types available in openEO could be a solution? The list of media type would need to be resource type-specific. |
It is not ideal, it is not reliable and I can't build a client on top of it.
openEO defines the file formats globally for input and output respectively. We don't really have different resource types (except for a broad distinction between raster, vector, table and "other", Thanks, added a short comment there, linking back to this discussion. |
The above strategy (standard/client-recognized conformance classes + type) is fully reliable (with the only exception of media types not part of the standard conformance classes and of which the client is not aware, when also not using Are you referring specifically to that exception, do you mean it is significantly more work than it should be, or is there really a technical limitation that I am missing?
For OGC APIs, strictly for "data" we at least have coverages, maps, feature collections, individual features, vector tiles, coverage tiles, map tiles. Then there are all the metadata resources like collection lists / collection descriptions, process lists / process descriptions... |
@m-mohr I concur with your statement that the user should be able to 1) get a list of available formats and 2) choose the one they want. Scanning conformance classes to get this information seems overly complex :-) |
Feb 24 code sprint: do we need a separate conformance class with requirements for GML/JP2 ? |
Here are some more that eventually may need conformance classes: https://gdal.org/en/latest/drivers/raster/index.html |
This would follow the approach used in OGC API - Features, Tiles, Maps...
Proposed conformance classes:
CIS JSON (+RDF to include JSON-LD
@context
?)netCDF
GeoTIFF
CoverageJSON
LAS/LAZ?
Zarr?
JPEG2000 with GML/JP2?
JPEG XL?? (eventually: how to add GML/JP2 or JSON in JPEG XL?)
PNG? (to populate GeoPackage Gridded Coverage Extension) -- with factor and offset query parameters
Cloud native conformance class indicating a cloud optimized profile and support for HTTP Range (+ presence of overviews?) COG #93
The text was updated successfully, but these errors were encountered: