bibref
bibref copied to clipboard
A tool that helps discovering internal references in the Bible

bibref
bibref is a tool that helps discovering internal references in the Bible. It aims at finding citations of the Septuagint in the Greek New Testament in a mechanical way.
Background
The Bible, a book that has been translated into many languages, is maybe the most important book has ever existed. Believers have evidence that it is God's word, written by various people being inspired by God himself.
The Bible has many internal references. Many of them connect the two parts of the Bible: the Old Testament and the New Testament. The books of the Old Testament are usually written in Hebrew, while the books of the New Testament are Greek. A natural question can arise: How can Hebrew texts be cited in the Greek text?
There are several research projects on this, and today it seems to be clear that many authors of the New Testament cited a Greek translation of the Hebrew text, namely the Septuagint, that was widely popular in the first centuries, and still popular in some Christian churches. Many Bible translations, however, mostly use only the Hebrew text as a basis of the Old Testament, because the importance of the Septuagint is not yet widely identified.
This project
This software project attempts to support finding citations of the Septuagint in the New Testament automatically. The work is based on The SWORD Project.
The bibref package offers several tools that help in comparing the verses of the Septuagint with the verses of the Greek New Testament. The tools consider the texts of full books of the Bible as one unit instead of considering just separated verses. The texts are provided by the SWORD project from the modules LXX and SBLGNT. In the newest versions the module StatResGNT is also supported.
This project is a work in progress.
Using the software tool
Qt version
Since March 2024 bibref comes with a graphical user interface that is based on Qt. You can find information on how to install the program on your machine on the Releases page.
Terminal based versions

You need a Linux system (preferred) or a web browser (fallback) to use the terminal based interface.
At the moment this interface was tested on Ubuntu Linux 18.04, 19.10, 20.04 and 22.04 but it should work on many other systems.
Snap store installation (preferred)
After installation you need to use the command bibref via command line.
In the snap version only the LXX, SBLGNT, StatResGNT and KJV modules are present.
If you want to use additional modules, please try installing the tool from source code (see below).
Web version (fallback)
Currently there is an online web version of bibref available: a simple version that is based on jquery.terminal. It is somewhat slower than the installable version, but works immediately in a web browser (you may need to wait a couple of seconds before the start). In the web versions the modules LXX, SBLGNT, StatResGNT and KJV are available.
Installation from source code (for developers)
Qt version
We provide some hints to help you build the graphical user interface.
Terminal based versions
The following commands should be entered on command line:
sudo apt install libsword-common libsword-dev libreadline-dev libboost-dev libboost-filesystem-dev git cmake build-essential pkg-config
git clone https://github.com/kovzol/bibref.git
cd bibref
mkdir build
cd build
cmake ..
make
make install || true
Finally enter the command
build/bibref -c
to start the program with a user friendly command line interface (with colors).
(If you want to compile the web version, please have a look on the corresponding GitHub action.)
Example use case
We follow the syntax of the terminal based version, but the similar steps can be used on the graphical interface as well. The following session finds the corresponding citation of the LXX text of Psalm 2:1 in the SBLGNT:
This is bibref 2022Feb24, nice to meet you.
>> addbooks
Loading LXX...
Genesis contains 150801 characters,
...
and Malachi contains 7250 characters.
Done loading books of LXX.
Loading SBLGNT...
Matthew contains 89148 characters,
...
Jude contains 2550 characters,
and Revelation of John contains 45581 characters.
Done loading books of SBLGNT.
>> getrefs SBLGNT LXX Psalms 2:1
LXX Psalms 2:1 2:2-8 = SBLGNT Acts 4:25+58 4:26 (length=131, pos1=502, pos2=11601)
>> quit
Goodbye.
Available commands
For most commands two clipboards can be used. They are numbered with 1 and 2. These clipboards store the Latin transcription of the Greek texts to work with. Typically clipboard 1 is used to store a passage from the LXX and clipboard 2 for the SBLGNT. Therefore some commands can work only with one of the clipboards.
In all commands where passage is given as a parameter, it can be either one
verse with the classic notation (e.g. 1:2), or it can be fine tuned by entering
two positions: a verseStart and a verseEnd. These can be also given
with the classic notation or a modifier can be appended:
- If verseStart is appended by a
+Mmodifier (where M is a non-negative integer) then the first M characters will be removed from the passage. - If verseEnd is appended by a
-Mmodifier (where M is a non-negative integer) then the last M characters will be removed from the passage.
For example, Genesis 1:1, Genesis 1:1+0 1:1-0, Genesis 1:1+0 1:1, Genesis 1:1 1:1-0 define the same first verse
of Genesis. On the other hand, Genesis 1:1+2 1:1-3 defines the first verse of Genesis without the first two and the last three letters.
In all commands the Bible parameter can be either LXX, SBLGNT, StatResGNT, except for the command lookup.
The available commands are:
addbooks: Load the books of LXX, SBLGNT and StatResGNT (if any of these are available). Most commands require that these books are already loaded. After using this command for the first time (it takes a couple of seconds), a folder namedbibref-addbooks-cachewill be created in the current working directory to speed up the next startup of this command.textNtext: Define a Greek text and put its Latin transcription in clipboard N.latintextNtext: Put the Latin transcription text in clipboard N.findNBible: Search for the text of clipboard N in the given Bible.lengthN: Compute the length of the text in clipboard N.printN: Show the Greek text in clipboard N (without punctuation and spaces).lookupBible book verse: Search for the given verse in the given book in the given Bible. Here Bible can be any translation that is already installed as a module on the computer.lookupNBible book passage: Search for the given passage in the given book in the given Bible and put its Latin transcription in clipboard N.searchBible token1 token2 ... tokenN maxlength: Search for the given set of tokens on a maximal length of maxlength in the given Bible.rawBible book start length: Show the raw Latin transcription of a passage in the given book in the given Bible, beginning with the start position on length characters.rawNBible book start length: Put a passage in the given book in the given Bible, beginning with the start position on length characters, in clipboard N.minunique1Bible: Search for minimal unique passages in clipboard 1 in the given Bible.extendBible1 Bible2 book2 passage2: Extend the given passage in Bible2 according to the longest possible citation from Bible1, based on the text of book2 in passage2. In most casesLXXis used for Bible1 andSBLGNTfor Bible2.psalminfoBible number: Show the number of verses in Psalm number in the given Bible.getrefsBible2 Bible1 book1 passage1: Search for references in Bible2 on the passage in Bible1 in book book1 in passage1. UsuallySBLGNTstands for Bible2 andLXXfor Bible1. If book1 isPsalms, the passage can also be its number only.maxresultsnumber: Set the maximal amount of results to be shown to number.compare12: Compare the two clipboards with a 2-long substring-fingerprint (2-shingles) check, best match is reached at 1/(length1+length2).jaccard12: Compare the two clipboards the same way howcompare12does but use the "Jaccard similarity for bags" algorithm, best match is reached at 0.sqlswitch: Set some outputs to be shown also as an SQL query if switch ison.colorsswitch: Show some outputs colored if switch ison.tokensBible book verse: Search for the given verse in the given book in the given Bible (see commandlookup), but the output is shown in a tokenized form. Tokenization is done via Strong's numbers.helpcommand: Show some hints on usage of command, or get general help if no parameter is given.quit: Exit program.
There may be other commands available that are not documented yet.
Some examples are also available. See also an incomplete draft (in Hungarian) on the purpose of the commands. Also, a work-in-progress database can be found in docs/common which aims at collecting all quotations.
You may be interested in some blog entries that extensively use the web version of bibref.
Command line options in the terminal based version on Linux
Issue bibref -h to learn about the available command line options.