diff --git a/profile/README.md b/profile/README.md index 061998b..6f1050e 100644 --- a/profile/README.md +++ b/profile/README.md @@ -24,150 +24,137 @@ 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** โ€” the zero-copy **in-memory** form MEOS exposes, so engines share trajectories without re-encoding ([Apache Arrow standard](https://arrow.apache.org/docs/format/CDataInterface.html)). +- **TemporalParquet** โ€” the **on-disk** form: a [Parquet](https://parquet.apache.org/) footer convention for temporal types ([RFC #870](https://github.com/MobilityDB/MobilityDB/discussions/870)). +- **Temporal Data Lake** โ€” the **storage architecture**: 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 ([RFC #913](https://github.com/MobilityDB/MobilityDB/discussions/913)). -| 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](https://www.postgresql.org/) โ€” the project's reference SQL surface (PostgreSQL extension), spatiotemporally indexed via [mest](https://github.com/MobilityDB/mest). +- **[MobilityDuck](https://github.com/MobilityDB/MobilityDuck)** ยท [DuckDB](https://duckdb.org/) โ€” peer SQL layer for analytics / columnar workloads. +- **[MobilitySpark](https://github.com/MobilityDB/MobilitySpark)** ยท [Apache Spark](https://spark.apache.org/) โ€” 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 API โ€“ Moving Features](https://www.ogc.org/standards/ogc-api-moving-features/) โ€” server over moving-feature collections, built on MobilityDB via PyMEOS. + +Three further HTTP surfaces are projected from the **[MEOS-API](https://github.com/MobilityDB/MEOS-API)** catalog over the MEOS algebra: +- **OpenAPI** โ€” an OpenAPI 3.1 contract. +- **MCP** โ€” a Model Context Protocol tool manifest, so LLMs / agents call the MEOS algebra directly. +- **runtime** โ€” a runnable HTTP server, auto-generated from the catalog, that serves each MEOS function as an endpoint; the MEOS backend behind it is swappable (a compiled `libmeos`, or a stub for testing). -### ๐ŸŸช 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 article](https://link.springer.com/article/10.1007/s00778-024-00889-2). -### ๐ŸŸฃ 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 +162,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](https://www.ogc.org/standards/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..8670596 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, 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 + + TemporalParquet + + Temporal Data Lake