<!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>Queue Evolve during Traversal-Based Query Processing?</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Ruben Eschauzier</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ruben Taelman</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ruben Verborgh</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="editor">
          <string-name>Link Traversal-based Query Processing, SPARQL, Solid, Decentralized Querying</string-name>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Electronics and Information Systems, Ghent University - imec</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>Link Traversal-based Query Processing (LTQP) is an integrated querying approach that allows the query engine to start with zero knowledge of the data to query and discover data sources on the fly. The query engine starts with some seed documents and dynamically discovers new data sources by dereferencing hyperlinks in previously ingested data. Given the dynamic nature of source discovery, query processing tends to be relatively slow. Optimization techniques exist, such as exploiting existing structural information, but they depend on a deep understanding of the link queue during LTQP. To this end, we investigate the evolution of the types of link sources in the link queue and introduce metrics that describe key link queue characteristics. This paper analyses the link queue to guide future work on LTQP query optimization approaches that exploit structural information within a Solid environment. We ifnd that queries exhibit two diferent execution patterns, one where the link queue is primarily empty and the other where the link queue fills faster than the engine can process. Our results show that the link queue is not functioning optimally and that our current approach to link discovery is not suficiently selective.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        LGOBE
(R. Verborgh)
https://www.rubensworks.net/ (R. Taelman); https://ruben.verborgh.org/#site (R. Verborgh)
© 2023 Copyright for this paper by its authors. Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0).
criteria that limit the number of accessed documents and various link prioritization techniques
[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], LTQP over the Linked Open Data Web is too slow for many practical applications. The
problems of LTQP for Linked Open Data are exacerbated by the significantly faster performance
obtained by simply aggregating linked data and serving it as, for example, a SPARQL endpoint.
However, for data in decentralized environments with licenses or usage policies, this form of
centralization of linked data is impossible, and LTQP becomes an interesting solution. Due to
the highly decentralized approach to querying, LTQP is unique because it works for both open
and closed-linked data querying. The problem remains that LTQP is slow due to the lack of
prior knowledge of the data distribution. Fortunately, some decentralized environments have
characteristics we can leverage to improve the status quo. By making structural assumptions
on the data based on the characteristics of a decentralized environment, query engines can use
prior knowledge for optimization and can guide the order of data discovery. For our analysis,
we will use the Solid environment as an example of a decentralized environment of which we
have prior knowledge of the data structure.
      </p>
      <p>The Solid protocol describes a linked data publishing paradigm based on access permissions.
Depending on the user permissions, some data should be inaccessible. The widely used approach
to linked data publishing is to harvest data and provide a single access point. However, this is
currently impossible for the personal data stored in a Solid pod due to privacy and permission
concerns. LTQP can query this data by skipping any document the client can not access.</p>
      <p>Furthermore, we know the general topology of the data in Solid. Personal data vaults act
as data hubs and predicates known beforehand indicate the structure within data vaults and
relationships between data. These predicates serve as link “sources” that contain information
on the possible relevancy or priority of the link. To incorporate link source knowledge into
query execution, we must understand how the types of link sources are discovered and present
in the link queue. To this end, we investigate the diversity of link source types that enter the
queue, how many links of each source are in the link queue, and for how long they stay there.
This information can guide future LTQP optimization research eforts and uncover unexplored
avenues for optimization. Our contributions are as follows:
1. We analyze the type of links that enter the link queue and the time of arrival of these links.</p>
      <p>Thus, providing insight into how LTQP traverses the Solid ecosystem.
2. We measure the diversity of link types in the link queue during query execution. Link type
diversity indicates the possible merit of link prioritization based on these link types.
While we analyze the Solid decentralized environment, future work can extend our analysis to
other decentralized environments.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Related Work</title>
      <p>
        In LTQP literature, the focus is on querying the entire Web of linked data without any
