Appearance
To publish with the Linked Places Format (LPF), express each place as a GeoJSON Feature enriched with structured names, controlled types, a when block for dates, and authority links, all under the LPF JSON-LD context. Validate against the LPF schema and the World Historical Gazetteer preview before release. LPF is what turns a bare set of coordinates into a citable, time-aware, interoperable gazetteer that other projects can reconcile against.
What is the Linked Places Format?
LPF is a JSON-LD profile built on GeoJSON, designed specifically for historical places. Where ordinary GeoJSON gives you a geometry and a flat properties object, LPF adds the structures historians need: multiple dated names with citations, place types from a controlled vocabulary, temporal scope, and typed links to external gazetteers. It is the publication standard the World Historical Gazetteer ingests natively.
What does a minimal LPF feature look like?
A single place with two dated names and a Wikidata link:
json
{
"type": "FeatureCollection",
"@context": "https://raw.githubusercontent.com/LinkedPasts/linked-places-format/main/linkedplaces-context-v1.2.jsonld",
"features": [{
"type": "Feature",
"@id": "https://example.org/places/1",
"properties": { "title": "York" },
"geometry": { "type": "Point", "coordinates": [-1.0815, 53.9590] },
"names": [
{ "toponym": "Eboracum", "when": { "timespans": [{"start": {"in": "71"}, "end": {"in": "400"}}] } },
{ "toponym": "York", "when": { "timespans": [{"start": {"in": "0866"}}] } }
],
"types": [ { "identifier": "aat:300008347", "label": "cities" } ],
"links": [ { "type": "closeMatch", "identifier": "wd:Q42462" } ]
}]
}The @context line is mandatory — it is what makes the file JSON-LD rather than plain GeoJSON.
When should I use LP-TSV instead?
For simple datasets, the tabular LP-TSV variant is far quicker to produce. Use this decision guide:
| Need | Use |
|---|---|
| One place, one geometry, few names | LP-TSV |
| Multiple geometries per place | Full LPF JSON |
| Rich relations (partOf, derivedFrom) | Full LPF JSON |
| Detailed per-name citations | Full LPF JSON |
| Quick bulk upload from a spreadsheet | LP-TSV |
You can start in LP-TSV and graduate to full JSON when complexity demands it.
How do I add temporal information?
Use a when object containing timespans. Each timespan has start and optionally end, and you can attach it to the whole feature or to an individual name. Per-name dating is what allows Eboracum (71–400) and York (866–) to coexist on one place, which static formats cannot express.
How do I validate before publishing?
Two checks, in order:
bash
# 1. structural validation against the LPF JSON schema
ajv validate -s lpf-schema.json -d my-places.json
# 2. then run the file through the WHG upload preview UI,
# which reports missing required fields and bad geometryThe WHG preview catches semantic problems the bare schema misses, such as out-of-range coordinates or empty name arrays. Never publish without both.
What are the common pitfalls?
- Omitting the
@context— the file degrades to plain GeoJSON and loses all LPF semantics. - Flattening names into
properties— defeats the entire point; use thenamesarray. exactMatchoveruse — prefercloseMatchunless extents truly coincide.- Bare years as integers in the wrong field — dates belong in
when.timespans, notproperties. - Skipping citations — a name without a source is an assertion, not evidence.
Key Takeaways
- LPF is GeoJSON plus JSON-LD structures for names, types, dates and links.
- The
@contextdeclaration is mandatory and easy to forget. - Put names in the
namesarray with per-namewhenblocks, not inproperties. - Use LP-TSV for simple data and full LPF JSON when relations or multiple geometries appear.
- Validate against both the LPF schema and the WHG preview before release.
- Prefer
closeMatchlinks and always cite the source of each name.
Frequently Asked Questions
What is the Linked Places Format?
Linked Places Format (LPF) is a GeoJSON-based JSON-LD profile for publishing historical place data. It extends GeoJSON Features with names, types, time spans and links so places carry dated, sourced attestations rather than bare points.
How is LPF different from plain GeoJSON?
Plain GeoJSON gives a geometry and a flat properties bag. LPF adds structured names with citations, controlled place types, when blocks for temporal scope, and links to external authorities, all inside a JSON-LD context.
When should I use LP-TSV instead of full LPF?
Use the tabular LP-TSV variant for simple datasets where one row equals one place with a single geometry. Switch to full LPF JSON when you need multiple geometries, rich relations or detailed citations.
How do I add temporal information in LPF?
Use a 'when' object with 'timespans' carrying start and end values, attached at the feature level or to individual names. This is what lets the same place express several dated names.
How do I validate an LPF file before publishing?
Validate the JSON against the LPF schema and run it through the World Historical Gazetteer upload preview, which reports missing required fields and bad geometry before ingestion.
What links should each place carry?
Include closeMatch or exactMatch links to authorities such as Wikidata, GeoNames or Pleiades. Prefer closeMatch unless the spatial and temporal extents genuinely coincide.