<!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>Modelling and Querying Lists in RDF. A Pragmatic Study</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Enrico Daga</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Albert Meroño Peñuela</string-name>
          <email>albert.merono@vu.nl</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Enrico Motta</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Dept. of Computer Science, Vrije Universiteit Amsterdam</institution>
          ,
          <addr-line>NL</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Knowledge Media Institute, The Open University</institution>
          ,
          <country country="UK">UK</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Many Linked Data datasets model elements in their domains in the form of lists: a countable number of ordered resources. When publishing these lists in RDF, an important concern is making them easy to consume. Therefore, a well-known recommendation is to find an existing list modelling solution, and reuse it. However, a specific domain model can be implemented in different ways and vocabularies may provide alternative solutions. In this paper, we argue that a wrong decision could have a significant impact in terms of performance and, ultimately, the availability of the data. We take the case of RDF Lists and make the hypothesis that the efficiency of retrieving sequential linked data depends primarily on how they are modelled (triple-store invariance hypothesis). To demonstrate this, we survey different solutions for modelling sequences in RDF, and propose a pragmatic approach for assessing their impact on data availability. Finally, we derive good (and bad) practices on how to publish lists as linked open data. By doing this, we sketch the foundations of an empirical, task-oriented methodology for benchmarking linked data modelling solutions.</p>
      </abstract>
      <kwd-group>
        <kwd>Linked Open Data</kwd>
        <kwd>RDF Lists</kwd>
        <kwd>Benchmarking methodol- ogy</kwd>
        <kwd>SPARQL Benchmark</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        When publishing Linked Open Data a major concern is to make the data
understandable and easy to consume [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ]. Despite the extensive documentation
around good practices for Linked Data publishing [
        <xref ref-type="bibr" rid="ref12 ref20">20, 12</xref>
        ], the decision about
