arXiv ScienceSearch

arXiv · 1701.00626

Implementing GraphQL as a Query Language for Deductive Databases in SWI-Prolog Using DCGs, Quasi Quotations, and Dicts

Abstract

The methods to access large relational databases in a distributed system are well established: the relational query language SQL often serves as a language for data access and manipulation, and in addition public interfaces are exposed using communication protocols like REST. Similarly to REST, GraphQL is the query protocol of an application layer developed by Facebook. It provides a unified interface between the client and the server for data fetching and manipulation. Using GraphQL's type system, it is possible to specify data handling of various sources and to combine, e.g., relational with NoSQL databases. In contrast to REST, GraphQL provides a single API endpoint and supports flexible queries over linked data. GraphQL can also be used as an interface for deductive databases. In this paper, we give an introduction of GraphQL and a comparison to REST. Using language features recently added to SWI-Prolog 7, we have developed the Prolog library GraphQL.pl, which implements the GraphQL type system and query syntax as a domain-specific language with the help of definite clause grammars (DCG), quasi quotations, and dicts. Using our library, the type system created for a deductive database can be validated, while the query system provides a unified interface for data access and introspection.

Explore related subjects

Keep this discovery

Explore connections, maps & timelines

BibTeXRIS

Falco Nogatz, Dietmar Seipel. 2017-01-03. Implementing GraphQL as a Query Language for Deductive Databases in SWI-Prolog Using DCGs, Quasi Quotations, and Dicts. https://doi.org/10.4204/eptcs.234.4

Cite the original work for its findings. Save a collection to share your selection of sources.

KEEP EXPLORING

Related papers

Access Paths for Efficient Ordering with Large Language Models

In this work, we present the \texttt{LLM ORDER BY} semantic operator as a logical abstraction and conduct a systematic study of its physical implementations. First, we propose several improvements to existing semantic sorting algorithms and introduce a semantic-aware external merge sort algorithm. Our extensive evaluation reveals that no single implementation offers universal optimality on all datasets. From our evaluations, we observe a general scaling relationship between sorting cost and the ordering quality for comparison-based algorithms. Building on these insights, we design a budget-aware optimizer that utilizes heuristic rules, LLM-as-Judge evaluation, and consensus aggregation to dynamically select the near-optimal access path for LLM ORDER BY. In our extensive evaluations, our optimizer consistently achieves ranking accuracy on par with or superior to the best static methods across all benchmarks. We believe that this work provides foundational insights into the principled optimization of semantic operators essential for building robust, large-scale LLM-powered analytic systems.

cs.DB

Expressive Power of Property Graph Constraint Languages

We present the first principled and systematic study of the expressive power of property graph constraint languages, focused on the recent PG-Keys language, set to inform the upcoming revision of the GQL standard. To this end, we position PG-Keys within the broader landscape of existing formalisms. In particular, we compare PG-Keys with two core property graph constraint languages: Graph Functional Dependencies (GFD) and Graph Generating Dependencies (GGD). One hurdle is that these formalisms allow different kinds of graph pattern languages and data predicates. To make a fair comparison, based on their structural differences only, we first present a unifying framework. Within this framework, we consider conjunctive regular path queries (CRPQ) as graph patterns with equality and inequality predicates. We then identify well-behaved fragments, establish expressiveness inclusion, and prove separation results, yielding a complete and strict hierarchy of expressive power. The results identify precisely when PG-Keys provide strictly greater expressive power, clarifying their place among state-of-the-art property graph constraint formalisms.

cs.DB

Answering Conjunctive Queries with Aggregations under Updates

Dynamic query processing keeps query answers up to date during insertions and deletions. For conjunctive queries (CQs) under set semantics, the classes maintainable in constant amortized time are known exactly: the $q$-hierarchical CQs under arbitrary updates, and the free-connex CQs under insertion-only updates. Many analytics tasks, including \textsf{SUM}/\textsf{COUNT} aggregations, provenance, and access control, are captured by evaluating a CQ over a positive commutative semiring. We thus ask whether aggregation changes what can be maintained efficiently, and if so, when. Under \emph{insertion-only} updates, it does: the boundary retreats from free-connex to a new class we call \emph{strong-connex}, with $q\text{-hierarchical} \subsetneq \text{strong-connex} \subsetneq \text{free-connex} \subsetneq \text{acyclic}$. For every \emph{strictly monotone} semiring, including the sum-product and tropical semirings, no free-connex but non-strong-connex CQ is maintainable in $O(|D|^{1/2-ε})$ time under the OuMv and OMv conjectures, whereas every strong-connex CQ is maintainable in $O(1)$ amortized time over every semiring. Under \emph{arbitrary} updates, the boundary stays at the $q$-hierarchical CQs for every semiring with $O(1)$-deletable aggregates, and maintenance over any semiring is at least as hard as over the Boolean semiring. We further strengthen the lower bounds to semirings that fall outside the class and to query with different \emph{height} and \emph{dimension}, under the combinatorial $k$-clique and generalized OuMv conjectures. All upper bounds come from a single framework, obtained by adapting CROWN to annotated relations; together with the lower bounds, they yield dichotomies parameterized by both the query and the semiring, recovering the Boolean results as a special case.

cs.DB