From cec227bbcd4b3f38fe46501f2d5cbb0977cdcad7 Mon Sep 17 00:00:00 2001 From: Jonathan Healy Date: Sat, 6 Dec 2025 17:36:32 +0800 Subject: [PATCH] Add Community Extension: SKOS Registry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a new community extension to support a **SKOS Semantic Registry** for STAC APIs. **Repository:** https://github.com/Healy-Hyperspatial/stac-api-extensions-skos-registry ### Motivation This extension defines a standard mechanism to expose **SKOS (Simple Knowledge Organization System)** hierarchies as navigable **Virtual Catalogs**. Currently, the standard [Themes Extension](https://github.com/stac-extensions/themes) allows providers to tag data with controlled vocabularies (e.g., "Forestry", "Disaster", "Optical"). However, these tags remain "dead metadata"—useful for advanced search filtering, but invisible in the API's browsing structure. Users cannot "click through" a concept to explore related datasets. ### The Solution: "Live Folders" This extension solves that discoverability gap by generating **"Virtual Catalogs"** for SKOS concepts. * **Input:** An Item tagged with `themes: [{id: "forestry"}]`. * **Output:** A browseable Catalog resource at `/catalogs/theme::forestry`. ### Key Capabilities 1. **Poly-Hierarchy:** Enables items to belong to multiple parents simultaneously (e.g., *Physical Parent*=`USGS` and *Semantic Parent*=`Forestry`) without data duplication. 2. **Taxonomy Navigation:** Supports traversing the SKOS graph (Broader/Narrower concepts) via standard STAC `child` and `parent` links. 3. [cite_start]**Interoperability:** Aligns with research on geospatial interoperability (such as the [UN-GGIM Data Themes](https://arxiv.org/abs/2110.06883) [cite: 7]), facilitating "meaningful relations" between disparate datasets from different organizations. **Implementation:** We are currently looking at implementing this specification in the `stac-fastapi-elasticsearch-opensearch` project. The implementation leverages the **Catalogs Endpoint Extension** to provide the routing infrastructure for these virtual resources. --- python/config.py | 1 + 1 file changed, 1 insertion(+) diff --git a/python/config.py b/python/config.py index cf34c01..c565edd 100644 --- a/python/config.py +++ b/python/config.py @@ -2,6 +2,7 @@ COMMUNITY_REPOS = [ # org, repo name ['cedadev', 'stac-context-collections'], + ['Healy-Hyperspatial', 'skos-registry'], ] # Other extensions that are not on GitHub