Comprehensive ETL pipeline for Roman world data from Pleiades, ORBIS, Wikidata, and more
Project description
Roma Data Pipeline
Comprehensive ETL pipeline for Roman world data from Pleiades, ORBIS, Wikidata, and more.
Roma Data Pipeline generates a unified SQLite database containing 35,000+ ancient locations, 16,500+ Roman roads, 100+ historical figures, and pre-computed travel times across the Roman Empire. It aggregates, transforms, links, and exports data from multiple authoritative academic sources into a single, queryable dataset.
Quick Start
pip install roma-data-pipeline
roma-data run
# Or if roma-data isn't in your PATH:
python -m roma_data run
This creates roma_aeterna.sqlite in your current directory (~50 MB).
What's Inside
| Data | Records | Source |
|---|---|---|
| Ancient locations | 35,378 | Pleiades, ORBIS, ToposText |
| Province boundaries | 186 | AWMC |
| Roman roads | 16,554 | Itiner-e |
| Historical people | 106 | Wikidata |
| Travel network | 2,208 edges | ORBIS |
| Ancient text citations | 8,000+ | ToposText |
Features
- 8 Authoritative Sources: Aggregates data from Pleiades, AWMC, Itiner-e, Wikidata, ORBIS, and ToposText
- Full-Text Search: FTS5-powered search across locations and people
- Travel Time Calculator: ORBIS-derived travel times by foot, horse, cart, or ship
- Temporal Filtering: Filter by date range (753 BCE to 476 CE)
- Geographic Filtering: Filter by bounding box
- Multiple Export Formats: SQLite, GeoJSON, CSV
- Academic-Ready: DOI, CITATION.cff, FAIR principles compliant
Installation
From PyPI
pip install roma-data-pipeline
From Source
git clone https://github.com/thomaspalaio/roma-data-pipeline
cd roma-data-pipeline
pip install -e ".[dev]"
Usage
Command Line
# Run full pipeline (creates roma_aeterna.sqlite)
roma-data run
# Custom output path
roma-data run --output ./my_database.sqlite
# Select specific data sources
roma-data run --sources pleiades,orbis,wikidata
# Filter by time period (200 BCE to 200 CE)
roma-data run --start-year -200 --end-year 200
# Filter by geographic region (Western Mediterranean)
roma-data run --bbox "-10,35,20,50"
# Export to GeoJSON
roma-data export geojson locations.geojson
# Validate a database
roma-data validate ./roma_aeterna.sqlite
# Show available sources
roma-data info
Python API
from roma_data import Pipeline, Config
# Simple usage
pipeline = Pipeline()
db_path = pipeline.run()
# Custom configuration
config = Config(
sources=["pleiades", "wikidata", "orbis"],
output_path="./custom.sqlite",
time_range=(-200, 200),
bbox=(-10, 35, 20, 50),
)
Pipeline(config).run()
Query the Database
import sqlite3
conn = sqlite3.connect("roma_aeterna.sqlite")
# Find cities near Rome
cursor = conn.execute("""
SELECT name_latin, type, latitude, longitude
FROM locations
WHERE type = 'city'
AND ABS(latitude - 41.9) < 1
AND ABS(longitude - 12.5) < 1
""")
for row in cursor:
print(row)
# Search for temples
cursor = conn.execute("""
SELECT name_latin FROM location_search
WHERE location_search MATCH 'temple apollo'
""")
# Get travel time Rome to Carthage
cursor = conn.execute("""
SELECT travel_days_ship, travel_days_foot
FROM travel_network
WHERE source_name LIKE '%Roma%'
AND target_name LIKE '%Carthag%'
""")
Data Sources
| Source | Description | License |
|---|---|---|
| Pleiades | Ancient place gazetteer with 30,000+ locations | CC-BY-3.0 |
| AWMC | Province boundaries at 4 time periods | CC-BY-NC-3.0 |
| Itiner-e | Roman road network GIS data | Open |
| Wikidata | Structured data for people, events, infrastructure | CC0 |
| ORBIS | Stanford's Roman travel network model | Open |
| ToposText | Ancient text citations by location | CC-BY-NC-SA-4.0 |
Database Schema
The output SQLite database contains these tables:
locations- Ancient places with coordinates, types, and datesprovinces- Administrative boundaries with GeoJSON polygonsroads- Roman road segments with GeoJSON pathspeople- Historical figures with birth/death dates and locationsevents- Battles, treaties, disasters with dates and locationstravel_network- Pre-computed travel routes with times and costsancient_sources- ToposText citations per locationtimeline_markers- Major historical milestoneslocation_search- FTS5 full-text search indexpeople_search- FTS5 full-text search index
See docs/data-model.md for full schema documentation.
Citation
If you use this software in academic work, please cite:
@software{roma_data_pipeline,
author = {Palaio, Thomas},
title = {Roma Data Pipeline},
year = {2025},
url = {https://github.com/thomaspalaio/roma-data-pipeline},
version = {0.1.0}
}
Also cite the underlying data sources as appropriate for your use case.
Contributing
Contributions are welcome! See CONTRIBUTING.md for guidelines.
Adding a New Data Source
- Create a new module in
src/roma_data/sources/ - Implement the
DataSourcebase class - Add SPARQL queries or download URLs to
constants.py - Update the CLI and pipeline to include the new source
- Add tests and documentation
License
- Code: MIT License
- Data outputs: CC-BY 4.0
The generated data aggregates information from sources with various licenses (CC-BY, CC0, ODbL). See LICENSE-DATA for attribution requirements.
Acknowledgments
This project builds on the work of many scholars and institutions:
- Pleiades - NYU Institute for the Study of the Ancient World
- ORBIS - Stanford University
- AWMC - University of North Carolina at Chapel Hill
- Itiner-e - Roman roads research project
- ToposText - Brady Kiesling
- Wikidata - Wikimedia Foundation
Links
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file roma_data_pipeline-0.1.1.tar.gz.
File metadata
- Download URL: roma_data_pipeline-0.1.1.tar.gz
- Upload date:
- Size: 48.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
592de789f957a02b0344dccaf4094dfe7591ccf3ac5c7ba8c9c7b49313d5d87d
|
|
| MD5 |
55da8c776f992372256d32e11aad26d3
|
|
| BLAKE2b-256 |
7b1e24c3cfbcc9d57ee223235f2d14621b4ad822cc5d0922ccc5402427a67940
|
File details
Details for the file roma_data_pipeline-0.1.1-py3-none-any.whl.
File metadata
- Download URL: roma_data_pipeline-0.1.1-py3-none-any.whl
- Upload date:
- Size: 57.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8fb984840d4028592d8358c4f17e6722e245125839ab7544cb691413b47b45a4
|
|
| MD5 |
3b261c3180142aad3e0118f0086fb314
|
|
| BLAKE2b-256 |
3dddb5caa01801cf0ae11cf4870c2aefd8a913d978de5bd3c64c4d902533024f
|