Zitieren mit fr:-Adressen
Wie erzeugter Text Items einer Famulus-Referenz nennt und wie die Prüfung sie auflöst
Ein erzeugter Text nennt ein Item einer Famulus-Referenz mit seiner fr:-Adresse; die Prüfung guard: löst jede genannte Adresse im DuckLake auf und legt das Ergebnis in die Belege, sodass eine Adresse ohne Item als Zitat ohne Beleg erkannt wird.
1 Die fr:-Adresse im Text
fr:<collection>/<doc>[/<pidx:04d>[/<segment>]]
fr:hartmann/bsb00028171/0137/print1 nennt das Segment print1 auf Seite 137 des Dokuments bsb00028171 der Collection hartmann. Die Adresse steht im Text so, wie sie im DuckLake steht, etwa:
Der Holzschnitt auf Blatt 137 zeigt ein Astrolabium (fr:hartmann/bsb00028171/0137/print1).
Ein Satzzeichen unmittelbar nach der Adresse gehört nicht zu ihr. Die fr:-Adresse unterscheidet sich von einem Verweis fam: (siehe Referenzen): fam: nennt ein Artefakt eines Blocks, fr: ein Item einer Collection. Was eine Famulus-Referenz ist und wie Famulus Proof die Adresse als Fundstelle einer Klausel verwendet, beschreibt die Seite Famulus-Referenz der Dokumentation von Famulus Proof (famulus-proof/docs/referenz.qmd).
2 Wie die Prüfung die Adressen auflöst
Ein Block mit guard: (siehe Ein Notebook schreiben) prüft seinen erzeugten Text gegen seine Belege. Vor der Prüfung sucht der Runner im Text alle fr:-Adressen (höchstens 50, jede einmal) und löst jede mit famulus_proof.lake.resolve_fr im DuckLake auf. Das Ergebnis steht in den Belegen unter fr_refs, je Adresse ein Eintrag:
| Feld | Inhalt |
|---|---|
found |
true: das Item steht im DuckLake; false: Collection oder Adresse unbekannt; null: DuckLake oder famulus_proof.lake nicht erreichbar |
zitat |
Textzitat des Items oder des nächsten Vorfahren mit erfasstem Zitat |
zitiert_als |
die Adresse, deren Zitat verwendet ist |
text |
die ersten 600 Zeichen der ersten Textschicht |
snapshot |
der Snapshot des DuckLake, zu dem gelesen wurde |
luecke |
der Grund, wenn die Adresse nicht aufgelöst ist |
note |
der Grund, wenn nicht gelesen werden konnte |
Die Belege mit fr_refs gehen an die Sprachinstitution (LWgrammar); zusätzlich steht die Auflösung jeder Adresse im Verdikt unter guard.fr_refs (found, zitiert_als, snapshot, luecke, luecken). Eine Adresse mit found: false ist ein Zitat ohne Beleg: der Guard setzt ein bestandenes Verdikt auf fail mit dem Vermerk „fr:-Adressen ohne Beleg im Lake: …“. Ein nicht erreichbarer DuckLake ergibt found: null; das wird im Verdikt vermerkt, ändert den Status aber nicht. Ersetzt der Block die Belege mit evidence:, werden die Adressen nur für das Verdikt aufgelöst, nicht in die Belege geschrieben.
3 BibTeX über den MCP-Server
Der MCP-Server famulus-reference (mac-studio, Port 5135) gibt zu fr:-Adressen das BibTeX aus:
fr_bibtex(fr_ids=["fr:hartmann/bsb00028171/0137/print1", "fr:hartmann/bsb00028171"])
Die Antwort enthält bibtex (die Einträge, jeder nur einmal), n, gaps (die Adressen ohne erfasstes Zitat) und snapshot. Ein Zitat stammt nur aus den erfassten bibliographischen Daten der Collection; fehlen sie für ein Item und alle seine Vorfahren, steht die Adresse unter gaps, und es wird kein Eintrag zusammengesetzt. Eine solche Lücke bleibt im Text sichtbar. Für ein einzelnes Item mit CSL-JSON, Textzitat und Fundstelle dient fr_cite(fr_id).
4 Eine Begründungsanfrage beantworten
fr_cite, fr_bibtex, fr_trace, fr_ground und fr_sql geben eine run_id zurück. Wer zu einem Text die Belege festhält, notiert diese run_id neben dem Text. Fragt später jemand, worauf der Text beruht, liefert
fr_trace_run(run_id="…")
die gelesenen Items, den Snapshot und die SQL-Anweisungen dieses Laufs. Snapshots, die fr_cite oder fr_bibtex ausgegeben haben, verfallen bei der Wartung nicht; die Belege lassen sich deshalb zu demselben Stand wieder lesen. fr_trace(fr_id) ergänzt für jedes Item Herkunft, Prüfvermerke und Belegqualität.
Die run_id im Urteil unter guard gehört zum Prüflauf der Sprachinstitution. Sie ist nicht die run_id des MCP-Servers famulus-reference; fr_trace_run kennt nur Läufe seiner eigenen Werkzeuge.