assumptions on the structural properties of the distributed environment. We will discuss graph-based,
intermediate solution-based [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], and string similarity-based algorithms [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>
        Graph-based link prioritization [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] applies vertex scoring methods to a dynamically constructed
directed graph that represents the discovered topology of the Web. Each vertex denotes either a
retrieved document or a queued URI, and directed edges represent that we obtain the URI of
the target vertex from the source vertex’s data. The authors use PageRank [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] and
Indegreebased scoring to calculate link priorities. PageRank iteratively scores vertexes according to
their importance, where more edges to a vertex will increase its importance, and edges from
important vertexes have more weight. Indegree-based scoring counts the number of incoming
edges of a vertex and uses this as its importance score.
      </p>
      <p>
        Intermediate solutions-based link prioritization (ISLP) [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] is an adaptive approach where
vertexes are scored based on the number of solutions the vertex has contributed to. ISLP then
scores links based on the neighboring vertexes’ scores. This approach uses the belief that
highly relevant documents contain links to other relevant documents. String similarity-based
algorithms [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] also use this assumption. The algorithm prioritizes URIs similar to previously
dereferenced URIs that produced query results. To measure URI similarity, the authors use
Levenshtein string distance.
      </p>
      <p>For all approaches, the literature suggests that while link prioritization outperforms a simple
FiFo queue for some queries, it performs worse for others. We conclude that, while link
prioritization has merit, it needs more in-depth research into what makes a sound link prioritization
approach and why some queries show no benefit from link prioritization and others do.</p>
    </sec>
    <sec id="sec-3">
      <title>3. Experimental Setup</title>
      <p>
        In this section, we first describe the data we use for our analysis. We then introduce the possible
link types we can track in the Solid environment and how we measure the link queue evolution.
Finally, we introduce metrics to represent the diversity of links in the queue.
3.1. Data
We use the recently introduced SolidBench benchmark [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] for our analysis, which uses the Social
Network Benchmark (SNB)[
        <xref ref-type="bibr" rid="ref8 ref9">8, 9</xref>
        ] at its core. The SNB models a social network similar to Facebook;
social networks produce networks of connected data with users acting as data hubs. This data
structure is suited for the Solid protocol, where Solid pods act as data hubs. SolidBench uses
this centralized benchmark as a data generator and then fragments this data into data vaults,
which function as Solid pods. We use the default data generation and fragmentation parameters,
which results in 158,233 RDF files over 1,531 data vaults using the default fragmentation strategy.
There are 3,556,159 triples across all files, with 22.47 triples per file on average.
      </p>
      <p>
        The SolidBench benchmark uses the read-only interactive workload of SNB, which
corresponds to the workload that social network applications encounter. The interactive workload
of SNB has two query template classes: complex and short. Preliminary testing [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] of the
benchmark shows that these queries are challenging for existing LTQP techniques, with most complex
queries reaching timeout. SolidBench includes discover queries as a third query template class
to enhance SNB. These queries include various choke points in the dataset, like multi-hop
document traversal, type index usage, and determining what HTTP requests are irrelevant. The
SolidBench workload consists of 27 query templates, for which we instantiate one query each.
      </p>
      <sec id="sec-3-1">
        <title>3.2. Link Types in the Solid Ecosystem</title>
        <p>
          In the Solid ecosystem, multiple predicates serve a distinct function and result from the structural
properties of the ecosystem. For example, LDP Basic Containers serve as folders that contain
references to documents or other LDP containers, while type indexes denote a direct link to
a resource in the vault with a type or class, like comments or posts. For a more in-depth
explanation of the Solid environment and its structural properties, we refer to [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ].
        </p>
        <p>
          In Table 1, we show all considered predicate types and the short versions of their name. Note
the presence of cMatch, the reachability criterion described in [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. We do not consider the cAll
criterion, as it will lead to an impractical number of followed links. When we dereference a URI,
we can record whether we discover this URI from a triple with one of the previously mentioned
predicates, thus giving us information on the type of document we are dereferencing.
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>3.3. Link Queue Analysis</title>
        <p>To investigate the behavior of the link queue during LTQP, we will register the link source for
each dereferenced link during query execution. We snapshot the link sources in the link queue
whenever a link is popped from or pushed to the link queue and register the timestamp. Thus,
we obtain the evolution of the sources in the link queue during query execution.</p>
        <p>Using this information, we will first plot the diferent types of sources and their numbers
present in the link queue. This plot will give us an understanding of the data discovery pattern
of the query engine and allow us to investigate avenues for link prioritization algorithms or
other forms of optimization.</p>
        <p>To support the visual analysis of the link queue, we introduce metrics that measure link
queue characteristics. We are interested in what percentage of all links we obtain from a given
source. Furthermore, we will determine the fraction of time the link queue contains  or more
links ( Ef () ) and calculate the time-weighted average number of link types present in the link
queue, given  links are present (  ̄ () ). These metrics give us insight into possible bottlenecks
during query execution and whether link prioritization based on link sources has merit for
LTQP. We calculate these metrics using
 Ef () =
∑
{ 0≤  &lt;  | 

 ≥}</p>
        <p>+1 −  
  −  0
,   ̄ () =
∑
{ 0≤  &lt;  | 
 ≥} ( +1 −   )</p>
        <p>−  0


.</p>
        <p>(1)</p>
        <p>
          With  0 the first timestamp recorded,   the final timestamp, and    the number of diferent
link sources in the queue at timestamp   . These timestamps are obtained whenever a push or
pop event happens in the link queue. This implies that   signals the end of the query and
not a change in the link queue. We execute the queries using Comunica [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]. Comunica uses
the algorithm described in [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ], which uses a FiFo link queue. Furthermore, we set the query
timeout to 60 seconds. The code required to replicate this study is available on Github.
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Results</title>
      <p>In Figure 1, we present a selection of the link queue evolutions that accurately represent what
we found in all 27 queries. From these figures, we find two categories of queries: queries where
the engine can quickly process the number of discovered links and queries where the number of
links followed increases steadily to the point that the query engine cannot handle the number
of discovered links. Furthermore, we set the timeout to 1,100 seconds for Figure 1e in order
to investigate the spike of cMatch links. The result is given in Figure 1f. We find that the
cMatch criterion can quickly generate a large number of links to follow, slowing down the
query execution and making the query infeasible to execute.</p>
      <p>We investigate the metrics introduced in Section 3 to quantify the two query categories.
We split the queries into two groups: one with a non-zero number of links in the queue for
more than 50% of the query execution time, and the other for less than 50%. The group with
high queue occupancy contains twelve queries, while the other group contains fiteen queries.
Interestingly, all discover queries belong to the query group with low queue occupancy. The
average metrics of the groups are shown in Table 2.</p>
      <p>Query Complex-3
Query Discover-7
800
(c) The link queue quickly fills up with many
cMatch links, and the query engine cannot
process the volume of links.</p>
      <sec id="sec-4-1">
        <title>4.1. Discussion</title>
        <p>By dividing the queries based on queue occupancy, we find a clear diference in link queue
characteristics. Queries with high queue occupancy have a higher percentage of cMatch links
and, on average, have more than one type of link in the queue for 50% of the query execution
time. On the other hand, queries with low queue occupancy have a higher occurrence rate of
contains links and seldom have more than two types of links in the queue at a given time.</p>
        <p>
          The queries where the link queue is empty for most of the query execution time support
the conclusion of our previous work that current query plan optimization approaches perform
poorly for LTQP [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ]. We supported this conclusion using an empirical experiment on all discover
queries; the results of this paper find that these queries all have low queue occupancy. When
the link queue is empty, but the query times out, we know that the execution of the query plan
over the retrieved data causes the time out and not dereferencing discovered URIs.
        </p>
        <p>
          For queries with many links in the queue, we find that the link queue often contains diferent
types of links during query execution. This diversity of links indicates that link prioritization
strategies based on link sources can influence query execution strategy during LTQP.
Furthermore, for queries with many links to follow, the query engine discovers most links using the
cMatch criterion. The engine primarily uses cMatch to traverse to other Solid pods since all
data in a single pod can be retrieved using the contains, storage, and type index predicate
links [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ]. Queries for which the link queue fills up with thousands of cMatch-sourced links
show that this method of pod discovery is not suficiently selective. While queries with low
queue occupancy support our earlier conclusions [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ], our findings for queries with high queue
occupancy contradict it. This contradiction is due to the fact we used discovery queries in the
empirical experiment to support the conclusion, which all have low queue occupancy.
        </p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Conclusion</title>
      <p>In this paper, we investigated the contents of the link queue during LTQP over Solid pods. Based
on the content of the link queue during query execution, we divide queries into two types. The
ifrst query type has a primarily empty link queue during query execution. In contrast, the
second query type has a link queue that fills rapidly, and the query engine cannot empty it
quickly enough. For low queue occupancy queries, the bottleneck is their query execution plan.
This bottleneck shows that improving existing zero-knowledge query planning is required to
optimize LTQP over the Solid environment. For high queue occupancy queries, we find that
while the link queue quickly fills up with links retrieved using cMatch, other link sources are
often present concurrently.</p>
      <p>These observations highlight that link prioritization based on the structural properties of Solid
can influence query execution time and that the cMatch criterion is not suficiently selective for
eficient LTQP. We conclude that future work on LTQP has three avenues for research:
1. Investigate new query optimization algorithms to improve low queue occupancy query
execution. Adaptive query planning seems especially promising due to the lack of prior
knowledge of the data during LTQP.
2. For high queue occupancy queries, our analysis shows that link prioritization using the
structural properties of the Solid ecosystem can influence query execution. Thus, future
research into how to use these structural assumptions to prioritize links is an interesting
future direction.
3. Finally, the large number of cMatch sourced links in the link queue of high queue
occupancy queries show that using cMatch to discover new Solid pods is insuficiently
selective. Future work should investigate alternative approaches that allow for more
selective cross-pod link traversal.</p>
    </sec>
    <sec id="sec-6">
      <title>Acknowledgments</title>
      <p>This research was supported by SolidLab Vlaanderen (Flemish Government, EWI and RRF
project VV023/10). Ruben Taelman is a postdoctoral researcher at the Research Foundation –
Flanders (FWO).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>O.</given-names>
            <surname>Hartig</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Bizer</surname>
          </string-name>
          , J.-C. Freytag,
          <article-title>Executing sparql queries over the web of linked data, in: The Semantic Web-ISWC</article-title>
          <year>2009</year>
          : 8th International Semantic Web Conference,
          <string-name>
            <surname>ISWC</surname>
          </string-name>
          <year>2009</year>
          ,
          <article-title>Chantilly</article-title>
          ,
          <string-name>
            <surname>VA</surname>
          </string-name>
          , USA, October
          <volume>25</volume>
          -
          <issue>29</issue>
          ,
          <year>2009</year>
          . Proceedings 8, Springer,
          <year>2009</year>
          , pp.
          <fpage>293</fpage>
          -
          <lpage>309</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>O.</given-names>
            <surname>Hartig</surname>
          </string-name>
          , M. T. Özsu,
          <article-title>Walking without a map: Ranking-based traversal for querying linked data</article-title>
          ,
          <source>in: The Semantic Web-ISWC</source>
          <year>2016</year>
          : 15th International Semantic Web Conference, Kobe, Japan,
          <source>October 17-21</source>
          ,
          <year>2016</year>
          , Proceedings,
          <source>Part I 15</source>
          , Springer,
          <year>2016</year>
          , pp.
          <fpage>305</fpage>
          -
          <lpage>324</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>S. J.</given-names>
            <surname>Lynden</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Kojima</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Matono</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Nakamura</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Yui</surname>
          </string-name>
          ,
          <article-title>A hybrid approach to linked data query processing with time constraints</article-title>
          .,
          <source>LDOW</source>
          <volume>996</volume>
          (
          <year>2013</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>O.</given-names>
            <surname>Hartig</surname>
          </string-name>
          , J.-C.
          <article-title>Freytag, Foundations of traversal based query execution over linked data</article-title>
          ,
          <source>in: Proceedings of the 23rd ACM conference on Hypertext and social media</source>
          ,
          <year>2012</year>
          , pp.
          <fpage>43</fpage>
          -
          <lpage>52</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>J.</given-names>
            <surname>Umbrich</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Hogan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Polleres</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Decker</surname>
          </string-name>
          ,
          <article-title>Link traversal querying for a diverse web of data, Semantic Web 6 (</article-title>
          <year>2015</year>
          )
          <fpage>585</fpage>
          -
          <lpage>624</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>L.</given-names>
            <surname>Page</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Brin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Motwani</surname>
          </string-name>
          , T. Winograd,
          <article-title>The pagerank citation ranking: Bring order to the web</article-title>
          ,
          <source>Technical Report, Technical report</source>
          , stanford University,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>R.</given-names>
            <surname>Taelman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Verborgh</surname>
          </string-name>
          ,
          <article-title>Link traversal query processing over decentralized environments with structural assumptions</article-title>
          ,
          <source>in: Proceedings of the 22nd International Semantic Web Conference</source>
          ,
          <year>2023</year>
          . URL: https://comunica.github.io/Article-ISWC2023-SolidQuery/.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>R.</given-names>
            <surname>Angles</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. B.</given-names>
            <surname>Antal</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Averbuch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Birler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Boncz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Búr</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Erling</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Gubichev</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Haprian</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Kaufmann</surname>
          </string-name>
          , et al.,
          <article-title>The ldbc social network benchmark</article-title>
          , arXiv preprint arXiv:
          <year>2001</year>
          .
          <volume>02299</volume>
          (
          <year>2020</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>O.</given-names>
            <surname>Erling</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Averbuch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Larriba-Pey</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Chafi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Gubichev</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Prat</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.-D. Pham</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Boncz</surname>
          </string-name>
          ,
          <article-title>The ldbc social network benchmark: Interactive workload</article-title>
          ,
          <source>in: Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data</source>
          ,
          <year>2015</year>
          , pp.
          <fpage>619</fpage>
          -
          <lpage>630</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>R.</given-names>
            <surname>Taelman</surname>
          </string-name>
          ,
          <string-name>
            <surname>J. Van Herwegen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. Vander</given-names>
            <surname>Sande</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Verborgh</surname>
          </string-name>
          ,
          <article-title>Comunica: a modular sparql query engine for the web</article-title>
          ,
          <source>in: The Semantic Web-ISWC</source>
          <year>2018</year>
          : 17th International Semantic Web Conference, Monterey, CA, USA, October 8-
          <issue>12</issue>
          ,
          <year>2018</year>
          , Proceedings,
          <source>Part II 17</source>
          , Springer,
          <year>2018</year>
          , pp.
          <fpage>239</fpage>
          -
          <lpage>255</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>