-
Notifications
You must be signed in to change notification settings - Fork 87
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
Comments on Part 3 #575
Comments
Thank you for the feedback and the thorough review. Getting more feedback from the STAC community will be very valuable, too.
Yes, that is this the intent and we need to make that clear(er).
Agreed, we need to clarify where to find the supported CRSs (in And we also need to be clearer in the wording that the default is Adding an example would also help, I think.
Good points, will add those.
We don't have an issue about this, but there was a comment on Gitter about this and that Elasticsearch does not allow to "compare a field to another field". Maybe one option could be to only support properties on the left side and literals on the right side in Simple CQL and add property/property and literal/literal in a separate conformance class? One question, you say that "Elasticsearch doesn't allow fields (propertyName) on the left side of expressions", but I think that is the typical way that expressions are written (e.g.,
These suggestions all make sense to me.
Yes, that exists, see above. In the JSON representation of the collection ( We should also point out that, if there is no
Thank you. |
2021-05-10: @pvretano will split separate issues out, if they need a discussion. Regarding the binary operator discussion and the support for properties on both sides, there was consensus to restrict Simple CQL to property/literal comparisons and add others in a separate conformance class. |
Yes, I meant so say that ES only allows fields on the left side by default. But, there is a slightly different syntax you can use that allows them to be used on either side ("script query" syntax). I don't know off-hand if there's any restriction like that on literals. Putting RHS properties into a separate conformance class does add a tiny bit of complexity, but it just means implementations have to add that one entry, and it's a good safety value in case there's another datastore out there that cannot support RHS properties for some reason. |
Ah, thank you for clarifying that. I'm going to create a tracking issue for the STAC spec to see if we want to add support for Part 2, even if it's simply advertising that the CRS is always WGS84. |
@philvarner do you see any issues with Edit: Just read @cportele's comment fully. Agree with the idea of simple-cql core being as simple as possible while still useful for majority of use-cases and extending the functionality with conformance classes to handle more complex stuff. |
I worked on an implementation of the STAC API version of this in Franklin and added some comments in @philvarner's PR (radiantearth/stac-api-spec#128 (comment)). I'm copying the relevant bits here, working only with the CQL JSON side of things: Strange mix of types?One thing that I keep tripping on is a strange mixture of types. An expression for filtering a field is a single key at the root of an object, followed by either a map also holding a single key, or an array of maps holding a single key. This singularity strikes me as odd, because objects can hold many keys, so if there's only supposed to be one thing, why does the data structure in principle hold more than one? Similarly, for [
{"eq": ...},
{"neq": ...}
] These string keys in a plural structure are much less convenient to work with than an alternative in which they live under a [
{"kind": "eq", ...},
{"kind": "neq", ...}
] In the
|
This was a bad example, nevermind! |
@philvarner according to cql.json, shouldn't your example be:
|
ah, yes, i missed a level of braces. That's not even valid json. corrected. |
@jisantuc - We merged a PR to address the issues raised by @philvarner (except for the ones that have been moved to their own issue). However, we did not really address your comment, because the context was not clear to us and also how it is related to Phil's comments. For example, we are missing context for the "kind" discussion and how it is related to CQL. Please open a new issue, if there is a change that you would like to propose. Thanks! |
I'm working on incorporating Part 3 into STAC API, so these comments come from that work. Once I have a summary written up of how CQL can be used by STAC, I'm going to get more feedback from the STAC community and will send that to you.
Overall, I think this looks great. I'm particularly excited about the queryables concept -- I've seen this done in ad-hoc or difficult-to-use ways in the past, and this seems like a very clean way of defining this. I think it's also useful for providing a well-defined "translation layer" so that an implementer can easily define what the variable term names are independent of how they're actually stored in the user's datastore.
defined as a queryable, the server must respond with a 400 Bad Request status code". Without this explicit description, I could imagine a fragile implementation that did variable re-writing only for the queryables, but passed others through into a database query, that may or may not work consistently.
I see now that there is a mention of this in 6.4 R5 B, but only as it applies to cross-collection queries -- so, the error behavior should be made more explicit for per-collection query also.
good, since it would be useful to have in a UI displaying these as query options.
filter-crs
, it would be good to have a queryables-like mechanism for advertising which CRSes are supported.Typo / Wordsmithing:
\(+, -, *, /\)
Droid Sans Mono","DejaVu Sans Mono",monospace;
, prints very oddly for the field values that are in bold -- it appears as if it's printed two very then characters about 1mm offset, and is very hard to readThe text was updated successfully, but these errors were encountered: