<!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>Context-Free Path Querying In Terms of Linear Algebra</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Rustam Azimov supervised by Semyon Grigorev</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Saint Petersburg State University St. Petersburg</institution>
          ,
          <country country="RU">Russia</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Context-Free Path Querying (CFPQ) is an important problem with applications in many areas, for example, graph databases, bioinformatics, static analysis, etc. Historically, regular languages are used as constraints for navigational path queries. However, in some important cases, regular languages are not expressive enough and context-free languages are used instead. Many algorithms for CFPQ were proposed but recently showed that the state-of-the-art CFPQ algorithms are still not performant enough for practical use. One promising way to achieve high-performance solutions for graph querying problems is to reduce them to linear algebra operations (such as matrix multiplication). The active utilization of these operations in the process of context-free path query evaluation makes it possible to eficiently apply a wide class of optimizations and computing techniques, such as GPGPU (General-Purpose computing on Graphics Processing Units), parallel computation, sparse matrix representation, distributed-memory computation, etc. In this Ph.D. work, we aim at: (i) studying the applicability of linear algebra methods to the CFPQ problem, (ii) at devising the algorithms for context-free path query evaluation formulated in terms of linear algebra operations, and (iii) at achieving high-performance implementations of the devised algorithms using parallel computations.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>INTRODUCTION</title>
      <p>
        Formal language-constrained path querying [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] is a graph analysis
problem in which formal languages are used as constraints for
navigational path queries. In this problem, a path in an edge-labeled
graph is viewed as a word constructed by the concatenation of
edge labels. The formal languages are used to constrain the paths
of interest: a query should find only paths labeled by words from
the language. The most popular class of constraints used as
navigational queries in graph databases are the regular ones. However, in
some important cases, regular languages are not expressive enough
and context-free languages are used instead. The context-free path
querying (CFPQ), can be used in many areas, for example, RDF
analysis [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], static code analysis [
        <xref ref-type="bibr" rid="ref14 ref9">9, 14</xref>
        ], biological data analysis [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ],
