<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>The Vadalog Parallel System: Distributed Reasoning with Datalog+/- (extended abstract)</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Luigi Bellomarini</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Davide Benedetto</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Matteo Brandetti</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Emanuel Sallinger</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Adriano Vlad</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Banca d'Italia</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Italy</string-name>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Prometheux</institution>
          ,
          <addr-line>London</addr-line>
          ,
          <country country="UK">United Kingdom</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>TU Wien, Faculty of Informatics</institution>
          ,
          <addr-line>Vienna</addr-line>
          ,
          <country country="AT">Austria</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Università Roma Tre, Department of Computer Science and Engineering</institution>
          ,
          <addr-line>Rome</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff3">
          <label>3</label>
          <institution>University of Oxford, Department of Computer Science</institution>
          ,
          <addr-line>Oxford</addr-line>
          ,
          <country country="UK">UK</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2026</year>
      </pub-date>
      <abstract>
        <p>Over the past years, ontological reasoning systems based on Datalog+/- languages, such as Vadalog, have gained popularity for their efectiveness in modeling real-world problems. As data analytics tasks grow in scale and complexity, distributing computation across multiple non-communicating processors has become essential for scalability. However, avoiding duplication and guaranteeing termination in a distributed setting is challenging due to the infinite generation of new symbols and facts from existential quantification and recursion. In this paper, we tackle these challenges by introducing the first distributed framework for Datalog+/- based on homomorphic decomposability, a novel condition that ensures favorable distribution properties. We implement this in Vadalog Parallel, a distributed reasoner for Vadalog, and provide experimental evaluation against state-of-the-art systems.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        Recent years have witnessed increasing interest in logic-based ontological reasoning, driven by
