Skip to content

data: add Dante's Divina Commedia, resolved by the Princeton Dante Project #37

Description

@maehr

Verified row from #25. Part of #28.

Affected file, TextRefs ID, or URL

New: works/dante.commedia.yaml and one systems/ file.

Citation system

Cantica, canto, verse — Inf.1.1, Purg.13.25, Par.33.145.

What is wrong or missing?

#25 asks: "Dante Lab's reader takes reader[cantica]=2&reader[canto]=5 as query parameters and stops at the canto — it does not address the verse. Check whether any of the three addresses a single verse."

Yes — the Princeton Dante Project does. The other two candidates are rejected, each for its own reason.

Suggested correction or new value

resolvers:
  - provider: Princeton Dante Project
    edition: 'Princeton Dante Project (2.0)'
    language: it
    access: open
    url: 'https://dante.princeton.edu/cgi-bin/dante/campuscgi/mpb/GetCantoSection.pl?INP_POEM={cantica}&INP_SECT={canto}&INP_START={verse}&INP_LEN=1&LANG=1'

The cantica vocabulary is Inf / Purg / Par — the same vocabulary the locator uses. So no provider-vocabulary mapping is needed and textrefs.org#71 is not a dependency. INP_LEN=1 selects a single verse; LANG=1 selects the Italian text.

The system needs a three-part regex with the cantica as a fixed vocabulary, as #25 says.

Evidence and sources

Checked 2026-08-25.

Query Returns
INP_POEM=Inf&INP_SECT=1&INP_START=1 "Nel mezzo del cammin di nostra vita"
INP_POEM=Inf&INP_SECT=5&INP_START=121 "Nessun maggior dolore"
INP_POEM=Par&INP_SECT=33&INP_START=145 "l'amor che move il sole e l'altre stelle."
INP_POEM=Purg&INP_SECT=13&INP_START=25 renders
INP_SECT=99 854 B error page, no text
INP_START=9999 854 B error page, no text

Cross-control passed, which is the check #22 taught us to run: the Inf 1.1 page contains no occurrence of "Nessun maggior dolore", and the Inf 5.121 page contains no occurrence of "Nel mezzo del cammin". The resolver addresses the verse and does not silently serve a canto opening.

One fragility signal worth recording: the error page leaks a raw SQL string, sql=select icon from poemIcons where id>= AND id<= and type=1 order by id asc, and returns HTTP 200 rather than a 4xx. So an automated link check cannot rely on the status code for this provider — it must check the body. It does not serve the wrong passage, which is the failure that matters.

The two rejected candidates

Dante Lab (Dartmouth) — reject, on two independent grounds.

  1. Canto-level only, confirming what data: second-wave work candidates with established citation systems #25 suspected. reader[cantica]=1&reader[canto]=5 lands on the opening of Inferno V. There is no verse parameter.
  2. HTTPS is broken. The TLS certificate presented by dantelab.dartmouth.edu has subject CN=*.herokuapp.com with SAN DNS:*.herokuapp.com, which does not match the hostname. curl over HTTPS fails with "no alternative certificate subject name matches target host name"; only plaintext HTTP works. This is the same disqualifier recorded for wittgensteinsource.org in data: the Wittgenstein Archives cannot resolve Tractatus propositions or Investigations sections #24 — a registry should not ship a plaintext-only resolver.

An invalid canto returns HTTP 200 with a 148 KB shell containing no Dante text, against ~550 KB for a valid one.

Dartmouth Dante Project — reject. search_view.php does accept cantica, canto and line, but every request answers Your session has timed out. Click here to continue. (67 bytes), with and without an established cookie jar. It is not deep-linkable. It also serves commentaries on the poem rather than the poem.

Rights or licence note

To establish. The Princeton Dante Project is Robert Hollander's, at Princeton. Record access: and license_url: when the work file is written. Confirm which text underlies the Italian — #25 expects Petrocchi, and the PDP landing page did not state it in this check. No text enters the registry.

Metadata

Metadata

Assignees

No one assigned

    Labels

    dataRegistry record contenttriageNeeds maintainer triage

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions