From ab0456d58e5383e2d3c63120b795b258bedaa99d Mon Sep 17 00:00:00 2001 From: Esteban Zimanyi Date: Fri, 22 May 2026 18:37:57 +0200 Subject: [PATCH] Consolidate the ecosystem profile: stream layers as a fourth peer surface, MEOS-API as the binding source MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The repository map presents the four functional layers above MEOS — SQL, stream, HTTP/API, and language bindings — with uniform scope and detail, and states each system as-is. MEOS-API is the single source the language bindings are generated from, including the JMEOS binding behind the JVM streaming runtimes. In the figure, the peer-row titles share one baseline and the legend labels match the box titles. --- profile/README.md | 189 ++++++++---------- profile/images/mobilitydb_ecosystem.svg | 254 +++++++++++++----------- 2 files changed, 221 insertions(+), 222 deletions(-) diff --git a/profile/README.md b/profile/README.md index 061998b..b233027 100644 --- a/profile/README.md +++ b/profile/README.md @@ -24,150 +24,135 @@ The companion datasets and reproducible scripts live in [MobilityDataScienceBook ## Repository map -MobilityDB Ecosystem — MEOS core; MobilityDB, MobilityDuck and MobilitySpark as peer SQL surfaces; MEOS-API as a side codegen catalog projected to OpenAPI/MCP/runtime; a teal portable-data interchange band (Arrow C Data Interface, Parquet / Temporal Data Lake) beneath MEOS; and a dashed, ghosted PLANNED Stream-layers box (MobilityNebula, MobilityKafka, MobilityFlink) as a future fourth peer +MobilityDB Ecosystem — MEOS C core as the foundation; MobilityDB/MobilityDuck/MobilitySpark SQL layers, MobilityNebula/MobilityKafka/MobilityFlink stream layers, MobilityAPI plus the MEOS-API OpenAPI/MCP/runtime contracts as the HTTP/API layer, and six language bindings as peer surfaces; MEOS-API as a side codegen catalog (IDL JSON + shape catalog); application, visualization and cloud as the top layer; a portable-data band (Arrow C Data Interface, Parquet / TemporalParquet, Temporal Data Lake) beneath MEOS -The sections below follow the figure's boxes **bottom → top, left → right**. +Each section below maps to a colored box in the figure (its heading marker matches the box color); each bullet is one of that box's inner components. -### 🔄 Portable data — the interchange band beneath MEOS +### 🟩 Portable data -This is the portable-data interchange band drawn beneath MEOS in the figure. MEOS exposes a zero-copy [Arrow C Data Interface](https://arrow.apache.org/docs/format/CDataInterface.html) and a Parquet / *TemporalParquet* on-disk form, so trajectories move between the engines and a **Temporal Data Lake** without re-encoding. It is the data-side complement of the *portable-computation* property of the SQL layers below. Both properties — and their reproducible companions — are catalogued in the mobility-platform interoperability index (in [MobilityDB](https://github.com/MobilityDB/MobilityDB), `doc/temporal-parquet/`). +The interchange band drawn beneath MEOS: trajectories move between the engines and a **Temporal Data Lake** without re-encoding — the data-side complement of the SQL layers' *portable computation*. Both properties are catalogued in the mobility-platform interoperability index (in [MobilityDB](https://github.com/MobilityDB/MobilityDB), `doc/temporal-parquet/`). -### ⬛ Core C library +- **[Arrow C Data Interface](https://arrow.apache.org/docs/format/CDataInterface.html)** — the zero-copy in-memory form MEOS exposes, so engines share trajectories without re-encoding. +- **Parquet / *TemporalParquet*** — the on-disk form, with a Parquet footer convention for temporal types. +- **Temporal Data Lake** — designed to store trajectories as [Apache Iceberg](https://iceberg.apache.org/) tables under an [Apache Polaris](https://polaris.apache.org/) REST catalog (RBAC, multi-tenancy, credential vending), read by columnar engines such as [Polars](https://pola.rs/) straight off the Arrow stream. -| Repository | Description | -|---|---| -| [MEOS](https://libmeos.org) | Mobility Engine, Open Source — the canonical C library underlying every other piece. | +### 🟪 Core C library + +- **[MEOS](https://libmeos.org)** — Mobility Engine, Open Source: the canonical C library underlying every other piece. ### 🟫 Tooling -| Repository | Description | -|---|---| -| [MEOS-API](https://github.com/MobilityDB/MEOS-API) | Machine-readable description of the MEOS C-library API (an IDL JSON plus a shape-metadata catalog), generated from the MEOS headers via libclang. Beyond binding code-generation, the enriched catalog is projected into service contracts: an OpenAPI 3.1 contract, a Model Context Protocol (MCP) tool manifest (so LLMs/agents can call the MEOS spatiotemporal algebra directly), and a contract-driven runtime HTTP server. | +[MEOS-API](https://github.com/MobilityDB/MEOS-API) is a machine-readable description of the MEOS C-library API, generated from the MEOS headers via libclang: -### 🟦 SQL layers (peers above MEOS) +- **IDL JSON** (`meos-api.json`) — the function and type catalog. +- **Shape-metadata catalog** — argument/return shape annotations for faithful code generation. -Three SQL surfaces share the same MEOS-backed type system, function catalog, and BerlinMOD reference queries. Portable SQL means the same query text runs against any of the three. The portable named-function dialect and its rationale are described in the [edge-to-cloud SQL portability discussion (#861)](https://github.com/MobilityDB/MobilityDB/discussions/861). +From this catalog the ecosystem generates the **language bindings** (PyMEOS, JMEOS, GoMEOS, meos-rs, MEOS.NET, MEOS.js — JMEOS also backs the MobilityFlink and MobilityKafka stream layers) and the **HTTP API contracts** (OpenAPI / MCP / runtime server, shown in the HTTP / API layer below). -This is the platform's **portable computation** property — one query text, three engines. Its data-side complement, **portable data**, is the interchange band described in the *🔄 Portable data — the interchange band beneath MEOS* section above. +### 🟦 SQL layers -| Repository | Description | -|---|---| -| [MobilityDB](https://github.com/MobilityDB/MobilityDB) | PostgreSQL extension — the project's reference SQL surface. | -| [MobilityDuck](https://github.com/MobilityDB/MobilityDuck) | DuckDB extension — peer SQL layer for analytics / columnar workloads. | -| [MobilitySpark](https://github.com/MobilityDB/MobilitySpark) | Apache Spark plugin — peer SQL layer for distributed and large-scale workloads, with MEOS-backed UDFs and DataFrame integration. | +Three SQL surfaces share the same MEOS-backed type system, function catalog, and BerlinMOD reference queries — the same query text runs against any of the three. The parity contract: **the same BerlinMOD reference queries run across all three surfaces and must return identical results**, validated by the cross-platform conformance suite in [MobilityDB-BerlinMOD](https://github.com/MobilityDB/MobilityDB-BerlinMOD). -### 🌊 Stream layers (planned) +- **[MobilityDB](https://github.com/MobilityDB/MobilityDB)** · PostgreSQL — the project's reference SQL surface (PostgreSQL extension), spatiotemporally indexed via [mest](https://github.com/MobilityDB/mest). +- **[MobilityDuck](https://github.com/MobilityDB/MobilityDuck)** · DuckDB — peer SQL layer for analytics / columnar workloads. +- **[MobilitySpark](https://github.com/MobilityDB/MobilitySpark)** · Spark — peer SQL layer for distributed, large-scale workloads (MEOS-backed UDFs + DataFrame integration). -**Planned — not yet built.** The same edge-to-cloud model is planned for the streaming side of the ecosystem, each tool in its canonical role: [MobilityNebula](https://github.com/MobilityDB/MobilityNebula) ([NebulaStream](https://nebula.stream/)) on the **edge**, [MobilityKafka](https://github.com/MobilityDB/MobilityKafka) ([Apache Kafka](https://kafka.apache.org/)) as the streaming **transport backbone** in between, and [MobilityFlink](https://github.com/MobilityDB/MobilityFlink) ([Apache Flink](https://flink.apache.org/)) for **stream processing in the cloud** — reproducing the SNCB benchmark from [*MobilityNebula* (EDBT 2026)](https://docs.mobilitydb.com/pub/MobilityNebula_EDBT_2026.pdf). It is drawn as a dashed, ghosted box — same format as the other peer boxes, second in the peers row of the figure above (dashed = not yet built). +### 🟥 Stream layers -| Repository | Engine | -|---|---| -| [MobilityNebula](https://github.com/MobilityDB/MobilityNebula) | [NebulaStream](https://nebula.stream/) — edge | -| [MobilityKafka](https://github.com/MobilityDB/MobilityKafka) | [Apache Kafka](https://kafka.apache.org/) — streaming transport backbone | -| [MobilityFlink](https://github.com/MobilityDB/MobilityFlink) | [Apache Flink](https://flink.apache.org/) — cloud stream processing | +The same edge-to-cloud model runs on the streaming side, each tool in its canonical role. The published reference architecture is [*MobilityNebula* (EDBT 2026)](https://docs.mobilitydb.com/pub/MobilityNebula_EDBT_2026.pdf), with real railway data (SNCB) as the application demonstration. The parity contract matches the SQL-layer one: **the same BerlinMOD reference queries run across all three platforms in three streaming forms — continuous (always-on), windowed (tumbling / sliding / session), and snapshot (query at time T, ≡ the batch result at the same scale factor)** — the snapshot form anchored to the batch BerlinMOD outputs. The Flink and Kafka platforms reach MEOS through a single `MEOSBridge` over [JMEOS](https://github.com/MobilityDB/JMEOS); MobilityNebula calls MEOS C directly. + +- **[MobilityNebula](https://github.com/MobilityDB/MobilityNebula)** · [NebulaStream](https://nebula.stream/) — the **edge**. +- **[MobilityKafka](https://github.com/MobilityDB/MobilityKafka)** · [Apache Kafka](https://kafka.apache.org/) — the streaming **transport backbone**. +- **[MobilityFlink](https://github.com/MobilityDB/MobilityFlink)** · [Apache Flink](https://flink.apache.org/) — **stream processing in the cloud**. ### 🟩 HTTP / API layer -| Repository | Description | -|---|---| -| [MobilityAPI](https://github.com/MobilityDB/MobilityAPI) | HTTP server implementing the OGC API – Moving Features Standard. | +- **[MobilityAPI](https://github.com/MobilityDB/MobilityAPI)** · OGC MF API — an OGC API – Moving Features server over feature collections, built on MobilityDB via PyMEOS. +- **OpenAPI** — an OpenAPI 3.1 contract over the MEOS algebra, generated from [MEOS-API](https://github.com/MobilityDB/MEOS-API). +- **MCP** — a Model Context Protocol tool manifest, so LLMs / agents call the MEOS algebra directly. +- **runtime** — a contract-driven runtime HTTP server with a pluggable MEOS engine. -### 🟪 Language bindings of MEOS +### 🟪 Language bindings Each binding follows its language community's naming convention. -| Repository | Language | -|---|---| -| [PyMEOS](https://github.com/MobilityDB/PyMEOS) | Python | -| [JMEOS](https://github.com/MobilityDB/JMEOS) | Java / JVM | -| [GoMEOS](https://github.com/MobilityDB/GoMEOS) | Go | -| [meos-rs](https://github.com/MobilityDB/meos-rs) | Rust | -| [MEOS.NET](https://github.com/MobilityDB/MEOS.NET) | .NET / C# | -| [MEOS.js](https://github.com/MobilityDB/MEOS.js) | JavaScript / TypeScript | +- **[PyMEOS](https://github.com/MobilityDB/PyMEOS)** — Python; the reference binding, and the basis for MobilityPandas and MobilityAPI. +- **[JMEOS](https://github.com/MobilityDB/JMEOS)** — Java / JVM; also backs the MobilityFlink and MobilityKafka stream layers via `MEOSBridge`. +- **[GoMEOS](https://github.com/MobilityDB/GoMEOS)** — Go; idiomatic wrappers over the MEOS C ABI. +- **[meos-rs](https://github.com/MobilityDB/meos-rs)** — Rust; safe bindings to MEOS. +- **[MEOS.NET](https://github.com/MobilityDB/MEOS.NET)** — .NET / C#; MEOS for the .NET runtime. +- **[MEOS.js](https://github.com/MobilityDB/MEOS.js)** — JavaScript / TypeScript; MEOS in the browser and Node. ### 🟨 Application platforms -| Repository | Engine / framework | -|---|---| -| [MobilityPandas](https://github.com/MobilityDB/MobilityPandas) | [MovingPandas](https://movingpandas.org/) backed by PyMEOS | -| [MobilityOpenTripPlanner](https://github.com/MobilityDB/MobilityOpenTripPlanner) | [OpenTripPlanner](https://www.opentripplanner.org/) — multimodal trip planning | -| [MobilityMapMatching](https://github.com/MobilityDB/MobilityMapMatching) | Map matching as a service | -| [MobilityDB-PublicTransport](https://github.com/MobilityDB/MobilityDB-PublicTransport) | [GTFS](https://gtfs.org/) / [Netex](https://netex-cen.eu/) integration | +- **[MobilityPandas](https://github.com/MobilityDB/MobilityPandas)** — [MovingPandas](https://movingpandas.org/) backed by PyMEOS. +- **[MobilityOpenTripPlanner](https://github.com/MobilityDB/MobilityOpenTripPlanner)** — [OpenTripPlanner](https://www.opentripplanner.org/) multimodal trip planning. +- **[MobilityMapMatching](https://github.com/MobilityDB/MobilityMapMatching)** — map matching as a service. +- **[MobilityDB-PublicTransport](https://github.com/MobilityDB/MobilityDB-PublicTransport)** — [GTFS](https://gtfs.org/) / [NeTEx](https://netex-cen.eu/) integration. ### 🟧 Visualization and UI integrations -| Repository | Stack | -|---|---| -| [MobilityDeck](https://github.com/MobilityDB/MobilityDeck) | [deck.gl](https://deck.gl/) | -| [MobilityFlink-Deck](https://github.com/MobilityDB/MobilityFlink-Deck) | [deck.gl](https://deck.gl/) on the planned Flink stream layer | -| [MobilityOpenLayers](https://github.com/MobilityDB/MobilityOpenLayers) | [OpenLayers](https://openlayers.org/) | -| [MobilityLeaflet](https://github.com/MobilityDB/MobilityLeaflet) | [Leaflet](https://leafletjs.com/) | -| [MobilityQGIS](https://github.com/MobilityDB/MobilityQGIS) | [QGIS](https://qgis.org/) integration | -| [MobilityGeoServer](https://github.com/MobilityDB/MobilityGeoServer) | [GeoServer](https://geoserver.org/) | -| [MOVE](https://github.com/MobilityDB/move) | QGIS plugin for visualizing MobilityDB query results | -| [Franchise](https://github.com/MobilityDB/Franchise) | Notebook SQL client for exploring MobilityDB / MEOS-backed SQL | - -### 🔵 Cloud and deployment - -| Repository | Target | -|---|---| -| [MobilityDB-AWS](https://github.com/MobilityDB/MobilityDB-AWS) | Amazon Web Services | -| [MobilityDB-Azure](https://github.com/MobilityDB/MobilityDB-Azure) | Microsoft Azure | -| [MobilityDB-GCP](https://github.com/MobilityDB/MobilityDB-GCP) | Google Cloud Platform | -| [MobilityDB-docker](https://github.com/MobilityDB/MobilityDB-docker) | Docker images | +- **[MobilityDeck](https://github.com/MobilityDB/MobilityDeck)** — [deck.gl](https://deck.gl/). +- **[MobilityFlink-Deck](https://github.com/MobilityDB/MobilityFlink-Deck)** — [deck.gl](https://deck.gl/) on the Flink stream layer. +- **[MobilityOpenLayers](https://github.com/MobilityDB/MobilityOpenLayers)** — [OpenLayers](https://openlayers.org/). +- **[MobilityLeaflet](https://github.com/MobilityDB/MobilityLeaflet)** — [Leaflet](https://leafletjs.com/). +- **[MobilityQGIS](https://github.com/MobilityDB/MobilityQGIS)** — [QGIS](https://qgis.org/) integration. +- **[MobilityGeoServer](https://github.com/MobilityDB/MobilityGeoServer)** — [GeoServer](https://geoserver.org/). +- **[MOVE](https://github.com/MobilityDB/move)** — QGIS plugin for visualizing MobilityDB query results. +- **[Franchise](https://github.com/MobilityDB/Franchise)** — notebook SQL client for exploring MobilityDB / MEOS-backed SQL. + +### 🟦 Cloud and deployment + +- **[MobilityDB-AWS](https://github.com/MobilityDB/MobilityDB-AWS)** — deployment recipes and images for Amazon Web Services. +- **[MobilityDB-Azure](https://github.com/MobilityDB/MobilityDB-Azure)** — deployment recipes and images for Microsoft Azure. +- **[MobilityDB-GCP](https://github.com/MobilityDB/MobilityDB-GCP)** — deployment recipes and images for Google Cloud Platform. +- **[MobilityDB-docker](https://github.com/MobilityDB/MobilityDB-docker)** — official Docker images for MobilityDB. ### 📦 Packaging / distribution -| Repository | Description | -|---|---| -| [meos-feedstock](https://github.com/MobilityDB/meos-feedstock) | conda-forge feedstock for the MEOS C library. | -| [pymeos-feedstock](https://github.com/MobilityDB/pymeos-feedstock) | conda-forge feedstock for PyMEOS. | -| [pymeos-cffi-feedstock](https://github.com/MobilityDB/pymeos-cffi-feedstock) | conda-forge feedstock for PyMEOS-CFFI. | +- **[meos-feedstock](https://github.com/MobilityDB/meos-feedstock)** — conda-forge feedstock for the MEOS C library. +- **[pymeos-feedstock](https://github.com/MobilityDB/pymeos-feedstock)** — conda-forge feedstock for PyMEOS. +- **[pymeos-cffi-feedstock](https://github.com/MobilityDB/pymeos-cffi-feedstock)** — conda-forge feedstock for PyMEOS-CFFI. -### 🟤 Datasets and benchmarks +### 📊 Datasets and benchmarks -| Repository | Description | -|---|---| -| [MobilityDB-BerlinMOD](https://github.com/MobilityDB/MobilityDB-BerlinMOD) | [BerlinMOD](https://secondo-database.github.io/BerlinMOD/BerlinMOD.html) data generator and benchmark, using [Open Street Map](https://www.openstreetmap.org/) data and [pgRouting](https://pgrouting.org/). Brussels by default; a Hanoi (Vietnam) instantiation lives in [MobilityDB-BerlinMOD-Hanoi](https://github.com/MobilityDB/MobilityDB-BerlinMOD-Hanoi). Also the cross-platform conformance suite for the portable SQL dialect — the same queries run on all three SQL surfaces and must return identical results. | -| [MobilityDB-Brussels](https://github.com/MobilityDB/MobilityDB-Brussels) | Real Brussels public-transport dataset (STIB, TLC) — companion data, not a BerlinMOD instantiation. | -| [MobilityDB-TPCDS](https://github.com/MobilityDB/MobilityDB-TPCDS) | TPC-DS benchmark adaptation. | +[BerlinMOD](https://secondo-database.github.io/BerlinMOD/BerlinMOD.html) is the project's benchmark — a synthetic-trajectory generator and moving-object-database comparison tool that generates data on an [OpenStreetMap](https://www.openstreetmap.org/) base map via [pgRouting](https://pgrouting.org/), and the cross-platform conformance suite for the portable SQL dialect: the same queries run on all three SQL surfaces and must return identical results. -### 🟢 Education and workshops +- **[MobilityDB-BerlinMOD](https://github.com/MobilityDB/MobilityDB-BerlinMOD)** — the BerlinMOD generator and benchmark itself. +- **[MobilityDB-Brussels](https://github.com/MobilityDB/MobilityDB-Brussels)** — BerlinMOD instantiated on the **Brussels** base map (default). +- **[MobilityDB-BerlinMOD-Hanoi](https://github.com/MobilityDB/MobilityDB-BerlinMOD-Hanoi)** — BerlinMOD instantiated on the **Hanoi** (Vietnam) base map. -| Repository | Description | -|---|---| -| [MobilityDB-workshop](https://github.com/MobilityDB/MobilityDB-workshop) | Hands-on workshop materials. | -| [MobilityDataScienceBook](https://github.com/MobilityDB/MobilityDataScienceBook) | Companion datasets and scripts for the textbook. | +### 🎓 Education and workshops + +- **[MobilityDB-workshop](https://github.com/MobilityDB/MobilityDB-workshop)** — hands-on workshop materials. +- **[MobilityDataScienceBook](https://github.com/MobilityDB/MobilityDataScienceBook)** — companion datasets and scripts for the textbook. ### 📖 Documentation and websites -| Repository | Description | -|---|---| -| [libmeos-website](https://github.com/MobilityDB/libmeos-website) | Source of [libmeos.org](https://libmeos.org) — the project's public front door (concepts, type system, tutorials, bindings). | -| [mobilitydb-website](https://github.com/MobilityDB/mobilitydb-website) | Source of the MobilityDB project website. | +- **[libmeos-website](https://github.com/MobilityDB/libmeos-website)** — source of [libmeos.org](https://libmeos.org), the project's public front door. +- **[mobilitydb-website](https://github.com/MobilityDB/mobilitydb-website)** — source of the MobilityDB project website. -### 🟥 Research +### 🔬 Research -| Repository | Description | -|---|---| -| [MobilityDB-Semantic](https://github.com/MobilityDB/MobilityDB-Semantic) | Semantic-trajectory research project. | +- **[MobilityDB-Semantic](https://github.com/MobilityDB/MobilityDB-Semantic)** — semantic trajectories in MobilityDB; reproducible artifacts accompanying the research. +- **[MobilityDB-TPCDS](https://github.com/MobilityDB/MobilityDB-TPCDS)** — a TPC-DS-based temporal data-warehouse benchmark; reproducible artifacts accompanying the temporal-OLAP research. -### 🟣 Indexing primitives +### 🗂️ Indexing primitives -| Repository | Description | -|---|---| -| [mest](https://github.com/MobilityDB/mest) | Multi-Entry Search Trees for PostgreSQL — generic indexing primitive used by MobilityDB. | +[mest](https://github.com/MobilityDB/mest) provides Multi-Entry GiST and SP-GiST access methods for PostgreSQL — variants of GiST / SP-GiST that index complex and composite types more efficiently. The repository ships three extensions: -### ⬜ Archived +- **mest** — multi-entry R-tree / Quadtree for the PostgreSQL `multirange` and `path` types. +- **postgis-mest** — multi-entry R-tree / Quadtree / Kd-tree for PostGIS `geometry` / `geography`. +- **mobilitydb-mest** — the same for MobilityDB's MEOS types (`spanset`, `tgeompoint`) — the spatiotemporal indexes MobilityDB relies on, including in the cross-platform BerlinMOD benchmark. -These repositories are preserved in read-only form for historical reference and to keep existing links resolvable. Each carries an in-README banner pointing at its successor. +### 🗄️ Archived -| Archived repository | Successor / replacement | -|---|---| -| [MobilityDB-python](https://github.com/MobilityDB/MobilityDB-python) | [PyMEOS](https://github.com/MobilityDB/PyMEOS) | -| [MobilityDB-JDBC](https://github.com/MobilityDB/MobilityDB-JDBC) | [JMEOS](https://github.com/MobilityDB/JMEOS) | -| [pg_mfserv](https://github.com/MobilityDB/pg_mfserv) | [MobilityAPI](https://github.com/MobilityDB/MobilityAPI) | -| [MobilityPySpark](https://github.com/MobilityDB/MobilityPySpark) | [MobilitySpark](https://github.com/MobilityDB/MobilitySpark) | +Preserved in read-only form for historical reference and to keep existing links resolvable. Each carries an in-README banner pointing at its successor. + +- **[MobilityDB-python](https://github.com/MobilityDB/MobilityDB-python)** → [PyMEOS](https://github.com/MobilityDB/PyMEOS) +- **[MobilityDB-JDBC](https://github.com/MobilityDB/MobilityDB-JDBC)** → [JMEOS](https://github.com/MobilityDB/JMEOS) +- **[pg_mfserv](https://github.com/MobilityDB/pg_mfserv)** → [MobilityAPI](https://github.com/MobilityDB/MobilityAPI) +- **[MobilityPySpark](https://github.com/MobilityDB/MobilityPySpark)** → [MobilitySpark](https://github.com/MobilityDB/MobilitySpark) ## Where to start @@ -175,8 +160,10 @@ These repositories are preserved in read-only form for historical reference and |---|---| | Understand what MEOS is, the type system, encodings, tutorials | [libmeos.org](https://libmeos.org) | | Use the SQL surface | [MobilityDB](https://github.com/MobilityDB/MobilityDB) (PostgreSQL), [MobilityDuck](https://github.com/MobilityDB/MobilityDuck) (DuckDB), or [MobilitySpark](https://github.com/MobilityDB/MobilitySpark) (Spark) | -| Move data between engines / build a data lake | The [Arrow C Data Interface](https://arrow.apache.org/docs/format/CDataInterface.html) export + Parquet — see the interoperability index in [MobilityDB](https://github.com/MobilityDB/MobilityDB) (`doc/temporal-parquet/`) | -| Use MEOS from your language | The corresponding [language binding](https://libmeos.org/bindings/) | +| Process trajectories as streams | [MobilityNebula](https://github.com/MobilityDB/MobilityNebula) (NebulaStream), [MobilityKafka](https://github.com/MobilityDB/MobilityKafka) (Kafka), or [MobilityFlink](https://github.com/MobilityDB/MobilityFlink) (Flink) | +| Serve or call MEOS over HTTP | [MobilityAPI](https://github.com/MobilityDB/MobilityAPI) — OGC API – Moving Features over feature collections; [MEOS-API](https://github.com/MobilityDB/MEOS-API) — an OpenAPI 3.1 contract, an MCP tool manifest and a runtime server over the MEOS algebra | +| Move data between engines / build a data lake | The [Arrow C Data Interface](https://arrow.apache.org/docs/format/CDataInterface.html) export + Parquet / *TemporalParquet*; the **Temporal Data Lake** stores to [Apache Iceberg](https://iceberg.apache.org/) under an [Apache Polaris](https://polaris.apache.org/) catalog, read by [Polars](https://pola.rs/) — see the interoperability index in [MobilityDB](https://github.com/MobilityDB/MobilityDB) (`doc/temporal-parquet/`) | +| Use MEOS from your language | [PyMEOS](https://github.com/MobilityDB/PyMEOS) (Python), [JMEOS](https://github.com/MobilityDB/JMEOS) (Java / JVM), [GoMEOS](https://github.com/MobilityDB/GoMEOS) (Go), [meos-rs](https://github.com/MobilityDB/meos-rs) (Rust), [MEOS.NET](https://github.com/MobilityDB/MEOS.NET) (.NET / C#), or [MEOS.js](https://github.com/MobilityDB/MEOS.js) (JavaScript / TypeScript) | | Cite the project in academic work | The book reference above; or the `CITATION.cff` of any binding repo | ## Acknowledgements diff --git a/profile/images/mobilitydb_ecosystem.svg b/profile/images/mobilitydb_ecosystem.svg index f651ec6..6c27fc8 100644 --- a/profile/images/mobilitydb_ecosystem.svg +++ b/profile/images/mobilitydb_ecosystem.svg @@ -1,7 +1,7 @@ - + MobilityDB Ecosystem - Architecture diagram. MEOS (canonical C library) at the center; SQL layers (MobilityDB, MobilityDuck, MobilitySpark), HTTP/API (MobilityAPI), and language bindings (PyMEOS, JMEOS, meos-rs, GoMEOS, MEOS.NET, MEOS.js) as peer layers above; MEOS-API as a side codegen catalog projected to OpenAPI, MCP and a runtime HTTP server; application platforms, visualization, and cloud deployment as the upper layer; a portable-data interchange band (Arrow C Data Interface; Parquet / Temporal Data Lake) beneath MEOS. A dashed, ghosted PLANNED (roadmap) Stream-layers box — same format and same peers row as the SQL, HTTP/API and Language-Bindings boxes — not yet built — shows the same edge-to-cloud model extending to streaming: MobilityNebula on the edge, MobilityKafka as the streaming transport backbone, MobilityFlink for cloud stream processing. The portable-data interchange band is shown in teal. + Architecture diagram. MEOS (canonical C library) is the broad foundation at the center; SQL layers (MobilityDB, MobilityDuck, MobilitySpark), Stream layers (MobilityNebula on the edge, MobilityKafka as the streaming transport backbone, MobilityFlink for cloud stream processing), HTTP/API (MobilityAPI's OGC API – Moving Features plus the MEOS-API OpenAPI/MCP/runtime contracts), and language bindings (PyMEOS, JMEOS, meos-rs, GoMEOS, MEOS.NET, MEOS.js) sit as peer surfaces above; MEOS-API is a side codegen catalog (IDL JSON + shape catalog) that generates the bindings and the HTTP API contracts; application platforms, visualization, and cloud deployment form the top layer; a portable-data interchange band beneath MEOS in green carries the Arrow C Data Interface, Parquet / TemporalParquet, and the Temporal Data Lake. Each box's color matches the colored-square marker on the matching README section; every inner box names one ecosystem component with a uniform 16px border to its enclosing box; one font size for all box content and one for all box titles. @@ -12,127 +12,139 @@ - MobilityDB Ecosystem - - - - Application Platforms - Pandas · OpenTripPlanner - MapMatching - - - - Visualization - Deck · OpenLayers · Leaflet - QGIS · GeoServer · MOVE - - - - Cloud Deployment - AWS · Azure · GCP - docker - - - - - - - - - - SQL Layers - - MobilityDB · PostgreSQL - - MobilityDuck · DuckDB - - MobilitySpark · Spark - - - - - Stream Layers — planned - - MobilityNebula · NebulaStream - - MobilityKafka · Kafka - - MobilityFlink · Flink - - - - - HTTP / API - - MobilityAPI - OGC API – Moving Features - - - - Language Bindings - - PyMEOS - - JMEOS - - meos-rs - - GoMEOS - - MEOS.NET - - MEOS.js - - - - - - - - - MEOS - Mobility Engine, Open Source — C library - canonical implementation - - - - MEOS-API - codegen catalog - meos-api.json from MEOS headers - bindings · OpenAPI · MCP · runtime - - + MobilityDB Ecosystem + + + + + Application Platforms + + Pandas + + OpenTripPlanner + + MapMatching + + PublicTransport + + + + Visualization + + Deck + + OpenLayers + + Leaflet + + QGIS + + GeoServer + + MOVE + + + + Cloud Deployment + + AWS + + Azure + + GCP + + docker + + + + + + + + + + SQL Layers + + MobilityDB · PostgreSQL + + MobilityDuck · DuckDB + + MobilitySpark · Spark + + + + Stream Layers + + MobilityNebula · NebulaStream + + MobilityKafka · Kafka + + MobilityFlink · Flink + + + + HTTP / API + + MobilityAPI · OGC MF API + + OpenAPI + + MCP + + runtime + + + + Language Bindings + + PyMEOS + + JMEOS + + GoMEOS + + meos-rs + + MEOS.NET + + MEOS.js + + + + + + + + + + MEOS + Mobility Engine, Open Source — C library + canonical implementation + + + + MEOS-API + + IDL JSON (meos-api.json) + + shape-metadata catalog + + - - - - Layer colors - - Core (MEOS) - - SQL layers - - HTTP / API - - Language bindings - - Tooling - - Application - - Visualization - - Cloud - - Portable data - - Stream (planned) + + - - - - - Portable data — Arrow C Data Interface · Parquet / Temporal Data Lake + + + + + Portable data + + Arrow C Data Interface + + Parquet / TemporalParquet + + Temporal Data Lake