๐ŸŒฎ TACO v3.0.0
Transparent Access to Cloud-Optimized Datasets
Home
Specification 3.0.0
AI4EO Open Source MIT
The Problem
AI4EO needs data at scale

Training and running AI4EO models requires ingesting large volumes of Earth observation data. The challenge is not only storing those files, but keeping them organized, described, and directly accessible throughout training, validation, and inference.

An AI4EO dataset is a collection of samples. Each sample may contain multiple files organized in folders, while metadata can exist at different levels. Without a shared model for this structure, every dataset requires custom packaging, validation, and loading logic.

The Solution
Declare a contract, build your dataset

TACO packages data and queryable metadata as one unit. Before writing, a producer declares a contract (ฯƒ, ฮผ) shared by every sample. The writer validates samples against it.

Contract = (ฯƒ, ฮผ)
ฯƒ = structure tree ยท ฮผ = metadata schema

Structure (ฯƒ) defines the file tree inside each sample. It supports fixed files such as B02.tif and bounded sequences such as img*[4,16].tif, useful for time series and other multitemporal samples with a variable number of files.

Metadata (ฮผ) assigns namespaced, typed fields to sample, folder, and asset levels. Each level becomes a Parquet table that DuckDB can query without an API server.

Metadata Extensions
Derive useful columns while writing

TACO extensions automatically derive metadata while samples are written. Their results are stored as typed columns and can be queried later.

STAC Spatial and temporal metadata
Rumi Raster headers and band statistics
MajorTOM Geographic grid codes
GeoEnrich Environmental and administrative context
Container Modes
Choose how the dataset is stored
FOLDER Mutable. Use while building a dataset. Samples can be appended without rebuilding existing data.
ZIP Immutable. Use for stable releases, optimized for selective access from local or remote storage.
Tradeoffs

Structural immutability. The contract (ฯƒ, ฮผ) is fixed at creation time. Adding new file types or metadata fields requires a new major dataset version. Bounded sequences allow controlled variation, but samples cannot evolve independently. TACO trades open-ended structure for predictable paths, schema validation, and reproducible releases.

How It Works
Three technologies, one pipeline
๐Ÿ“ฆ
Cloud-Optimized ZIP

CoZIP lets readers locate and fetch individual files without downloading or extracting the complete archive.

๐Ÿ—‚๏ธ
Apache Parquet

Parquet stores metadata in compact columnar tables, so queries read only the rows and columns they need.

๐Ÿ”—
GDAL VSI Paths

Stateless, positional access to files in local storage, cloud providers, or directly inside archives.

Physical Layout
dataset/ โ”œโ”€โ”€ COLLECTION.json โ† contract (ฯƒ, ฮผ) + dataset metadata โ”œโ”€โ”€ METADATA/ โ”‚ โ”œโ”€โ”€ sample.parquet โ† 1 row per sample โ”‚ โ”œโ”€โ”€ children.parquet โ† direct children โ”‚ โ”œโ”€โ”€ children__before.parquet โ”‚ โ””โ”€โ”€ children__after.parquet โ””โ”€โ”€ DATA/ โ”œโ”€โ”€ 0/ โ”‚ โ”œโ”€โ”€ before/ โ”‚ โ”‚ โ”œโ”€โ”€ B02.tif โ”‚ โ”‚ โ””โ”€โ”€ B03.tif โ”‚ โ”œโ”€โ”€ after/ โ”‚ โ”‚ โ”œโ”€โ”€ B02.tif โ”‚ โ”‚ โ””โ”€โ”€ B03.tif โ”‚ โ””โ”€โ”€ change_map.tif โ”œโ”€โ”€ 1/ ... โ””โ”€โ”€ N-1/ ...

FOLDER supports append; ZIP is immutable and optimized for stable releases. Both preserve the same contract and logical dataset structure.

Language Access
One dataset, every workflow
๐ŸŒฎ TACO powered by DuckDB
โ–ฐSQL
Python
R
Julia
JavaScript
MATLAB
C++
Design Principles

Self-contained. Data and metadata travel together. Contract-first. Structure declared before data is written. Cloud-optimized. Partial reads via byte-range access. Language-agnostic. DuckDB exposes one reader to Python, R, and Julia. Supports FAIR datasets. Description, licensing, providers, and extents are mandatory and explicit.

Use Cases
Designed for AI4EO workflows
Multimodal Combine imagery, labels, and auxiliary data within each sample.
Change detection Organize before and after observations alongside their labels.
Time series Represent variable-length sequences with predictable filenames and bounds.
Foundation models Query and stream large dataset partitions without full downloads.