Linked data

PLATO is an OWL ontology. Everything in this guide, from the spreadsheets to the JSON formats, is a way of producing RDF in it.

Addresses

What

Permanent address

The ontology

https://w3id.org/plato (namespace https://w3id.org/plato#)

Ontology reference documentation

https://pelagios.org/place-attestation-ontology/

JSON Schemas

https://w3id.org/plato/schemas/plato.schema.json, …/place-centric.schema.json, …/attestation-centric.schema.json

JSON-LD context

https://w3id.org/plato/schemas/plato.context.jsonld

Spreadsheet table definitions (CSVW)

https://w3id.org/plato/schemas/tables/csv-metadata.json

The ontology address answers with HTML in a browser and with RDF to a client that asks for it. The files themselves are published at https://pelagios.org/place-attestation-ontology/ontology.ttl, and as .jsonld, .owl (RDF/XML) and .nt (N-Triples). All four are the same graph: the Turtle is the source file, and the others are generated from it and checked against it on every release.

Spreadsheets to RDF

The spreadsheet tables are described in the W3C standard CSV on the Web, so any CSVW processor converts them. With the reference implementation, rdf-tabular:

# with csv-metadata.json in the same folder as the eight CSV files
rdf serialize --validate --input-format tabular --minimal --output-format turtle csv-metadata.json

Use serialize --validate to check a set of tables: rdf-tabular’s plain validate command reports broken references as warnings and still says the input is valid.

Identifiers in the output are relative to the files (places.csv#bristol, names.csv#row-3); a platform accepting the tables mints permanent ones. Every node is typed, and every attestation has exactly one subject, source, date and citation, so the output is complete PLATO without further processing.

Without installing anything

PLATO tools converts between PLATO JSON, RDF (it reads N-Triples, N-Quads and Turtle, and writes N-Triples), the spreadsheet tables and Linked Places Format, in the browser, and checks RDF against the terms the ontology declares. The same conversions run from the command line for batch work, with Node.js 24 or later: for example, npx github:pelagios/plato-tools convert --to ntriples data.jsonl. Large RDF files are handled through a working database on disk, as in the browser, so memory stays roughly constant at any size.

Citing a place in a gazetteer that changes

A place’s evidence grows and is corrected while its identity stays the same, so a citation of it has to say which state was meant. PLATO gives three pieces for that.

  • A version. A gazetteer carries a version (version in JSON, dcat:version in RDF). Cite a place as its address plus the gazetteer version, as PeriodO is cited. A frozen snapshot published under its own address points back with isVersionOf and previousVersion.

  • Nothing is deleted once published. When a gazetteer’s status is published, its attestations are append-only. A correction is a new attestation that supersedes or contradicts the old one, and a withdrawal is one that retracts it (plato:Retracts). Every attestation carries its created time, so the state as of any date can be worked out from the data itself.

  • A state on request. A platform can offer that state directly through datetime negotiation on the place’s address (RFC 7089, “Memento”): ask for the address as it stood at a moment, and get the attestations that held then. PLATO recommends this to platforms but does not require it.

JSON to RDF

Add the JSON-LD context to a JSON document, as described under JSON formats, and expand or convert it with any JSON-LD 1.1 processor.