-
Notifications
You must be signed in to change notification settings - Fork 14
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
Resource Path Discussion #74
Comments
Hm, now we get a very intricate meaning of path components, based on the keywords. In our discussion yesterday we addressed this and thought that just leaving out everything after {collectionId} could act as a catch-all. Actually, I find this more straightforward. my 2 morning cents, |
Leaving out everything after |
@hylkevds correct. /collections/{collectionId} returns the collectionInfo resource (metadata) for that collection. So we do need to define what comes after /items. Whatever it is, it needs to return the number matched, number returned, and next elements per API-Features. Which suggests something like a Feature Collection. |
If the same collection is available as vectors, coverage, and a map though, how to know what to return / expect? |
I think it's important to distinguish cases where the (vector) features, coverages, maps, data/map tiles etc. are seen (by the data provider) as primary resources to access from the cases where they emerge as different representations of an underlying, also exposed common resource. So in the latter case you may have
|
Maybe it is splitting hairs, but it is important from a conceptual view: |
@cportele at least from the JSON representation perspective, /collections/{collectionId} is very much meta data about the collection, or at the very least a description of it (including some metadata). This is what describes the basic things like temporal and geospatial extents, and so on. But for an HTML representation you might want to show the collection and browse it right away in a nice online viewer, and that's fine...
It is very common to be able to download shapefiles from ArcMap online, or GML from a WFS GetFeatures -- those are feature collections? |
@cportele, I have read the OGC API Features again. http://docs.opengeospatial.org/is/17-069r3/17-069r3.html#_collection_ In the current version, that could or could not return the data. The response description is so ambiguous that now I realize a full feature collection may also be a legal response!!! I wonder the implications of this in OWS Common collections but I anticipate it as a "not good". /collections/{collectionId}/items provides access to data fragmented into items (if the collection can be fragmented into items) /collections/{collectionId} is data in an "abstract" way and it cannot be directly retrievable without defining providing an "access" model first. And access modes can be multiple and you do not need to know with one is the "backend" one (even if it could be good to know). |
I like what @cportele points out but think it's important to be clear -- the URI identifies the collection. The document you receive when dereferencing that URI is some representation of the entire collection -- which may look like "metadata". The key is that the top-level collection representation has a seamless path (through link rel "items") to expand the rest of the collections object. In the SELFIE, we've pushed this distinction between "meta" resources and "data" resources a bit (too?) far. We (@abhritchie really) are just realizing that we need to step back and think about the distinction more carefully / with more people and technologies at the table. The distinction is useful from a communications and use-case definition standpoint but pushing it down into the technical specification or implementation is problematic -- as is discussed above. |
I would like to propose a slightly different interpretation on the URIs. In the soon to be active Environmental Data Retrieval API SWG, we envisage that paths like: These 'items' or 'features' do not explicitly exist, except as transient queries with relevant search terms or metadata to the right of the '?' We do not think these cause conflicts with other interpretatioin of the URIs |
The current content reflects the consensus about the standard resource representations, but that doesn't change the fact that the resource is the collection itself.
This is not the agreed scope of OGC API - Catalogues. I am not saying that things cannot be changed, but that would seem to be a significant change of scope and would require that the SWG would have to be recharted. This is also not my understanding of what the Catalogues API is about.
ArcGIS has a feature layer resource that is simlar to the OGC API Features collection resource and also separate resources to fetch the features. WFS does not have a collection (or feature type) resource at all, it is RPC-based, not resource oriented and different requests return various bits and pieces of a collection, but the relationship of those bits is only implicit.
It is not ambiguous. The requirements are all specified so that the current core content can be extended with additional information. This is essential. In this case, the description is clear that there has to be a link to fetch the features in the collection. If some server would add all the features in the collection resource representation (or any other information), yes, the server could do it, but why one do it? Generic clients would ignore this information and it would just be unnecessary noise. Please do not try to see issues where in practice there is no issue. |
The key thing to remember is... keep it simple. Maybe I've missed some aspect of the dialog, but Resource paths should be easy to understand and implement. Like this... The server SHALL support the HTTP GET operation at the path /styles Done |
@jeffharrison The challenge is to try to ensure that the different APIs tie in together nicely. I personally believe it would be useful to take a few steps back from OpenAPI and "Resource paths" and think about how the different OGC API modules are meant to tie in together, before getting back to see what kind of resource paths could accommodate this. |
OGC APIs are (or should be ;-) modular, open building blocks. Easy to implement in days, not weeks. They can be aggregated if needed, or simply function on individual resources. For example, if a user wants to reuse a style, they fetch a stylesheet of a style from http://example.org/styles-api/styles/{styleId} By the way, I've briefed this approach and people immediately understand it. So as I read the dialog on this board it seems we are talking about two use cases... simple Resource paths and aggregated Resource paths. I see no reason why it's a choice between one or the other. |
@jeffharrison I think the discussion is not about whether they should be simple or aggregated, but about figuring out the logical, intuitive ways how these simple resource paths should aggregate. As well as coordination of the resource paths namespace between the different modules so that they are complementary, and not conflicting with each other. |
Jerome, So let's do both - Define simple Resource paths and define aggregated Resource paths. It's already underway and I see no problem. It's not one or the other, there's a place for both. |
Totally agree, @jeffharrison. The easy button is a great trope to try and live up to and is worth including in what we are doing IMHO. There will also always be a need to pay the generalization penalty ensuring these APIs enable functionality that is reflective of the full scope of complexity of the data they represent and the scope of use cases people have for them. The trick is that, inevitably, the easy button approach must be opinionated to limit the options and integrations it offers. I think what you are arguing for is to split these APIs apart to a sufficient degree that the number of opinionated decisions implicit in them is reduced to a minimum? e.g. I just implemented a R function plot_nhdplus("05428500") There is a significant group of people who will be thrilled with that. However, many will want to do much more so we can also do the same thing, "plot_nhdplus" in a few other ways: plot_nhdplus(bbox = bbox)
plot_nhdplus(list(13293970, 13293750), streamorder = 3, nhdplus_data = local_data_path)
plot_nhdplus(list(list("comid", "13293970"),
list("nwissite", "USGS-05428500"),
list("huc12pp", "070900020603"),
list("huc12pp", "070900020602")),
streamorder = 2,
nhdplus_data = sample_data,
plot_config = list(basin = list(lwd = 2),
outlets = list(huc12pp = list(cex = 1.5),
comid = list(col = "green")))) The reason I include this example is that -- I would have failed as a developer if I didn't provide what a huge number of people want |
Yes, I think. What we've been sponsoring in recent OGC Testbeds and Pilots is identifying geospatial Resources such as... /tiles ...and associated APIs and encodings. Participants in OGC Testbeds and Pilots have implemented these over the last year and shown they work. They've also been extensively documented in OGC Engineering Reports and Draft Specification ERs. When possible we've distributed demo videos on YouTube as well. There will also certainly be more complex use cases that may require aggregated Resources too. |
Path fragments that point to resources ( The question now becomes, what happens when multiple SWGs need to expose styles of incompatible types. Lets say we have styles for maps and styles for documents.
|
@hylkevds A path identifies a representation of a resource. So map and document representations of the collection should be on different paths. Something like: /styles = styles that apply to the whole API We just have to agree on the datasets, representations, and encodings. |
@hylkevds And since a style is a resource, we should be able to use the proposed CQL query language to filter styles. |
Chuck, can you share more about the proposed CQL?
thanks,
Peter
On 27.11.19 13:41, Chuck Heazel wrote:
@hylkevds <https://github.com/hylkevds> And since a style is a resource, we
should be able to use the proposed CQL query language to filter styles.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#74>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABOR5DTXUF24TNNTYT5HXEDQVZTJLANCNFSM4JP5M4FA>.
--
Dr. Peter Baumann
- Executive Director, rasdaman GmbH Bremen (HRB 26793)
www.rasdaman.com, mail: baumann@rasdaman.com
tel: 0800-rasdaman, fax: 0800-rasdafax, mobile: +49-173-5837882
- Professor of Computer Science, Jacobs University Bremen
www.faculty.jacobs-university.de/pbaumann
mail: p.baumann@jacobs-university.de
tel: +49-421-200-3178, fax: +49-421-200-493178
"A brilliant idea is a job halfdone."
|
I think users tend to expect contents of deeper paths to be a subset of shallower paths. So users expect Filtering may work, but only if there is some clear property to filter on. That has to be taken into account when designing the data model, or we end up with very awkward queries. Two SWG that both design/expose a styles data model would have communicate to ensure such a filterable property exist in both their data models. |
|
@cportele agreeing with everything you said there. But I think it would be very worthwhile/useful to try to map the existing functionality of the core classic OGC services (specifically: WMS/WMTS, WFS, WCS, CSW and WPS) to new OGC API resource paths. This would really provide a "big picture", and a great starting point for capabilities to aim for in a first version of the different standards, and make everyone confident that these key OGC API building blocks will all work great together, and at the same time clarify the transition from classic OGC services to the OGC API world. I picture a nice diagram which could illustrate all this... A variant with the "classic services" mapping, and a lighter one without just showing how all of these building blocks functionality can be integrated in a single API. |
I agree with @cportele and to some extent @jerstlouis, but I would rather we started at the W3C HTTP(S) resources end. Then we might be able to identify those current/legacy client/server approaches that cannot or should not be promulgated into a resource orientated world. |
@hylkevds Or you can look at the path depth as an indicator of the scope of the resource. A style defined at /collections/{collectionID} only applies to resources at or below this location on the path. OpenAPI uses this approach for Security Requirements and Parameters, so it should not come as a surprise to users. The current version of API-Common distinguishes between spatial-temporal resources (which live in the collections) and information resources (which support the spatial-temporal resources). Spatial-temporal resources follow the pattern of sub-setting the deeper you go. Information resources follow the path defined scope pattern. |
There have been no comments on this issue since November 2019. The discussion has moved on to other issues and this one can be closed. |
I agree with #74 (comment). The discussion has moved on to other issues and this one can be closed. |
2020-12-10 Cross SWG discussion There was no further comment on this issue. |
@cmheazel This issue is now tagged as "close", but is still in the Backlog of the User Guide. Also, looking at the current content of the guide, I am wondering if some essential rules like this, or some of what is there right now, really doesn't belong in informative section of Part 1: Core, e.g. 6.3. Link Relations (which really is just Links in general) as also mentioned in #186 (comment), and 6.4 Relation Types. |
Decision to close it in 2021-02-22 telco |
One of the most contentious issues we face in API development is consensus on standard resource paths. This issue serves as an OGC-wide resource for continuing those discussions.
The text was updated successfully, but these errors were encountered: