Skip to content
Historical Gazetteers & Place Data

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:

NeedUse
One place, one geometry, few namesLP-TSV
Multiple geometries per placeFull LPF JSON
Rich relations (partOf, derivedFrom)Full LPF JSON
Detailed per-name citationsFull LPF JSON
Quick bulk upload from a spreadsheetLP-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 geometry

The 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 the names array.
  • exactMatch overuse — prefer closeMatch unless extents truly coincide.
  • Bare years as integers in the wrong field — dates belong in when.timespans, not properties.
  • 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 @context declaration is mandatory and easy to forget.
  • Put names in the names array with per-name when blocks, not in properties.
  • 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 closeMatch links 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.

Include closeMatch or exactMatch links to authorities such as Wikidata, GeoNames or Pleiades. Prefer closeMatch unless the spatial and temporal extents genuinely coincide.