{"ID":2885467,"CreatedAt":"2026-06-01T04:54:23.091178241Z","UpdatedAt":"2026-06-01T04:54:23.091178241Z","DeletedAt":null,"paper_url":"https://arxiv.org/abs/2508.03978","arxiv_id":"2508.03978","title":"Raqlet: Cross-Paradigm Compilation for Recursive Queries","abstract":"We introduce Raqlet, a source-to-source compilation framework that addresses the fragmentation of recursive querying engines spanning relational (recursive SQL), graph (Cypher, GQL), and deductive (Datalog) systems. Recent standards such as SQL:2023's SQL/PGQ and the GQL standard provide a common foundation for querying graph data within relational and graph databases; however, real-world support remains inconsistent across systems. Raqlet bridges this gap by translating recursive queries across paradigms through leveraging intermediate representations (IRs) grounded in well-defined semantics; it translates Cypher or SQL/PGQ to PGIR (inspired by Cypher), then into DLIR (inspired by Datalog), and finally to SQIR (inspired by recursive SQL). Raqlet provides a shared semantic basis that can serve as a golden reference implementation for language standards, while supporting static analysis and transformations (e.g., magic-set transformation) for performance tuning. Our vision is to make Raqlet a robust platform that enables rapid cross-paradigm prototyping, portable recursive queries, and formal reasoning about recursion even when targeting diverse query execution engines.","short_abstract":"We introduce Raqlet, a source-to-source compilation framework that addresses the fragmentation of recursive querying engines spanning relational (recursive SQL), graph (Cypher, GQL), and deductive (Datalog) systems. Recent standards such as SQL:2023's SQL/PGQ and the GQL standard provide a common foundation for queryin...","url_abs":"https://arxiv.org/abs/2508.03978","url_pdf":"https://arxiv.org/pdf/2508.03978v1","authors":"[\"Amir Shaikhha\",\"Youning Xia\",\"Meisam Tarabkhah\",\"Jazal Saleem\",\"Anna Herlihy\"]","published":"2025-08-06T00:07:00Z","proceeding":"cs.DB","tasks":"[\"cs.DB\",\"cs.PL\"]","methods":"[]","has_code":false}
