Baza egzegeza_jana.sqlite przechowuje pełną egzegezę perykopa po perykopie.
Zawartość: cała Ewangelia, J 1,1–21,25, w czterdziestu pięciu perykopach — Prolog (zmigrowany z dokumentu roboczego) oraz czterdzieści cztery perykopy J 1,15–21,25; wszystkie doprowadzone do pełnej egzegezy (status: ukończona).
Dane są oddzielone od narzędzi — pliki .json przechowują całą treść, a
skrypty w tools/ są wyłącznie narzędziami, które z nich budują bazę.
data/ ← źródła (pod kontrolą wersji)
schema.sql schemat bazy (DDL)
wprowadzenie.json Wprowadzenie do całej księgi (autor, tekst, recepcja…)
prolog.json Prolog J 1,1-14 + katena Ojców
continuation.json J 1,15-51 (pięć perykop)
kana.json J 2,1-11 (Wesele w Kanie)
swiatynia.json J 2,12-25 (Oczyszczenie świątyni)
nikodem.json J 3,1-21 (Rozmowa z Nikodemem)
oblubieniec.json J 3,22-36 (Przyjaciel Oblubieńca)
samarytanka.json J 4,1-42 (Samarytanka)
dworzanin.json J 4,43-54 (Syn dworzanina)
betesda.json J 5,1-18 (Uzdrowienie nad Betesdą)
mowa.json J 5,19-47 (Mowa o Synu i świadectwach)
chleb.json J 6,1-21 (Rozmnożenie chleba i przejście przez morze)
eucharystia.json J 6,22-71 (Mowa eucharystyczna o chlebie życia)
bracia.json J 7,1-13 (Niewiara braci i wejście na Święto Namiotów)
swieto.json J 7,14-36 (Nauczanie w połowie święta)
woda.json J 7,37-52 (Rzeki wody żywej)
adultera.json J 7,53-8,11 (Kobieta cudzołożna)
swiatlosc.json J 8,12-30 (Światłość świata)
abraham.json J 8,31-59 (Prawda, wolność i Abraham)
niewidomy.json J 9,1-41 (Uzdrowienie niewidomego od urodzenia)
pasterz.json J 10,1-21 (Dobry Pasterz)
poswiecenie.json J 10,22-42 (Święto Poświęcenia)
lazarz.json J 11,1-44 (Wskrzeszenie Łazarza)
kajfasz.json J 11,45-57 (Narada Sanhedrynu i proroctwo Kajfasza)
namaszczenie.json J 12,1-11 (Namaszczenie w Betanii)
wjazd.json J 12,12-19 (Wjazd do Jerozolimy)
ziarno.json J 12,20-36 (Grecy i mowa o ziarnie)
bilans.json J 12,37-50 (Bilans niewiary i ostatnie wołanie)
umycie.json J 13,1-20 (Umycie nóg)
zdrada.json J 13,21-38 (Zapowiedź zdrady i przykazanie nowe)
mieszkania.json J 14,1-14 (Droga, prawda i życie)
paraklet.json J 14,15-31 (Paraklet i pokój)
krzew.json J 15,1-17 (Krzew winny i przyjaciele)
nienawisc.json J 15,18-16,4 (Nienawiść świata i świadectwo Parakleta)
duch.json J 16,5-15 (Dzieło Parakleta)
radosc.json J 16,16-33 (Smutek zamieniony w radość)
modlitwa.json J 17,1-26 (Modlitwa arcykapłańska)
pojmanie.json J 18,1-27 (Pojmanie i przesłuchanie przed Annaszem)
pilat.json J 18,28-19,16 (Proces przed Piłatem)
golgota.json J 19,17-42 (Ukrzyżowanie, śmierć i pogrzeb)
zmartwychwstanie.json J 20,1-31 (Zmartwychwstanie: pusty grób i spotkania)
epilog.json J 21,1-25 (Epilog: połów, pasterz i świadek)
egzegeza_jana.sqlite baza generowana (make build; poza gitem)
tools/
egzegeza_jana_build.py buduje data/egzegeza_jana.sqlite z data/*.json
export_pericope.py regeneruje Markdown perykopy z bazy
browser/
app.py backend (serwer + API, biblioteka standardowa)
index.html interfejs przeglądarki
Makefile make build | serve | export | clean
W korzeniu repozytorium leży db.sqlite — źródło prawdy dla samego tekstu
Ewangelii (Jan ma w nim numer księgi 500):
| tabela | zawartość |
|---|---|
words |
interlinia grecko-polska słowo po słowie: text (greka NA28 wraz ze znakami aparatu), translation (polski odpowiednik), strong, morphology, footnote oraz red — znacznik słów Jezusa (verba Christi) |
commentaries |
aparat krytyczny NA28, powiązany ze znakami (marker) wplecionymi w tekst grecki |
latin_verses |
Wulgata łacińska, werset po wersecie — trzecia kolumna tekstu paralelnego |
Baza egzegetyczna (data/egzegeza_jana.sqlite) pozostaje magazynem komentarza
— analiz, kateny, aparatu autorskiego i odniesień; tekst do prezentacji bierzemy
z db.sqlite. W sekcji „Analiza wers po wersie" przeglądarka wykorzystuje
wszystkie trzy warstwy words oraz commentaries:
- interlinia — greka nad polskim odpowiednikiem, słowa Jezusa czerwienią;
- Strong i morfologia — kliknięcie (lub Enter na zaznaczonym) słowa otwiera
okienko z formą grecką, znaczeniem, numerem Stronga (odsyłacz do konkordancji)
i rozwiniętym po polsku kodem morfologicznym:
v--papnsm-czyta się jako „czasownik · praesens · strona czynna · imiesłów · mianownik · liczba pojedyncza · rodzaj męski"; - aparat NA28 — wpisy z
commentariesprzypięte do wersetów bloku; znaki aparatu (°,⸀,⸂…) są podświetlone również wewnątrz greki interlinii, więc widać, do którego słowa odnosi się dana nota.
Każdy plik data/*.json ma tę samą strukturę: słownictwo współdzielone
(books, verses, lexemes, semitic, occurrences, works, themes)
oraz listę samodzielnych perykop (pericopes). make build (czyli
python3 tools/egzegeza_jana_build.py) buduje bazę od zera — najpierw
Wprowadzenie (meta + intro_section), potem perykopy w kolejności
prolog → continuation → kana → swiatynia → nikodem → oblubieniec → samarytanka → dworzanin → betesda → mowa → chleb → eucharystia → bracia → swieto → woda → adultera → swiatlosc → abraham → niewidomy → pasterz → poswiecenie → lazarz → kajfasz → namaszczenie → wjazd → ziarno → bilans → umycie → zdrada → mieszkania → paraklet → krzew → nienawisc → duch → radosc → modlitwa → pojmanie → pilat → golgota → zmartwychwstanie → epilog.
- Wprowadzenie:
intro_section(+ kluczeintro_*wmeta) — otwiera przeglądarkę (strona domyślna#wprowadzenie) i PDF (pierwszy rozdział) - Kanon:
book,verse(tekst grecki NA28 + przekład roboczy per werset) - Perykopa:
pericope(zakres, tytuł, motto, status opracowania) - Komentarz:
section(drzewo sekcji I–VII),commentary_block(zakres wersetów, np. „w. 6–8"),analysis_unit(fraza grecka + akapit analizy — najmniejszy klocek egzegezy) - Słowniki wielokrotnego użytku:
lexeme(λόγος, σάρξ…),semitic_term(dawar, Szechina…),lexeme_semitic(podwójne dno grecko-semickie),lexeme_occurrence(mapa wystąpień słów-kluczy) - Aparat:
scripture_ref(odniesienia z typem relacji),textual_note(warianty i interpunkcja),work+citation(autorzy i dzieła) - Katena patrystyczna:
patristic_comment— komentarz Ojca Kościoła (work + locus + treść) przypięty do bloku wersetowego; widokv_catena; sekcja VIII w eksporcie składa się z tej tabeli automatycznie - Recepcja:
liturgical_use - Przekroje:
theme+theme_link(nici tematyczne przez całą księgę) - Warsztat:
meta,revision_log, triggeryupdated_at, FTS5
- CLI:
sqlite3 data/egzegeza_jana.sqlite(na tym środowisku:python3 -c "import sqlite3...") - GUI: DBeaver, DB Browser for SQLite, Datasette (
datasette data/egzegeza_jana.sqlite)
SELECT entity, entity_id, snippet(fts_tresc, 0, '[', ']', '…', 12)
FROM fts_tresc WHERE fts_tresc MATCH 'Szechina';Uwaga: remove_diacritics w FTS5 zdejmuje tylko diakrytykę łacińską (ó, é…).
Grekę, hebrajski i polskie „ł" wyszukuj w pełnym zapisie: MATCH 'λόγος',
MATCH 'światłość'. Triggery synchronizują FTS automatycznie przy każdej
zmianie w analysis_unit, section, commentary_block, lexeme.
-- spis perykop z licznikami
SELECT * FROM v_spis_perykop;
-- pełna analiza w. 14: frazy i treść
SELECT u.phrase_greek, u.body_md
FROM analysis_unit u JOIN commentary_block b ON b.id = u.block_id
WHERE b.label = 'w. 14' ORDER BY u.position;
-- mapa semantyczna słowa-klucza
SELECT * FROM v_leksykon WHERE lemma = 'φῶς';
-- wszystkie typologie ST dla perykopy
SELECT target_label, note_md FROM scripture_ref
WHERE pericope_id = 1 AND relation = 'typologia';Nie dotyka się już kodu — dopisuje się dane.
- Dodaj perykopę jako kolejny wpis w tablicy
pericopesw odpowiednim plikudata/*.json(albo utwórz nowy plik danych i dopisz go do listyPHASESwtools/egzegeza_jana_build.py). Uzupełnijversesi — w razie potrzeby — słownictwo (lexemes,semitic,works,themes); leksemy już istniejące zostaną pominięte (INSERT OR IGNORE). make build— przebuduj bazę od zera zdata/*.json.python3 tools/export_pericope.py 2 kana_export.md— kontrola.
Struktura pojedynczej perykopy (bundle): pericope, intro (sekcja I),
blocks (z units), sections (II…), refs, patristic, liturgy,
textual, theme_links; opcjonalnie struktura, section_viii,
citations, revision_note.
Status perykopy (szkic → w_opracowaniu → ukonczona → do_rewizji)
i revision_log służą do prowadzenia pracy na lata.
-- wszyscy Ojcowie komentujący w. 14
SELECT autor, locus, body_md FROM v_catena WHERE blok = 'w. 14';
-- wszystkie komentarze Augustyna w całej bazie
SELECT blok, locus, body_md FROM v_catena WHERE autor = 'św. Augustyn';
-- pełnotekstowo po katenie
SELECT snippet(fts_tresc,0,'[',']','…',12) FROM fts_tresc
WHERE fts_tresc MATCH 'przebóstwieni' AND entity = 'patristic_comment';| Siglum | Tytuł | Status |
|---|---|---|
| J 1,1–14 | Prolog | ukończona |
| J 1,15–18 | Dopełnienie Prologu | ukończona |
| J 1,19–28 | Świadectwo Jana Chrzciciela | ukończona |
| J 1,29–34 | Baranek Boży | ukończona |
| J 1,35–42 | Pierwsi uczniowie | ukończona |
| J 1,43–51 | Powołanie Filipa i Natanaela | ukończona |
| J 2,1–11 | Wesele w Kanie Galilejskiej | ukończona |
| J 2,12–25 | Oczyszczenie świątyni | ukończona |
| J 3,1–21 | Rozmowa z Nikodemem | ukończona |
| J 3,22–36 | Przyjaciel Oblubieńca | ukończona |
| J 4,1–42 | Samarytanka | ukończona |
| J 4,43–54 | Syn dworzanina | ukończona |
| J 5,1–18 | Uzdrowienie nad Betesdą | ukończona |
| J 5,19–47 | Mowa o Synu i świadectwach | ukończona |
| J 6,1–21 | Rozmnożenie chleba i przejście przez morze | ukończona |
| J 6,22–71 | Mowa eucharystyczna o chlebie życia | ukończona |
| J 7,1–13 | Niewiara braci i wejście na Święto Namiotów | ukończona |
| J 7,14–36 | Nauczanie w połowie święta | ukończona |
| J 7,37–52 | Rzeki wody żywej | ukończona |
| J 7,53–8,11 | Kobieta cudzołożna | ukończona |
| J 8,12–30 | Światłość świata | ukończona |
| J 8,31–59 | Prawda, wolność i Abraham | ukończona |
| J 9,1–41 | Uzdrowienie niewidomego od urodzenia | ukończona |
| J 10,1–21 | Dobry Pasterz | ukończona |
| J 10,22–42 | Święto Poświęcenia — Ja i Ojciec jedno jesteśmy | ukończona |
| J 11,1–44 | Wskrzeszenie Łazarza | ukończona |
| J 11,45–57 | Narada Sanhedrynu i proroctwo Kajfasza | ukończona |
| J 12,1–11 | Namaszczenie w Betanii | ukończona |
| J 12,12–19 | Wjazd do Jerozolimy | ukończona |
| J 12,20–36 | Grecy i mowa o ziarnie — godzina uwielbienia | ukończona |
| J 12,37–50 | Bilans niewiary i ostatnie wołanie | ukończona |
| J 13,1–20 | Umycie nóg | ukończona |
| J 13,21–38 | Zapowiedź zdrady i przykazanie nowe | ukończona |
| J 14,1–14 | Droga, prawda i życie | ukończona |
| J 14,15–31 | Paraklet i pokój | ukończona |
| J 15,1–17 | Krzew winny i przyjaciele | ukończona |
| J 15,18–16,4 | Nienawiść świata i świadectwo Parakleta | ukończona |
| J 16,5–15 | Dzieło Parakleta | ukończona |
| J 16,16–33 | Smutek zamieniony w radość | ukończona |
| J 17,1–26 | Modlitwa arcykapłańska | ukończona |
| J 18,1–27 | Pojmanie i przesłuchanie przed Annaszem | ukończona |
| J 18,28–19,16 | Proces przed Piłatem | ukończona |
| J 19,17–42 | Ukrzyżowanie, śmierć i pogrzeb | ukończona |
| J 20,1–31 | Zmartwychwstanie: pusty grób i spotkania | ukończona |
| J 21,1–25 | Epilog: połów, pasterz i świadek | ukończona |
Eksport pojedynczej perykopy: make export PID=4 (lub
python3 tools/export_pericope.py 4 baranek.md); całości: make export.
make serve # startuje na http://localhost:8000
make serve PORT=9000 # inny port
# równoważnie: PORT=9000 python3 browser/app.pyBez zależności zewnętrznych — tylko biblioteka standardowa Pythona; baza
otwierana w trybie tylko do odczytu (mode=ro), więc przeglądanie nie może
uszkodzić danych. Zatrzymanie: Ctrl+C. Port ustawia zmienna PORT
(domyślnie 8000). Jeśli baza nie istnieje, uruchom najpierw make build.
Co jest w interfejsie
Perykopa jest jednym ciągłym dokumentem (bez zakładek), ułożonym tak, jak się ją czyta — od tekstu do szczegółu:
- Tekst perykopy — trzy kolumny paralelnie, werset przy wersecie:
greka NA28, przekład roboczy i Wulgata (z
latin_verses), z numeracją na marginesie (perykopy przekraczające granicę rozdziałów dostają znaczniki rozdziału i numery w postaci8,12). Kolumnę łacińską można schować przyciskiem; wybór pamięta się między perykopami - Komentarz — „Struktura całości" oraz sekcje II–VII z podsekcjami, zakończenie i nota warsztatowa
- Ojcowie Kościoła — katena z autorem, dziełem, miejscem (locus) i blokiem wersetowym, którego dotyczy
- Liturgia — recepcja liturgiczna: ryt, okazja, perykopa lekcjonarza, opis
- Analiza wers po wersie — blok po bloku: interlinia grecko-polska
z
db.sqlite(nad każdym słowem greka, pod nim polski odpowiednik; słowa Jezusa na czerwono, kliknięcie słowa otwiera Stronga i morfologię po polsku), pod nią przekład ciągły, jednostki analizy frazowej, leksykon słów-kluczy tego bloku, aparat NA28 zcommentariesoraz autorskie noty tekstualne przypisane do jego wersetów - Odniesienia i motywy — tabela odniesień biblijnych i motywy przekrojowe
Do tego: lewa kolumna z listą perykop, przyklejony spis części (podświetla sekcję, którą właśnie czytasz), górne przyciski Leksykon i Motywy, tryb ciemny wedle ustawień systemu, układ responsywny (na wąskim ekranie greka staje nad przekładem) i arkusz do druku. Wyszukiwarka u góry działa pełnotekstowo po FTS5 (analizy, sekcje, katena, leksykon); kliknięcie wyniku otwiera perykopę. Grekę i „ł" wpisuj w pełnym zapisie.
Punkty API (przydatne przy własnych narzędziach):
/api/pericopes, /api/pericope?id=N, /api/search?q=…, /api/lexicon, /api/themes
— wszystkie zwracają JSON.
GitHub Pages nie uruchomi Pythona, więc przeglądarkę publikuje się w wersji
statycznej: make site woła tools/export_site.py, który importuje
browser/app.py i zamienia każdy endpoint API w plik JSON w site/api/
(perykopy, leksykon, motywy oraz szukaj.json — indeks dla wyszukiwarki
działającej wtedy po stronie przeglądarki, bez FTS5). Kopiowany
index.html dostaje atrybut data-static i sam przełącza się na pliki.
Publikacją zajmuje się workflow .github/workflows/pages.yml: przy każdym
pushu na master buduje bazę, generuje site/ i wdraża na Pages.
Jednorazowo trzeba włączyć w repozytorium:
Settings → Pages → Build and deployment → Source: „GitHub Actions".
Podgląd lokalny wersji statycznej: make site && python3 -m http.server -d site 8001.