Visualizing The Catholic Lectionary – Part 1
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
What’s a Lectionary?
A lectionary, according to Wikipedia, is a listing of scripture readings for Christian or Judaic worship on a given day. The Roman Catholic Lectionary will contain a list of readings for a specific day that are on a 3-year cycle. Here is an example:
Thirtieth Sunday in Ordinary Time
Lectionary: 149
Reading 1: Jer 31:7-9
Psalm: Ps 126:1-2, 2-3, 4-5, 6
Reading 2: Heb 5:1-6
Gospel: Mk 10:46-52
As a Catholic, I’ve often wondered how much of the Bible is included in the lectionary. Fortunately, Felix Just, S.J., Ph.D. compiled a website with statistics on many aspects of the lectionary which help to answer this question.
His analysis shows that a Catholic who attends Mass on Sundays and Feasts (but not weekdays) would hear ~ 4% of the Old Testament (excluding Psalms) and ~ 41% of the New Testament. Wow – this was a shock to me! I bet if you ask around you’ll hear that many Catholics think the lectionary includes the whole Bible. To be fair, these numbers do get a bit higher if you include the complete lectionary (with weekdays). The total coverage of the Old Testament is ~14% (again excluding Psalms) and for the New Testament it is ~72%.
Since I’m a Data Scientist, I naturally wanted to dig into these numbers and ask more questions. The summary tables nicely show which books are covered and which are not. But what verses are actually covered? Is there something unique about those verses vs. those in the Lectionary (e.g. different sorts of themes)? In the future I plan to write another post on understanding the content via Natural Language Processing. For this post, I’ll focus on creating a single visualization of the lectionary coverage for Sundays and Major Feasts to help me understand what parts are covered at a glance.
Ok Cool, But Isn’t the Lectionary a Book?
Yes, the lectionary is traditionally a book. But it’s the 21st century and luckily someone else has transcribed this into an electronic listing so I didn’t have to do it. The data necessary includes the Sunday Lectionary and a pair of reference guides that tell us how many chapters/verses are in each book of the Bible (Old Testament Reference, New Testament Reference). I could have played with web scraping but there were only a few tables so I just copied the tables in Felix’s website into Excel files (link to data files).
Code
Code
Reference Data
There is a lot of data transformation necessary but in the end, we have a data frame with 35,524 rows which contains 1 row for every verse in the Catholic Bible. This will be used as the reference to compare the lectionary to. Below I show part of the table containing the first and last 6 verses.
Code
Testament | Section | Book | Chapter | Verse | Pos |
---|---|---|---|---|---|
Old | Torah | Genesis | 1 | 1 | 1 |
Old | Torah | Genesis | 1 | 2 | 2 |
Old | Torah | Genesis | 1 | 3 | 3 |
Old | Torah | Genesis | 1 | 4 | 4 |
Old | Torah | Genesis | 1 | 5 | 5 |
Old | Torah | Genesis | 1 | 6 | 6 |
Code
Testament | Section | Book | Chapter | Verse | Pos |
---|---|---|---|---|---|
New | NT | Revelation | 22 | 16 | 35519 |
New | NT | Revelation | 22 | 17 | 35520 |
New | NT | Revelation | 22 | 18 | 35521 |
New | NT | Revelation | 22 | 19 | 35522 |
New | NT | Revelation | 22 | 20 | 35523 |
New | NT | Revelation | 22 | 21 | 35524 |
Lectionary Data
Code
Below are some entries in the lectionary including the Reading as well as the Year in the 3-year cycle (ABC means read in years A, B, and C). For this analysis, I’ll ignore the Year and just consider the coverage over the whole 3-year cycle.
Code
Reading | LectNum | Year | Day |
---|---|---|---|
Gen 1:1-2:2 or 1:1, 26-31a | 41 | ABC | Easter Vigil (1st Reading) |
Gen 2:7-9; 3:1-7 | 22 | A | 1st Sunday of Lent |
Gen 2:18-24 | 140 | B | 27th Sunday in Ordinary Time |
Gen 3:9-15 | 89 | B | 10th Sunday in Ordinary Time |
Gen 9:8-15 | 23 | B | 1st Sunday of Lent |
Gen 11:1-9 | 62 | ABC | Pentecost Sunday: Vigil Mass (Option 1) |
Parsing Verses
The crucial part is matching the Reading to the reference. This seems straightforward but can be very tricky in some cases. I wrote a basic parser (see code) to handle the most common cases. It ignores some aspects such as the “or” option as in the first row of the table above. Usually an “or” option gives a longer form followed by a shorter form (subset of the first option) so I’ll only consider the longer forms.
Each set of continuous verses gets stored in a new data frame by the parser. For example, Gen 1:1-2:2 or 1:1, 26-31a will get parsed to:
Code
and Gen 2:7-9; 3:1-7 will get parsed to:
Code
Then, once each reading from the lectionary is parsed, it gets matched back to the reference.
Code
So each reading is parsed into multiple segments and then mapped onto the position variable (Pos) from the Reference. The result for one reading looks like this:
Code
Reading | Section | Book | Chapter | Verse | Pos |
---|---|---|---|---|---|
Isa 63:16b-17, 19b; 64:2-7 | MajorProphets | Isaiah | 63 | 16 | 22923 |
Isa 63:16b-17, 19b; 64:2-7 | MajorProphets | Isaiah | 63 | 17 | 22924 |
Isa 63:16b-17, 19b; 64:2-7 | MajorProphets | Isaiah | 63 | 19 | 22926 |
Isa 63:16b-17, 19b; 64:2-7 | MajorProphets | Isaiah | 64 | 2 | 22928 |
Isa 63:16b-17, 19b; 64:2-7 | MajorProphets | Isaiah | 64 | 3 | 22929 |
Isa 63:16b-17, 19b; 64:2-7 | MajorProphets | Isaiah | 64 | 4 | 22930 |
Isa 63:16b-17, 19b; 64:2-7 | MajorProphets | Isaiah | 64 | 5 | 22931 |
Isa 63:16b-17, 19b; 64:2-7 | MajorProphets | Isaiah | 64 | 6 | 22932 |
Isa 63:16b-17, 19b; 64:2-7 | MajorProphets | Isaiah | 64 | 7 | 22933 |
Visualize the Lectionary Coverage
The inspiration behind this visualization is picturing the whole Bible as a bookshelf. There is one row for each major section (e.g., Torah, Minor Prophets, Gospels) and each section is made up of multiple books. In the visualization, lines are used to indicate coverage of a particular verse in the lectionary.
Code
Code
The amount of white space clearly shows what parts of the Bible are not contained in the lectionary. For example, in the New Testament section (bottom row of the “bookshelf”), it is apparent that little of the book of Acts (coverage = 17%) or Revelation (coverage = 10%) are in the Sunday lectionary.
While most of the Old Testament is sparsely covered, the Psalms (abbreviated Ps) are one of the most covered books at 21% coverage. One of the drawbacks of this visualization is that each row contains a different number of verses so that the visual sense of “fullness” can be deceiving.
Acknowledgments
Huge kudos to Felix Just, S.J., Ph.D. for compiling these resources:
- Biblical Book Names & Abbreviations
- Old Testament Reference
- New Testament Reference
- Scripture Index of Lectionary Readings Used for Weekday Masses
- Scripture Index of Lectionary Readings Used for Sundays and Major Feasts
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.