Skip to content
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

Concepts/components vs. concrete/literal paths #86

Open
Schpidi opened this issue Jan 9, 2020 · 11 comments
Open

Concepts/components vs. concrete/literal paths #86

Schpidi opened this issue Jan 9, 2020 · 11 comments

Comments

@Schpidi
Copy link
Member

Schpidi commented Jan 9, 2020

At the ESIP & OGC Sprint it came up in multiple discussions why the OAPI specs are defining concrete, literal paths like /collections, rather than the concept of a collection or component in OpenAPI. OAPI instances could use those components in their paths as needed by referencing to the published schemas like /landsat being of type collection and /landsat/data of type coverage. This would also allow OAPI instances to mix together components in their paths as needed, for example to put the STAC search concept below a collection or a coverage without violating any spec requirement.

Cc @cmheazel

@cmheazel
Copy link
Contributor

The OGC API standards are organized by resource, not by path. Thus we have a section for the landing page, collections metadata, collection information metadata, etc. Each with an associated JSON schema. This is appropriate for a REST-like interface. We also describe two access patterns, hypermedia and standard paths.

That being said, we tend to discuss the APIs in terms of the paths rather than the resources. Is this a problem? After all, paths are identifiers for resources. Or does it indicate that critical concepts are not being communicated to the readers?

@joanma747
Copy link
Contributor

The concepts requested starts after the collections path. To deal with Landsat "variants" we could do something like:

/collections/landsat_8_oli/all
/collections/landsat_8_tirs/all

This is beyond the OGC API Common BUT what could be discussed in "commons" i the way we do "qualified" naming mechanisms. This could result in a subclause discussing the way to do this (in the examples I'm usign "_" but this is up for discussion)

This also relate with the "collections of collections" issue.

@cmheazel
Copy link
Contributor

@joanma747 What does /collections/landsat_8_oli/all return? If this is a Coverage API, then you should get back a single coverage. I expect that is not the case.

@dblodgett-usgs
Copy link

The literal paths and component-based design are really useful implementation nuances that should be helpful in teasing apart some of the sticky issues here.

@Schpidi's premise opens the door to having a generic collection component that could be used at a literal path other than “/collections”.

What this would be saying is that

  1. we have a core concept: “collection” resource-type that can be extended and
  2. consistent core API details and behavior for “items” who's type is specific to the collection resource type.

The requirement we need to explore further is--if an API is going to use literal paths (e.g. “/collections”), do we want to say that all resources that come from that literal path adhere to the same conformance-class(es)?

@cmheazel cmheazel added the Resources of Collections type Issues related to the /collections path label May 11, 2020
@cmheazel cmheazel added this to Backlog in Part 2 Version 1 via automation May 11, 2020
@cmheazel cmheazel added Collections Applicable to Collections (consider to use Part 2 instead) and removed Resources of Collections type Issues related to the /collections path labels May 11, 2020
@dblodgett-usgs
Copy link

I don't know if we have clearly defined the reasoning for using literal paths in OGC API. I don't think we are going to step away from them, but maybe we should keep this issue open and get a tighter engineering decision documented for why we are making the decision to use the literal path pattern? @Schpidi -- do you feel the need to get that documented or can we close?

@cmheazel
Copy link
Contributor

Status update: The API-Common standard no longer uses literal paths except for the landing page and conformance resources. Paths have been recast as URIs used within the standards to identify resources. It is recommended, but not required, that these paths be used in API implementations as well. Further refinement of the text may be needed to make this clear.

@Schpidi
Copy link
Member Author

Schpidi commented Aug 17, 2020

So only / and /conformance are required literally? And an implementation could use /mydata instead of /collections? Given that the implemented OAPIResource specification allows this of course. Is there any guidance of how to specify this in an API relying on OAPICommon?

@cmheazel cmheazel self-assigned this Sep 11, 2020
@cmheazel
Copy link
Contributor

@Schpidi I'll check the Users Guide to make sure this topic is covered. If not, I'll add it. I'll also make sure Parts 1 and 2 have links to the Users Guide in appropriate locations. Then this issue will be closed.

@cmheazel cmheazel added the Part 1 Applicable to Part 1 Core label Sep 27, 2020
@cmheazel
Copy link
Contributor

A link to the users guide has been added to part 1. There is no section in the users guide to link to at this time.

@cmheazel cmheazel added Guide and removed Part 1 Applicable to Part 1 Core labels Sep 28, 2020
@cmheazel cmheazel added this to Backlog in Users Guide Nov 22, 2020
@cmheazel cmheazel moved this from Backlog to In Review in Part 2 Version 1 Nov 22, 2020
Part 2 Version 1 automation moved this from In Review to Done May 23, 2021
Users Guide automation moved this from Backlog to Done May 23, 2021
@cmheazel cmheazel reopened this May 23, 2021
Part 2 Version 1 automation moved this from Done to In progress May 23, 2021
Users Guide automation moved this from Done to In Progress May 23, 2021
@cmheazel
Copy link
Contributor

cmheazel commented Jun 1, 2021

Added a link to the Users Guide in Part 2.
Added an Identifiers section to the Users Guide with initial content.

@cmheazel cmheazel moved this from In progress to In Review in Part 2 Version 1 Jun 15, 2021
@cmheazel cmheazel removed Collections Applicable to Collections (consider to use Part 2 instead) Progress: solution merged labels Jun 28, 2021
@cmheazel cmheazel moved this from In Review to Done in Part 2 Version 1 Jun 28, 2021
@cmheazel
Copy link
Contributor

June 26, 2021 - Part 2 portion is done. Issue remains open untill Users Guide content is provided.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Users Guide
In Progress
Development

No branches or pull requests

4 participants