the resurgence of reasoning frameworks based on Datalog± [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], such as Vadalog [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. These
frameworks leverage key reasoning features, including existential quantification and recursion,
enabling eficient graph traversals and supporting SPARQL queries under the OWL 2 QL
entailment regime for the semantic web [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Datalog± has been applied in diverse domains such
as finance, medicine, biology, and enterprise resource planning [
        <xref ref-type="bibr" rid="ref1 ref10 ref11 ref12 ref13 ref14 ref4 ref5 ref6 ref7 ref8 ref9">1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14</xref>
        ],
with emerging dedicated venues [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ].
      </p>
      <p>
        As data scales and analytical tasks grow in complexity, distributing reasoning workloads
across multiple processors becomes essential. While parallel techniques using shared memory
and message passing have been efective for pure Datalog [
        <xref ref-type="bibr" rid="ref16 ref17 ref18 ref19 ref20 ref21 ref22 ref23">16, 17, 18, 19, 20, 21, 22, 23</xref>
        ], the
challenges posed by existential quantification and ontological reasoning in Datalog ± remain
largely unexplored. Datalog± extends the expressiveness of Datalog by introducing existential
quantification to support ontological reasoning. The reasoning process consists in answering a
conjunctive query (CQ)  over a database , where  is enriched with new facts generated
through the application of a set of Datalog± rules Σ.
      </p>
      <p>Example 1. Consider a database  modeling an "exposure network," where financial entities are
nodes with associated default probabilities  (FinEntity(a, p)), and entities are linked by loans
(Loan) and securities (Security) issued by other financial entities. Entities in  may be afected by
default events  initiated by other entities (Dflt), with the following rules Σ defining how these
default events propagate.</p>
      <p>FinEntity(, ),  &gt; 0.5 → ∃ Dflt(, , )</p>
      <p>
        Dflt(, ,  1), Loan(, ) → ∃2 Dflt(, ,  2)
Dflt(, ,  1), Security(, ) → ∃2 Dflt(, ,  2).
These rules state that an entity with a default probability greater than 50% initiates a default event,
and entities that have granted loans or hold securities from defaulting entities will also default.
Rules in Σ are function-free Horn clauses, potentially including existential quantification. They
are known as Tuple-Generating Dependencies (TGDs) and are of the form ∀x (x) → ∃z (y, z) ,
where (x) (the body) and (y, z) (the head) are conjunctions of atoms over a relational schema
S. The semantics of TGDs is defined with an algorithmic tool known as the chase procedure [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ].
Intuitively speaking, the chase expands  with new facts by applying the TGDs in Σ until
a fixpoint is reached, introducing freshly generated labelled nulls that act as placeholders for
existential quantification.
      </p>
      <p>In the context of a parallel execution, we explore how the evaluation can be distributed across
two processors. For example, consider the distribution plan where a processor 1 handles
larger entities (e.g., ): FinEntity(, ), Large(),  &gt; 0.5 → ∃ Dflt(, , ) ; and a processor
2 handles smaller ones (e.g., ): FinEntity(, ), Small(),  &gt; 0.5 → ∃ Dflt(, , ) . This
partitioning enables non-redundant computation by ensuring that each processor handles
distinct facts; it also ensures that no facts are redundantly computed across processors.
Distribution Properties. A distribution plan relies on partitioning properties, which ensure
both the eficiency and correctness of the computation. First, non-redundancy in the computation
implies that each processor should produce distinct facts. Second, completeness of the parallel
computation guarantees that no rule should be triggered by facts that are distributed across
diferent partitions. This ensures that when the facts from all partitions are merged, they
produce the same result as a serial execution, preserving correctness. An improper partitioning
can lead to incorrect results.</p>
      <p>Challenges. Ensuring non-redundancy is dificult with existential quantification because
labelled nulls, which are unknown values generated at runtime, complicate partitioning strategies
based on constant values. Termination is also challenging, especially in the presence of recursive
TGDs with existential quantification, where the chase can generate infinitely many labelled nulls.
Various terminating variants of the chase have been proposed in specific Datalog ± languages;
such variants feature applicability conditions that preempt the creation of homomorphic facts
during the chase—i.e., there exists a constant-preserving mapping between the terms of a new
fact to the ones of an existing one. The applicability conditions are afected by distribution
since homomorphic facts can be produced in diferent processors.</p>
      <p>
        Homomorphically Decomposable TGDs. We identify the new class of homomorphically
decomposable TGDs that guarantees the mentioned distribution properties, i.e., the existence
of a partitioning criterion for  such that two processors never generate two homomorphic
facts, making this class particularly suitable for distributed reasoning. This paper ofers several
contributions:
• The characterization of homomorphically decomposable TGDs; we identify a suficient
condition as well as a partitioning strategy of the input database for the parallel evaluation.
• A concrete application of our techniques to Warded Datalog± [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], an expressive and tractable
language of the Datalog± family modeling a variety of real-world problems.
• The implementation of such underpinnings in Vadalog Parallel, a new system for distributed
ontological reasoning adopting the Vadalog language, and a full-scale experimental
evaluation of Vadalog Parallel in a variety of real-world and synthetic scenarios.
Related Work. Our research is the first to explore parallel algorithms for ontological reasoning
with Datalog± . Previous work primarily focuses on the parallel evaluation of pure Datalog,
without existential quantification, such as studies on distribution policies, decomposability,
and parallel frameworks for Datalog [
        <xref ref-type="bibr" rid="ref16 ref20 ref21 ref25 ref26 ref27 ref28">16, 21, 25, 26, 20, 27, 28</xref>
        ]. Additionally, the load sharing
scheme [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ] provides a relaxed decomposability concept applicable to broader Datalog programs.
A recent theoretical framework for Datalog defines evaluation strategies based on processor
policies [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ].
      </p>
      <p>
        Overview. This work is the extended abstract of a paper published at VLDB [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ], where we
present the key ideas of Vadalog Parallel, a distributed reasoning system for Datalog± , with a
focus on its theoretical foundations and experimental evaluation. This paper is organized as
follows. In Section 2, we provide the background. In Section 3, we discuss homomorphic
decomposability. In Section 4 we illustrate the implementation of Vadalog Parallel and experiments.
Further content is available in the Appendix [
        <xref ref-type="bibr" rid="ref30">30</xref>
        ].
      </p>
    </sec>
    <sec id="sec-2">
      <title>2. Background</title>
      <p>Let C, N, and V represent disjoint countably infinite sets of constants, labelled nulls, and
variables, respectively. A relational schema S is a set of predicates with associated arities. An
atom is an expression (¯), where  ∈ S is a predicate and ¯ is an -tuple of terms. A database
(instance)  associates a relation to each predicate in S over the domain of constants and nulls,
denoted as dom(). A homomorphism is a constant-preserving mapping ℎ from atom 1 to
atom 2 if ℎ(1) = 2. Two atoms are isomorphic if ℎ is a bijection. A conjunctive query
(CQ)  over a schema S is an implication (x) ← (x, y) , where (x, y) is a conjunction
of atoms, and (x) is an n-ary predicate not in S. A CQ  is satisfied in  if there exists
a homomorphism ℎ from the atoms in (x, y) to the facts in . A set of Datalog± rules Σ
includes tuple-generating dependencies (TGDs), which are first-order implications of the form
∀x(x) → ∃z(y, z) . The chase is a procedure that expands a database  by iteratively
applying TGDs to infer new facts until a fixpoint is reached, generating chase(, Σ).</p>
    </sec>
    <sec id="sec-3">
      <title>3. Vadalog Parallel</title>
      <p>This section outlines the theoretical foundations and algorithms supporting our reasoning
approach.</p>
      <p>Homomorphic Decomposability. An evaluable atom is a comparison condition using standard
operators (e.g., =, ̸=, &lt;, &gt;, ≤, ≥ ), including algebraic expressions over TGD body variables.
For example  &gt; 0.5 in Example 1. A restricted TGD contains an evaluable atom in its body.
A restricted copy of a TGD  is obtained by adding an evaluable atom in its body. Evaluable
atoms allow us to limit the applicability of TGDs. In fact, given a database , a restricted
TGD  : (x), (w) → ∃z (y, z) is applicable to  if there exists a homomorphism  from
body() to  such that ((x)) ⊆  and ((w)) is satisfied. In practice, given  processors,
to define evaluable atoms, we will simply use hash functions Π(w) = hash(w)  . The
restricted copies of  are given by:</p>
      <p>FinEntity(, ), Π() =  → ∃ Dflt(, , ) ∀ ∈ {0, . . . ,  − 1}
(
)
We can represent a set of restricted TGDs with the same left-hand side and real numbers for
processors as a parametric restricted TGD, adding a conjunct Partition(w) in the body of the TGD,
defined piecewise depending on the processor : Partition(w) = true if Π(w) = , with  &lt; ;
or false otherwise. Thus, for our example, we would have FinEntity(, ), Partition(). The
set Σ obtained by replacing restricted TGDs in Σ with their restricted copy for processor 
is called the restricted set. A restricted set that ensures non-redundant and complete chase
instances does not always exist.</p>
      <p>Example 2. Two banks in the same country are supervised by the same National Central Bank
(NCB).
=Bank(), Bank(), SameCountry(, ), SameCountry(, )</p>
      <p>Bank(), Partition() → ∃ NCB(, )
NCB(, ), SameCountry(, ) → NCB(, )
For  = 2, processor  = 0 generates NCB(,  1) via  10 and NCB(,  2) via  2, while  = 1
generates NCB(,  3) via  11 and NCB(,  4) via  2. This distribution is redundant as diferent banks
sharing a country lead to homomorphically equivalent facts across processors (e.g., NCB(,  2)
and NCB(,  4)).</p>
      <p>A set of TGDs Σ is homomorphically decomposable if there exist  &gt; 1 restricted sets
generating non-overlapping and complete chase instances.</p>
      <p>Definition 1 (Homomorphically Decomposable TGDs). A set of TGDs Σ is
homomorphically decomposable if there exist  &gt; 1 restricted sets Σ0, . . . , Σ−1 satisfying:
• Non-triviality. ∃ such that ∀, chase(, Σ) ̸= ∅.
• Non-mappability. ∀,  ̸= , ∄ mapping 1 ∈ chase(, Σ) to 2 ∈ chase(, Σ ) with
1, 2 ∈/ .
• Homomorphic Equivalence. chase(, Σ) and ⋃︀=1 chase(, Σ) are homomorphically
equivalent.</p>
      <p>In Example 2, the non-mappability condition fails as NCB(,  3) maps to NCB(,  4), making
the TGDs non-homomorphically decomposable; TGDs in Example 1 are instead decomposable.</p>
      <p>Since determining whether a set of TGDs Σ is homomorphically decomposable is undecidable,
we introduce a suficient syntactic condition which also allows to identify a chase partitioning
that does not depend on Σ, but only on the input . In fact, some partitions induced by restricted
sets Σ may be fixed and unbalanced, leading to ineficient processing like in the following
example.</p>
      <p>Example 3. Consider a set Σ modeling interactions (dependencies) between methods in a Java
project and detecting simple recursions () i.e., when a method invokes itself via self-dependencies
( 2).</p>
      <p>Call(, ), Call(, ) → ∃ Dependency(, , )
Dependency(, , ) → ∃ SimpleRecursion(, , )
We can construct two restricted sets by adding the evaluable atoms  =  and  ̸=  to the
body of  1. In this case, the number of partitions is fixed and cannot be scaled up when the
volume of  grows. The facts derived by  2 are generated only by the restricted set containing
 =  in the body of  1, while the remaining facts , having  ̸=  will never trigger  2.</p>
      <p>We can define a subset of homomorphically decomposable TGDs whose evaluation can be
always scaled up with an increasing size of  (and dom()). For such TGD sets, we can identify
an arbitrary number of restricted sets—depending on the number of processors available—that
induce a partitioning of the chase facts with , evenly distributed.</p>
      <p>Example 4. Consider a network modeling academic collaboration among researchers (Res),
connected by collaborative relationships (CR). We aim to identify influential researchers who exert
influence over collaborations between institutions.</p>
      <p>Researcher(), CR(, ), Partition(, ) → ∃ Influence(, , , )</p>
      <p>Influence(, , , ), CR(, ) → Influence(, , , )
(
From the partitioning in Example 4, we observe that the  restricted sets of Σ defined by Partition
give rise to  chase instances, each handling exactly a fixed set of constants determined by
the initial partitioning of CR(, ) in . Actually, constants never propagate across instances.
The number of  processors can be scaled up with the growing size of dom(), balancing the
workload.</p>
      <p>
        Eligible Propagation: a Suficient Condition. In the TGDs of Example 4 there exist a set
of harmless variables that never bind to labelled nulls and consistently propagate through
non-afected positions in all TGDs of Σ. This ensures that the facts generated by diferent
chase sequences remain distinct, preventing homomorphisms between them. The harmlessness
property is crucial, as binding to a labelled null could invalidate non-mappability. In the TGD
 1, the variable  is propagated from Researcher[0] and CR[0] to Influence[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] and Influence[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] ,
while  is propagated from CR[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] to Influence[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] . On the contrary, in  2 the variable  is
propagated from Influence[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] to Influence[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] ,  from Influence[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] to Influence[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] and  vice-versa.
To formalize our suficient condition, we define an eligible propagation position for a harmless
variable  ∈ body() ∩ head(), as a non-afected position where  appears.
      </p>
      <p>
        Theorem 3.1 (Eligible Propagation). Given a set of TGDs Σ over a schema S, we have that
Σ is homomorphically decomposable if for each predicate  of Σ, there exists at least one eligible
propagation position [] shared by all the occurrences of -atoms in every  ∈ Σ.
The homomorphically decomposable TGDs in Example 1 satisfy Theorem 3.1 with the shared
eligible propagation position Dflt[0] , as well as the TGDs in Example 4, with positions Influence[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] ,
Influence[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] , and Influence[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] . There is no shared eligible propagation position for the TGDs in
Example 3.
      </p>
      <p>
        Partitioning the Database. Our suficient condition suggests a partitioning strategy for .
Given a set of TGDs Σ over a schema S, we define as body-ground TGDs the TGDs in Σ′ ⊆ Σ
whose body is composed only of atoms referring to predicates in  (i.e., extensional atoms). Note
that (i) for each set of TGDs Σ, there exists at least one body-ground TGD, and (ii) not having
dependencies on other rules, body-ground TGDs are evaluated first in the chase. From the
syntactical structure of Σ′ we can define the partitioning of  across the processors as follows:
we consider the extensional atoms in each  ∈ Σ ′; we construct an evaluable atom Partition(x)
on the set of variables x appearing in shared eligible propagation positions in head( ′), i.e., the
positions satisfying Theorem 3.1 for Σ. This implies that the positions [] of every extensional
predicate  in the body of  ′, where the variables in x appear, can be used as a partitioning
criterion to initially distribute the facts of  across all the processors. In the body-ground TGD
 1 of Example 4, variables  and  in the eligible propagation positions Influence[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] , Influence[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]
and Influence[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] appear also in Researcher[0], CR[0] and CR[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. The constants in these positions
(i.e., partitioning positions) can be used to define a distribution key of .
      </p>
      <p>Homomorphic Decomposability and Warded TGDs. Homomorphic decomposability
sustains eficient distribution techniques and therefore scalability. Nevertheless, for an arbitrary set
of TGDs, homomorphic decomposability does not imply decidability or tractability of the query
answering task. We adopt a practical approach and concentrate on a specific TGD fragment,
namely Warded Datalog± , a language exhibiting tractable query answering and very high
expressive power, being then suitable for a variety of applications. In our experience, many
practical scenarios can be modeled with Warded TGDs that are also homomorphically
decomposable. With Warded TGDs, query answering on  under Σ can be equivalently performed
over a finite chase which we name chase , that is obtained by activating TGDs of Σ only if
they generate facts are not isomorphic to others already in chase .</p>
      <p>Algorithm 1 provides the full procedure (Parallel-Evaluate) to perform ontological
reasoning with a set of Warded TGDs Σ enjoying homomorphic decomposability. Θ is a dictionary
of predicates partitioning positions. An empty database  is initialized in each processor
(line 5). The facts referring to extensional predicates () appearing in non-body ground
TGDs are replicated for every  in  with the function Replicate (line 6-7). The function
DistributedByKey assigns the facts referring to extensional predicates in body-ground TGDs
based on the values in the positions in Θ() (line 8-9). Each processor executes chase for Σ
1: function Parallel-Evaluate(, Σ, )
2: Let Σ′ be the body-ground TGDs of Σ
3: Let  = {0, . . . ,  − 1} be the set of processors
4: for all  ∈  run in parallel do
5:  = ∅
6: for all  ∈ S appearing in Σ/Σ ′ bodies do
7:  =  ∪ Replicate((), )
8: for all  ∈ S appearing in Σ ′ bodies do
9:  =  ∪ DistributeByKey((), Θ(), )
10:  =  ∪ chase (, Σ)
11: return ()
◁ If  is satisfied in 
starting from its assigned  and performing local isomorphic checks. The instances  are then
merged into a single one to answer  (lines 10-11).</p>
      <sec id="sec-3-1">
        <title>Algorithm 1 Distributed evaluation of H.D. Warded TGDs.</title>
        <p>
          We complement our approach with a technique to support the distributed evaluation of any
Warded set of TGDs, that is, also when homomorphic decomposability does not apply. To this
end, we introduce Distributed Warded Seminaive Evaluation (DW-SNE), a Map-Reduce evaluation
strategy conceived as a variant of seminaive evaluation (SNE) [
          <xref ref-type="bibr" rid="ref31">31</xref>
          ], that supports chase and
tailored for distributed settings. Our distributed variant prevents the generation of isomorphic
facts by considering, at each iteration, only the set of facts that are not isomorphic to facts
already produced by any processor in previous iterations. When no processor produces new
facts, the algorithm terminates by producing chase (, Σ) as the union of the facts generated
by each processor.
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Implementation and Experiments</title>
      <p>
        We introduce the novel system Vadalog Parallel, implementing homomorphic decomposability
and DW-SNE. For the specification of TGDs, the system adopts the Vadalog language [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
Architecture Description. Given a CQ  : (x) ← (x, y) , a set of TGDs Σ, and a database
, query evaluation under Σ consists of four phases, each managed by a dedicated module.
1. The compiler checks  and Σ for compliance with the Vadalog grammar.
2. The logic optimizer normalizes Σ and verifies if it is Warded and homomorphically
decomposable.
3. The planner generates an execution plan: Replicated Streaming Pipeline, if Σ is
homomorphically decomposable or DW-SNE otherwise ( both explained in the next sections).
4. The execution engine evaluates  using the execution plan and writes output facts to external
sources.
      </p>
      <p>Replicated Streaming Pipeline (RSP). Applied when Σ is homomorphically decomposable,
this model (Algorithm 1) constructs independent streaming pipelines from the predicate
dependency graph of Σ. Atoms serve as filters, connected by pipes representing TGD transformations.
Data flow from extensional atoms to query body atoms  through selections, projections, joins,
and value inventions. Termination checks use local hash tables for isomorphism checks, ensuring
only necessary chase steps are activated. Labelled nulls are generated using fresh symbols
derived from partitioning constants and processor-local indices. Extensional predicates in</p>
      <p>Ontology Name
(1) Same Generation (SG)
(2) Transitive Closure (TC)
(3) Triangle Counting (Tri-C)
(4) All Shortest Paths (ASP)
(5) Non-2-Colorability (N2C)</p>
      <p>(6) Close Links (CL)
(7) Company Control (CCTR)
(8) Person with Significant Control</p>
      <p>(PSC)
(9) Strong Links (SL)</p>
      <p>TGD Sets Query
ArAc(rc(,,),)S,GA(rc(,,),A),rc(̸=, ) →→ SSGG((,,)) (( 12)) Q(, ) ← SG(, )</p>
      <p>TC(, ),AArrcc((,,)) →→ TTCC((,,)) (( 12)) Q(, ) ← TC(, )</p>
      <p>Arc(, ), Arc(, T)(,A,rc(,,),), = &lt;mco,unt&lt;(1)→→CTo(un,tT,()) (( 21)) Q() ← CountT()
ASP(, , 1), Arc(, ,Arc2(),,,=), mmi=n(m1m+in(2)) →→ AASSPP((,,,, )) (( 21)) Q(, , ) ← ASP(, , )</p>
      <p>Edge(, ) → Odd(, ) ( 1)
Odd(, ), Edge(, ) → Even(, ) ( 2) Q ← SG(, )</p>
      <p>Even(, ), Edge(, ) → Odd(, ) ( 3)</p>
      <p>Own(, , ), tw = msum() → MCL(, , ) ( 1)
MCL(, , 1), Own(, , 2),  = msum(1 ·  2) → MCL(, , ) ( 2) Q(, ) ← CL(, )</p>
      <p>MCL(, , ), tw ≥ 0.2 → CL(, ) ( 3)</p>
      <p>Own(, , ),  ̸=  → ControlledShares(, , , ) ( 1)
ControlledCSohnatrreosl((,,,),,Ow)n,(,=, m)s,um̸=() →→ CToCnotnrotrlolelldeSdhSahraerse(s(,,,,,)) (( 23)) Q(, ) ← Control(, )</p>
      <p>TControlledShares(, , ), tw &gt; 0.5 → Control(, ) ( 4)</p>
      <p>KeyPerson(, ), Person() → PSC(, , ) ( 1)</p>
      <p>Company() → ∃ PSC(, , ) ( 2) Q(, , ) ← PSC(, , )
Control(, ), PSC(, , ) → PSC(, , ) ( 3)
KeyPerson(, ), Person() → PSC(, , ) ( 1)</p>
      <p>Control(,Co)m,PpSaCn(y(,), →) ∃→ PPSSCC((,,,, )) (( 32)) Q(, , , ) ← SL(, , , )
PSC(, , ), PSC(, , ),  ̸= ,  = mcount(1),  &gt; 3 → SL(, , , ) ( 4)
H. Decom.</p>
      <p>N/A
Arc[0]
N/A
Arc[0]
Edge[0]
Own[0]</p>
      <p>Own[0]
KeyPerson[0]
Company[0]
KeyPerson[0]
Company[0]
non-ground TGDs are indexed on join keys. Once all processors reach a fixpoint, the master
processor collects output facts to compute the final answer.</p>
      <p>
        DW-SNE. If Σ is not homomorphically decomposable, DW-SNE is used. Implemented via the
template method pattern [
        <xref ref-type="bibr" rid="ref32">32</xref>
        ], it provides SQL-like interfaces for manipulating distributed data
structures (i.e., Spark Dataset) [
        <xref ref-type="bibr" rid="ref33">33</xref>
        ]. The algorithm iteratively applies DW-SNE operations
composed via interface procedures, leveraging Spark Dataset for in-memory Map-Reduce
transformations.
      </p>
      <p>Benchmarks. We first compare our system with other distributed or parallel systems on
various graph traversal problems. Secondly, we consider other TGD-based systems, then, we
stress the scalability of our system and show that outperforms ad-hoc implementations in
data-intensive problems.</p>
      <p>
        Comparison with Parallel Datalog Systems. Existing parallel Datalog systems primarily
support pure Datalog with standard and monotonic aggregations but lack ontological query
answering under Datalog± . Thus, our comparison focuses on pure Datalog and monotonic
aggregation scenarios. We evaluate both shared-nothing systems (BigDatalog [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ], Myria [
        <xref ref-type="bibr" rid="ref34">34</xref>
        ])
and shared-memory systems (Soufflè [
        <xref ref-type="bibr" rid="ref35">35</xref>
        ], RecStep [
        <xref ref-type="bibr" rid="ref36">36</xref>
        ]). BigDatalog, based on parallel
SNE, optimizes recursive Datalog queries via Spark’s SetRDD. Myria supports iterative queries
with aggregates and incremental computations. Soufflè is optimized for large-scale program
analysis, using specialized parallel data structures for indexing and compression. RecStep, built
on QuickStep [
        <xref ref-type="bibr" rid="ref37">37</xref>
        ], supports Datalog with stratified negation and aggregation. We evaluate five
ontologies modeling graph-related problems (Figure 1):
• Same Generation (SG): Finds node pairs (, ) sharing a common ancestor via distinct paths.
• Transitive Closure (TC): computes reachability between nodes.
      </p>
      <p>Nodes
1,631,318
22,500
62,500
5,000
10,000
20,000
40,000
12,008
9,877
23,133
18,772
4,847,572</p>
      <p>• Triangle Counting (Tri-C): counts unique triangle structures in an undirected graph.
• All Shortest Paths (ASP): computes shortest paths in a weighted directed graph.
• Non-2-Colorability (N2C): checks whether a graph is not 2-colorable via odd/even path
computations.</p>
      <p>We test them on both synthetic and real-world graphs of diferent topologies and sizes (Figure 2,
right). Although input graphs vary in size, chase expansion can be quadratic in the number of
nodes.</p>
      <p>
        Figure 2 summarizes the performance. In homomorphically decomposable cases (TC, ASP,
N2C), Vadalog Parallel achieves up to 10000x speedup over alternatives, particularly
outperforming shared-nothing systems like BigDatalog and Myria. BigDatalog relies on SetRDD,
requiring processors to synchronize Spark transformations at each recursion step, causing
delays. Vadalog Parallel, in contrast, executes independent streaming pipelines, embedding
computation within a single Spark mapPartition operation. Against shared-memory systems,
Soufflè shows competitive performance, occasionally outperforming Vadalog Parallel in
nonhomomorphically decomposable cases (SG, Tri-C). However, in TC, ASP, and N2C, Vadalog
Parallel remains 2x to 100x faster. Soufflè’s optimizations, including the Brie [
        <xref ref-type="bibr" rid="ref38">38</xref>
        ] data
structure for high-density relation compression, improve eficiency but become costly at high chase
cardinalities (≈ 1000 million facts). In cases like N2C on Grid150 and G40K, and TC on Grid250,
Vadalog Parallel surpasses all competitors due to reduced indexing overhead.
Related TGD-based Tools. We analyze the advantages of parallel evaluation for
ontological reasoning with TGDs by comparing Vadalog Parallel to top-performing reasoners from
ChaseBench [
        <xref ref-type="bibr" rid="ref39">39</xref>
        ]. RDFox [
        <xref ref-type="bibr" rid="ref40">40</xref>
        ] is a high-performance RAM-based Datalog engine implementing
a parallel, non-distributed seminaive chase, supporting existentials only under w-acyclicity [
        <xref ref-type="bibr" rid="ref41">41</xref>
        ].
LLunatic [
        <xref ref-type="bibr" rid="ref42">42</xref>
        ] is a PostgreSQL-based system for data exchange, supporting CQ-answering
under weakly acyclic TGDs. DLV∃ [
        <xref ref-type="bibr" rid="ref43">43</xref>
        ] is a RAM-based Datalog system supporting CQ-answering
under Shy TGDs using the parsimonious chase and SNE-based materialization. We evaluate
weakly acyclic, shy, and warded TGDs from ChaseBench:
• STB-128 (167 TGDs, 150K instances) and ONT-256 (529 TGDs, 1M instances) from iBench [
        <xref ref-type="bibr" rid="ref44">44</xref>
        ].
• Doctors and DoctorsFD, non-recursive data integration tasks, tested with up to 1M facts and
      </p>
      <p>
        9 CQs.
• LUBM [
        <xref ref-type="bibr" rid="ref45">45</xref>
        ], a university domain benchmark, tested with up to 120M facts and 14 CQs.
Execution times include input loading, chase computation, result export, and query answering.
Vadalog Parallel is tested with varying processor counts (VP-n in Figure 3), while RDFox runs
on 32 cores.
      </p>
      <p>
        Vadalog Parallel eficiently distributes workload across processors, achieving significant
speedups from 1 processor (VP-1) to 64 (VP-64) and outperforming all other systems. LLunatic
has the worst performance in most cases, timing out (&gt;1200s) on Doctors and LUBM due to
frequent disk accesses. It performs slightly better on DoctorsFD and STB-128. DLV∃ struggles
with scalability due to its centralized SNE, showing the worst results on DoctorsFD (1M) and
LUBM (120M). RDFox employs a parallel model [
        <xref ref-type="bibr" rid="ref46">46</xref>
        ] where processors independently consume
facts from  with dynamic TGD scheduling. It performs well on Doctors and STB-128 but
struggles with DoctorsFD and LUBM due to race conditions in its centralized RDF storage when
handling large inputs and complex TGDs.
      </p>
      <p>Validation on Production Scenarios. We evaluate Vadalog Parallel on real-world
industrial problems, demonstrating its superior execution time and memory eficiency (10x-100x
improvement) due to homomorphic decomposability.
• Scenario 1: Close Links (CL). Models direct and indirect links between companies in an
ownership graph based on significant shareholding overlap (Figure 1-(6)).
• Scenario 2: Company Control (CCTR). Determines decision-making authority within a
company by analyzing majority vote ownership (Figure 1-(7)).
• Scenario 3: Persons with Significant Control (PSC) identifies individuals who directly or
indirectly control a company; Strong Links (SL) detects companies sharing more than 
PSCs (Figure 1-(8,9)).
• Scenario 4: Propagation of Defaults (DP). Discussed in Example 1.</p>
      <p>
        We benchmark Vadalog Parallel against the following hoc-implementations: (1) Spark, an
iterative SparkSQL [
        <xref ref-type="bibr" rid="ref33">33</xref>
        ] job that uses caching, intermediate checkpoints, and broadcast joins;
(2) Flink, a job that uses the Flink [
        <xref ref-type="bibr" rid="ref47">47</xref>
        ] construct DeltaIteration for incremental computation
(applied to PSC and DP); (3) Postgres Parallel [48], a SQL-based parallel implementation
using materialized views and parallel SNE; (4) Parallel Java Stream, a graph-based parallel
approach using Java’s ForkJoinPool [49].
      </p>
      <p>For CL and CCTR, we use the Italian company knowledge graph [50] (7M nodes, 6.8M edges).
For PSC and SL, we extract company data from DBpedia [51] (100K companies, 1M persons,
50K company-control relationships). For DP, we generate an artificial financial network (2M
entities).</p>
      <p>Vadalog Parallel outperforms all alternatives, achieving execution times below 20s for CL,
CCTR, PSC, and SL, and under 150s for DP across all input sizes (Figure 4-(c-g)). Java Stream
Parallel shows comparable speed due to its thread-local execution, but it sufers from high
memory usage, leading to out-of-memory (OOM) errors in DP (1000M output facts, 250GB
RAM, Figure 4-(a,f)). Vadalog Parallel avoids this issue by leveraging Spark SQL’s eficient
serialization and optimized fast-util collections [52]. Flink exhibits the slowest performance in
CL and DP, timing out due to ineficient recursion handling. It slightly outperforms Spark and
Postgres Parallel in smaller scenarios (PSC, SL) but lags in DP, despite DeltaIteration
optimizations. Spark excels in data-intensive tasks (DP, CL) but sufers from communication
overhead during recursive deduplication. Postgres Parallel performs well on small datasets
due to eficient indexed table updates but struggles with larger inputs, as frequent index updates
slow recursive computations.</p>
    </sec>
    <sec id="sec-5">
      <title>Declaration on Generative AI</title>
      <sec id="sec-5-1">
        <title>The authors have not employed any Generative AI tools.</title>
        <p>Stream and batch processing in a single engine, 2015.
[48] M. Stonebraker, L. A. Rowe, The design of postgres, in: ACM Sigmod Record, 1986.
[49] Oracle Corporation, ForkJoinPool Documentation, https://docs.oracle.com/javase/8/docs/
api/java/util/concurrent/ForkJoinPool.html, 2014. [Online; accessed 16-Mar-2025].
[50] P. Atzeni, L. Bellomarini, M. Iezzi, E. Sallinger, A. Vlad, Augmenting logic-based knowledge
graphs: The case of company graphs., in: KR4L@ ECAI, 2020.
[51] DBpedia, DBpedia tables, http://wiki.dbpedia.org/services-resources/downloads/
dbpedia-tables, 2023. [Online; accessed 16-Mar-2025].
[52] Unimi, Fastutil, http://fastutil.di.unimi.it/, 2023. [Online; accessed 16-Mar-2025].</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>A.</given-names>
            <surname>Calì</surname>
          </string-name>
          , G. Gottlob,
          <string-name>
            <given-names>T.</given-names>
            <surname>Lukasiewicz</surname>
          </string-name>
          ,
          <article-title>A general datalog-based framework for tractable query answering over ontologies</article-title>
          ,
          <source>in: PODS</source>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>L.</given-names>
            <surname>Bellomarini</surname>
          </string-name>
          , E. Sallinger,
          <string-name>
            <surname>G. Gottlob,</surname>
          </string-name>
          <article-title>The vadalog system: Datalog-based reasoning for knowledge graphs</article-title>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>G.</given-names>
            <surname>Gottlob</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pieris</surname>
          </string-name>
          ,
          <article-title>Beyond sparql under owl 2 ql entailment regime: Rules to the rescue</article-title>
          ,
          <source>in: IJCAI</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>M.</given-names>
            <surname>Aref</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            ten
            <surname>Cate</surname>
          </string-name>
          , T. J.
          <string-name>
            <surname>Green</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <string-name>
            <surname>Kimelfeld</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Olteanu</surname>
            , E. Pasalic,
            <given-names>T. L.</given-names>
          </string-name>
          <string-name>
            <surname>Veldhuizen</surname>
          </string-name>
          , G. Washburn,
          <article-title>Design and implementation of the LogicBlox system</article-title>
          ,
          <source>in: SIGMOD</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>P.</given-names>
            <surname>Barceló</surname>
          </string-name>
          , R. Pichler (Eds.), Datalog in Academia and Ind.,
          <string-name>
            <surname>LNCS</surname>
          </string-name>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>A.</given-names>
            <surname>Calì</surname>
          </string-name>
          , G. Gottlob,
          <string-name>
            <surname>M.</surname>
          </string-name>
          <article-title>Kifer, Taming the infinite chase: Query answering under expressive relational constraints</article-title>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>A.</given-names>
            <surname>Calì</surname>
          </string-name>
          , G. Gottlob,
          <string-name>
            <given-names>T.</given-names>
            <surname>Lukasiewicz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Marnette</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pieris</surname>
          </string-name>
          , Datalog+/
          <article-title>-: A family of logical knowledge representation and query languages for new applications</article-title>
          , in: LICS,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>A.</given-names>
            <surname>Calì</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Gottlob</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pieris</surname>
          </string-name>
          ,
          <article-title>Towards more expressive ontology languages: The query answering problem</article-title>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>V.</given-names>
            <surname>Vianu</surname>
          </string-name>
          ,
          <article-title>Datalog unchained</article-title>
          , in: PODS,
          <year>2021</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>W. E.</given-names>
            <surname>Moustafa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Papavasileiou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Yocum</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Deutsch</surname>
          </string-name>
          , Datalography:
          <article-title>Scaling datalog graph analytics on graph processing systems</article-title>
          , in: IEEE,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>A.</given-names>
            <surname>Hogan</surname>
          </string-name>
          , et al.,
          <article-title>Knowledge graphs</article-title>
          ,
          <source>in: ACM Computing Surveys</source>
          ,
          <year>2022</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>L.</given-names>
            <surname>Bellomarini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Fakhoury</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Gottlob</surname>
          </string-name>
          , E. Sallinger,
          <article-title>Knowledge graphs and enterprise AI: the promise of an enabling technology</article-title>
          ,
          <source>in: ICDE</source>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>T.</given-names>
            <surname>Alfonsi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Bellomarini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Bernasconi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Ceri</surname>
          </string-name>
          ,
          <article-title>Expressing biological problems with logical reasoning languages</article-title>
          , in: RuleML+RR,
          <year>2022</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>O. P.</given-names>
            <surname>Dwyer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Baldazzi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Davies</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Sallinger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Vlad</surname>
          </string-name>
          ,
          <article-title>Reasoning over health records with vadalog: a rule-based approach to patient pathways</article-title>
          , in: RuleML+RR,
          <year>2023</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>M.</given-names>
            <surname>Alviano</surname>
          </string-name>
          ,
          <string-name>
            <surname>A</surname>
          </string-name>
          . Pieris (Eds.),
          <source>4th International Workshop on the Resurgence of Datalog in Academia and Industry</source>
          ,
          <year>2022</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>B.</given-names>
            <surname>Ketsman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Albarghouthi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Koutris</surname>
          </string-name>
          ,
          <article-title>Distribution policies for datalog</article-title>
          ,
          <source>in: Theory of Computing Systems</source>
          ,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>Y. R.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. Abo</given-names>
            <surname>Khamis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H. Q.</given-names>
            <surname>Ngo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Pichler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Suciu</surname>
          </string-name>
          ,
          <article-title>Optimizing recursive queries with progam synthesis</article-title>
          ,
          <source>in: International Conference on Management of Data</source>
          ,
          <year>2022</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>S.</given-names>
            <surname>Ceri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Gottlob</surname>
          </string-name>
          , L. Tanca,
          <article-title>What you always wanted to know about datalog (and never dared to ask)</article-title>
          ,
          <source>in: IEEE Transactions on Knowledge and Data Engineering</source>
          ,
          <year>1989</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>J. Wu</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Zaniolo</surname>
          </string-name>
          ,
          <article-title>Optimizing parallel recursive datalog evaluation on multicore machines</article-title>
          ,
          <source>in: SIGMOD</source>
          ,
          <year>2022</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>W.</given-names>
            <surname>Zhang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Chau</surname>
          </string-name>
          ,
          <article-title>Data partition and parallel evaluation of datalog programs</article-title>
          ,
          <source>in: IEEE Trans. Knowl</source>
          . Data Eng.,
          <year>1995</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>O.</given-names>
            <surname>Wolfson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Silberschatz</surname>
          </string-name>
          ,
          <article-title>Distributed processing of logic programs</article-title>
          ,
          <source>in: SIGMOD</source>
          ,
          <year>1988</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>S. S.</given-names>
            <surname>Cosmadakis</surname>
          </string-name>
          , P. C.
          <article-title>Kanellakis, Parallel evaluation of recursive rule queries</article-title>
          ,
          <source>in: SIGMOD</source>
          ,
          <year>1986</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>A.</given-names>
            <surname>Shkapsky</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Yang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Interlandi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Chiu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Condie</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Zaniolo</surname>
          </string-name>
          ,
          <article-title>Big data analytics with datalog queries on spark</article-title>
          ,
          <source>in: SIGMOD</source>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>D.</given-names>
            <surname>Maier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. O.</given-names>
            <surname>Mendelzon</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Sagiv</surname>
          </string-name>
          ,
          <article-title>Testing implications of data dependencies</article-title>
          ,
          <source>in: ACM Transactions on Database Systems</source>
          ,
          <year>1979</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>O.</given-names>
            <surname>Wolfson</surname>
          </string-name>
          ,
          <article-title>Sharing the load of logic-program evaluation</article-title>
          ,
          <source>in: First International Symposium on Databases in Parallel and Distributed Systems</source>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>O.</given-names>
            <surname>Wolfson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Ozeri</surname>
          </string-name>
          ,
          <article-title>A new paradigm for parallel and distributed rule-processing</article-title>
          ,
          <source>in: International Conference on Management of Data</source>
          ,
          <year>1990</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>F. N.</given-names>
            <surname>Afrati</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. D.</given-names>
            <surname>Ullman</surname>
          </string-name>
          ,
          <article-title>Transitive closure and recursive datalog implemented on clusters</article-title>
          ,
          <source>in: EDBT</source>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>S.</given-names>
            <surname>Ganguly</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Silberschatz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Tsur</surname>
          </string-name>
          ,
          <article-title>A framework for the parallel processing of datalog queries</article-title>
          ,
          <source>in: SIGMOD</source>
          ,
          <year>1990</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>L.</given-names>
            <surname>Bellomarini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Benedetto</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Brandetti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Sallinger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Vlad</surname>
          </string-name>
          ,
          <article-title>The vadalog parallel system: Distributed reasoning with datalog+/-</article-title>
          ,
          <source>Proc. VLDB Endow</source>
          .
          <volume>17</volume>
          (
          <year>2025</year>
          )
          <fpage>4614</fpage>
          -
          <lpage>4626</lpage>
          . URL: https://doi.org/10.14778/3704965.3704970. doi:
          <volume>10</volume>
          .14778/3704965.3704970.
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>L.</given-names>
            <surname>Bellomarini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Benedetto</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Brandetti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Sallinger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Vlad</surname>
          </string-name>
          , Appendix,
          <year>2024</year>
          . URL: https://drive.google.com/file/d/1ZSMFUrEMmDrFYHR7C_RiQJoZ29gn2G_L/view? usp=sharing, [Online; accessed 16-Mar-2025].
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <given-names>S.</given-names>
            <surname>Abiteboul</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Hull</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Vianu</surname>
          </string-name>
          , Foundations of Databases, Addison-Wesley,
          <year>1995</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <string-name>
            <given-names>C.</given-names>
            <surname>Larman</surname>
          </string-name>
          , et al.,
          <string-name>
            <surname>Applying</surname>
            <given-names>UML</given-names>
          </string-name>
          <article-title>and patterns</article-title>
          ,
          <source>Prentice Hall Upper Saddle River</source>
          ,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <string-name>
            <given-names>S.</given-names>
            <surname>Salloum</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Dautov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Chen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. X.</given-names>
            <surname>Peng</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. Z.</given-names>
            <surname>Huang</surname>
          </string-name>
          ,
          <source>Big data analytics on apache spark</source>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          [34]
          <string-name>
            <given-names>D.</given-names>
            <surname>Halperin</surname>
          </string-name>
          , V. Teixeira de Almeida, et al.,
          <article-title>Demonstration of the myria big data management service</article-title>
          ,
          <source>in: SIGMOD</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          [35]
          <string-name>
            <given-names>B.</given-names>
            <surname>Scholz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Jordan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Subotić</surname>
          </string-name>
          , T. Westmann,
          <article-title>On fast large-scale program analysis in datalog</article-title>
          ,
          <source>in: 25th International Conference on Compiler Construction</source>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref36">
        <mixed-citation>
          [36]
          <string-name>
            <given-names>Z.</given-names>
            <surname>Fan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Zhu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Zhang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Albarghouthi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Koutris</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. M.</given-names>
            <surname>Patel</surname>
          </string-name>
          ,
          <article-title>Scaling-up in-memory datalog processing: Observations and techniques</article-title>
          , in: VLDB,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref37">
        <mixed-citation>
          [37]
          <string-name>
            <surname>J. M. Patel</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          <string-name>
            <surname>Deshmukh</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Zhu</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Potti</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          <string-name>
            <surname>Zhang</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Spehlmann</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          <string-name>
            <surname>Memisoglu</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Saurabh</surname>
          </string-name>
          ,
          <article-title>Quickstep: A data platform based on the scaling-up approach</article-title>
          , in: VLDB,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref38">
        <mixed-citation>
          [38]
          <string-name>
            <given-names>H.</given-names>
            <surname>Jordan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Subotić</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Zhao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Scholz</surname>
          </string-name>
          ,
          <article-title>Brie: A specialized trie for concurrent datalog</article-title>
          ,
          <source>in: 10th International Workshop on Programming Models and Applications for Multicores and Manycores</source>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref39">
        <mixed-citation>
          [39]
          <string-name>
            <given-names>M.</given-names>
            <surname>Benedikt</surname>
          </string-name>
          , G. Konstantinidis,
          <string-name>
            <given-names>G.</given-names>
            <surname>Mecca</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Motik</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Papotti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Santoro</surname>
          </string-name>
          , E. Tsamoura,
          <article-title>Benchmarking the chase</article-title>
          ,
          <source>in: SIGMOD</source>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref40">
        <mixed-citation>
          [40]
          <string-name>
            <given-names>B.</given-names>
            <surname>Motik</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Nenov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Piro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I.</given-names>
            <surname>Horrocks</surname>
          </string-name>
          ,
          <string-name>
            <surname>D.</surname>
          </string-name>
          <article-title>Olteanu, Parallel materialisation of datalog programs in centralised, main-memory rdf systems</article-title>
          ,
          <source>in: AAAI Conference on Artificial Intelligence</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref41">
        <mixed-citation>
          [41]
          <string-name>
            <given-names>R.</given-names>
            <surname>Fagin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. G.</given-names>
            <surname>Kolaitis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. J.</given-names>
            <surname>Miller</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Popa</surname>
          </string-name>
          ,
          <article-title>Data exchange: semantics and query answering</article-title>
          ,
          <source>Theoretical Computer Science</source>
          (
          <year>2005</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref42">
        <mixed-citation>
          [42]
          <string-name>
            <given-names>F.</given-names>
            <surname>Geerts</surname>
          </string-name>
          , G. Mecca,
          <string-name>
            <given-names>P.</given-names>
            <surname>Papotti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Santoro</surname>
          </string-name>
          ,
          <article-title>That's all folks! LLUNATIC goes open source</article-title>
          ,
          <source>in: PVLDB</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref43">
        <mixed-citation>
          [43]
          <string-name>
            <given-names>N.</given-names>
            <surname>Leone</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Manna</surname>
          </string-name>
          , G. Terracina,
          <string-name>
            <given-names>P.</given-names>
            <surname>Veltri</surname>
          </string-name>
          ,
          <article-title>Fast query answering over existential rules</article-title>
          ,
          <source>in: ACM Transaction on Computational Logic</source>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref44">
        <mixed-citation>
          [44]
          <string-name>
            <given-names>P. C.</given-names>
            <surname>Arocena</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Glavic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Ciucanu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. J.</given-names>
            <surname>Miller</surname>
          </string-name>
          ,
          <article-title>The ibench integration metadata generator</article-title>
          ,
          <source>in: PVLDB</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref45">
        <mixed-citation>
          [45]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Guo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Pan</surname>
          </string-name>
          ,
          <string-name>
            <surname>J. Heflin,</surname>
          </string-name>
          <article-title>LUBM: A benchmark for OWL knowledge base systems</article-title>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref46">
        <mixed-citation>
          [46]
          <string-name>
            <given-names>B.</given-names>
            <surname>Motik</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Nenov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Piro</surname>
          </string-name>
          ,
          <string-name>
            <surname>I.</surname>
          </string-name>
          <article-title>Horrocks, Incremental update of datalog materialisation: the backward/forward algorithm</article-title>
          ,
          <source>in: AAAI Conference on Artificial Intelligence</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref47">
        <mixed-citation>
          [47]
          <string-name>
            <given-names>P.</given-names>
            <surname>Carbone</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Katsifodimos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Ewen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Markl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Haridi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Tzoumas</surname>
          </string-name>
          , Apache flink:
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>