graph segmentation [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
      </p>
      <p>
        CFPQ has been studied a lot since the problem was first stated by
Mihalis Yannakakis in 1990 [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. Jelle Hellings investigates various
aspects of CFPQ in [
        <xref ref-type="bibr" rid="ref16 ref17 ref18">16–18</xref>
        ] and formulates three possible querying
semantics: relational that requires to find all vertex pairs reachable
by some path of interest, single-path query semantics also requires
to return the example of such path for all vertex pairs, and all-path
query semantics that requires to return all such paths for all vertex
pairs.
      </p>
      <p>
        A number of CFPQ algorithms based on parsing techniques were
proposed: (G)LL and (G)LR-based algorithms by Ciro M. Medeiros
et al. [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], Fred C. Santos et al. [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ], Semyon Grigorev et al. [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ],
and Ekaterina Verbitskaia et al. [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]; CYK-based algorithm by
Xiaowang Zhang et al. [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]; combinators-based approach to CFPQ
by Ekaterina Verbitskaia et al. [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Yet recent research by Jochem
Kuijpers et al. [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] shows that existing solutions are not applicable
for real-world graph analysis because of significant running time
and memory consumption.
      </p>
      <p>
        Inspired by Valiant’s [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] matrix-based algorithm for
contextfree language recognition, we explore the applicability of linear
algebra methods to the CFPQ problem. The linear algebra methods
is widely used for various problems of finding paths in graphs, but
the CFPQ problem poses additional challenges originating from
query-specific information that needs to be captured. Valiant
proposed a parsing algorithm, which computes a recognition table
by computing matrix transitive closure. These algorithms take a
string at the input and decide whether this string is generated from
the input context-free grammar. Valiant’s algorithm has essentially
the same complexity as Boolean matrix multiplication. This is a
promising way to achieve high-performance solutions for graph
querying problems. The active utilization of these operations in the
process of context-free path query evaluation makes it possible to
eficiently apply a wide class of optimizations and computing
techniques, such as GPGPU (General-Purpose computing on Graphics
Processing Units), parallel computation, sparse matrix
representation, distributed-memory computation, etc.
      </p>
      <p>In this Ph.D. work, we make the following contributions.
(1) We provide an approach to solving the CFPQ problem using
linear algebra operations. The provided approach allows
us to use a wide class of optimizations of linear algebra
operations for eficient analysis of large graphs.
(2) Using provided approach, we devise the CFPQ algorithms
based on linear algebra operations for relational,
singlepath, and all-path query semantics.
(3) We provide the implementations of the devised algorithms
for context-free path query evaluation using diferent
optimizations and computing techniques. Our preliminary
results demonstrate that our best CPU and GPU-based
implementations that utilize sparse matrix representation
and parallel computation outperform the state-of-the-art
context-free path querying solutions.</p>
    </sec>
    <sec id="sec-2">
      <title>2 APPROACH</title>
      <p>
        In this section, we describe our approach to solving the CFPQ
problem using linear algebra operations. The idea of using a sparse
adjacency matrix as a graph representation in graph analysis problems
is well-known. Recently, became very popular the GraphBLAS [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]
API specification that defines standard building blocks for graph
algorithms in the language of linear algebra. Various libraries that
implement it provide data structures and functions to compute
linear transformations and other linear algebra operations on sparse
matrices. Using these libraries or other eficient libraries for such
operations is a good recipe for making a high-performance CFPQ
solution if we can reduce the CFPQ problem to linear algebra
operations. Although such reduction was found for a number of graph
algorithms, there are many graph algorithms for which it has not
been done. To the best of our knowledge, the reduction of CFPQ
problem to linear algebra operation is an open question.
      </p>
      <p>An overview of our proposed approach is shown in Figure 1. The
purpose of this approach is to solving CFPQ problem using linear
algebra operations. In order to do this, it is necessary to devise the
CFPQ algorithms that have the input in the form of a directed
edgelabeled graph as a data, a context-free grammar as a query, and the
query semantics that determines the type of requested information
about paths in the graph. Further, the approach can be divided into
the following stages.</p>
      <p>Reducing the CFPQ problem to the linear algebra operations. The
query is formulated by a context-free grammar  which is a tuple
( , Σ, , ), where  is a finite set of nonterminals; Σ is a finite set
of terminals,  ∩ Σ = ∅;  is a finite set of productions of the form
 →  , where  ∈  ,  ∈ ( ∪ Σ)∗; and  is the start nonterminal.
To formulate the obtained problem in terms of linear algebra, the
input graphs are considered in the form of adjacency matrices, and the
input context-free grammar (CF-grammar) is encoded in the form
of a certain algebraic structure, namely, in the form of a semiring
with non-associative multiplication. This approach takes advantage
of the fact that in the production rules of the CF-grammars there
are two operations — concatenation and union, which are
transformed into the product and the sum of a semiring. The elements
of the adjacency matrices must be sets of nonterminals since each
of them describe the set of words corresponding to the paths of
interest. Further, the resulting semiring is used to define matrix
multiplication (or other linear algebra operation), which simulates
the step of the input graph traversing. For a complete traversal of
the input graph, a transitive closure of adjacency matrices can be
defined, which allows us to obtain the information about all paths
corresponding to the query. The type of information retrieved
depends on the query semantics, which must be taken into account
when constructing the adjacency matrices and semirings.</p>
      <p>Analysis. To analyze the theoretical properties of the constructed
algorithm, the existing theoretical results of linear algebra, graph
theory and the theory of formal languages can be used. The
properties of the entire CFPQ algorithm largely depend on the properties
of linear algebra operations since it evaluates the context-free path
queries by ofloading the most intensive computations into calls to
procedures for these operations. Therefore, the most efective for
the algorithm will be optimizations that use the existing results of
linear algebra to eficiently compute such operations, for example,
sparse matrix and vector operations.</p>
      <p>
        Implementation. From a practical point of view, the algorithms
built in this approach are easy to implement, since the most time
consuming is the implementation of the necessary linear algebra
operations, which have already been implemented in many
eficient libraries that support linear algebra operations. For example,
can be used the SuiteSparse:GraphBLAS [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] library — is an
implementation of the GraphBLAS API. In such libraries, various matrix
optimizations are used, which will significantly speed up the
computation of the context-free queries for large graphs. One of such
optimizations is the use of sparse matrix formats (CSR, CSC, COO),
the use of which gives a significant performance gain since real
data is often sparse. In addition, many linear algebra operations
can be eficiently computed in parallel, for example on a GPU. As a
result, the CFPQ implementation will allow to obtain matrices that
will store information about the desired paths in the graph. The
type of stored information is determined by the query semantics,
for example, it can be an answer to the question of the existence of
paths of a certain form or their enumeration.
      </p>
      <p>Result interpretation. The final step is to interpret the query
result. Depending on the query semantics, it is possible to extract
certain information about the paths between the vertices of
interest from the resulting matrix. In addition, in the case when the
query semantics involves the enumeration of paths between certain
vertices in the graph, it also becomes necessary to implement an
algorithm for constructing these paths from the resulting matrices.
3</p>
    </sec>
    <sec id="sec-3">
      <title>ALGORITHMS</title>
      <p>In this section, we briefly describe our devised CFPQ algorithms
based on the linear algebra operations. For all our algorithms we
formally prove the correctness, termination, and time complexity
bounds. Our algorithms can be divided into two groups.</p>
      <p>Matrix-based algorithms. The algorithms in the first group utilize
the Boolean matrix multiplication for relational query semantics
and operate with more complex matrices for single-path and
allpath query semantics. Also, these algorithms, like many existing
ones, require the CF-grammar transformation to some normal form
that allows us to encode one step of the input graph traversing into
exactly one matrix multiplication since in this form we have only
two nonterminals in the right-hand side of productions rules.</p>
      <p>We define a binary operation ( · ) for arbitrary subsets 1, 2 of
 with respect to a CF-grammar  = ( , Σ,  ) as
1 · 2 = { | ∃ ∈ 1, ∃ ∈ 2 such that ( → ) ∈  }.</p>
      <p>Using this binary operation as subset multiplication, and union
as an addition, we can define a matrix multiplication,  ×  = ,
where  and  are matrices of a suitable size, that have subsets of 
as elements, as , = Ð=1 , ·, . Also, we use the element-wise
union operation on matrices  and  with the same size:  ∪  = ,
where , = , ∪ , . Finally, we define the transitive closure
of a square matrix  as + =  +(1) ∪  +(2) ∪ · · ·, where  +(1) =  and
 +() = Ð−=11  +() ×  +(−) ,  ≥ 2.</p>
      <p>
        We can evaluate the context-free path queries with relational
semantics by computing this transitive closure of an adjacency
matrix  of input labeled graph with sets of nonterminals as elements
where  ∈ , only if there is  ∈ Σ such that there is edge from
vertex  to  labeled by  and ( →  ) ∈  . However, described
operations can be computed using several Boolean matrix
multiplications and additions if we encode the matrix  by the | | Boolean
matrices (one Boolean matrix for each nonterminal how it is done
in the work of Valiant [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]).
      </p>
      <p>For single-path and all-path query semantics, we store additional
information in matrices to be able to restore found paths. For
singlepath query semantics, we store the intermediate vertex  in the
element , only if there is a path from  to  corresponding to the
nonterminal , there is a path from  to  corresponding to the
nonterminal , and there is a rule ( → ) ∈  . For all-path query
semantics, we store the sets of the intermediate vertices, since we
must store the information about all paths between each vertex
pair. In that case, we cannot reduce computations to operations
on Boolean matrices and we use custom matrix multiplication for
matrices with more complex elements (tuples or arrays of integers).
There are still libraries that support linear algebra operations for
our algorithms for single-path and all-path query semantics, for
example, the GraphBLAS implementations that support the creation
of custom semirings for the matrix operations.</p>
      <p>Kronecker product-based algorithm. On the contrary, the
algorithm in the second group is based on the Kronecker product
operation and does not require the transformation of the input grammar.
The transformation leads to at least a quadratic blow-up in grammar
size, thus by avoiding the transformation, this algorithm achieves
better time complexity in terms of the grammar size. While
regular languages can be expressed as a Finite-State Machine (FSM), a
CF-grammar can be expressed as a Recursive State Machine (RSM)
in a similar fashion. In these algorithms, we use RSM to represent
the context-free path query and evaluate this query using the
Kronecker product of the corresponding adjacency matrices of the
input graph and the RSM for the input CF-grammar. Although the
Kronecker-based algorithm for constructing the matrices with
information about required paths (or so-called index) is the same for
all three query semantics, the paths extraction algorithm for each
semantics is diferent.
4</p>
    </sec>
    <sec id="sec-4">
      <title>PRELIMINARY RESULTS</title>
      <p>
        We evaluate implementations of devised algorithms on real-world
RDFs. We provide results only for our CPU and GPU-based
implementations of matrix-based algorithms for relational and
singlepath query semantics because of the page limit. We use
RedisGraph [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] graph database as storage and measure the full time of
query execution including all overhead on data preparation. This
way we can estimate the applicability of the matrix-based algorithm
to real-world problems. The source code is available on GitHub1
1Sources of matrix-based CFPQ algorithm for the RedisGraph database: https://github.
com/YaccConstructor/RedisGraph. Access date: 27.02.2021.
      </p>
      <sec id="sec-4-1">
        <title>RG_CPUrel</title>
        <p>Mem (MB) Time (s)</p>
      </sec>
      <sec id="sec-4-2">
        <title>RG_GPUrel</title>
        <p>Mem (MB) Time (s)</p>
      </sec>
      <sec id="sec-4-3">
        <title>RG_CPUpath</title>
        <p>Mem (MB) Time (s)</p>
      </sec>
      <sec id="sec-4-4">
        <title>RG_GPUpath</title>
        <p>Mem (MB)</p>
        <p>
          The results of the CFPQ evaluation are presented in Table 1.
As we can see, our matrix-based algorithm for relational query
semantics implemented for RedisGraph is more than 1000 times
faster than the one based on annotated grammar implemented for
Neo4j [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] and uses more than 4 times less memory. We can conclude
that the matrix-based algorithm is more performant than the
stateof-the-art CFPQ algorithms for query evaluation under a relational
semantics for real-world data processing.
        </p>
        <p>We can conclude, that the cost of computing matrices for
singlepath query semantics is not high. On average, it is about 2 times
slower than for the relational query semantics. The additional
running time of the path extraction is presented in Figure 2 (boxplots
are standard, outliers are omitted). As we can see, this time is small
and linear in the length of the path.</p>
        <p>Finally, we conclude that the matrix-based algorithm paired with
a suitable database and employing appropriate libraries for linear
algebra operations is a promising way to make CFPQ with diferent
query semantics applicable for real-world data analysis.
5</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>CONCLUSION AND NEXT STEPS</title>
      <p>In this Ph.D. work, we provide an approach to solving the CFPQ
problem using linear algebra operations. Using provided approach
we devise the CFPQ algorithms for all three query semantics and
implement them using appropriate libraries for linear algebra
operations. Preliminary results show that our CPU and GPU-based
implementations that utilize sparse matrix representation and
parallel computation outperform the state-of-the-art solutions.</p>
      <p>
        As a next step, we plan to provide a full comparison of our linear
algebra-based implementations with all state-of-the-art solutions
for CFPQ on the same benchmark and experimental setup.
Moreover, our implementations are prototypes and we plan to provide
full integration of CFPQ to RedisGraph. Also, we plan to improve
the dataset by including more real-world cases with larger graphs,
for example, from the area of static code analysis [
        <xref ref-type="bibr" rid="ref10 ref14">10, 14</xref>
        ].
      </p>
    </sec>
    <sec id="sec-6">
      <title>ACKNOWLEDGMENTS</title>
      <p>This work was funded by RFBR, project number 19-37-90101, and
grant from JetBrains Research.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Timothy</surname>
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Davis</surname>
          </string-name>
          .
          <year>2019</year>
          .
          <article-title>Algorithm 1000: SuiteSparse: GraphBLAS: Graph Algorithms in the Language of Sparse Linear Algebra</article-title>
          .
          <source>ACM Trans. Math. Softw. 45</source>
          ,
          <issue>4</issue>
          (
          <year>2019</year>
          ),
          <volume>44</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>44</lpage>
          :
          <fpage>25</fpage>
          . https://doi.org/10.1145/3322125
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>C.</given-names>
            <surname>Barrett</surname>
          </string-name>
          et al.
          <year>2000</year>
          .
          <article-title>Formal-Language-Constrained Path Problems</article-title>
          . SIAM J.
          <year>Comput</year>
          .
          <volume>30</volume>
          ,
          <issue>3</issue>
          (
          <year>2000</year>
          ),
          <fpage>809</fpage>
          -
          <lpage>837</lpage>
          . https://doi.org/10.1137/S0097539798337716 arXiv:https://doi.org/10.1137/S0097539798337716
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <surname>Ciro</surname>
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Medeiros</surname>
          </string-name>
          et al.
          <year>2018</year>
          .
          <article-title>Eficient Evaluation of Context-free Path Queries for Graph Databases</article-title>
          .
          <source>In Proceedings of the 33rd Annual ACM Symposium on Applied Computing (Pau, France) (SAC '18)</source>
          . ACM, New York, NY, USA,
          <fpage>1230</fpage>
          -
          <lpage>1237</lpage>
          . https://doi.org/10.1145/3167132.3167265
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>Ekaterina</given-names>
            <surname>Verbitskaia</surname>
          </string-name>
          et al.
          <year>2016</year>
          .
          <article-title>Relaxed Parsing of Regular Approximations of String-Embedded Languages</article-title>
          .
          <source>In Perspectives of System Informatics, Manuel Mazzara and Andrei Voronkov (Eds.)</source>
          . Springer International Publishing, Cham,
          <fpage>291</fpage>
          -
          <lpage>302</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>Ekaterina</given-names>
            <surname>Verbitskaia</surname>
          </string-name>
          et al.
          <year>2018</year>
          .
          <article-title>Parser Combinators for Context-free Path Querying</article-title>
          .
          <source>In Proceedings of the 9th ACM SIGPLAN International Symposium on Scala (St. Louis</source>
          ,
          <string-name>
            <surname>MO</surname>
          </string-name>
          , USA) (
          <year>Scala 2018</year>
          ). ACM, New York, NY, USA,
          <fpage>13</fpage>
          -
          <lpage>23</lpage>
          . https://doi.org/10.1145/3241653.3241655
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>H.</given-names>
            <surname>Miao</surname>
          </string-name>
          et al.
          <year>2019</year>
          .
          <article-title>Understanding Data Science Lifecycle Provenance via Graph Segmentation and Summarization</article-title>
          .
          <source>In 2019 IEEE 35th International Conference on Data Engineering (ICDE)</source>
          .
          <volume>1710</volume>
          -
          <fpage>1713</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>J.</given-names>
            <surname>Kepner</surname>
          </string-name>
          et al.
          <year>2016</year>
          .
          <article-title>Mathematical foundations of the GraphBLAS</article-title>
          .
          <source>In 2016 IEEE High Performance Extreme Computing Conference (HPEC)</source>
          .
          <article-title>1-9</article-title>
          . https: //doi.org/10.1109/HPEC.
          <year>2016</year>
          .7761646
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>Jochem</given-names>
            <surname>Kuijpers</surname>
          </string-name>
          et al.
          <year>2019</year>
          .
          <article-title>An Experimental Study of Context-Free Path Query Evaluation Methods</article-title>
          .
          <source>In Proceedings of the 31st International Conference on Scientific and Statistical Database</source>
          Management (Santa Cruz, CA, USA) (
          <article-title>SSDBM '19)</article-title>
          . ACM, New York, NY, USA,
          <fpage>121</fpage>
          -
          <lpage>132</lpage>
          . https://doi.org/10.1145/3335783.3335791
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>Jakob</given-names>
            <surname>Rehof</surname>
          </string-name>
          et al.
          <year>2001</year>
          .
          <article-title>Type-Base Flow Analysis: From Polymorphic Subtyping to CFL-Reachability</article-title>
          .
          <source>SIGPLAN Not</source>
          .
          <volume>36</volume>
          ,
          <issue>3</issue>
          (Jan.
          <year>2001</year>
          ),
          <fpage>54</fpage>
          -
          <lpage>66</lpage>
          . https://doi.org/10. 1145/373243.360208
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>Jyothi</given-names>
            <surname>Vedurada</surname>
          </string-name>
          et al.
          <year>2019</year>
          .
          <article-title>Batch Alias Analysis</article-title>
          .
          <source>In Proceedings of the 34th IEEE/ACM International Conference on Automated Software Engineering</source>
          (San Diego, California) (
          <source>ASE '19)</source>
          . IEEE Press,
          <fpage>936</fpage>
          -
          <lpage>948</lpage>
          . https://doi.org/10.1109/ASE.
          <year>2019</year>
          .00091
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>P.</given-names>
            <surname>Cailliau</surname>
          </string-name>
          et al.
          <year>2019</year>
          .
          <article-title>RedisGraph GraphBLAS Enabled Graph Database</article-title>
          .
          <source>In 2019 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW)</source>
          .
          <volume>285</volume>
          -
          <fpage>286</fpage>
          . https://doi.org/10.1109/IPDPSW.
          <year>2019</year>
          .00054
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>Petteri</given-names>
            <surname>Sevon</surname>
          </string-name>
          et al.
          <year>2008</year>
          .
          <article-title>Subgraph Queries by Context-free Grammars</article-title>
          .
          <source>Journal of Integrative Bioinformatics</source>
          <volume>5</volume>
          ,
          <issue>2</issue>
          (
          <year>2008</year>
          ),
          <fpage>157</fpage>
          -
          <lpage>172</lpage>
          . https://doi.org/10.1515/jib2008-
          <fpage>100</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>Semyon</given-names>
            <surname>Grigorev</surname>
          </string-name>
          et al.
          <year>2017</year>
          .
          <article-title>Context-free Path Querying with Structural Representation of Result</article-title>
          .
          <source>In Proceedings of the 13th Central &amp; Eastern European Software Engineering Conference in Russia (St. Petersburg</source>
          ,
          <article-title>Russia) (CEE-SECR '17)</article-title>
          . ACM, New York, NY, USA, Article
          <volume>10</volume>
          , 7 pages. https://doi.org/10.1145/3166094.3166104
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>Xin</given-names>
            <surname>Zheng</surname>
          </string-name>
          et al.
          <year>2008</year>
          .
          <article-title>Demand-driven Alias Analysis for C</article-title>
          .
          <source>In Proceedings of the 35th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (San Francisco</source>
          , California, USA) (
          <article-title>POPL '08)</article-title>
          . ACM, New York, NY, USA,
          <fpage>197</fpage>
          -
          <lpage>208</lpage>
          . https://doi.org/10.1145/1328438.1328464
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>Xiaowang</surname>
          </string-name>
          Zhang et al.
          <year>2016</year>
          .
          <article-title>Context-Free Path Queries on RDF Graphs</article-title>
          .
          <source>In The Semantic Web - ISWC 2016</source>
          . Springer International Publishing, Cham,
          <fpage>632</fpage>
          -
          <lpage>648</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>Jelle</given-names>
            <surname>Hellings</surname>
          </string-name>
          .
          <year>2014</year>
          .
          <article-title>Conjunctive context-free path queries</article-title>
          .
          <source>In Proceedings of ICDT'14</source>
          .
          <fpage>119</fpage>
          -
          <lpage>130</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>Jelle</given-names>
            <surname>Hellings</surname>
          </string-name>
          .
          <year>2015</year>
          .
          <article-title>Path Results for Context-free Grammar Queries on Graphs</article-title>
          .
          <source>CoRR abs/1502</source>
          .02242 (
          <year>2015</year>
          ). arXiv:
          <volume>1502</volume>
          .02242 http://arxiv.org/abs/1502.02242
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>Jelle</given-names>
            <surname>Hellings</surname>
          </string-name>
          .
          <year>2015</year>
          .
          <article-title>Querying for Paths in Graphs using Context-Free Path Queries</article-title>
          .
          <source>arXiv preprint arXiv:1502.02242</source>
          (
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>Fred</surname>
            <given-names>C.</given-names>
          </string-name>
          et al.
          <source>Santos</source>
          .
          <year>2018</year>
          .
          <article-title>A Bottom-Up Algorithm for Answering Context-Free Path Queries in Graph Databases</article-title>
          . In Web Engineering, Tommi Mikkonen, Ralf Klamma, and Juan Hernández (Eds.). Springer International Publishing, Cham,
          <fpage>225</fpage>
          -
          <lpage>233</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <surname>Leslie</surname>
            <given-names>G</given-names>
          </string-name>
          <string-name>
            <surname>Valiant</surname>
          </string-name>
          .
          <year>1975</year>
          .
          <article-title>General context-free recognition in less than cubic time</article-title>
          .
          <source>Journal of computer and system sciences 10</source>
          ,
          <issue>2</issue>
          (
          <year>1975</year>
          ),
          <fpage>308</fpage>
          -
          <lpage>315</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>Mihalis</given-names>
            <surname>Yannakakis</surname>
          </string-name>
          .
          <year>1990</year>
          .
          <article-title>Graph-theoretic Methods in Database Theory</article-title>
          .
          <source>In Proceedings of the Ninth ACM SIGACT-SIGMOD-SIGART Symposium on Principles of Database Systems (Nashville</source>
          , Tennessee, USA) (
          <article-title>PODS '90)</article-title>
          . ACM, New York, NY, USA,
          <fpage>230</fpage>
          -
          <lpage>242</lpage>
          . https://doi.org/10.1145/298514.298576
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>