<!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>DDaatataSStrtruucctuturreessfoforrInInddeexxininggTTrripipleleTTaabblele????</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Roman Meca</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Michal Kra´tky´</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Peter Chovanec</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Filip Kˇriˇzka Roman Meca</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Michal Kratky</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Peter Chovanec</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Filip Krizka</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Computer Science</institution>
          ,
          <addr-line>VS</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>bTlicechnical University of Ostrava</institution>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2015</year>
      </pub-date>
      <volume>1343</volume>
      <fpage>13</fpage>
      <lpage>27</lpage>
      <abstract>
        <p>Semantic-based approaches are relatively new technologies. Some of these technologies are supported by specifications of W3 Consortium, i.e. RDF, SPARQL and so on. There are many areas where semantic data can be utilized, e.g. social networks, annotation of protein sequences etc. From the physical database design point of view, several index data structures are utilized to handle this data. In many cases, the well-known B-tree is used as a basic index supporting some operations. Since the semantic data are multidimensional, a common way is to use a number of B-trees to index the data. In this article, we review other index data structures; we show that we can create only one index when we utilize a multidimensional data structure like the R-tree. We compare a performance of the B-tree indices with the R-tree and some its variants. Our experiments are performed over a huge semantic database, we show advantages and disadvantages of these data structures.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        physical implementation is that a number of B-trees have to be built to support
queries over the triple table. However, there are other index data structures
capable to handle semantic data. In this article, we show that it is possible to
create only one index if we utilize a multidimensional data structure like the
Rtree [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] or some of its variants (namely the Signature R-tree [
        <xref ref-type="bibr" rid="ref30">30</xref>
        ] or the Ordered
R-tree [
        <xref ref-type="bibr" rid="ref31">31</xref>
        ]).
      </p>
      <p>
        In Section 2, we present some basic terms related to semantic technologies.
