Collect, reconcile, freeze
Every study begins as a CSV corpus. Where a study draws on Wikidata, a build-time bridge sends its recorded SPARQL query to the Wikidata Query Service, normalises the result onto the study's columns, and freezes it as the published CSV. This step is deliberate and occasional — it is never run in the browser or on every deploy.
The publish step is pure and networkless: it parses the frozen CSV, emits one GeoJSON feature per record (with every column preserved as a property), renders a static thumbnail, and computes the record count and centroid. Adding a study is therefore just committing a folder — no code changes.
Stable identifiers, declared derivations
Named entities are reconciled against Wikidata to attach Q-identifiers and to resolve coordinate locations (P625, returned as WKT and split into longitude/latitude) and inception dates (P571, reduced to a year). Coordinates are expressed in decimal degrees on the WGS 84 datum.
When an attribute is not asserted in the source but can be inferred, the derivation is declared in the manifest rather than hidden in code. For the Mosques of China, for example, the ruling dynasty is derived from the foundation year against the imperial succession — and the study page says so. Honest provenance is a requirement, not a courtesy.
Frozen data, recorded query, access date
Each Wikidata-sourced study records the executed query, the endpoint, the access timestamp, the number of rows returned, and a hash of the query. Together these constitute a reproducibility statement: a reader can re-run the query, compare the row count, and see whether the published edition is still current. Datasets are versioned by their last-revised date.
Choosing a map type
The engine renders six base layer types. Each manifest declares which to use, so the same code serves every study:
- scatter
- Discrete located entities — sites, foundations, institutions. The default for gazetteer-style corpora.
- arc
- Source-to-target flows — campaigns, trade routes, colonial foundations. Each record is an origin and a destination.
- heatmap
- Continuous density from points — where a phenomenon concentrates, optionally weighted.
- contour
- Iso-intensity bands from weighted points — gradients and frontiers as a continuous surface.
- choropleth
- A value graded across polygons — a quantity per administrative or historical region.
- trips
- Time-animated paths — movement traced along routes over a temporal span.
Verification, provenance, DOI
Positions are confirmed against published gazetteers; the geographic extent of an edition reflects the documented reach of its sources rather than any modern boundary. Every study carries a recommended citation and a DOI, and distributes its data under CC BY 4.0, with Wikidata enrichment under CC0 and the cartography and code under MIT.