how to reuse a certain modelling practice is left to subjective choices of the data
engineer. However, in Linked Open Data applications, ease of querying with
SPARQL is crucial, particularly in relation to performance and its impact on
service availability [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. An interesting case are RDF Lists, a fundamental data
structure crucial to support domain knowledge such as scholarly metadata (the
order of authors), historical data (biographies and timelines), media metadata
(track lists), social media content (recipes, howto) and musical content (e.g.,
scores as MIDI Linked Data [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]). Applications typically need to query for the
CopyCrigohpty©rig2h0t1©9 2fo0r1t9hifsorptahpiserpbaypeitrsbayuitthsoarsu.thUosres.pUesrmeiptteerdmuitntedderuCndr eartCivreeaCtoivmemConmsmLoicnesnLsieceAnttsreibAutitorinbu4t.i0onIn4t e.0rnIantieornnaalti(oCnCalB(CYC4.B0Y) 4.0)
n-th element of a list —e.g. the first author of a paper, the 2nd track of an
album— or to get the audio events between minutes 2.00 and 2.10. The
Semantic Web community offers several options to the practitioner; for example, the
Ordered List pattern [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], which refers to the rdf:List of W3C specifications.
      </p>
      <p>
        A pragmatic solution is referring to each member of the list with RDF
containment membership properties (rdf:_1, rdf:_2,. . . ) within a n-ary relation
of type rdf:Seq. Another, alternative option, may involve picking a solution
from the Ontology Design Patterns catalogue [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], for example, the Sequence
ODP3. However, either of these choices could have a significant impact in terms
of query-ability (fitness for use in applications), performance and, ultimately,
availability of the data. In this paper, we propose an empirical and task-oriented
approach for evaluating competing modelling solutions for list sequential data
in Linked Open Data. So far, SPARQL-based benchmarks have been developed
to evaluate competing storage solutions against generic use cases, deemed to be
representative of the key features of the query language [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] or, alternatively, to
how real users query linked data [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]. However, a given conceptual model can
be encoded in RDF in different ways, providing alternative (and competing)
solutions for the data engineer. This viewpoint calls for a task-driven approach to
benchmarking.
      </p>
      <p>
        In this work we survey methods for modelling sequences in RDF, and
propose a pragmatic approach for assessing their performance in typical SPARQL
queries and triplestores. The objective is to discuss the various modelling
practices and provide recommendations to developers in understanding the trade-offs
in encoding lists in a large-scale Linked Open Dataset. To do this, we develop
and use a benchmark of datasets and queries [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ] to compare the competing
models against a set of core requirements reflecting the query-ability of the
resulting data. This paper is complementary to [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ], that we use, and it is focused
on introducing the methodology behind its development and the experimental
results. The research questions we aim to answer are:
– (1) Do RDF lists modelling practices have an impact in the performance and
      </p>
      <p>availability of sequential retrieval of Linked Data?
– (2) Can we identify patterns enabling the publishing of RDF lists in a
sus</p>
      <p>tainable way?
Crucially, we intend to evaluate the following hypothesis: The efficiency of
retrieving lists of linked data depends primarily on how they are structured.
Without ad-hoc optimisations, the impact of modelling solutions on data availability
is independent of the database engine (triple-store invariance hypothesis)4</p>
      <p>Specifically, we contribute: (1) A survey of modelling practices for
representing RDF lists in the Linked Data world. (2) A set of paradigmatic structural</p>
      <sec id="sec-1-1">
        <title>3 Sequence: http://ontologydesignpatterns.org/wiki/Submissions:Sequence.</title>
        <p>4 We are aware that one way to solve these problems is to optimize a database
engine to support a specific RDF model. Here, we propose to evaluate existing engines
pragmatically, and find evidence to eventually justify the development of such
optimizations.
design patterns for representing sequences, derived from the survey. (3)
Extensive experiments aimed at evaluating the competing modelling solutions
in terms of scalability for data retrieval, focusing on a set of basic requirements.</p>
        <p>The rest of the paper is structured as follows. After scoping our
contribution in the context of related work, we introduce the research methodology in
Section 3. We discuss reference scenarios and express generic, task-based
requirements for RDF lists in Section 4. Section 5 reports on our survey and presents a
set of reference structural design patterns. These are then formalised in SPARQL
to match the requirements, in Section 6. Section 7 reports on the experiments.
Results are discussed in Section 8, that concludes our paper.
2</p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>Related work</title>
      <p>We consider research in two overlapping areas with our work: modeling of
sequential RDF data; and performance of querying over such data using benchmark
queries and datasets.</p>
      <p>
        The Resource Description Framework (RDF) specification [
        <xref ref-type="bibr" rid="ref30">30</xref>
        ], and more
specifically the RDF Schema (RDFS) recommendation [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] define container classes
for the purpose of representing collections. These containers are: rdf:Bag for
containers of unordered elements; rdf:Alt for “alternative” containers whose typical
processing will be to select one of its members; and rdf:Seq for containers of
elements whose order is indicated by the numerical order of the container
membership properties. Besides containers, [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] also defines a collection vocabulary to
describe a closed collection, i.e. one that can have no more members, through
the class rdf:List and the properties rdf:first, rdf:rest, and rdf:nil. In
JSON-LD [
        <xref ref-type="bibr" rid="ref31">31</xref>
        ] ordered lists like "@list": [ "joe", "bob", "jaybee" ] have
equivalent representations as rdf:List in RDF. Similarly, the RDF 1.1 Turtle
[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] syntax allows for the specification of rdf:List instances, e.g. :a :b ( "bob"
"alice" "carol"). Apart from W3C standards, a number of ontology design
patterns [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] have been proposed to represent sequences, e.g. the Sequence
Ontology Pattern5 (SOP) and the Collections Ontology [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] that focus on handling
lists in OWL 2 DL, specifically.
      </p>
      <p>
        We focus on practical approaches that assess querying sequential RDF data;
for a theoretical study on the complexity of SPARQL, see [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ]. The
Semantic Web community has developed a number of benchmarks for evaluating the
performance of SPARQL engines, proposing both benchmark queries and
benchmark data. The Berlin SPARQL Benchmark (BSBM) [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] generates benchmark
data around exploring products and analyzing consumer reviews. The Lehigh
University Benchmark (LUBM) [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] facilitates the evaluation of Semantic Web
repositories by generating benchmark data about universities, departments,
professors and students. SP2Bench [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ] is a benchmark for SPARQL processors that
enables comparison of optimization strategies, the estimation of their generality,
and the prediction of their benefits in real-world scenarios; it includes a
benchmark data generator based on the DBLP bibliographic database [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. Similarly,
      </p>
      <sec id="sec-2-1">
        <title>5 http://ontologydesignpatterns.org/wiki/Submissions:Sequence</title>
        <p>
          the DBpedia SPARQL benchmark [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ] focuses on human-written queries against
non-relational schemas. The Waterloo SPARQL Diversity Test Suite (WatDiv)
focuses on “a wide spectrum of SPARQL queries with varying structural
characteristics and selectivity classes” [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]. Other datasets, such as Linked SPARQL
queries (LSQ) [
          <xref ref-type="bibr" rid="ref26">26</xref>
          ], focus exclusively on offering benchmark queries from
(structured) SPARQL query logs, but typically miss benchmark data against which
to run these queries. More recently, frameworks aiming at the comparability
and integration of these benchmarks have emerged, such as IGUANA [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]6.
Pragmatic approaches to benchmarking are not new and it is common practice to
develop ad-hoc benchmarks to support specific applications (e.g. [
          <xref ref-type="bibr" rid="ref32">32</xref>
          ]). Benchmark
methodologies have been proposed for covering specific aspects of SPARQL,
for example federation [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ]. The Linked Data Benchmark Council (LDBC), an
industry-led initiative aimed at raising the state of the art in the area by
developing guidelines for benchmark design. For example, LDBC stresses the need for
reference scenarios to be realistic and believable, in the sense that should match
a general class of use cases. In addition, benchmarks should expose technology
to a workload and to do that it is important focusing on choke points when
defining benchmark tasks [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. Our methodology is inspired by these guidelines.
        </p>
        <p>
          We can identify three open issues: (1) To the best of our knowledge, none
of these benchmarks assess querying RDF data with sequential information, e.g.
rdf:List or rdf:Seq. In our work, we propose data and queries to evaluate
RDF sequences specifically, thus addressing a new benchmark task. (2) Among
the variety of solutions for modelling sequences, the rdf:List method appears to
be the "official" one, being part of the RDFS specification and also recommended
as a good design pattern in a Linked Data Pattern book [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ]. However, it is well
known how such method is poorly supported in SPARQL [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ]. (3) Despite the
proliferation of SPARQL benchmarks (and methodologies), there is no clear
guideline or methodology on how benchmarks to compare competing modelling
solutions for Linked Open Data should be designed.
3
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Methodology</title>
      <p>In this section we describe a methodology specifically designed to pragmatically
evaluating the performance of competing modeling solutions for Linked Data
publishing. Phases of the methodology are: requirements, survey, formalisation,
and evaluation, that we illustrate.</p>
      <p>
        Requirements In the initial phase, we identify the model that is the object of
study. (In our case, it is the well-known data structure list, a finite collection
of ordered elements.) However, in order to evaluate the performance of a
concrete implementation of the model we need to identify a set of core functional
requirements. Requirements should be formulated as competency questions [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ].
After identifying the competency questions, possible modelling solutions should
be looked for.
      </p>
      <p>Survey Modelling solutions should be relevant to practitioners, by referring to</p>
      <sec id="sec-3-1">
        <title>6 See also https://github.com/dice-group/triplestore-benchmarks</title>
        <p>at least 1 concrete dataset adopting the modelling practice. Ideally, we want to
ensure they are a complete set of solutions and that there is no relevant
approach left out. After listing the modelling solutions, they should be abstracted
in structural patterns and ensure these patterns are minimal with relation to the
data model.</p>
        <p>
          Formalisation Each modelling solution should be encoded in RDF and in
SPARQL. Particularly, each pattern must be challenged to fit the competency
questions designed in the initial phase, and respective solutions encoded in
SPARQL queries. By doing this it is fundamental to ensure that the output
is semantically equivalent, ideally the exact same, for all query variants. In
addition, it is fundamental that queries are minimal by keeping them in the simplest
form, for example adopting good practices for SPARQL query optimization [
          <xref ref-type="bibr" rid="ref29">29</xref>
          ].
Particularly: (a) subqueries should be avoided, when possible, (b) SPARQL
operators should be reduced to the minimum necessary, (c) variables should be
projected in the result set only when necessary, and (d) blank nodes should be
preferred to named variables7.
        </p>
        <p>Evaluation The objective of this phase is to empirically evaluate the different
solutions. Being the Linked Data standing on a Web application architecture
(the client/server approach), the performance measure we focus on is overall
response time. In order for results to be relevant to real applications, response
time must be measured at different scale with respect to the data size. To do
that, it is suggested to generate a set of realistic datasets at different scales.
Experiments are performed for each modelling prototype with different dataset
sizes and, crucially, with different database engines. From the results, derive
recommendations on how to better represent the given model in Linked Data.
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Requirements</title>
      <p>We derive reference scenarios from Linked Open Data implementing sequences
in various relevant domains. These are:
Author lists. The order of authors of scientific publications is relevant in several
research areas, and may reflect the contribution of each author in a quantitative
way. It is important to know which is the first author, for example, or to display
them in the right order.</p>
      <p>Album tracks. Tracks are ordered sequentially in a music album. Users may
choose to play the 3rd or 7th song in the list.</p>
      <p>
        Recipes. Recipes are lists of actions that should be executed in order.
MIDI LD. A MIDI object encoded in Linked Data is a sequence of encoded audio
events [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]. These should be returned in order for a MIDI song to be played, and
client applications should be able to jump to a specific event in the sequence, or
to select a range of events to play.
      </p>
      <p>From the above scenarios, we identify three necessary and sufficient
requirements: (a) the capability of obtaining the list as an ordered sequence of items.
7 In fact, blank nodes don’t require the matching node value to be kept in memory as
part of the query solution to be projected.
This list does not need to include additional data, the returning object can just
be a list of strings; (b) the capability of obtaining an item at a certain position
in the list; and (c) the capability of obtaining a ordered set of items with the
scope of a specific range. From these considerations, we formulate the following
competency questions:
– CQ1 (All Ordered): What is the ordered content of the sequence?
– CQ2 (Nth Lookup): Which is the n-th item in the sequence?
– CQ3 (Ordered Range): What are the items from the N to M in the sequence?
Clearly, other operations are possible and useful, for example checking the
presence of an item in the list or comparing lists. Here we focus on atomic operations
related to access list items by order, and leave a more complete requirement
analysis as future work. In addition, we only consider lists with one item only in a
certain position, although some models may support otherwise.
5</p>
    </sec>
    <sec id="sec-5">
      <title>Modeling Sequences in RDF</title>
      <p>
        There are various models for representing a sequence, a finite collection of ordered
elements, in RDF. In this section we describe such models, argue abstractions
that integrate some of them, and discuss their properties. We conduct a
systematic survey of these models, by selecting them from the following sources:
W3C standards8 and recommendations; the ontology design patterns [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]
portal9; practical choices in RDF datasets published as resource track papers in
ISWC (e.g. [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]); and lookups of relevant terms (e.g. list, sequence) in the
Linked Open Vocabularies [
        <xref ref-type="bibr" rid="ref33">33</xref>
        ] portal10.
      </p>
      <p>
        RDF Sequences The RDF Schema (RDFS) recommendation [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] defines the
container classes rdf:Bag, rdf:Alt, rdf:Seq to represent collections. Since
rdf:Bag is intended for unordered elements, and rdf:Alt for “alternative”
containers whose typical processing will be to select one of its members, these two
models do not fit our sequence definition, and thus we do not include them
among our candidates. Conversely, we do consider RDF Sequences: collections
represented by rdf:Seq and ordered by the properties rdf:_1, rdf:_2, rdf:_3,
... instances of the class rdfs:ContainerMembershipProperty (see Figure 1).
      </p>
      <sec id="sec-5-1">
        <title>8 https://www.w3.org/standards/</title>
      </sec>
      <sec id="sec-5-2">
        <title>9 http://ontologydesignpatterns.org 10 https://lov.linkeddata.es/dataset/lov/</title>
        <p>
          Properties. RDF Sequences indicate membership through various properties,
which are used in triples in predicate position. Ordering of elements is absolute
in such predicates through an integer index after an underscore (“_”).
RDF Lists The RDFS recommendation [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] also defines a vocabulary to describe
closed collections or RDF Lists. Such lists are members of the class rdf:List.
Resembling LISP lists, every element of an RDF List is represented by two
triples: &lt; Lk rdf:first Ek &gt;, where Ek is the k-th element of the list; and &lt;
Lk rdf:rest Lk+1 &gt;, representing the rest of the list (in particular, rdf:nil to
end the list) (see Figure 2).
        </p>
        <p>Properties. RDF Lists indicate membership using a unique property rdf:first
in predicate position. Ordering of elements is relative to the use of the rdf:rest
property, and given by the sequential forward traversal of the list.</p>
        <p>
          URI-based Lists A more practical approach followed by many
RDF datasets [
          <xref ref-type="bibr" rid="ref22 ref4">4, 22</xref>
          ] consists of establishing list membership through
an explicit property or class membership, and assigning order by
a unique identifier embedded in the element’s URI. For instance,
the triple &lt;http://ld.zdb-services.de/resource/1480923-0&gt; a
&lt;http://purl.org/ontology/bibo/Periodical&gt; indicates that the
subject belongs to a list of periodicals with list order 14809234; the triple
&lt;http://purl.org/midi-ld/piece/8cf9897/track00&gt; midi:hasEvent
&lt;http://purl.org/midi-ld/piece/8cf9897/track00/event0006&gt; identifies
the 7th event in a MIDI track [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ] (see Figure 3).
        </p>
        <p>Properties. URI-based lists indicate membership through the use of class
membership or through properties. Order is absolute and given by URI-embedded
sequential identifiers.</p>
        <p>
          Number-based Lists Another practical model, used e.g. in the Sequence
Ontology/Molecular Sequence Ontology (MSO) [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ],11 also uses class
membership or object properties to specify the elements that belong to a list, but
use a literal value in a separate property to indicate order. For instance, the
triple &lt;http://purl.org/midi-ld/piece/8cf9897/track00&gt; midi:hasEvent
&lt;http://purl.org/midi-ld/piece/8cf9897/track00/event0006&gt;
indicates that the object belongs to a list of events; and the additional
11 https://github.com/The-Sequence-Ontology/Specifications/blob/master/
gff3.md
triple &lt;http://purl.org/midi-ld/piece/8cf9897/track00/event0006&gt;
midi:absoluteTick 6 indicates that the event has index 6 (see Figure 4).
        </p>
        <p>Properties. Number-based lists indicate membership through the use of
class membership or through properties. Order is absolute and given by an integer
index in a literal as an object of an additional property.</p>
        <p>Fig. 6: The Sequence Ontology Pattern</p>
        <p>Fig. 5: Timestamp-based list model. model.</p>
        <p>
          Timestamp-based Lists Similarly to Number-based lists, other lists
modeled by e.g. the Simple Event Model (SEM) [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ], use timestamp
markers instead of integer indexes to indicate the time in which the
element of the list occurs. This is particularly useful in event-based
applications, in which order clashes in the list are of lesser importance,
as long as the timestamp order is preserved. For instance, the triple
&lt;http://purl.org/midi-ld/piece/8cf9897535d79e68c33a3076aa06d073/tr
ack00/event0006&gt; midi:absoluteTime 0e+00 indicates that the 7th event
occurs at the start of the list, possibly simultaneously with other events (see
Figure 5).
        </p>
        <p>Properties. Timestamp-based lists indicate membership through the use
of class membership or through properties. Order is absolute and given by a
timestamp in a literal as an object of an additional property.</p>
        <p>
          Sequence Ontology Pattern A number of models use general
RDF/RDFS/OWL semantics to model sequences in domain specific ways. For example, the
Time Ontology [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ] and the Timeline Ontology12 offer a number of classes and
properties to model temporality and order, including timestamps (see Section 5),
but importantly also before/after relations. The Sequence Ontology Pattern13
(SOP) is an ontology design pattern [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] that “represents the ’path’ cognitive
schema, which underlies many different conceptualizations: spatial paths, time
lines, event sequences, organizational hierarchies, graph paths, etc.”. We select
SOP as an abstract model representing this group of list models (see Figure 6).
        </p>
        <p>Properties. SOP lists indicate list membership through properties. Order
is relative and given by the sequential forward or backward traversal of the
sequence.
12 http://motools.sourceforge.net/timeline/timeline.html\#
13 http://ontologydesignpatterns.org/wiki/Submissions:Sequence</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Formalisation</title>
      <p>
        In this phase we aim at formally represent each solution in RDF/SPARQL in
order to answer the requirements. We consider that in competency questions
CQ1 and CQ3, we aim at returning a list of URIs representing ordered set of
items, while we aim at returning a single item for CQ2. Particularly, we report on
how each way of representing a MIDI Linked Data event sequence can be queried
in SPARQL. Therefore, we use the vocabularies of the List.MID benchmark
datasets, developed following our methodology [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]. In what follows, the target
graph contains a single list linked to an entity of type midi:Track including the
ordered collection of MIDI events. The result set is expected to be the projection
of the single variable ?entity. For simplicity, we name the target list :list and
omit redundant aspects of the query (such as SELECT and FROM clauses). In
order to ensure minimality, according to our methodology, we omit to include
additional application-specific data, e.g. attributes and values of the MIDI event.
RDF Sequences (Seq). This modelling solution relies on a predicate for indexing
the position of the item in the list. Although each predicate has the capability of
representing a cardinal number, the predicate itself cannot be used for ordering
operations as its encoding as URI has the effect of being ordered as string. In
order to answer the first CQ1 (All Ordered) it is necessary to rely on the ORDER
BY operator and extract the cardinal number from the predicate URI string as
follows (where ?seq is the container membership property):
WHERE { : l i s t a midi : Track ; midi : hasEvents [ ? seq ? event ] .
      </p>
      <p>BIND ( xsd : i n t e g e r (SUBSTR( s t r (? seq ) , 4 5 ) ) AS ? index )
} ORDER BY ? index
In principle, the Nth Lookup (CQ2) could be resolved by replacing the ?seq
variable with the property _N (for example, rdf:_995 for the 995th element
of the list). However, containers are meant to be open-ended. The specification
does not declare that the predicate number represents anything other than the
order of the elements in the rdf:Seq. Therefore, it would be unsafe to assume
that the range of rdf:_5 to be the item in fifth position. The minimal and safe
approach would be to operate on the sequence at query time:
WHERE { : l i s t a midi : Track ; midi : hasEvents [ ? seq ? event ] .</p>
      <p>BIND ( xsd : i n t e g e r (SUBSTR( s t r (? seq ) , 4 5 ) ) AS ? index )
} ORDER BY ? index OFFSET 995 LIMIT 1
A similar approach can be adopted to select an ordered range (CQ3).
RDF Lists (List). This modelling solution requires to be queried with a property
path in order to traverse the list from the root to the tree to the last item.
However, there is no guarantee that the projections of the ?event variable would
keep the sequence order. In order to derive the index from the data, we need to
perform aggregation and ordering, as follows:
SELECT ? event ( count (? s t e p ) as ? index )
WHERE {
: l i s t a midi : Track ; midi : hasEvents ? e vent s .
? even ts r d f : r e s t ? s t e p . ? s t e p r d f : r e s t ? e l t .
? e l t r d f : f i r s t ? event
} GROUP BY ? event ORDER BY ? index
In our benchmark, like in many of the use cases observed in our survey, entities
are directly attached to the list. However, an entity can be shared among lists
and therefore the list element itself may refer to it indirectly, for example with
a pattern such as _:bnode123 rdf:first/rdf:value ?event, resulting in an
expansion of the given query. CQ2 could be implemented by specifying a path
of rdf:rest/rdf:first as long as the position of the item we want to retrieve.
However, this would require to write a different query for each item and result in
a large query string that could be possibly rejected by the Web server. Therefore,
we keep the same query layout for CQ2 and CQ314.</p>
      <p>URI-based lists (Uri). This practical approach is very economic and can be
expressed as follows:
WHERE { [ ] a midi : Track ; midi : hasEvent ? event .</p>
      <p>BIND ( xsd : i n t e g e r (SUBSTR( s t r (? event ) , 7 7 ) ) AS ? id ) } ORDER BY ? i d
This query can be expanded to include OFFSET and LIMIT clauses to satisfy CQ2
and CQ3.</p>
      <p>Number-based Lists (Prop_number) and Timestamp-based Lists (Prop_time)
This solution relies on a data value incorporating a numeric index. The main
difference here is that an additional triple pattern needs to be employed, although
the value is meant to be a number and can be passed as-is to the ORDER BY
clause:
WHERE { [ ] a midi : Track ; midi : hasEvent ? event .</p>
      <p>? event midi : a b s o l u t e T i c k ? t i c k . } ORDER BY ? t i c k
where ?tick is of datatype xsd:integer. Timestamp-based Lists are similar
to Prop_number but with a time datatype. Additionally, they use a different
approach as the numeric value is not necessary an incremental index and can
also include multiple entities in the same position.</p>
      <p>Sequence Ontology Pattern (SOP) The sequence ontology pattern uses the
predicates precedes and follows to model the sequence. The query can be formulated
combining two triple patterns. However, we need to combine this solution with
an index-based on, for example, the Uri pattern, in order to ensure that the
order is preserved in the output.</p>
      <p>WHERE { [ ] a midi : Track ; midi : hasEvent ? event .</p>
      <p>? event sequence : p r e c e d e s ? ? next_event .
? next_event sequence : f o l l o w s ? ? event .</p>
      <p>BIND ( xsd : i n t e g e r (SUBSTR( s t r (? event ) , 7 7 ) ) AS ? id )
} ORDER BY ? i d
We can conclude that all the modelling solution will need to rely on the SPARQL
ORDER BY clause and that their main difference is in the way the index is
represented in the data and in the necessary operations to serve it for sorting15.
14 Some triple stores supports the operator rdf:rest{n} targeting the n-th item in the
path. However, this syntax, introduced during the development of SPARQL 1.1, was
discarded in the final specification.
15 Although in some cases a system may return triples reflecting the order they had at
insertion time, we cannot assume that triples are returned respecting any particular
order. Therefore, the ORDER BY clause is necessary in all cases.
In addition, although some of the models explored accept ties, i.e. lists with
multiple items in the same position, these are not considered in this work.
7</p>
    </sec>
    <sec id="sec-7">
      <title>Evaluation</title>
      <p>
        Each model was mapped to a number of queries covering the three competency
questions listed in Section 4. We analysed the MIDI linked data endpoint for
deciding the size of the benchmark dataset: the List.MID benchmark [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]. The
dataset has approximately 300K midi songs including an average of 5 tracks each
for a total of 1.5M tracks. A single track contains an ordered list of events, and
these are the ones we are going to query in our benchmark. Very long tracks
are rare in the database and only 10 of them have more the 120k events. We
prepared a dataset for each modelling solution and 5 MIDI tracks of different
sizes: 1k, 30k, 60k, 90k, and 120k triples respectively. Therefore, there will be a
dataset with a list of size 1k implementing, for example, the Seq pattern, one of
size 30k, and so on for each model type, for a total of 25 datasets.
      </p>
      <p>We performed experiments with multiple triple stores. Each database was
prepared by loading all the datasets in different named graphs. At runtime, the
query was rewritten to target a specific named graph16.</p>
      <p>Experiments are performed with the following databases and only considering
the SPARQL RDF entailment regime:
– Virtuoso Open Source V7, configured to expect 12G of free RAM, no
additional rules enabled except the basic SPARQL 1.1.
– Blazegraph 2.1.5, Java VM configured with 12G of max heap, without
reasoning or inferencing support rather then the plain SPARQL 1.1 support.
– Apache Fuseki v3 on TDB, Java VM with 12G of max heap.
– Apache Fuseki v3 In Memory. This is the same system as the TDB-based
but using a full in-memory setting, also with 12G of max heap space.</p>
      <p>The client application performing the queries and measuring the response
time resides on the same machine as the database. This is to avoid the impact of
network bandwidth on the overall response time. It is worth reminding that the
objective of the experiments is not the compare the various data management
solutions but to compare the performance of the different modelling practices
and their scalability with lists of growing sizes. Experiments are executed on a
Linux VM with Intel(R) Xeon(R) CPU E5-2640 v4 @ 2.40GHz 8-core and 32G
RAM. During the experiments, no other application was running on the instance
rather then the experiment’s client process and the database server.</p>
      <p>To summarise, the dimensions considered in our experiments are therefore:
(a) Model (one of): Seq, List, Number Index, Time Index, ODP, URI Index (b)
Dataset Size (one of): 1k, 30k, 60k, 90k, 120k (c) Query (one of): All, Lookup,
Range (d) Database (one of): Virtuoso, Blazegraph, Fuseki-Tdb, Fuseki-Mem.
16 One may argue that the use of an index on the graph component may affect
performance. However, whatever the impact of using the FROM clause is, it will be
equally distributed in the various models.</p>
      <p>In what follows we report on overall response time, meaning the amount
of time the client had to wait before obtaining the complete answer. Each
experiment was repeated 10 times, reported measures refer to average values. A
timeout of 300 seconds has been set, although it was never reached. We also
analysed standard deviation and in most cases the value was below 10% of the
total time. The cases where it was higher relate to very fast response times
(below the second) and are therefore not problematic. We can conclude that the
reported averages are significant and represent well the response time of a client
application querying lists of that form and size17.</p>
      <p>
        Tables 1d-1l report the average values response time. Figures 7a-7l report
on scalability. The most inefficient method is the one relying on rdf:List, for
which most of the experiments timed out and a number of experiments with
Fuseki failed with a server error (probably due to excessively deep property
path in the query). The SOP method is also not very efficient. The performances
of the URI, prop_number, and prop_time methods are very similar, although
they behave slightly different with the various triple stores. All models scale
linearly with the amount of data (except for the failed experiments). Results
are coherent for all three CQs and demonstrate a clear trend among different
engines. Supplementary material is available for reproducibility [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
8
      </p>
    </sec>
    <sec id="sec-8">
      <title>Discussion and conclusions</title>
      <p>The experiments demonstrate our hypothesis that the efficiency of retrieving
sequential linked data depends heavily on how they are structured. Indeed,
modelling practices have an impact in the performance and availability of sequential
retrieval. Crucially, the behavior of the various models is consistent among
different triple stores and allow us to distinguish design patterns that perform
well in practice from others that perform worse —from the point of view of the
identified CQs. The most efficient ways of representing order is by using indexes
in values like in prop_number and prop_timestamp.Also indexes hidden in URIs
perform well, both on the entity (subject/object) and on the rdf:Seq method
(predicate). The reasons are probably related to database indexes on the basic
triple patterns18 However, embedding the order semantics in string URIs does
not seem an elegant solution. Using the rdf:Seq pattern may be a reasonable
solution iff SPARQL engines would account of the special meaning of container
membership properties and sort those predicate URIs accordingly. A small
update to the SPARQL specification seems a reasonable solution. With the given
17 We also collected information about RAM usage and CPU. We could not observe
particular differences in those, except in the case of Apache Fuseki on queries with
multiple joins and property paths, mainly related to the SOP pattern. However, here
we focus on the performance with respect to client applications and not on studying
resource consumption on the server side.
18 Fuseki behaves a bit different and seems to badly tolerate many joins, generally. Also,
on Fuseki URI processing is faster than picking indexes in values (number/date).
However, here we focus on trends observed among the various database engines and
do not discuss specific differences between them.
Model
1k 30k 60k
(a) Q1: Blazegraph
(b) Q1: Virtuoso
(c) Q1: Apache Fuseki (TDB)</p>
      <p>(d) Q1: Apache Fuseki (In-Memory)
(e) Q2: Blazegraph
(f) Q2: Virtuoso
(g) Q2: Apache Fuseki</p>
      <p>(h) Q2: Apache Fuseki In-Memory
(i) Q3: Blazegraph
(j) Q3: Virtuoso
(k) Q3: Apache Fuseki (l) Q3: Apache Fuseki In-Memory</p>
      <p>Fig. 7: Performance scalability
results, the methods relying on rdf:List (the recommended standard)
and SOP (a high-quality ontology engineering solution ) clearly
underperform in commonly used triplestores and, under this circumstances,
their use should be discouraged for publishing lists as Linked Data.</p>
      <p>However, in this paper we only measure query-ability of Linked Data
leaving out other dimensions of analysis such as expressivity of the model at the
logic level, compliance with high-level ontological requirements, and compliance
to entailment regimes. Particularly, we do not consider data management
operations such as adding or removing elements from a list. For those operations,
solutions that do not store an index such as rdf:List or SOP would require less
operations, possibly overturning the final judgement. However, these aspects are
left to future work. With the aid of a task-based approach for benchmark
development we were able to study pragmatically how to better publish sequential
linked data and identified a fundamental problem of typical, recommended
solutions. Intuitively, we can argue that there is a trade-off between incorporating
an index in the data and allowing for easier and faster data management. We
aim at expanding our experiments to also consider scenarios of Linked Data
management and benchmark operations for list manipulations. Finally, we
presented a preliminary work on model-centric and task-oriented benchmarks for
Linked Data. The sketched methodology allowed us to identify design patterns
that could negatively affect SPARQL endpoints availability using an approach
that is independent from the concrete modelling problem. We aim at evaluating
such methodology with more modelling scenarios, such as tabular structures,
sets, or n-ary relations.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Aluç</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          , et al:
          <article-title>Diversified Stress Testing of RDF Data Management Systems</article-title>
          .
          <source>In: The Semantic Web - ISWC</source>
          . pp.
          <fpage>197</fpage>
          -
          <lpage>212</lpage>
          . Springer, Cham (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Angles</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          , et al:
          <article-title>The linked data benchmark council: a graph and rdf industry benchmarking effort</article-title>
          .
          <source>ACM SIGMOD Record</source>
          <volume>43</volume>
          (
          <issue>1</issue>
          ) (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Beckett</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          , et alBeek:
          <article-title>RDF 1.1 Turtle - Terse RDF Triple Language</article-title>
          .
          <source>Tech. rep., World Wide Web Consrotium</source>
          (
          <year>2014</year>
          ), https://www.w3.org/TR/turtle/
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Beek</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          , et al:
          <article-title>LOD Laundromat: a uniform way of publishing other people's dirty data</article-title>
          .
          <source>In: Semantic Web - ISWC</source>
          . pp.
          <fpage>213</fpage>
          -
          <lpage>228</lpage>
          . Springer (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Bizer</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schultz</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          : The Berlin SPARQL Benchmark.
          <source>International Journal on Semantic Web &amp; Information Systems</source>
          <volume>5</volume>
          (
          <issue>2</issue>
          ),
          <fpage>1</fpage>
          -
          <lpage>24</lpage>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Brickley</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guha</surname>
          </string-name>
          , R.:
          <source>RDF Schema 1.1. Tech. rep., World Wide Web Consrotium</source>
          (
          <year>2014</year>
          ), https://www.w3.org/TR/rdf-schema/
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Buil-Aranda</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hogan</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Umbrich</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vandenbussche</surname>
          </string-name>
          , P.Y.:
          <article-title>Sparql webquerying infrastructure: Ready for action</article-title>
          ? In: International Semantic Web Conference. pp.
          <fpage>277</fpage>
          -
          <lpage>293</lpage>
          . Springer (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Ciccarese</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Peroni</surname>
            ,
            <given-names>S.:</given-names>
          </string-name>
          <article-title>The collections ontology: creating and handling collections in owl 2 dl frameworks</article-title>
          .
          <source>Semantic Web</source>
          <volume>5</volume>
          (
          <issue>6</issue>
          ),
          <fpage>515</fpage>
          -
          <lpage>529</lpage>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Conrads</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          , et al:
          <article-title>Iguana: A generic framework for benchmarking the read-write performance of triple stores</article-title>
          .
          <source>In: The Semantic Web - ISWC</source>
          <year>2017</year>
          (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Daga</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Blomqvist</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gangemi</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Montiel</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nikitina</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Presutti</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Villazon-Terrazas</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <source>D2</source>
          .
          <article-title>5.2: pattern based ontology design: methodology and software support</article-title>
          .
          <source>Tech. rep., NeOn Project. IST-2005-027595</source>
          . (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Daga</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Meroño-Peñuela</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Software and data for the experiments</article-title>
          (
          <year>Jul 2019</year>
          ). https://doi.org/10.5281/zenodo.3355543
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Dodds</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Davis</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          :
          <article-title>Linked data patterns</article-title>
          . Online: http://patterns. dataincubator. org/book (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Eilbeck</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          , et al:
          <article-title>The sequence ontology: a tool for the unification of genome annotations</article-title>
          .
          <source>Genome biology 6(5)</source>
          (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Gangemi</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Ontology Design Patterns for Semantic Web Content</article-title>
          .
          <source>In: The Semantic Web - ISWC</source>
          . Springer (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Görlitz</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Thimm</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Staab</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          : Splodge:
          <article-title>Systematic generation of sparql benchmark queries for linked open data</article-title>
          .
          <source>In: International Semantic Web Conference</source>
          . pp.
          <fpage>116</fpage>
          -
          <lpage>132</lpage>
          . Springer (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Grüninger</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fox</surname>
            ,
            <given-names>M.S.:</given-names>
          </string-name>
          <article-title>The role of competency questions in enterprise engineering</article-title>
          .
          <source>In: Benchmarking-Theory and practice</source>
          , pp.
          <fpage>22</fpage>
          -
          <lpage>31</lpage>
          . Springer (
          <year>1995</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Guo</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pan</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Heflin</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>LUBM: A Benchmark for OWL Knowledge Base Systems</article-title>
          .
          <source>Journal of Web Semantics - Science, Services and Agents on the World Wide Web</source>
          <volume>3</volume>
          (
          <issue>2</issue>
          ),
          <fpage>158</fpage>
          -
          <lpage>182</lpage>
          (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Hage</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          , et al:
          <article-title>Design and use of the simple event model (sem)</article-title>
          .
          <source>Web Semantics: Science, Services and Agents on the World Wide Web</source>
          <volume>9</volume>
          (
          <issue>2</issue>
          ) (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Hobbs</surname>
            ,
            <given-names>J.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pan</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Time ontology in OWL</article-title>
          .
          <source>W3C working draft 27</source>
          ,
          <issue>133</issue>
          (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Hyland</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          , et al:
          <article-title>Best practices for publishing linked data</article-title>
          .
          <source>Tech. rep., W3C</source>
          Working Group Note (
          <year>2014</year>
          ), https://www.w3.org/TR/2014/NOTE-ld-bp-
          <volume>20140109</volume>
          /
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Ley</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>The dblp computer science bibliography: Evolution, research issues, perspectives</article-title>
          .
          <source>In: International symposium on string processing and information retrieval</source>
          . pp.
          <fpage>1</fpage>
          -
          <lpage>10</lpage>
          . Springer (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Meroño-Peñuela</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , et al.:
          <article-title>The MIDI Linked Data Cloud</article-title>
          .
          <source>In: The Semantic Web - ISWC 2017</source>
          . vol.
          <volume>10587</volume>
          , pp.
          <fpage>156</fpage>
          -
          <lpage>164</lpage>
          (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Meroño-Peñuela</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Daga</surname>
            ,
            <given-names>E.: List.</given-names>
          </string-name>
          <article-title>MID: A MIDI-Based Benchmark for Evaluating RDF Lists</article-title>
          .
          <source>In: The Semantic Web - ISWC</source>
          <year>2019</year>
          (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Morsey</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , et al:
          <article-title>Dbpedia sparql benchmark-performance assessment with real queries on real data</article-title>
          .
          <source>In: The Semantic Web - ISWC</source>
          . Springer (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <surname>Pérez</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Arenas</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gutierrez</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Semantics and Complexity of SPARQL</article-title>
          .
          <source>In: The Semantic Web - ISWC</source>
          (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <surname>Saleem</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , et al:
          <article-title>LSQ: Linked SPARQL Queries Dataset</article-title>
          .
          <source>In: The Semantic Web - ISWC 2015. LNCS</source>
          , vol.
          <volume>9367</volume>
          . Springer (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          27.
          <string-name>
            <surname>Schaible</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , et al:
          <article-title>Survey on common strategies of vocabulary reuse in linked open data modeling</article-title>
          .
          <source>In: European Semantic Web Conference</source>
          . Springer (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          28.
          <string-name>
            <surname>Schmidt</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , et al:
          <article-title>SPˆ 2Bench: a SPARQL performance benchmark</article-title>
          .
          <source>In: Data Engineering</source>
          ,
          <year>2009</year>
          . ICDE'09.
          <string-name>
            <surname>IEEE</surname>
          </string-name>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          29.
          <string-name>
            <surname>Schmidt</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , et al:
          <article-title>Foundations of sparql query optimization</article-title>
          .
          <source>In: 13th International Conference on Database Theory. ACM</source>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          30.
          <string-name>
            <surname>Schreiber</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Raimond</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          <source>: RDF 1.1 Primer. Tech. rep., World Wide Web Consrotium</source>
          (
          <year>2014</year>
          ), https://www.w3.org/TR/rdf11-primer/
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          31.
          <string-name>
            <surname>Sporny</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kellogg</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lanthaler</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>JSON-LD 1.0</article-title>
          . Tech. rep.,
          <source>World Wide Web Consrotium</source>
          (
          <year>2014</year>
          ), https://www.w3.org/TR/2014/REC-json-ld-
          <volume>20140116</volume>
          /
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          32.
          <string-name>
            <surname>Thakker</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          , et al:
          <article-title>A pragmatic approach to semantic repositories benchmarking</article-title>
          .
          <source>In: Extended Semantic Web Conference</source>
          . Springer (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          33.
          <string-name>
            <surname>Vandenbussche</surname>
          </string-name>
          , P.Y.,
          <string-name>
            <surname>Atemezing</surname>
            ,
            <given-names>G.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Poveda-Villalón</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vatant</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Linked Open Vocabularies (LOV): a gateway to reusable semantic vocabularies on the Web</article-title>
          .
          <source>Semantic Web</source>
          <volume>8</volume>
          (
          <issue>3</issue>
          ),
          <fpage>437</fpage>
          -
          <lpage>452</lpage>
          (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>