SABER: A SQL-Compatible Semantic Document Processing System Based on Extended Relational Algebra
SABER is a research system that integrates multiple semantic document processing frameworks (LOTUS, DocETL, Palimpzest) with a unified SQL-compatible interface.
Installation
Development Installation
git clone https://github.com/xlab-ub/saber.git
cd saber
pip install -e .[all]
Handling Dependency Conflicts
If you encounter dependency conflicts:
Use conda environments and force installation scripts:
conda create -n saber python=3.12 -y
conda activate saber
git clone https://github.com/xlab-ub/saber.git
cd saber
./scripts/install_all_force.sh
Running Examples
Semantic Operations Examples
Semantic WHERE
Filter rows based on semantic conditions rather than exact matches.
python examples/semantic_ops_examples/semantic_where.py
Semantic SELECT
Extract and transform columns using semantic understanding and natural language instructions.
python examples/semantic_ops_examples/semantic_select.py
Semantic JOIN
Join tables based on semantic relationships rather than exact key matches.
python examples/semantic_ops_examples/semantic_join.py
Semantic GROUP BY
Group records by semantic similarity or conceptual categories.
python examples/semantic_ops_examples/semantic_group_by.py
Semantic AGGREGATION
Perform aggregations with semantic understanding of the data.
python examples/semantic_ops_examples/semantic_aggregation.py
Semantic ORDER BY
Sort results based on semantic criteria like relevance, similarity, or conceptual ordering.
python examples/semantic_ops_examples/semantic_order_by.py
Semantic DISTINCT
Remove duplicates based on semantic similarity rather than exact matches.
python examples/semantic_ops_examples/semantic_distinct.py
Semantic INTERSECT (ALL) and EXCEPT (ALL)
Perform semantic (INTERSECT, EXCEPT) operations based on semantic relationships.
# Semantic INTERSECT - Find semantically overlapping records
python examples/semantic_ops_examples/semantic_intersect.py
python examples/semantic_ops_examples/semantic_intersect_all.py
# Semantic EXCEPT - Find semantically different records
python examples/semantic_ops_examples/semantic_except.py
python examples/semantic_ops_examples/semantic_except_all.py
Unified Query Examples
Backend-Agnostic Semantic Query Rewriting
Demonstrates how SABER automatically rewrites backend-free semantic queries to work with different Semantic Data Processing Systems (LOTUS, DocETL, Palimpzest) without requiring users to modify their code.
python examples/unified_query_examples/unified_query.py
Citation
If you find this code useful, please consider citing our paper:
@misc{lee2025sabersqlcompatiblesemanticdocument,
title={SABER: A SQL-Compatible Semantic Document Processing System Based on Extended Relational Algebra},
author={Changjae Lee and Zhuoyue Zhao and Jinjun Xiong},
year={2025},
eprint={2509.00277},
archivePrefix={arXiv},
primaryClass={cs.DB},
url={https://arxiv.org/abs/2509.00277},
}
Metadata
Release files for saber-query 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| saber_query-0.6.0.tar.gz | 65.5 kB | Without provenance | Details for saber_query-0.6.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| saber_query-0.6.0-py3-none-any.whl | Python 3 | none | any | Details for saber_query-0.6.0-py3-none-any.whl |
Total release size: 130.9 kB
Release files / saber_query-0.6.0.tar.gz
| Download URL | saber_query-0.6.0.tar.gz |
|---|---|
| Size | 65.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6e2a9292a007edbc95d638b918097c9145c6ad410ad8e0a04138e91d5343b7fe
|
|
BLAKE2b-256 checksum How to use checksums |
71efdad8b2c45616c60fd87b25edb5d21cfc0b02f229cdff6157004a30eaf6c7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.2
|
Release files / saber_query-0.6.0-py3-none-any.whl
| Download URL | saber_query-0.6.0-py3-none-any.whl |
|---|---|
| Size | 65.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
42341fb261edfc36ddefc06e3f7553e58d8b836fcaf8c4699004b9e06640a7b1
|
|
BLAKE2b-256 checksum How to use checksums |
8a384e0320724d947d9432059b8dda5aa991b71d5e4acb69753e230906cf69b2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.2
|
Security for saber-query 0.6.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.