BiblioteQ
A Library Software Suite
2025.06.07
BiblioteQ is a complex and highly-configurable library suite. The software supports large, medium, and small institutions.
BiblioteQ is functional on any operating system where Qt LTS, SQLite, and YAZ are supported. BiblioteQ also supports the PostgreSQL database engine. Qt 4.8.x is considered obsolete and is not supported. The YAZ library is optional.
The source of BiblioteQ is available at https://github.com/textbrowser/biblioteq.
The purpose of this document is to detail the functionality of BiblioteQ. Installation instructions are not described in this document. Please refer to the Administrator Guide document for installation information.
An existing SQLite database file may be opened via two methods. The first method involves the Recent SQLite Files option of the File menu.
The Recent SQLite Files sub-menu contains a list of BiblioteQ’s recently-accessed SQLite files. If an SQLite file is selected, the specified SQLite database is opened. Please note that BiblioteQ will first close an existing database, if one is open, before opening the specified database. A Clear option is also included in the sub-menu. If Clear is activated, the list of the recently-accessed SQLite files is emptied. BiblioteQ will remove duplicate sqlite_db_ entries from the INI file shortly after the application is launched. Also removed will be entries whose corresponding files lack read and write permissions.
The second method of accessing an SQLite database is through the Branch Selection dialog. The dialog may be accessed via the Connect option of the File menu.
After opening the Branch Selection dialog, select local_db as the Branch Name. This will prepare the dialog for accessing SQLite databases. Afterwards, click on the Select SQLite Database button to launch a file-selection dialog.
For PostgreSQL databases, items may be added by administrator and librarian accounts. For SQLite databases, file owners may add items.
BiblioteQ supports books, compact discs, digital video discs, grey literature, journals, magazines, photograph collections, and video games.
To add an item, click on the Add Item tool button and select the desired category. An item-create window will be displayed. Required fields are highlighted.
Multiple items may be added simultaneously.
The Administrator Browser is available if an administrator role is connected to a PostgreSQL database. The browser may be accessed via the Configure Administrator Privileges (PostgreSQL) tool button.
Changes should be committed via the Save Changes button.
The process of committing changes to the PostgreSQL database is as follows:
1.The table’s current state is inspected. The operator is notified of administrators without privileges as well as duplicate administrators and the process is aborted.
2.A database transaction is prepared. If an error occurs, the process is aborted.
3.Deleted accounts are removed from the admin database table as well as from the PostgreSQL database. If an error occurs with either sub-process, the process is aborted and the previous changes are reverted.
4.Existing admin table entries are updated. New accounts are inserted into the admin table. If an error occurs, the process is aborted and the previous changes are reverted.
5.Existing admin table entries are granted the specified privileges after all potential privileges are revoked. New accounts are created in the PostgreSQL database and assigned the appropriate privileges. If an error occurs, the process is aborted and the previous changes are reverted.
6.If all of the aforementioned statements execute correctly, the database transaction is committed.
Please note that leading and trailing spaces will be removed from account names during the database-recording process.
The BiblioteQ.INI file contains interface settings. The file resides in the user’s home directory within the .biblioteq folder. Editing should be performed with care.
The BiblioteQ.conf file contains Amazon, SRU, Z39.50, and other information. Please edit this file using a text editor.
A PostgreSQL account’s password may be changed via the Password Selection dialog. A password must contain at least eight characters. Guest accounts are excluded.
BiblioteQ supports both the PostgreSQL and the SQLite database engines. This section will cover the details involved in connecting to a PostgreSQL database.
Click the Connect option of the File menu.
Select the appropriate non-local_db Branch Name if one is available. Provide the Password and Userid information, if applicable, and press the Connect button.
Note: The sections Accessing an Existing SQLite Database and Creating an SQLite Database cover the details of accessing and creating SQLite databases, respectively.
BiblioteQ supports PostgreSQL 8.x, 9.x, and newer. Please note that PostgreSQL 8.x and 9.x are not supported by PostgreSQL. Please follow the PostgreSQL-provided documentation for installing PostgreSQL. After installing the required PostgreSQL packages, please perform the following operations:
1.Create the xbook_db database via createdb xbook_db -E UTF8 or via the PostgreSQL-recommended procedure. Please note that the database name xbook_db is only a suggestion.
2.Execute createlang plpgsql -d xbook_db or the PostgreSQL-recommended procedure for adding a new programming language to the xbook_db database. If the language already exists, PostgreSQL will produce an error. Please ignore the error.
3.If desired, replace all instances of the default administrator xbook_admin in the postgresql-create-schema.sql file. A password may also be set afterwards.
4.Log into your PostgreSQL xbook_db database and load the postgresql-create-schema.sql file via \i postgresql-create-schema.sql.
A new BiblioteQ SQLite database file may be created via the New SQLite Database option of the File menu.
After the option is selected, a file-selection dialog is displayed. An existing file or a new file may be specified. A confirmation dialog is displayed if an existing file is selected.
Once the SQLite database file has been initialized, BiblioteQ will open it. If a database is already open, a confirmation prompt is displayed. If confirmed, the current database is closed and the newly-created database is opened.
Custom SQL queries may be performed via the Custom Query window.
After a successful query is performed, the main table’s columns will be set according to the query statement. Please avoid including columns of type QByteArray in the custom query as the associated data will burden the software.
All content, save for configuration values, is stored in the respective database. For instance, image data are stored in a database. Temporary data reside in the application’s memory space.
Image information is recorded as Base-64.
The Database Enumerations Browser is available to accounts having administrator or librarian privileges and is accessible via the Database Enumerations tool button. The browser contains configurable item values. The browser is available for PostgreSQL and SQLite databases.
The process of committing data to a database is as follows:
1.For each sub-panel (Book Binding Types, etc.), a database transaction is prepared. If an error occurs, the current transaction is canceled and the process iterates to the next sub-panel.
2.All items in the respective database table are deleted. For example, for the Book Binding Types sub-panel, all entries from the book_binding_types database table are deleted. If the process fails, changes are reverted and the process proceeds to the next sub-panel.
3.New values are inserted into the respective database table. If the process fails, changes are reverted and the process proceeds to the next sub-panel.
4.The current database transaction is committed.
To disconnect from a connected database, click the File menu. Then click the Disconnect option.
The Error Log may be accessed via the View menu. The window details critical exceptions which were raised during a BiblioteQ session. The status bar of the main window will indicate whether or not the log contains entries.
The current table view’s contents may be exported to a CSV file via the Export Table View as CSV option of the File menu.
If clicked, a file-selection dialog is displayed.
The generated CSV file will contain comma-separated values. Values which contain commas will be encased in double-quotes. For example, A book of abstract algebra,"Pinter, Charles C.",McGraw-Hill,1990-01-01,New York,2,"Algebra, Abstract.",English,0070501386,0.00,Dollar,1,Hardcover,Home,9780070501386,89035355,QA162 .P56 1990,512/.02,1,0,Original,As New,.
The first line of the generated file contains the exported view’s header strings. The exported columns are governed by the settings in Viewable Columns.
Several categories (books, grey literature, journals, magazines) include file attachments. Attached files are compressed before being inserted into the respective database. BiblioteQ employs the ZLIB algorithm for compression.
BiblioteQ supports embedded hyperlinks. If a hyperlink is clicked, a search is initiated using the specified text for the given category. Please note that a clicked hyperlink will not be activated if the parent widget is editable. An example hyperlink: <a href='book_search?category?Number Theory'>Number Theory</a>.
BiblioteQ provides an import mechanism for importing book and patron data contained in a CSV file. Please review the Tools menu.
BiblioteQ does not impose limits on the data content. Please note that both PostgreSQL and SQLite have rigid limits. Please read https://www.sqlite.org/limits.html for SQLite details.
Generally:
•Attached files may be of any size. Please note that submitting large files will burden both local and remote queries. PostgreSQL and/or SQLite may limit field sizes.
•Infinitely-many items may be stored, although PostgreSQL and/or SQLite may prevent this.
•Pagination is implemented with the application of the LIMIT and OFFSET clauses.
•The number of PostgreSQL accounts is not limited through the software.
This page will describe the various tool buttons which are present on the main window.
The tool buttons are described from left to right.
View Selected Item(s)
Open the detail window(s) of the selected item(s). A confirmation prompt is displayed if the number of selected items exceeds four. The tool button is disabled if the current account has administrator privileges.
Add Item
Add an item. The tool button is disabled if the current account does not have Item Creation privileges.
Duplicate Selected Item(s)
Open the detail window(s) of the selected item(s). A confirmation prompt is displayed if the number of selected items exceeds four. The tool button is disabled if the current account does not have Item Creation privileges.
Delete Selected Item(s)
Delete the selected item(s). A confirmation prompt is displayed. The tool button is disabled if the current account does not have Item Deletion privileges.
Modify Selected Item(s)
Modify the selected item(s). A confirmation prompt is displayed if the number of selected items exceeds four. The tool button is disabled if the current account does not have Item Updates privileges.
Print Current View
Print the items in the current view. A Print dialog is displayed.
Select Viewable Columns
Select the columns that are to be shown in the main window’s table per each category (books, cds, etc.). Please note that column order is not preserved.
View Member’s Reservation History (Patrons Only)
Display the current patron’s reserved items. The tool button is enabled only for patron accounts.
Request Selected Item(s) / Cancel Selected Request(s)
Available for patrons, these options allow for the requesting of items as well as for the canceling of requested items.
Reserve Selected Item
Reserve the selected item. The tool button is disabled if the current account does not have Item Reservations privileges.
Display Members Browser
Display the Members Browser window. Only available for administrator, circulation, and membership accounts.
Files Browser
Display the Files Browser window.
Database Search
Activates a context menu containing various search options.
Custom Database Query
Display a Custom Query window.
Refresh Table
Reload the current view.
Again, the tool buttons are described from left to right.
Connect
Display the Branch Selection dialog.
Disconnect
Disconnect from the current database.
Change Password
Display the Password Selection dialog. Not available for PostgreSQL guest accounts and SQLite databases.
Configure Administrator Privileges
Display the Administrator Browser window. Only available for administrator accounts. Not available for SQLite databases.
Database Enumerations
Display the Database Enumerations Browser window. Only available for administrator and librarian accounts.
Exit BiblioteQ
Terminate the application.
The Members Browser is available via the View menu. For PostgreSQL databases, the browser is accessible if the current role is administrator, circulation, or membership. For SQLite databases, access to the browser is always granted.
The browser allows administrators to create, delete, and modify patron account details. Reservation processes are also available in the Members Browser. A mechanism for exporting the patron information is also included.
Grant Privileges
Grant Privileges is available for PostgreSQL databases. If pressed, each listed account is removed from and added to the biblioteq_patron role.
Direct PostgreSQL Documentation
PostgreSQL manages database access permissions using the concept of roles. A role can be thought of as either a database user, or a group of database users, depending on how the role is set up. Roles can own database objects (for example, tables and functions) and can assign privileges on those objects to other roles to control who has access to which objects. Furthermore, it is possible to grant membership in a role to another role, thus allowing the member role to use privileges assigned to another role.
The concept of roles subsumes the concepts of “users” and “groups”. In PostgreSQL versions before 8.1, users and groups were distinct kinds of entities, but now there are only roles. Any role can act as a user, a group, or both.
A patron’s reservation history may be accessed via the Member’s Reservation History window. Reservation histories are initially disabled.
BiblioteQ supports the Open Library Internet search query for books.
BiblioteQ supports Android, FreeBSD, Linux, MacOS, OS/2, OpenBSD, and Windows. Generally, the application is compatible with any operating system where Qt, SQLite, and YAZ are supported. Please note that the YAZ library is totally optional. The software has also been tested on a variety of architectures, including AMD, ARM, Alpha, Apple Silicon, PowerPC, and Sun UltraSparc.
BiblioteQ supports PDF content through the Poppler open source library. Browsing, printing, and searching options are included. Poppler support is optional. Newer versions of Qt also include some PDF functions and BiblioteQ will provide PDF services through Qt if possible.
BiblioteQ provides three tiers of PostgreSQL database roles: administrator, guest, and patron.
Initially, the postgresql-create-schema.sql script may be used to create the administrator account xbook_admin.
Guest roles are provided a read-only interface. Patron roles are granted reservation permissions.
PostgreSQL accounts may be modified via the Administrator Browser. Please note that the Administrator Browser is only available within an administrator role.
PostgreSQL credentials are not retained by BiblioteQ. Please consult https://www.postgresql.org/docs/current/auth-methods.html for information.
Additionally, there are four administrator levels: Administrator, Circulation, Librarian, and Membership. The abilities of each level is described next.
Administrator Permissions
•Item Creation
Ability to create books, etc.
•Item Deletion
Ability to remove books, etc.
•Item Reservations
Ability to reserve items.
•Item Returns
Ability to process returned items.
•Item Updates
Ability to modify books, etc.
•Member Creation
Ability to create administrators and patrons.
•Member Deletion
Ability to remove administrators and patrons.
•Member Updates
Ability to update information of patrons and permissions of administrators.
•Reservation Histories
Ability to read reservation histories of patrons.
Circulation Permissions
•Item Reservations
•Item Returns
•Reservation Histories
Librarian Permissions
•Item Creation
•Item Deletion
•Item Updates
Membership Permissions
•Member Creation
•Member Deletion
•Member Updates
PostgreSQL is an open-source relational database management system. Some of the benefits of PostgreSQL include the following.
•High Standards Compliance
•Indices
•Networking
•Notifications
•Procedural Languages
•Replication
•Rich Data Types
•Roles
•Schema Support
•Transactions
•Triggers
•User-defined Types
BiblioteQ supports PostgreSQL's unaccent() extension. Documentation describing the unaccent() function is located at https://www.postgresql.org/docs/current/unaccent.html.
Greek-language users may wish to supplement their unaccent.rules files with information contained at https://gist.github.com/marinoszak/7d5d6a8670faae0f4589c2da988f2ba3. The PostgreSQL database may require restarting after a rules file is altered.
The biblioteq.conf file contains non-user settings. The location of the file varies with distribution. This page will describe the various properties which may be defined in the biblioteq.conf file.
[Amazon Back Cover Images]
Describes required settings for retrieving book back-cover images from amazon.com.
host
Host name of the Amazon image server.
path
Path of the image file. BiblioteQ substitutes the respective ISBN in the percent sign. Please note that ASINs may also work.
The optional properties proxy_host, proxy_password, proxy_port, proxy_type, and proxy_username are also supported. The proxy_type property supports values of HTTP, None, Socks5, and System.
[Amazon Front Cover Images]
Please read previous section.
[Branch-1]
The first database branch.
connection_options
PostgreSQL-specific connection options. An example is connect_timeout=10;sslmode=verify-full.
database_name
The name of the database as it will appear in the Branch Selection dialog.
database_type
The database’s type. Must be set to postgresql or sqlite.
hostname
The host name of the PostgreSQL database server. Both IP addresses and fully-qualified domain names may be assigned.
port
The port value of the PostgreSQL database server.
ssl_enabled
If false, SSL/TLS communications are disabled.
[Open Library]
Describes required settings for retrieving book information from openlibrary.org.
url_isbn
URL of book. BiblioteQ substitutes the respective ISBNs.
[Open Library Cover Images]
Describes required settings for retrieving book cover images from covers.openlibrary.org.
back_url
URL of the back-cover image file. BiblioteQ substitutes the respective ISBN in the $value field.
front_url
URL of the front-cover image file. BiblioteQ substitutes the respective ISBN in the $value field.
[SRU-1]
Describes the first SRU site.
name
Name of the site as it will appear in the application.
url_isbn
Complete URL of the site for retrieving data via ISBNs. The tokens %1 and %2 are replaced by the ISBN-10 and ISBN-13 fields.
url_issn
Complete URL of the site for retrieving data via ISSNs. The token %1 is replaced by the ISSN field.
The optional properties proxy_host, proxy_password, proxy_port, proxy_type, and proxy_username are also supported. The proxy_type property supports values of HTTP, None, Socks5, and System.
[Z39.50-1]
Describes the first Z39.50 site. Please also see http://www.indexdata.com/yaz/doc/zoom.records.html.
database_name
The remote database name.
format
Render format. An example: marc8,utf-8.
name
Name of the site as it will appear in the application.
password
Account password. Optional.
port
The remote database’s port number.
record_syntax
Preferred record syntax. Example: MARC21.
The optional properties password, proxy_host, proxy_port, and username are also supported.
timeout
Maximum number of seconds for the query to complete.
username
Account username. Optional.
yaz_
Configure YAZ options. The option (yaz_option minus yaz_) must be supported by the YAZ library. For example, yaz_charset and yaz_databaseName are suitable options.
PostgreSQL patrons may request one or more books, compact discs, digital video discs, grey literature, journals, magazines, and video games. After selecting an item, please press the green Telephone tool button. To cancel a request, please set the Category to All Requested, select the desired item, and press the red Telephone tool button. A confirmation dialog is displayed and if accepted, the selected request is canceled.
For PostgreSQL databases, items may be reserved by administrator and circulation accounts. Owners of SQLite databases may reserve items. Books, compact discs, digital video discs, grey literature, journals, magazines, and video games may be reserved. To reserve an item, select it in the main window and press the Reserve Selected Item tool button. If the item is available for reservation, the Members Browser will be displayed. Select the desired patron in the Members Browser and press the Reserve Selected Item tool button in the Members Browser. The Copy Browser dialog is displayed. Specify the Due Date and select the desired copy. Finalize the reservation process by clicking the Reserve button.
Items may also be reserved via the Batch Activities Browser.
Please note that the default Due Date may be modified via the Database Enumerations Browser.
For PostgreSQL databases, reserved items may be returned by administrator and circulation accounts. Owners of SQLite databases may return reserved items. The simplest method of identifying reserved items is by the All Reserved category of the View menu. An item may be returned via its details window. Open the selected item’s details and click the Reservation Status button. The Item Reservation Status dialog is displayed. Select the copy which is about to be returned and click the Return button. Confirm the process.
Selected items may also be returned via the All Reserved category and the Batch Activities Browser.
Most BiblioteQ queries are parameterized. Prepared SQL statements are resilient against SQL injections. Please note that some fixed fields (for instance, Locations) are embedded in the statements.
BiblioteQ supports both the SRU and Z39.50 Internet search queries for books, journals, and magazines. Sites may be defined within the biblioteq.conf file.
BiblioteQ provides package releases and source releases. LTS, or long-term-support, releases are releases which include packages and source files.
Dates are recorded in MM/dd/yyyy format.
ISBNs are recorded without hyphens.
--help
Display terminal options.
--open-postgresql-database <name-of-database>
Connect to the specified PostgreSQL database. The connection is established via the guest account.
--open-sqlite-database <absolute-path-of-database-file>
Open the specified SQLite database file.
--open-sqlite-database-index <index>
Open the SQLite database at the specified index.
--prepare-csv-import-file <absolute-path-of-csv-file>
Populates the CSV File widget of the CSV Import Browser with the specified file name. The file should exist.
--special-executable <absolute-path-of-executable>
The argument provided to special-executable will appear in Tools → External Applications. The environment variable BIBLIOTEQ_DATABASE_NAME is available to the new process. Multiple special-executable instances are allowed. Please note that BiblioteQ does not validate the paths of the applications.
--special-executable-icon <absolute-path-of-icon>
Set the action icon of the application specified via --special-executable. Please note that BiblioteQ does not validate the paths of the icons.
Example: BiblioteQ --special-executable /opt/dooble/Dooble –special-executable-icon /opt/dooble/Dooble.png.
Translations are incomplete. Translating BiblioteQ text is simple. Please download and install Qt from https://download.qt.io, download BiblioteQ’s source, and familiarize yourself with Qt’s Linguist. Linguist documentation is available at https://doc.qt.io/qt/qtlinguist-index.html.
Literal text, for example text housed in a combination-box widget, will be recorded to a database in its translated form. In general, BiblioteQ does not translate database entries.
Some software releases require database schema changes. Please read the version-specific section of the postgresql-update-schema.sql file and execute the required SQL statements.
It may be necessary to upgrade an existing BiblioteQ SQLite database schema after a software release. An upgrade tool is available via the Tools menu. A confirmation prompt is displayed before the process is initiated. After the upgrade process is completed, a dialog depicting the results of the upgrade will be displayed. Please create a copy of the SQLite database file before upgrading it.
Index
Accessing an Existing SQLite Database 11
Add Item 6, 24
admin 7
administrator 6 f., 16, 24 ff., 32, 40 f.
Administrator 32
Administrator Browser 7, 25, 32
Administrator Guide 3
All Requested 39
All Reserved 41
Alpha 30
AMD 30
Android 30
ARM 30
ASINs 36
back_url 37
biblioteq_patron 27
biblioteq.conf 36, 43
BiblioteQ.conf 9
BiblioteQ.INI 8
Book Binding Types 16
books 6, 20, 29, 39, 43
Books 40
Branch Name 5, 11
Branch Selection 4, 25, 36
Category 39
Change Password 25
circulation 25, 27, 40 f.
Circulation 32
Clear 4
compact discs 6, 39 f.
Configure Administrator Privileges 7, 25
Connect 4, 11, 25
connection_options 36
Copy Browser 40
createdb 12
createlang 12
Creating an SQLite Database 11
CSV 19, 22
Custom Database Query 25
Custom Query 14
Database Enumerations 16, 25
Database Enumerations Browser 16, 26, 40
Database Search 25
database_name 36 f.
database_type 36
Delete Selected Item(s) 24
digital video discs 6, 39 f.
Disconnect 17, 25
Display Members Browser 25
Due Date 40
Duplicate Selected Item(s) 24
Error Log 18
Exit BiblioteQ 26
Export Table View as CSV 19
File 4, 11, 13, 17, 19
Files Browser 25
format 38
FreeBSD 30
front_url 37
Grant Privileges 27
grey literature 6, 20, 39 f.
guest 25, 32
host 36
hostname 36
HTTP 36 f.
hyperlinks 21
Item Creation 24, 32 f.
Item Deletion 24, 32 f.
Item Reservation Status 41
Item Reservations 25, 32 f.
Item Returns 33
Item Updates 24, 33
journals 6, 20, 39 f., 43
librarian 6, 16, 26
Librarian 32
LIMIT 23
Linguist 47
Linux 30
local_db 5, 11
MacOS 30
magazines 6, 20, 39 f., 43
Member Creation 33
Member Deletion 33
Member Updates 33
Member’s Reservation History 28
Members Browser 40
membership 25, 27
Membership 32
Modify Selected Item(s) 24
name 37 f.
New SQLite Database 13
None 36 f.
OFFSET 23
Open Library 29
OpenBSD 30
OS/2 30
Pagination 23
password 10, 38
Password 11
Password Selection 10, 25
path 36
patron 24, 32
patrons 39
PDF 31
photograph collections 6
plpgsql 12
Poppler 31
port 36, 38
postgresql 36
PostgreSQL 3, 6 f., 11 f., 23, 27, 32, 39 ff.
postgresql-create-schema.sql 12, 32
postgresql-update-schema.sql 48
PowerPC 30
Print Current View 24
proxy_host 36 ff.
proxy_password 36 f.
proxy_port 36 ff.
proxy_type 36 f.
proxy_username 36 f.
Qt 30, 47
Qt LTS 3
reate 6
Recent SQLite Files 4
record_syntax 38
Refresh Table 25
Request Selected Item(s) / Cancel Selected Request(s) 24
Reservation Histories 33
Reservation Status 41
Reserve 40
Reserve Selected Item 25, 40
Save Changes 7
Select SQLite Database 5
Select Viewable Columns 24
Socks5 36 f.
sqlite 36
SQLite 3 f., 6, 11, 13, 23, 27, 30, 49
SRU 43
ssl_enabled 37
Sun UltraSparc 30
System 36 f.
Telephone 39
timeout 38
Tools 22, 49
Translations 47
unaccent() 35
upgrade 49
url_isbn 37
url_issn 37
Userid 11
username 38
video games 6, 39 f.
View 18, 27, 41
View Member’s Reservation History (Patrons Only) 24
View Selected Item(s) 24
Windows 30
xbook_admin 12, 32
xbook_db 12
YAZ 3, 30
yaz_ 38
Z39.50 43
Administrator Privileges 7
[Amazon Back Cover Images] 36
[Amazon Front Cover Images] 36
[Branch-1] 36
[Open Library Cover Images] 37
[Open Library] 37
[SRU-1] 37
[Z39.50-1] 37