In Section 3, we describe the basic physical design for the RDF data. Section 4
describes some negative issues of the B-tree as an index data structure for the
triple table. In addition, the R-tree, R∗-tree [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], and two their variants are
described. In Section 5, we summarize the advantages and disadvantages of these
data structures for various queries over the LUBM data collection [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. Finally,
we conclude the article and outline the possibilities of our future work.
2
      </p>
    </sec>
    <sec id="sec-2">
      <title>Semantic Technologies</title>
      <p>
        In this section, we briefly introduce a theoretical basis of the RDF model [
        <xref ref-type="bibr" rid="ref32">32</xref>
        ]
and the SPARQL query language [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ] standardized by W3C. We recommend the
book [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] for a more detailed review.
2.1
      </p>
      <sec id="sec-2-1">
        <title>RDF Model</title>
        <p>
          RDF (Resource Description Framework ) is a general model representing
information on the Web; data are modeled as a directed labeled graph [
          <xref ref-type="bibr" rid="ref32">32</xref>
          ]. Each
edge represents a relationship between an object and a subject : two nodes of the
graph. The label of the edge is called property. An example of the graph is given
in Figure 1. This tuple (subject, property, object) is called an RDF triple (s,p,o).
        </p>
        <p>
          The values of each triple usually include IRI (Internationalized Resource
Identifiers) [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ] identifying an abstract or a physical resource. In [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ], the author
introduces the following definition:
Definition 1 (RDF triple). Let us assume there are pairwise disjoint infinite
sets I, B, and L, where I represents the set of IRIs, B the set of blank nodes,
and L the set of literals. We call a triple (s, p, o) ∈ (I ∪ B)I(I ∪ B ∪ L) an RDF
triple, where s represents the subject, p the predicate, and o the object of the
RDF triple.
        </p>
        <p>A triple table is a set of RDF triples; it is a representation of the RDF graph.
In Table 1, we see a fragment of the triple table to the RDF graph in Figure 1.
A triple store or an RDF database is an engine enabling to store an RDF graph
and efficient processing of queries. However, we usually require other operations
like update, insert or delete.</p>
        <p>
          Some RDF stores add a fourth element to the triple; this fourth element
contains the context of the triple [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ]. There are RDF engines enabling to manage
these quads [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ].
        </p>
        <p>
          The RDF specification [
          <xref ref-type="bibr" rid="ref32">32</xref>
          ] does not define any way how to store and index
the triple table; therefore, there are many variants of the physical design of the
triple table and we describe them in Section 3.
2.2
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>SPARQL Query Language</title>
        <p>
          Although there are many query languages for RDF data2, e.g. SPARQL/Update
(or SPALUR) [
          <xref ref-type="bibr" rid="ref38">38</xref>
          ], SPARQL 1.1 [
          <xref ref-type="bibr" rid="ref25">25</xref>
          ] is a de-facto standard query language for
RDF data. It is similar to SQL in many features. SPARQL 1.1 also includes
insert, update, and delete operations.
        </p>
        <p>
          The basic query construct of the SELECT statement includes
SELECT &lt;projection&gt; WHERE &lt;sequence of triple patterns&gt;. A variable in
SPARQL defined by the symbol ? and a name represents the main difference
compared to SQL; they define unknown values of o, s or p in a pattern as well as
a relationship among triple patterns. We distinguish four types of the SPARQL
query (for more details see [
          <xref ref-type="bibr" rid="ref25">25</xref>
          ]):
– SELECT – returns the result relation defined by the projection and patterns.
2 http://www.w3.org/2001/11/13-RDF-Query-Rules/
– ASK – similar to the SELECT query; however, it returns the boolean value;
true if the result is not empty, otherwise false.
– CONSTRUCT – allows to format own result graph over the triples returned
by the patterns.
– DESCRIBE – returns the node (and its neighbours) defined by the patterns.
        </p>
        <p>A form of &lt;pattern&gt; determines the selectivity of a query over the triple
table. We can distinguish a point query (s, p, o) returning 0 or 1 triple, or a
range query where the query (s, ∗, ∗) can returns more triples than the query
(s, p, ∗).</p>
        <p>Example 1 (SPARQL Queries).
1. SELECT ?s ?p ?o WHERE { ?s ?p ?o }</p>
        <p>This query selects the whole triple table, it represents the range query
(∗, ∗, ∗).
2. SELECT * WHERE { &lt;Blanka Vlasic&gt; &lt;jumps&gt; &lt;HighJump&gt; }
ASK { &lt;Blanka Vlasic&gt; &lt;jumps&gt; &lt;HighJump&gt; }
These two queries are similar; the SELECT query returns 0 or 1 triple, on
the other hand, the ASK query returns true in the case the triple exists in
the graph. These queries represent the point (s, p, o) query over the triple
table.
3. SELECT ?s WHERE { ?s &lt;type&gt; &lt;Jump&gt; }</p>
        <p>ASK { ?s &lt;type&gt; &lt;Jump&gt; }
CONSTRUCT ?s &lt;type&gt; &lt;Discipline&gt; WHERE { ?s &lt;type&gt; &lt;Jump&gt; }
These three queries include the same selection: the range query (∗, &lt;type&gt;,
&lt;Jump&gt;). The SELECT query returns all subjects matched by the range
query, the ASK query returns true if any triple exists in the graph, and
the CONSTRUCT query returns triples (∗, &lt;type&gt;, &lt;Discipline&gt;) for all
triples retrieved by the selection.
4. SELECT ?p ?o WHERE { &lt;organized&gt; ?p ?o }</p>
        <p>This query selects all triples matched by the range query (&lt;organized&gt;, ∗,
∗). The selectivity of this query is probably lower than the selectivity of the
queries 2 and 3; however, it is higher compared to the query 1.</p>
        <p>Moreover, the selection includes zero or more join operations. In Figure 2, we
show two queries including more join operations. A query with one join is shown
in Figure 2(a). In this SELECT, we can see two output variables o1 and o2. In
Lines 2 and 3, the range queries (*, &lt;type&gt;, *) and (*, &lt;jumps&gt;, *) are defined.
Results of these range queries are then joined using the subject represented by
the j variable and objects for variables o1 and o2 are returned.</p>
        <p>A more complex SPARQL query with join is shown in Figure 2(b). This
SELECT also contains the output variables o1 and o2. However, this query is
evaluated by a sequence of three joins: the first join involves sets defined by
queries in Lines 2 and 3, the second join involves the result of the previous join
and the result of the query in Line 4, and the last join involves the result of the
previous join and the result of the query in Line 5. The result of the complete
query includes subjects and objects for the variables s and o.
1. SELECT ?o1 ?o2 WHERE {
2. ?j &lt;type&gt; ?o1 .
3. ?j &lt;jumps&gt; ?o2
4. }
type
o1
j
(a)
jumps
o2
1. SELECT ?s ?o WHERE {
2. ?s &lt;jumps&gt; ?j1 .
3. ?j1 &lt;type&gt; ?j2 .
4. ?j2 &lt;sc&gt; ?j3 .
5. ?j3 &lt;hasWorlRecord&gt; ?o
6. }
jumps
type</p>
        <p>j1
s
j2
sc
j3</p>
        <p>
          o
(b)
hasWorlRecord
In Table 2, we show triple stores introduced from 2002 to 2014. These triple
stores include academic prototypes, commercial solutions as well as open source
projects. Although some details of their implementation are not known, we can
distinguish three basic types of the physical design for the triple table [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ]:
1. Triple Table (TT ) – in this case, triples are stored in a sequence array.
2. Property Table (PT ) – in this case, we define a tuple (s, o1, o2, . . . , on) for
properties p1, p2, . . . pn. Tuples of this schema are stored in a sequence array.
We can define more property tables in that cases the number of properties
is higher than n.
3. Vertical Partitioning (VP ) – the property table where n = 1.
Except these main approaches there are also some other variants and
improvements, for example Hierarchical Property Partitioning utilized in roStore [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ].
In some works, we distinguish the Multiple indices approach, which means that
some combinations of various indices together with a modification of the above
described types are depicted. In Table 2, we can see the B-tree and its variants
are the most commonly used data structure indexing the triple table.
3 http://www.guha.com/rdfdb/
4 http://rdfstore.sourceforge.net/
5 http://www.bigdata.com/
        </p>
        <p>Store</p>
        <p>
          JENA [
          <xref ref-type="bibr" rid="ref34">34</xref>
          ]
RDFSuite [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]
Sesame [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]
3store [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ]
        </p>
        <p>rdfDB3
RDFStore4</p>
        <p>
          Redland [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ]
AllegroGraph[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]
        </p>
        <p>Published upLdasatte</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Index Data Structures</title>
      <p>
        The B-tree is an one-dimensional paged data structure supporting point and
one-dimensional range queries as well as update operations [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. As result, in
the case we want to support a general range query without a sequential scan of
all leaf nodes, we have to create more indices.
      </p>
      <p>
        For example, in the case of a B-tree with the compound key (s, p, o), we
can effectively utilize range queries (s, p, ∗) and (s, ∗, ∗). On the other hand,
fast processing of the range query (∗, p, o) demands a sequential scan over all
leaf nodes of the B-tree. To cover all combination of searched dimensions with
efficient range query execution, three B-trees have to be created (see Table 3).
Consequently, this solution means that the size of indices is probably higher
than the table size. This issue is even more evident in the case of the Quad
table; in Table 4, we see that we need 6 indices to cover all range queries over
quads. There are two problematic issues related to this technique: the higher
space overhead and the additional overhead of the update operations since more
indices have to be updated.
Since the multidimensional R-tree [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] supports a general multidimensional range
query, we can use it as a solution of the above mentioned problems instead of
a sequence scan in the B-tree. The R-tree can be thought of as an extension of
the B-tree in a multidimensional space. It corresponds to a hierarchy of nested
n-dimensional minimum bounding rectangles (MBR). If N is an interior node,
it contains couples of the form (Ri, Pi), where Pi is a pointer to a child of the
node N . If R is its MBR, then the rectangles Ri corresponding to the children
Ni of N are contained in R. Rectangles at the same tree level can overlap. If N
is a leaf node, it contains couples of the form (Ri, Oi), so called index records,
where Ri contains a spatial object Oi.
      </p>
      <p>
        The split algorithm has the significant affect on the index performance. Three
split techniques (Linear, Quadratic, and Exponential ) proposed in [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] are based
on a heuristic optimization. The Quadratic algorithm has turned out to be the
most effective and other improved versions of R-trees are based on this method.
An MBR can overlap another MBR in the same level of the tree; the probability
increases linearly with increasing data dimension. This effect is known as curse
of dimensionality [
        <xref ref-type="bibr" rid="ref43">43</xref>
        ].
      </p>
      <p>
        There are many variants of the R-tree, e.g. R∗-trees [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], R+-tree [
        <xref ref-type="bibr" rid="ref39">39</xref>
        ]. The
R∗-tree [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] differs from the R-trees mainly in the insertion algorithm. Although
original R-tree algorithms tried only to minimize the area covered by MBRs,
the R*-tree algorithms try to minimize overlapping between MBRs at the same
levels and maximize the storage utilization. The R+-tree [
        <xref ref-type="bibr" rid="ref39">39</xref>
        ] is a variant of the
R-tree which allows no overlap between regions corresponding to nodes at the
same tree level; however, an item can be stored in more than one leaf node.
      </p>
      <p>
        Since some intervals of a range query include only one value in the case of
the triple table, we call the query as the narrow range query [
        <xref ref-type="bibr" rid="ref30">30</xref>
        ]. Therefore,
we utilize the Signature R-tree [
        <xref ref-type="bibr" rid="ref30">30</xref>
        ] allowing to handle the range query more
efficiently than the R-tree and its variants. Moreover, we use the Ordered
Rtree [
        <xref ref-type="bibr" rid="ref31">31</xref>
        ] since we can define an ordering of attributes. These data structures are
described in the following sections.
4.3
      </p>
      <sec id="sec-3-1">
        <title>Signature R-tree</title>
        <p>
          The Signature R-tree [
          <xref ref-type="bibr" rid="ref30">30</xref>
          ] contains MBRs in inner nodes (we suppose point
data in leaf nodes) and one signature related to each MBR. The signature is
created for tuples inserted in the subtree related to each MBR. As result, we can
use two types of filtering when a range query scans the tree: the first filtering
method tests whether an MBR is intersected by a query rectangle and the second
filtering method tests whether a signature can include tuples of the query. As
result, the Signature R-tree reads a lower number of nodes during the range
query processing. This R-tree variant is however proposed only for point data
and narrow range queries.
4.4
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>Ordered R-tree</title>
        <p>
          The Ordered R-tree [
          <xref ref-type="bibr" rid="ref31">31</xref>
          ] is a simple combination of the R-tree and the B-tree.
It means, we can use a general multidimensional range query, however we can
define an ordering for tuples inserted in the tree. Evidently, we can define only
one ordering in one tree. There are two consequences:
1. For some range queries (corresponding to ordering defined for the tree), all
leaf nodes intersected by the query rectangle include only result tuples. It is
not generally true for the R-tree and its variants, but the range query of the
B-tree provides the same behaviour.
2. We get tuples of the result sorted and it is not necessary to sort them after
the range query is processed.
        </p>
        <p>In this article, we utilize mainly the first property.
5</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Experiments</title>
      <p>
        In our experiments6, we compare the B-tree, as the main index data structure
utilized in semantic DBMS, with the R-tree7, Signature R-tree, and Ordered
Rtree. All index data structures are implemented in C++8. We utilize a generated
synthetic data collection called LUBM including 133,573,856 triples [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ], the size
of the text file is 22.2 GB.
      </p>
      <p>We test the performance of point and range queries processed over the index
data structures when a SPARQL query is evaluated. We use 5 groups of queries
determined by the selectivity (see Table 5)9. QG5 represents a sequence of point
queries processed during a join operation. In the case of QG1 and QG2, it is
necessary to repeat a sequence of queries since the processing time of one query
is unmeasurable. The number of iterations is written in the column #Iteration
of the table. The column #Queries contains a number of various queries in one
query group.
6 We run our experiments on 2 x Intel Xeon E5 2690 2.9GHz and 300GB RAM memory,</p>
      <p>OS Windows Server 2008.
7 More precisely, the R∗-tree has been tested.
8 A part of the RadegastDB framework developed by DBRG – http://db.cs.vsb.cz/
9 A complete list of queries can be found in http://db.cs.vsb.cz/</p>
      <p>TechnicalReports/indices for rdf data-query.pdf</p>
      <p>We built the B-trees, the R-tree, the Signature R-tree, and the Ordered
R-trees for the test data collection10. In Table 6 and Figure 3, we see basic
characteristics of these indices. Since these data structures include string ids
instead of strings, a term index is built. In the case of the Ordered R-tree, we
do not need more trees like in the case of the B-tree, however, in this article, we
want to test whether it is possible to find an optimal ordering for the Ordered
R-tree, therefore we build the tree for more orderings of the attributes. We can
see that the B-tree size is up-to 3× higher than the size of the R-tree-based
indices. The R-tree is build in 58% of the B-tree build time. On the other hand,
the build time for other R-tree-based indices is up-to 2× less efficient compared
to the B-tree.</p>
      <p>Index Data Structure #Nodes Size [GB] Build Time [s]
Term index 4,543,671 8.67 3,794.7
Ordered R-tree ((so,, os,, pp))
10 The page size is 2,048 B for all data structures.</p>
      <p>In Figure 4, we can see the query processing time for all query groups; the
processing time is the average time of all queries in one group. Similarly,
Figure 5 includes DAC for all query groups. Evidently, the B-tree provides the most
efficient performance especially in the case of the higher selectivity. The reason
of this result is the minimal DAC of the B-tree since only leaf nodes
including result tuples are scanned. In the case of the lower selectivity (see GP4 in
Figure 4), results of all index data structures are similar.</p>
      <p>GP1</p>
      <p>GP2</p>
      <p>GP3</p>
      <p>GP4</p>
      <p>GP5</p>
      <p>We see that the Signature R-tree and the Ordered R-tree outperform the
R-tree in most cases. Although the average processing time of the Signature
Rtree is lower compared to the Ordered R-tree, we can find a query in each query
group where it exists an ordering of the Ordered R-tree such that the Ordered
R-tree outperforms the Signature R-tree. Let us consider query processing times
in Figure 6. In the case of Q1 (S=’AssociateProfessor’, P=’type’, O=*),
the Ordered R-trees SPO and SOP outperform the Signature R-tree and other
Ordered R-trees, however in the case of Q7 (S=*, P=’PublicationAuthor’,
O=’AssistentProfessor’) the performance of these Ordered R-trees is the
lowest. Similarly, in the case of Q11 (S=*, P=*, O=’Course2’), the Ordered R-tree
OPS outperforms other R-tree variants and its performance is the same as the
performance of the B-tree. Similarly, in the case of Q14 (S=*, P=’worksFor’,
O=*), the Ordered R-tree SOP outperforms other R-tree variants. However, we
must keep in mind that this effect depends on a query and a concrete ordering
of the Ordered R-tree.</p>
      <p>Although, it is clear that the B-tree provides the most efficient processing
time, there are some improvements of multidimensional data structures. The
first one, the index size of a multidimensional data structure is up to 3× lower
the B-tree index size. The second one, in the case of the B-tree it is necessary
to change ordering of values in a triple when a query processor want to use an
index with different ordering than another index returns, it means an additional
time overhead in this case.
1000,000000
100,000000
10,000000
1,000000
0,100000
0,010000
0,001000
0,000100
0,000010
0,000001</p>
      <p>As result, let us consider a workload including queries accessing the most
tree nodes. If the cache size is lower than the number of B-tree nodes, a
multidimensional data structure would provide the higher performance than the B-tree
in the case the cache includes all nodes of the multidimensional data structure.</p>
    </sec>
    <sec id="sec-5">
      <title>Conclusion</title>
      <p>In this article, we compared the performance of the B-tree with the R-tree, the
Signature R-tree, and the Ordered R-tree for the triple table and point and range
queries processed during the evaluation of a SPARQL query. The Signature
Rtree and the Ordered R-tree outperform the R-tree for most queries. Although
the average processing time of the Signature R-tree is lower compared to the
Ordered R-tree, in each query group, we can find a query where there is such an
ordering of the Ordered R-tree outperforming the Signature R-tree.</p>
      <p>The B-tree provides the most efficient processing time; the average processing
time of the B-tree is 74% of the Signature R-tree’s processing time. However,
there are some specific improvements of multidimensional data structures. The
first one, index size of a multidimensional data structures is up to 3× lower than
the B-tree index size. The second one, in the case of the B-tree it is necessary
to change ordering of values in each triple when a query processor want to use
an index with different ordering than another index returns. Consequently, it
means an additional time overhead of the query processing.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>J.</given-names>
            <surname>Aasman</surname>
          </string-name>
          .
          <article-title>Allegro Graph: RDF Triple Database</article-title>
          .
          <source>Tech. rep. Technical Report 1</source>
          ,
          <string-name>
            <surname>Franz</surname>
            <given-names>Incorporated</given-names>
          </string-name>
          ,
          <year>2006</year>
          . url: http://www.franz.com/agraph/ allegrograph/.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>D.J.</given-names>
            <surname>Abadi</surname>
          </string-name>
          et al. “
          <article-title>SW-Store: a vertically partitioned DBMS for semantic web data management”</article-title>
          .
          <source>In: The VLDB Journal 18.2</source>
          (
          <issue>2009</issue>
          ), pp.
          <fpage>385</fpage>
          -
          <lpage>406</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>S.</given-names>
            <surname>Alexaki</surname>
          </string-name>
          et al. “
          <article-title>The ICS-FORTH RDFSuite: Managing voluminous RDF description bases”</article-title>
          .
          <source>In: Proceedings of 2nd Internacional Workshop on the Semantic Web (SemWeb'01)</source>
          .
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>M.</given-names>
            <surname>Atre</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Srinivasan</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.A.</given-names>
            <surname>Hendler. BitMat: A Main Memory RDF Triple</surname>
          </string-name>
          <article-title>Store</article-title>
          .
          <source>Tech. rep</source>
          .
          <year>2009</year>
          . url: http://www.cs.rpi.edu/~atrem/ bitmat_techrep.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>Reto</given-names>
            <surname>Bachmann-Gmur</surname>
          </string-name>
          .
          <source>Instant Apache Stanbol. Packt Publishing Ltd</source>
          ,
          <year>2013</year>
          . isbn:
          <fpage>978</fpage>
          -1-
          <fpage>78328</fpage>
          -123-7.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>Amos</given-names>
            <surname>Bairoch</surname>
          </string-name>
          et al. “
          <article-title>The universal protein resource (UniProt)”</article-title>
          .
          <source>In: Nucleic acids research</source>
          <volume>33</volume>
          (
          <year>2005</year>
          ), pp.
          <fpage>D154</fpage>
          -
          <lpage>D159</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>D.</given-names>
            <surname>Beckett</surname>
          </string-name>
          . “
          <article-title>The design and implementation of the Redland RDF application framework”</article-title>
          .
          <source>In: Computer Networks 39.5</source>
          (
          <issue>2002</issue>
          ), pp.
          <fpage>577</fpage>
          -
          <lpage>588</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>Norbert</given-names>
            <surname>Beckmann</surname>
          </string-name>
          et al. “
          <string-name>
            <surname>The</surname>
            <given-names>R</given-names>
          </string-name>
          ∗
          <article-title>-Tree: An Efficient and Robust Access Method for Points and Rectangles”</article-title>
          .
          <source>In: Proceedings of the ACM International Conference on Management of Data (SIGMOD</source>
          <year>1990</year>
          ). Vol.
          <volume>19</volume>
          .
          <string-name>
            <surname>AMC</surname>
          </string-name>
          ,
          <year>1990</year>
          , pp.
          <fpage>322</fpage>
          -
          <lpage>331</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>Tim</given-names>
            <surname>Bray</surname>
          </string-name>
          et al. “
          <article-title>Extensible markup language (XML)”</article-title>
          .
          <source>In: World Wide Web Journal 2.4</source>
          (
          <issue>1997</issue>
          ), pp.
          <fpage>27</fpage>
          -
          <lpage>66</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>J.</given-names>
            <surname>Broekstra</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Kampman</surname>
          </string-name>
          , and
          <string-name>
            <surname>F. Van Harmelen. “</surname>
          </string-name>
          <article-title>Sesame: A Generic Architecture for Storing and Querying RDF and RDF Schema”</article-title>
          .
          <source>In: Proceedings of the Semantic Web-ISWC</source>
          . Vol.
          <volume>2342</volume>
          . Springer,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>E.I. Chong</surname>
          </string-name>
          et al. “
          <article-title>An efficient SQL-based RDF querying scheme”</article-title>
          .
          <source>In: Proceedings of 31th International Conference on Very Large Data Bases (VLDB</source>
          <year>2005</year>
          ).
          <source>VLDB Endowment</source>
          .
          <year>2005</year>
          , pp.
          <fpage>1216</fpage>
          -
          <lpage>1227</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>Erik</given-names>
            <surname>Christensen</surname>
          </string-name>
          et al.
          <article-title>Web services description language (WSDL) 1.1</article-title>
          . Recommendation. W3C,
          <year>2001</year>
          . url: http://www.w3.org/TR/wsdl.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>Douglas</given-names>
            <surname>Comer</surname>
          </string-name>
          . “
          <article-title>Ubiquitous B-tree”</article-title>
          .
          <source>In: ACM Computing Surveys (CSUR) 11.2</source>
          (
          <issue>1979</issue>
          ), pp.
          <fpage>121</fpage>
          -
          <lpage>137</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>R.</given-names>
            <surname>Cyganiak</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Harth</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Hogan</surname>
          </string-name>
          .
          <article-title>N-quads: Extending n-triples with context</article-title>
          .
          <source>Tech. rep</source>
          .
          <year>2008</year>
          . url: http://sw.deri.org/
          <year>2008</year>
          /07/n-quads/.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>Martin</given-names>
            <surname>Du</surname>
          </string-name>
          <article-title>¨rst and Michel Suignard. Internationalized resource identifiers (IRIs)</article-title>
          .
          <source>Tech. rep. RFC 3987</source>
          ,
          <string-name>
            <surname>January</surname>
          </string-name>
          ,
          <year>2005</year>
          . url: http://www.ietf.org/ rfc/rfc3987.txt.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>Orri</given-names>
            <surname>Erling</surname>
          </string-name>
          and
          <string-name>
            <given-names>Ivan</given-names>
            <surname>Mikhailov</surname>
          </string-name>
          . “
          <article-title>Virtuoso: RDF support in a native RDBMS”</article-title>
          . In: (
          <year>2010</year>
          ), pp.
          <fpage>501</fpage>
          -
          <lpage>519</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>David</given-names>
            <surname>Faye</surname>
          </string-name>
          et al. “
          <article-title>RDF triples management in roStore”</article-title>
          . In: Actes de IC2011 (
          <year>2012</year>
          ), pp.
          <fpage>755</fpage>
          -
          <lpage>770</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <surname>David</surname>
            <given-names>C´</given-names>
          </string-name>
          elestin Faye, Olivier Cur´e, and Guillaume Blin.
          <article-title>“A survey of RDF storage approaches”</article-title>
          .
          <source>In: ARIMA Journal</source>
          <volume>15</volume>
          (
          <year>2012</year>
          ). url: http://arima. inria.fr/015/015002.html.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>Tim</given-names>
            <surname>Finin</surname>
          </string-name>
          et al. “
          <article-title>Social networking on the semantic web”</article-title>
          .
          <source>In: Learning Organization journal 12.5</source>
          (
          <issue>2005</issue>
          ), pp.
          <fpage>418</fpage>
          -
          <lpage>435</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>S.</given-names>
            <surname>Groppe</surname>
          </string-name>
          .
          <article-title>Data management and query processing in semantic web databases</article-title>
          . Springer,
          <year>2011</year>
          . isbn:
          <fpage>978</fpage>
          -3-
          <fpage>642</fpage>
          -19356-9.
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <surname>Yuanbo</surname>
            <given-names>Guo</given-names>
          </string-name>
          , Zhengxiang Pan, and Jeff Heflin. “
          <article-title>LUBM: A benchmark for OWL knowledge base systems”</article-title>
          .
          <source>In: Web Semantics: Science, Services and Agents on the World Wide Web 3.2</source>
          (
          <issue>2005</issue>
          ), pp.
          <fpage>158</fpage>
          -
          <lpage>182</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>Antonin</given-names>
            <surname>Guttman</surname>
          </string-name>
          .
          <article-title>“R-trees: a dynamic index structure for spatial searching”</article-title>
          .
          <source>In: Proceedings of the ACM International Conference on Management of Data</source>
          ,
          <source>(SIGMOD '84)</source>
          . Vol.
          <volume>14</volume>
          . 2.
          <year>1984</year>
          , pp.
          <fpage>47</fpage>
          -
          <lpage>57</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>S.</given-names>
            <surname>Harris</surname>
          </string-name>
          and
          <string-name>
            <given-names>D.N.</given-names>
            <surname>Gibbins</surname>
          </string-name>
          . “3store:
          <article-title>Efficient bulk RDF storage”</article-title>
          . In: volume
          <volume>89</volume>
          <source>of CEUR Workshop Proceedings</source>
          (
          <year>2003</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>S.</given-names>
            <surname>Harris</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Lamb</surname>
          </string-name>
          , and
          <string-name>
            <given-names>N.</given-names>
            <surname>Shadbolt</surname>
          </string-name>
          . “4store:
          <article-title>The design and implementation of a clustered RDF store”</article-title>
          .
          <source>In: Proceedings of 5th International Workshop on Scalable Semantic Web Knowledge Base Systems (SSWS2009)</source>
          .
          <year>2009</year>
          , pp.
          <fpage>94</fpage>
          -
          <lpage>109</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>S.</given-names>
            <surname>Harris</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Seaborne</surname>
          </string-name>
          .
          <source>“SPARQL 1</source>
          .
          <article-title>1 query language”</article-title>
          .
          <source>In: W3C Recommendation</source>
          (
          <year>2013</year>
          ). url: http://www.w3.org/TR/sparql11-query/.
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>A.</given-names>
            <surname>Harth</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Decker</surname>
          </string-name>
          . “
          <article-title>Optimized index structures for querying rdf from the web”</article-title>
          .
          <source>In: Proceedings of 3th Latin American Web Congress</source>
          ,
          <article-title>(LA-WEB 2005)</article-title>
          . IEEE.
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>A.</given-names>
            <surname>Harth</surname>
          </string-name>
          et al. “
          <article-title>Yars2: A federated repository for querying graph structured data from the web”</article-title>
          .
          <source>In: The Semantic Web</source>
          <volume>4825</volume>
          (
          <year>2007</year>
          ), pp.
          <fpage>211</fpage>
          -
          <lpage>224</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>M</given-names>
            <surname>Tim</surname>
          </string-name>
          <article-title>Jones</article-title>
          .
          <article-title>Artificial Intelligence A System Approach</article-title>
          . Laxmi Publications, Ltd.,
          <year>2008</year>
          . isbn:
          <fpage>978</fpage>
          -
          <lpage>0763773373</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>D.</given-names>
            <surname>Kolas</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Emmons</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Dean</surname>
          </string-name>
          . “
          <article-title>Efficient linked-list rdf indexing in parliament”</article-title>
          .
          <source>In: Proceedings of the 5th International Workshop on Scalable Semantic Web Knowledge Base Systems</source>
          . Vol.
          <volume>9</volume>
          .
          <year>2009</year>
          , pp.
          <fpage>17</fpage>
          -
          <lpage>32</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <surname>Michal</surname>
            <given-names>Kr</given-names>
          </string-name>
          ´atky´ et al. “
          <article-title>Efficient processing of narrow range queries in multidimensional data structures”</article-title>
          .
          <source>In: Proceedings of 10th International Database Engineering and Applications Symposium</source>
          ,
          <source>(IDEAS'06)</source>
          . IEEE.
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <surname>Filip</surname>
            <given-names>Kˇriˇzka</given-names>
          </string-name>
          , Michal Kr´atky´, and Radim Baˇca. “
          <article-title>On support of ordering in multidimensional data structures”</article-title>
          .
          <source>In: Proceedings of Advances in Databases and Information Systems (ADBIS</source>
          <year>2010</year>
          ). Vol.
          <volume>6295</volume>
          . LNCS. Springer.
          <year>2010</year>
          , pp.
          <fpage>575</fpage>
          -
          <lpage>578</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <string-name>
            <surname>Frank</surname>
            <given-names>Manola</given-names>
          </string-name>
          , Eric Miller,
          <string-name>
            <surname>Brian McBride</surname>
          </string-name>
          , et al. “
          <article-title>RDF primer”</article-title>
          .
          <source>In: W3C recommendation 10</source>
          (
          <year>2004</year>
          ). url: http://www.w3.org/TR/rdf-primer/.
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <string-name>
            <surname>Akiyoshi</surname>
            <given-names>Matono</given-names>
          </string-name>
          , SaidMirza Pahlevi, and Isao Kojima. “
          <article-title>RDFCube: A P2P-Based Three-Dimensional Index for Structural Joins on Distributed Triple Stores”</article-title>
          . In: Databases,
          <string-name>
            <given-names>Information</given-names>
            <surname>Systems</surname>
          </string-name>
          , and
          <article-title>Peer-to-Peer Computing</article-title>
          . Vol.
          <volume>4125</volume>
          . LNCS. Springer,
          <year>2007</year>
          . isbn:
          <fpage>978</fpage>
          -3-
          <fpage>540</fpage>
          -71660-0.
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          [34]
          <string-name>
            <surname>B. McBride.</surname>
          </string-name>
          “
          <article-title>Jena: A semantic web toolkit”</article-title>
          .
          <source>In: Internet Computing, IEEE 6.6</source>
          (
          <issue>2002</issue>
          ), pp.
          <fpage>55</fpage>
          -
          <lpage>59</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          [35]
          <string-name>
            <given-names>J.P.</given-names>
            <surname>McGlothlin</surname>
          </string-name>
          and
          <string-name>
            <given-names>L.R.</given-names>
            <surname>Khan</surname>
          </string-name>
          .
          <article-title>RDFJoin: A scalable data model for persistence and efficient querying of RDF datasets</article-title>
          .
          <source>Tech. rep</source>
          .
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref36">
        <mixed-citation>
          [36]
          <string-name>
            <given-names>J.P.</given-names>
            <surname>McGlothlin</surname>
          </string-name>
          and
          <string-name>
            <given-names>L.R.</given-names>
            <surname>Khan</surname>
          </string-name>
          . “RDFKB:
          <article-title>efficient support for RDF inference queries and knowledge management”</article-title>
          .
          <source>In: Proceedings of the 2009 International Database Engineering &amp; Applications Symposium</source>
          . ACM.
          <year>2009</year>
          , pp.
          <fpage>259</fpage>
          -
          <lpage>266</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref37">
        <mixed-citation>
          [37]
          <string-name>
            <given-names>T.</given-names>
            <surname>Neumann</surname>
          </string-name>
          and
          <string-name>
            <surname>G. Weikum.</surname>
          </string-name>
          “
          <article-title>RDF-3X: a RISC-style engine for RDF”</article-title>
          .
          <source>In: Proceedings of the VLDB Endowment</source>
          . Vol.
          <volume>1</volume>
          . 1.
          <string-name>
            <given-names>VLDB</given-names>
            <surname>Endowment</surname>
          </string-name>
          ,
          <year>2008</year>
          , pp.
          <fpage>647</fpage>
          -
          <lpage>659</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref38">
        <mixed-citation>
          [38]
          <string-name>
            <given-names>A.</given-names>
            <surname>Seaborne</surname>
          </string-name>
          et al. “
          <article-title>SPARQL/Update: A language for updating RDF graphs”</article-title>
          .
          <source>In: W3C Member Submission</source>
          <volume>15</volume>
          (
          <year>2008</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref39">
        <mixed-citation>
          [39]
          <string-name>
            <surname>Timos</surname>
            <given-names>K.</given-names>
          </string-name>
          <string-name>
            <surname>Sellis</surname>
          </string-name>
          , Nick Roussopoulos, and Christos Faloutsos. “The R+
          <article-title>- Tree: A Dynamic Index for Multi-Dimensional Objects”</article-title>
          .
          <source>In: Proceedings of 13th International Conference on Very Large Data Bases (VLDB</source>
          <year>1997</year>
          ). Morgan Kaufmann,
          <year>1987</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref40">
        <mixed-citation>
          [40]
          <string-name>
            <surname>Octavian</surname>
            <given-names>Udrea</given-names>
          </string-name>
          , Andrea Pugliese, and VS Subrahmanian.
          <article-title>“GRIN: A graph based RDF index”</article-title>
          .
          <source>In: Proceedings of the 22nd national conference on Artificial intelligence</source>
          ,
          <source>(AAAI'07)</source>
          . Vol.
          <volume>1</volume>
          .
          <year>2007</year>
          , pp.
          <fpage>1465</fpage>
          -
          <lpage>1470</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref41">
        <mixed-citation>
          [41]
          <string-name>
            <given-names>C.</given-names>
            <surname>Weiss</surname>
          </string-name>
          , P. Karras,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Bernstein</surname>
          </string-name>
          . “
          <article-title>Hexastore: sextuple indexing for semantic web data management”</article-title>
          .
          <source>In: Proceedings of the VLDB Endowment 1.1</source>
          (
          <issue>2008</issue>
          ), pp.
          <fpage>1008</fpage>
          -
          <lpage>1019</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref42">
        <mixed-citation>
          [42]
          <string-name>
            <given-names>D.</given-names>
            <surname>Wood</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Gearon</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Adams</surname>
          </string-name>
          . “
          <article-title>Kowari: A platform for semantic web storage and analysis”</article-title>
          .
          <source>In: Proceedings of XTech 2005 Conference</source>
          .
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref43">
        <mixed-citation>
          [43]
          <string-name>
            <given-names>Cui</given-names>
            <surname>Yu</surname>
          </string-name>
          .
          <source>High-Dimensional Indexing. Lecture Notes in Computer Science</source>
          . Springer-Verlag, Heidelberg,
          <year>2002</year>
          . isbn:
          <fpage>3</fpage>
          -
          <lpage>540</lpage>
          -44199-9.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>