Skip to content

feat(works): add eight Nietzsche works with aphorism numbering - #40

Merged
maehr merged 2 commits into
mainfrom
feat/nietzsche
Aug 26, 2026
Merged

maehr merged 2 commits into
mainfrom
feat/nietzsche

Conversation

@maehr

@maehr maehr commented Aug 26, 2026

Copy link
Copy Markdown
Member

Closes #36. Verified row from #25, part of #28.

Eight works, 2,737 references, no new citation system.

Work Siglum Aphorisms Wikidata
Menschliches, Allzumenschliches MA 638 Q1364539
Vermischte Meinungen und Sprüche VM 408 — (see below)
Der Wanderer und sein Schatten WS 350 Q3228311
Morgenröthe M 575 Q1947770
Die fröhliche Wissenschaft FW 383 Q1061693
Jenseits von Gut und Böse JGB 296 Q579794
Der Antichrist AC 62 Q538396
Die Geburt der Tragödie GT 25 Q1053359

The reason this row was deferred no longer holds

#25 parked Nietzsche because the eKGWB URI was hash-based and "cannot be confirmed by fetch". The site now serves a real HTTPS path and validates the siglum server-side — FW-9999, XX-1 and FW-125x all return genuine 404s — so these resolvers are link-checkable like any other.

No new system

These reuse integer-section, whose own description invites it: "Generic integer section locators. Exact work-specific bounds are enforced by registered CanonicalReference records, not by this shape check." The siglum is a per-work constant in the resolver template, not a locator variable, so nothing new was needed.

How the extents were found

Binary search against the provider's own 404s — about ten requests per work instead of four hundred — with the boundary then checked explicitly in both directions. AC-62 resolves; AC-63 returns 404. Same for all eight.

The totals that came back are the counts these works are conventionally cited by, which is a useful independent check on the method.

Wikidata, and why keyword search was not enough

Searching by title was actively misleading. The top hit for Jenseits von Gut und Böse is a Bushido album; Morgenröthe and Der Antichrist did not surface at all under their English titles. Resolved instead with a single SPARQL query for every work whose author is Q9358, then each candidate confirmed to carry P50 = Q9358.

Vermischte Meinungen und Sprüche is registered without a Wikidata mapping. That query returns no separate item for it — Wikidata treats it only as part of Menschliches, Allzumenschliches II. Mapping it to the parent would assert something false, and AGENTS.md is explicit that the relation follows what the target actually is. It is cited on its own siglum and resolves on its own, so it is registered unmapped, with the reason in the file.

Two things worth a reviewer's eye

  1. Key spelling. German umlauts are folded oe/ue/ae — nietzsche.morgenroete, nietzsche.froehliche-wissenschaft, nietzsche.jenseits-von-gut-und-boese, nietzsche.geburt-der-tragoedie. data: second-wave work candidates with established citation systems #25 sketched nietzsche.frohliche-wissenschaft instead. Renaming a key after publication is a tombstone event, so worth settling now.
  2. Scope. Only works with plain integer aphorism numbering are here. GD, EH, GM and Za use compound sigla (GD-Sprueche-1) and a different locator shape; they need their own system and are not in this PR.

Checks

  • npm run compile:data — 20 works, 10 systems, 70,696 references
  • npm run validate:data — 70,757/70,757 records valid
  • Boundary spot-checks confirmed absent from the dump: AC 63, GT 26, FW 384, M 576

