Skip to content

Mappings and resolver targets

This guide helps contributors decide whether an external resource belongs in a MappingAssertion, in the embedded resolver_targets array on a CanonicalReference, or neither.

Use it after you have already identified the Work, the CitationSystem, and the CanonicalReference for the citation itself. For the underlying model, start with How it works. For the authoring format, see Authoring registry data.

Ask what the external thing is doing.

If it…Model it as…
identifies the same work (Wikidata QID, CTS URN of the work, DOI)MappingAssertion (subject = Work IRI)
is a URL where a reader can inspect a specific passageentry in CanonicalReference.resolver_targets
is only an author, institution, subject, or non-textual authorityusually not TextRefs

A MappingAssertion is about work-level equivalence. A resolver_targets entry is about dereferencing one passage.

Use a MappingAssertion for work-level identifiers

Section titled “Use a MappingAssertion for work-level identifiers”

Create a MappingAssertion when another system has an identifier for the whole work that should be connected to a TextRefs Work. The subject MUST be a Work IRI.

Common mapping targets include:

  • Wikidata QIDs for works;
  • CTS URNs at the work level (e.g. urn:cts:greekLit:tlg0059.tlg030);
  • DOIs, Handles, ARKs, PURLs, or URN:NBNs for editions or digital objects;
  • another TextRefs Work when two registries need to be aligned.

Use exactMatch only when the target identifies the same work with enough precision. Use closeMatch for edition or scope mismatches.

{
"type": "MappingAssertion",
"subject": "https://textrefs.org/id/work/dhammapada",
"relation": "exactMatch",
"target": {
"target_kind": "wikidata",
"identifier": "https://www.wikidata.org/entity/Q220114"
},
"source": "manual-curation"
}

Passage-level external identifiers (e.g. the CTS URN for John.3.16) are not stored as records. They are derived from the work-level mapping plus the locator at resolve time.

Add resolver targets for reading locations

Section titled “Add resolver targets for reading locations”

A resolver_targets entry is a dereferenceable URL where a reader can inspect this reference in a specific edition, translation, platform, or provider. Entries live in an array on CanonicalReference — one entry per (provider × language × edition).

Typical resolver targets include:

  • a Perseus or Scaife page for a Greek or Latin passage;
  • a Wikisource page or section anchor;
  • a Bible Gateway, Sefaria, Quran.com, or similar reading URL;
  • an institutional repository page for a digitized edition;
  • a licensed platform URL, if the access status is recorded honestly.

Each entry records what a reader needs to understand the link: language (BCP 47), edition, provider, access, license when known, and last_checked when maintained.

{
"type": "CanonicalReference",
"work_key": "dhammapada",
"citation_system_key": "dhammapada-chapter-verse",
"locator": "1.1",
"normalization_version": "1.0.0",
"resolver_targets": [
{
"url": "https://en.wikisource.org/wiki/Dhammapada_(Muller)#Chapter_I:_The_Twin-Verses",
"language": "en",
"edition": "Müller (1881)",
"provider": "Wikisource",
"access": "open"
},
{
"url": "https://palikanon.com/khuddaka/dhp/dhp.html#dhp_1",
"language": "de",
"provider": "palikanon.com",
"access": "open"
}
]
}

Contributors author resolver targets as URL templates, not raw URLs — see Authoring registry data. The compiler expands them per reference. Browse the live output at /id/work/dhammapada/ or /id/work/plato.respublica/.

The best TextRefs candidates are works with established, edition-independent citation systems. The examples below are illustrative; each actual profile still needs documented normalization rules, valid examples, invalid examples, and review.

AreaCitation exampleCitation systemNotes
PhilosophyPlato, Republic 514aStephanus paginationPresent as plato.respublica with stephanus.
PhilosophyAristotle, Nicomachean Ethics 1094a1Bekker numberingPresent as aristotle.eth-nic with bekker.
BuddhistDhammapada 1.1chapter and versePresent as dhammapada with dhammapada-chapter-verse.
TanakhGenesis Genesis.1.1book, chapter, versePresent as tanakh with bible-book-chapter-verse.
BibleJohn John.3.16book, chapter, versePresent as new-testament with bible-book-chapter-verse.
ChineseAnalects 2.1book and chapterPresent as confucius.analects with analects-book-chapter.
ChineseDaodejing 1chapterPresent as laozi.daodejing with daodejing-chapter.
JapaneseThe Tale of Genji 2chapterPresent as murasaki.genji with genji-chapter.
ClassicsHomer, Iliad 1.1book and linePresent as homer.iliad with homer-book-line.
ClassicsHomer, Odyssey 1.426book and linePresent as homer.odyssey with homer-book-line.

An author’s name alone is not a Work. For example, “Confucius” is an authority or attribution problem; Analects is the textual work that can receive canonical references.

Edition page numbers. Page numbers from one printed edition usually belong to that edition. They can support a resolver target or an edition-level mapping, but they should not become a canonical citation system unless the community actually cites the work that way across editions.

Translations. A translation is a resolver target when it lets readers inspect the cited passage. It is not a new canonical reference unless the translation has its own independently cited segmentation.

Divergent numbering. If two traditions number the same material differently, create separate CanonicalReferences under separate CitationSystems and connect them with closeMatch mappings.

Contained-by relationships. If an identifier points to a whole edition, scan, or digital object rather than the exact passage, avoid exactMatch. Use closeMatch only when the connection is useful and the scope is clear.

Unstable websites. A website URL can be useful as a resolver target even if it is not a stable identifier. Do not derive TextRefs IDs from it.

Before proposing mappings or resolver targets, check that:

  • the cited passage has a clear Work, CitationSystem, and normalized locator;
  • the citation system has valid and invalid examples;
  • each MappingAssertion subject is a Work IRI and its target identifies a textual resource;
  • each exactMatch is precise enough to survive review;
  • each resolver_targets entry has a dereferenceable URL and honest access metadata;
  • the proposal documents its source or curation basis;
  • no full text, translation text, apparatus, or commentary is copied into the registry.

See Contributing for review tracks and pull-request expectations.