Gap 1 — Dimension naming is recommended, not required
The openEO documentation (Data Cubes) presents t, bands, x, y as the canonical dimension names. This is also what most backends return, and is the outcome of the discussion in #208. However, the spec itself only recommends these names — it does not require them, and at least one backend we tested uses time instead of t.
The practical consequence: a single call like
cube.reduce_dimension(dimension="t", reducer="first")
raises a validation error on a backend that exposes the dimension as time. Conversely, dimension="time" is rejected on a spec-aligned backend that says "valid dimensions are bands, x, y". The same applies to apply_dimension(dimension="bands" | "spectral", ...).
Clients can work around this by reading the cube's dimensions() at build time or by keeping a per-endpoint lookup. Neither is a portability story a UDP library should have to carry.
Suggested direction. Either:
- Promote the existing recommendation to a requirement for common dimension types (temporal →
t, bands → bands, spatial → x / y), or
- Add a spec-level compliance test and mark backends that deviate as non-conformant, or
- At minimum, provide a standard way (process or capability field) to query the canonical dimension names a backend uses, so clients don't have to introspect every cube.
Prior discussion: #208 (closed) established the names as a recommendation but explicitly acknowledged that backends may not follow it.
Gap 1 — Dimension naming is recommended, not required
The openEO documentation (Data Cubes) presents
t,bands,x,yas the canonical dimension names. This is also what most backends return, and is the outcome of the discussion in #208. However, the spec itself only recommends these names — it does not require them, and at least one backend we tested usestimeinstead oft.The practical consequence: a single call like
raises a validation error on a backend that exposes the dimension as
time. Conversely,dimension="time"is rejected on a spec-aligned backend that says "valid dimensions arebands,x,y". The same applies toapply_dimension(dimension="bands" | "spectral", ...).Clients can work around this by reading the cube's
dimensions()at build time or by keeping a per-endpoint lookup. Neither is a portability story a UDP library should have to carry.Suggested direction. Either:
t, bands →bands, spatial →x/y), orPrior discussion: #208 (closed) established the names as a recommendation but explicitly acknowledged that backends may not follow it.