Copilot AI lite review requested due to automatic review settings August 26, 2026 06:45

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds eight Friedrich Nietzsche works to the TextRefs registry as new works/*.yaml records, using the existing integer-section citation system with canonical aphorism/section extents and resolvers targeting Nietzsche Source (eKGWB). This expands the registry’s coverage of modern philosophy works without introducing a new citation-system shape.

Changes:

  • Added 8 new work records under works/ with integer-section references and explicit references_range bounds (total 2,737 references).
  • Added Nietzsche Source (eKGWB) resolvers for each work using server-validated path URLs (/eKGWB/{SIGLUM}-{section}) and recorded last_checked.
  • Added Wikidata alternateOf mappings for 7 works and documented the intentional absence of a Wikidata mapping for Vermischte Meinungen und Sprüche.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
works/nietzsche.menschliches-allzumenschliches.yaml New work record for Menschliches, Allzumenschliches with eKGWB resolver and integer-section extent (1–638).
works/nietzsche.vermischte-meinungen.yaml New work record for Vermischte Meinungen und Sprüche with eKGWB resolver and extent (1–408), intentionally no Wikidata mapping.
works/nietzsche.wanderer-und-sein-schatten.yaml New work record for Der Wanderer und sein Schatten with eKGWB resolver and extent (1–350).
works/nietzsche.morgenroete.yaml New work record for Morgenröthe with eKGWB resolver and extent (1–575).
works/nietzsche.froehliche-wissenschaft.yaml New work record for Die fröhliche Wissenschaft with eKGWB resolver and extent (1–383).
works/nietzsche.jenseits-von-gut-und-boese.yaml New work record for Jenseits von Gut und Böse with eKGWB resolver and extent (1–296).
works/nietzsche.antichrist.yaml New work record for Der Antichrist with eKGWB resolver and extent (1–62).
works/nietzsche.geburt-der-tragoedie.yaml New work record for Die Geburt der Tragödie with eKGWB resolver and extent (1–25).

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread works/nietzsche.wanderer-und-sein-schatten.yaml
Comment thread works/nietzsche.morgenroete.yaml
Comment thread works/nietzsche.menschliches-allzumenschliches.yaml
Comment thread works/nietzsche.jenseits-von-gut-und-boese.yaml
Comment thread works/nietzsche.geburt-der-tragoedie.yaml
Comment thread works/nietzsche.froehliche-wissenschaft.yaml
Comment thread works/nietzsche.antichrist.yaml
Comment thread works/nietzsche.vermischte-meinungen.yaml Outdated
maehr added a commit that referenced this pull request Aug 26, 2026
Copilot review on #40: every existing work record carries a Wikipedia
`isReferencedBy` mapping beside its Wikidata `alternateOf`, and these eight did
not. Correct — the omission was mine, not a decision.

Article titles were taken from each Wikidata item's enwiki sitelink rather than
guessed from the work title, and every one of the seven URLs was checked and
returns HTTP 200.

Vermischte Meinungen und Sprüche still carries no mappings, and both absences
are now checked rather than assumed. Wikidata has no separate item for it. And
no Wikipedia article exists in either language: the English and German titles
both return HTTP 404 on 2026-08-26. Registering it unmapped is better than
mapping it to the parent work, which would assert something false about what the
target denotes (ADR-0006).

Refs #36

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CD9MxbT2jSZmJyR9ywJGEs
maehr added a commit that referenced this pull request Aug 26, 2026
Copilot review on #40: every existing work record carries a Wikipedia
`isReferencedBy` mapping beside its Wikidata `alternateOf`, and these eight did
not. Correct — the omission was mine, not a decision.

Article titles were taken from each Wikidata item's enwiki sitelink rather than
guessed from the work title, and every one of the seven URLs was checked and
returns HTTP 200.

Vermischte Meinungen und Sprüche still carries no mappings, and both absences
are now checked rather than assumed. Wikidata has no separate item for it. And
no Wikipedia article exists in either language: the English and German titles
both return HTTP 404 on 2026-08-26. Registering it unmapped is better than
mapping it to the parent work, which would assert something false about what the
target denotes (ADR-0006).

Refs #36

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CD9MxbT2jSZmJyR9ywJGEs
maehr and others added 2 commits August 26, 2026 09:26
Verified row from registry #25, tracked in #36. 2,737 references.

#25 deferred this row because the eKGWB URI was hash-based and so could not be
link-checked. That is no longer true: nietzschesource.org serves a real HTTPS
path, and it validates the siglum server-side, so a bad reference returns a
genuine 404.

No new citation system. These reuse `integer-section`, whose description
already says it is generic and that work-specific bounds belong to the
registered references rather than the shape check.

Extents were found by binary search against the provider's own 404s — about ten
requests per work rather than four hundred — and each was confirmed at the
boundary, so AC-62 resolves and AC-63 does not. The eight totals match the
counts these works are conventionally cited by.

Wikidata was resolved with one SPARQL query for every work whose author is
Q9358, after keyword search proved unreliable: the top hit for "Jenseits von
Gut und Böse" is a Bushido album, and Morgenröthe and Der Antichrist did not
surface at all under their English titles. Seven of eight are mapped.

Vermischte Meinungen und Sprüche is registered without a Wikidata mapping.
The SPARQL query returns no separate item for it — Wikidata treats it only as
part of Menschliches, Allzumenschliches II — and mapping it to the parent would
be wrong. It is cited on its own siglum and resolves on its own.

Refs #36

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CD9MxbT2jSZmJyR9ywJGEs
Copilot review on #40: every existing work record carries a Wikipedia
`isReferencedBy` mapping beside its Wikidata `alternateOf`, and these eight did
not. Correct — the omission was mine, not a decision.

Article titles were taken from each Wikidata item's enwiki sitelink rather than
guessed from the work title, and every one of the seven URLs was checked and
returns HTTP 200.

Vermischte Meinungen und Sprüche still carries no mappings, and both absences
are now checked rather than assumed. Wikidata has no separate item for it. And
no Wikipedia article exists in either language: the English and German titles
both return HTTP 404 on 2026-08-26. Registering it unmapped is better than
mapping it to the parent work, which would assert something false about what the
target denotes (ADR-0006).

Refs #36

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CD9MxbT2jSZmJyR9ywJGEs
@maehr
maehr merged commit 7d10919 into main Aug 26, 2026
4 checks passed
@maehr
maehr deleted the feat/nietzsche branch August 26, 2026 07:27
maehr added a commit to textrefs/textrefs.org that referenced this pull request Aug 26, 2026
* chore(data): bump the registry pointer to 7d109195

Picks up the second-wave works verified against registry #25:

- textrefs/registry#39 — Dante, Divina Commedia (14,233 references), with the
  verse-level Princeton resolver and a canto-level Dante Lab companion
- textrefs/registry#38 — Hume, Treatise and first Enquiry (1,468 references)
- textrefs/registry#40 — eight Nietzsche works (2,737 references)

Closes registry #34, #36 and #37. The registry goes from 12 works to 23, and
from 67,959 references to 86,397.

npm run verify passes on the new pin: 86,477 records valid, 259,811 pages built,
all internal links valid.

* chore(deps): safe update of all dependencies within their semver ranges

`npm update` only. package.json is untouched; the lockfile moves seven packages
to the newest version their declared range already allows:

- @astrojs/starlight     0.41.7 -> 0.41.9
- @commitlint/cli        21.2.1 -> 21.2.2
- @commitlint/config-conventional 21.2.0 -> 21.2.2
- astro                   7.2.1 -> 7.2.7
- mermaid                11.16.1 -> 11.17.2
- starlight-openapi      0.26.0 -> 0.26.1
- uuid                   14.0.1 -> 14.0.2

Deliberately not taken, because neither is a safe update:

- starlight-blog 0.28.0 -> 0.29.0 is outside the declared range.
- typescript 6.0.3 -> 7.0.2 is a major.

Three high-severity advisories remain and are NOT fixed here. All three are the
same chain — form-data (CRLF injection) via httpsnippet via starlight-openapi —
and npm's only offered remedy is a DOWNGRADE of starlight-openapi to 0.24.0,
which it flags isSemVerMajor. `npm audit fix --force` would move the tree
backwards, so it was not run. starlight-openapi is a devDependency used to
render the API docs at build time; nothing in that chain reaches a published
page.

npm run verify passes: 86,477 records valid, 259,811 pages built, all internal
links valid.

---------

Co-authored-by: Moritz Mähr <14755525+maehr@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

data: add Nietzsche's works, resolved by Nietzsche Source eKGWB

2 participants