Christological Titles — How Jesus Referred to Himself¶
The christological_titles module counts how frequently Jesus used various titles
to refer to Himself across the four Gospels. It includes an optional speaker filter
that restricts counts to verses where Jesus is the grammatical subject of a speech verb,
ensuring we count only self-referential usage.
Tracked titles:
- Son of Man (ho huios tou anthropou) — Jesus' most frequent self-designation
- I AM sayings (ego eimi with predicates, Johannine)
- Son of God (huios tou theou)
- Lord / Kyrios (Kyrios used self-referentially)
- Bridegroom (nymphios)
- Teacher / Rabbi (didaskalos, rabbi)
- Good Shepherd (poimen)
- Light of the World (phos tou kosmou)
Sections:
- Title Frequency (unfiltered vs. speaker-filtered)
- Title Chart
- I AM Sayings
- Son of Man Sayings
import sys
sys.path.insert(0, '../../../src')
import warnings
warnings.filterwarnings('ignore')
import pandas as pd
pd.set_option('display.max_rows', 60)
pd.set_option('display.max_columns', 20)
pd.set_option('display.width', 120)
print('Ready.')
1. Title Frequency (Unfiltered vs. Speaker-Filtered)¶
Unfiltered counts all occurrences of each title pattern in the Gospels — this includes narrator uses, other characters' references, and Jesus's own speech.
Speaker-filtered restricts to verses where Jesus is the grammatical subject of a speech verb (MACULA subjref + curated allowlists). This removes narrator references and other characters' use of the titles, giving a cleaner picture of Jesus's self-designations.
from bible_grammar import print_title_counts, title_counts
# Unfiltered: all occurrences of each title pattern in the Gospels
print('=== All Gospel occurrences (unfiltered) ===')
print_title_counts(scope='gospels', speaker_filter=False)
# Filtered: only where Jesus is the speaking subject
print('=== Jesus speaking only (speaker_filter=True) ===')
print_title_counts(scope='gospels', speaker_filter=True)
# As a DataFrame for further analysis
df_titles = title_counts(scope='gospels', speaker_filter=True)
df_titles
2. Title Chart¶
Visual comparison of title frequencies across the Gospels. The chart uses the speaker-filtered counts to show Jesus's actual self-referential vocabulary.
from bible_grammar import title_chart
from IPython.display import Image
chart_path = title_chart(
scope='gospels', speaker_filter=True,
output_path='../../../output/charts/nt/names/christological-titles-filtered.png'
)
print(f'Chart saved: {chart_path}')
Image(chart_path)
# Unfiltered chart for comparison
chart_path_unfiltered = title_chart(
scope='gospels', speaker_filter=False,
output_path='../../../output/charts/nt/names/christological-titles-unfiltered.png'
)
print(f'Unfiltered chart saved: {chart_path_unfiltered}')
3. I AM Sayings¶
The Johannine I AM sayings (ego eimi + predicate) are among the most theologically significant self-designations of Jesus. John records 7 structured I AM sayings (bread of life, light of the world, door, good shepherd, resurrection and life, way truth and life, true vine) plus the absolute ego eimi (John 8:58).
from bible_grammar import title_verses
# All I AM sayings in John (with verse references)
verses = title_verses('I AM')
print(f'Johannine I AM sayings: {len(verses)}')
for ref in sorted(verses)[:15]:
print(f' {ref[0]} {ref[1]}:{ref[2]}')
4. Son of Man Sayings¶
The 'Son of Man' (ho huios tou anthropou) is Jesus's most frequent self-designation in the Synoptic Gospels. It is never used by others to address Jesus — it is always self-referential. This makes it an ideal test case for the speaker filter.
Three categories of Son of Man sayings (Bultmann's classification):
- Present earthly ministry (authority to forgive, lord of Sabbath)
- Future suffering and resurrection
- Future apocalyptic coming
from bible_grammar import title_verses
# All Son of Man sayings in the Gospels
son_of_man = title_verses('Son of Man')
print(f'Son of Man sayings (all Gospels): {len(son_of_man)}')
for ref in sorted(son_of_man)[:20]:
print(f' {ref[0]} {ref[1]}:{ref[2]}')
# Distribution by Gospel
import pandas as pd
df = pd.DataFrame(list(son_of_man), columns=['book', 'chapter', 'verse'])
print('Son of Man sayings per Gospel:')
print(df.groupby('book').size().to_string())