Geospatial Building Block (GBB) — Core conformance class
| Conformance class | https://luciocola.github.io/geospatial-building-block/1.0/conf/core |
| Requirements class | https://luciocola.github.io/geospatial-building-block/1.0/req/core |
| Target | A web service that exposes one or more geospatial processes |
| Depends on (OGC Building Blocks) | ogc.ogc-utils.json-link, ogc.api.common.landingPage, ogc.api.common.confClasses |
| Status | under development |
The core class captures the minimum observable behaviour that makes a capability a GBB. It is deliberately smaller than the full GBB kernel contract (bblock-kernel.json). It builds on (dependsOn) only the OGC building blocks the reference implementation actually satisfies. It does not depend on OGC API — Processes job listing, callbacks or the OGC exception schema.
Requirements
All paths are relative to the service root. Requirement identifiers are relative to the requirements-class URI.
/req/core/landing
GET /withAccept: application/jsonSHALL return200and a JSON object valid againstogc.api.common.landingPage.- Its
linksSHALL includeself,conformance,service-desc(the OpenAPI document) andservice-doc(human-readable documentation). - Every link SHALL be valid against
ogc.ogc-utils.json-link.
A browser request (Accept: text/html without JSON) MAY be redirected to the human-readable documentation.
/req/core/conformance
GET /conformanceSHALL return a JSON object valid againstogc.api.common.confClasses.conformsToSHALL include the URI of this conformance class.conformsToSHALL NOT list a conformance class whose resources are not implemented.
/req/core/process-declaration
This requirement corresponds to algorithmContract in the kernel.
- Each entry in
GET /processesSHALL haveid,titleandversion. GET /processes/{id}SHALL declareinputs(accepted input semantics) andoutputs(declared output semantics).
/req/core/structured-failure
- A request for an unknown process or job SHALL return
404with a JSON object body. - Invalid or unsupported input SHALL return a
4xxstatus with a JSON object body. It SHALL NOT be silently accepted or ignored.
/req/core/evidence
This requirement corresponds to minimumSemantics and evidenceContract.required in the kernel.
- Executing a process SHALL return a job identifier and a
monitorlink. GET /jobs/{jobId}/resultsfor a job in a terminal state SHALL be valid against schema/job-evidence.schema.json. It therefore reports:- the execution identifier (
jobID) - the process identity (
processID) - the execution status
- the input references (
inputs) - the output references (
results.*.href) - a validation result (
validation.passed)
- the execution identifier (
- Operational resources (
/jobs, execution) MAY require authentication. Discovery resources (/,/conformance,/processes) SHALL NOT require it.
/req/core/stac-links
- When a process produces STAC Items, each Item SHALL contain a
linksarray. - An Item served by the kernel SHALL include an absolute
selflink to that Item and arootlink to a real STAC Catalog. A service landing page is not a STAC Catalog and SHALL NOT be used as the root. - The root Catalog SHALL link back to the published Items. Catalogs and Items SHALL retain the operational-resource authentication policy.
The reference kernel serves the Catalog at /jobs/{jobId}/catalog. Workflow
writers use relative self links; the kernel replaces self and root links
in the HTTP representation without modifying the saved files. Standalone
outputs need not invent a root when no Catalog has been published. STAC requires
links, but the additional self/root requirements here are GBB requirements,
not a claim that every GeoJSON Feature must have them.
Optional conformance classes
- Provenance is a separate draft class. It is not advertised by the kernel until the relevant producers pass its tests.
- Liability remains the optional kernel class
liability-claims-evidence. Where claims are supplied, they must validate against the declared extension; core does not require producing liability evidence.
Abstract test suite
The executable tests are in test_gbb_conformance.py. There is one test per requirement, and the OGC dependency schemas are checked structurally.
Publication source
Source specification, revision acf57b3e2b372bd924e9d900550da597612818d8. Site home.