Skip to content

Standards supported

archivebase exposes its resources and metadata through several standard protocols. Pick the one that matches what you want to do. This page is for deciding which to use; the details are in the API reference and /api-docs (OpenAPI).

Every example here actually works

The commands below run as-is against the public site "Rekion transcript search". No key required.

Which one do I want?

GoalUse
Harvest metadata in bulkOAI-PMH
Sync only what changedResourceSync
Ask arbitrary questionsSPARQL
Show images / audio / video in a viewerIIIF
Pull structured textDTS
Search from an applicationREST search API
Fetch one descriptionLOD (content negotiation)

OAI-PMH 2.0

The most widely deployed metadata-harvesting protocol in this field. Point a harvester at it and you get every record.

  • All six verbs (Identify, ListMetadataFormats, ListSets, ListIdentifiers, ListRecords, GetRecord)
  • Metadata formats: oai_dc (Dublin Core) and jps (Japan Search schema)
  • set is the resource type (item / collection / tei …)
  • Paging uses resumptionToken. There is no depth limit
bash
curl -s 'https://archivebase.ldas.jp/na-kamura-1263/rekion/api/oai?verb=Identify'
curl -s 'https://archivebase.ldas.jp/na-kamura-1263/rekion/api/oai?verb=ListRecords&metadataPrefix=oai_dc'

Deletions are not propagated

deletedRecord: no. Deleting a resource does not tell harvesters about it (there are no tombstones). If you harvest continuously, re-harvest in full periodically.


ResourceSync (ANSI/NISO Z39.99-2017)

An extension of the Sitemap protocol, aimed at incremental sync. Where OAI-PMH harvests metadata, this tells you which resources changed and when.

bash
curl -s 'https://archivebase.ldas.jp/.well-known/resourcesync'
curl -s 'https://archivebase.ldas.jp/na-kamura-1263/rekion/api/resourcesync/capabilitylist.xml'
curl -s 'https://archivebase.ldas.jp/na-kamura-1263/rekion/api/resourcesync/changelist.xml?from=2026-08-01T00:00:00Z'

<loc> points at the machine-readable description (/{account}/{db}/data/{id}); the human page is given as <rs:ln rel="alternate">.


SPARQL 1.1

Query the RDF. No key required.

EndpointScope
/{account}/{db}/api/sparqlthat site only
/api/{account}/sparqlall public sites of that institution
bash
curl -s -G 'https://archivebase.ldas.jp/api/na-kamura-1263/sparql' \
  --data-urlencode 'query=PREFIX schema: <https://schema.org/>
    SELECT ?siteName (COUNT(DISTINCT ?s) AS ?n) WHERE {
      GRAPH ?g { ?s schema:name ?name }
      ?g schema:name ?siteName .
    } GROUP BY ?siteName' \
  -H 'Accept: text/csv'

Choose the result format with Accept (application/sparql-results+json, text/csv, text/turtle, application/rdf+xml).

You can tell which site a result came from

Graph names are opaque (urn:archivebase:db:{uuid}). Site name, provider and URL live in a catalog graph (urn:archivebase:catalog), so ?g schema:name ?siteName works.

A browser console is at https://archivebase.ldas.jp/{account}/{db}/sparql. Like Japan Search's SNORQL it accepts ?query= and ?describe= so a query can be shared as a URL.


IIIF

Presentation API 3.0 and Image API. WebVTT captions ride along as supplementing annotations, so transcripts stay in sync in a compatible viewer. Content Search is supported.

bash
curl -s 'https://archivebase.ldas.jp/na-kamura-1263/rekion/api/iiif/3/1320060/manifest'

DTS (Distributed Text Services)

DTS does not require TEI. What it requires is that the text can be cut into citable units, so OCR and transcripts are served the same way.

bash
curl -s 'https://archivebase.ldas.jp/api/dts/collection'
curl -s 'https://archivebase.ldas.jp/na-kamura-1263/rekion/api/dts/navigation?resource=1320060'
curl -s 'https://archivebase.ldas.jp/na-kamura-1263/rekion/api/dts/document?resource=1320060&ref=1'

Sites ingested as TEI are served out of the box. A site whose items carry OCR or a transcript turns this on with the Serve text over DTS setting (settings.dtsText).

Citable units are derived from what the item actually has. With no structural clue the whole text is one unit — no structure is invented.

What the item carriesUnit (citeType)ref
Child frames (media) that carry textpage (one frame)the frame's identifier
Timed transcript (cueTimes)cue (one utterance)line number
OCR (page breaks in the text)page (one page)page number
None of thesetext (whole text)1

The first match wins. An item with no text of its own is still served when its frames carry OCR (item → frames). Items with no text anywhere are not served.

An item with no canonical TEI still answers the full-document request: the TEI is assembled from its text.

Only public resources of public sites are served — an API key does not widen this.


REST search, LOD, sitemap, OpenAPI

bash
curl -s 'https://archivebase.ldas.jp/na-kamura-1263/rekion/api/search?q=spring&limit=3'
curl -s -H 'Accept: text/turtle' 'https://archivebase.ldas.jp/na-kamura-1263/rekion/data/1320060'
curl -s 'https://archivebase.ldas.jp/sitemap.xml'
curl -s 'https://archivebase.ldas.jp/api/openapi.json'

/data/{id} is the canonical identifier; pick a representation with Accept. /resource/{id} is the human page.


What is published

Every entry point exposes only public resources of public sites. Nothing private is in the payload to begin with — output is not varied by login state.

For the RDF store the gate is applied at ingest, in two stages:

ConditionIn the store?
Public site × public resourceyes
Public site × private resourceno
Private site × public resourceno

SPARQL takes arbitrary queries, so it cannot be gated at read time (GRAPH ?g would reach other graphs). Hence the gate at ingest.

A site can opt out of cross-institution federation with settings.rdf.federate: false; its own endpoint keeps working.