<!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>Data Locality in Graph Databases through N-Body Simulation</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Dominic Pacher Robert Binna</string-name>
          <email>dominic.pacher@uibk.ac.at</email>
          <email>dominic.pacher@uibk.ac.at robert.binna@uibk.ac.at</email>
          <email>robert.binna@uibk.ac.at</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Günther Specht</string-name>
          <email>guenther.specht@uibk.ac.at</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Institute of Computer Science Institute of Computer Science</institution>
          ,
          <addr-line>Technikerstrasse 21a Technikerstrasse 21a, Innsbruck</addr-line>
          <country>Austria Innsbruck Austria</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Institute of Computer Science</institution>
          ,
          <addr-line>Technikerstrasse 21a, Innsbruck</addr-line>
          <country country="AT">Austria</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2011</year>
      </pub-date>
      <fpage>85</fpage>
      <lpage>90</lpage>
      <abstract>
        <p>Data locality poses a major performance requirement in graph databases, since it forms a basis for efficient caching and distribution. This vision paper presents a new approach to satisfy this requirement through n-body simulation. We describe our solution in detail and provide a theoretically complexity estimation of our method. To prove our concept, we conducted an evaluation using the DBpedia dataset data. The results are promising and show that n-body simulation is capable to improve data locality in graph databases significantly.</p>
      </abstract>
      <kwd-group>
        <kwd>Locality</kwd>
        <kwd>N-body Simulation</kwd>
        <kwd>Graph Data</kwd>
        <kwd>Experimentation</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>INTRODUCTION</title>
      <p>
        Recently the demand to manage high amounts of linked
data increased substantially. This development has its origin
in data, generated by social as well as linked knowledge
networks like Wikipedia [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. In addition, all of today’s
imperative programming languages work on graph oriented
(object) memory systems, because they are easy to understand
and can be efficiently processed in main memory.
Moreover, graph oriented memory systems provide means to
easily formulate complex recursive behavior and data
structures. Usually these data structures need to be stored
persistently in some kind of external database.
      </p>
      <p>Beside the exact internal concept, this (graph) database has
to support query, update and remove operations of single
nodes or complete sub graphs as fast as possible. Clearly
this requirement influences all of the different sub
components of a graph database and can be fulfilled through
improvements on many different levels. However, there is no
other property, which has as much influence on the
performance and scalability of the overall system as data locality.
In terms of graphs this means that any node stored has to be
also physical near to its linked nodes in the memory. This
seems to be a straightforward requirement, but it’s hard to
fulfill practically. In theory, a graph describes a
multidimensional data structure, which has to be managed by the
computer. Unfortunately, since memory systems work on a
fixed one-dimensional memory layout, this cannot be done
directly. The common solution to this problem is to define
a mapping from multidimensional data to less (one)
dimensional space. Although it’s not a problem to find any kind
of mapping, it’s hard to preserve data locality at the same
time. Therefore data locality isn’t assured directly (Figure
1) and databases try to speed up operations using additional
indexes or in the case of main memory systems, by providing
cheap jumps through random access memory.</p>
      <p>Despite the fact that this solutions work out quite well for
the problem, they are always tied to additional costs and
remaining limitations and don‘t solve the actual problem. For
example, additional indices need space and have to be
updated on every change. Main memory systems work well on
one core and one computer. But since, frequent jumps
between the cores memory or even worse, between computers,
are orders of magnitudes costlier than jumps within main
memory of one single thread, it’s hard to distribute them
properly.</p>
      <p>
        To come up with a new approach to improve this situation,
this paper suggests building a graph database whose nodes
are aligned in memory by a n-body simulation system.
Inspired by real world physics laws, links will be simulated as
springs causing nodes to arrange themselves automatically.
As a result, when the state of lowest energy is reached, a
maximum of data locality is provided at the same time
(Figure 2). In addition, n-body simulation systems are known
to be highly distributable and computational feasible [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ].
      </p>
      <p>Consequently the aim of this paper is to show through
experimentation, that such a simulation will optimally place
graph nodes in memory achieving improved data locality on
global scale.</p>
      <p>The remainder of this paper is structured as follows.
Section 2 describes related papers in more detail. In section
3 we present our new method by a short introduction to
nbody simulation idea, as well as some adjustments we had to
make. To prove that our concept is feasible, we performed
some preliminary evaluations which results are discussed in
section 4. Section 5 sums up with an conclusion and future
works.
1.1</p>
    </sec>
    <sec id="sec-2">
      <title>Related Work</title>
      <p>Although there is, at best of our knowledge, no related
approach solving the data locality problem of graph database
using n-body simulation, papers exists which make use of
this method for related problems.</p>
      <p>
        The idea of n-body simulation to support graph alignment
has been already proposed in the 80s [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] and constantly
improved [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. However, these algorithms try to find an
optimal layout for graph nodes, which is a far more complicated
problem than preserving locality as it includes additional
requirements like finding aesthetic pleasing solutions.
Fortunately, this is clearly not an affordance for graph databases.
Plenty of systems were developed in the RDF research area
trying to optimize storing and querying graphs. These graph
stores can be separated into three groups of stores, which
• reside completely in memory (In-Memory Store)
• are based on a relational database (Relational Triple
      </p>
      <p>
        Store)
• use their own implementation (Native Triple Store)
To the group of In-Memory Stores belong GRIN [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] and
Brahms [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], which mainly try to solve special purpose queries
through dedicated indices. Also SpiderStore [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] operates in
memory completely. However it makes no special
assumptions about queries.
      </p>
      <p>
        Jena SDB [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] and Virtuoso RDF Views [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] are part of
the second group using a traditional row oriented relational
model. Mapping graph data to the relational model tend
to result in one big table with three columns: source node,
edge, destination node (or in RDF terms subject, predicate
object) and billions of rows. As the mapping of this table
to a common row oriented store is inefficient [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] and [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]
applied a column oriented relational model.
      </p>
      <p>
        Part of the third group, the native implementations, are the
adapted Jena TDB [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] (in contrast to SDB), Virtuoso [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ],
YARS [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] and RDF-3X [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. Where the last two approaches
make excessive use of indices to speed up the query
execution process. Though RDF-3X achieved new query speed
records, this approach is heavily optimized on read
operations. As a consequence on any data update all indices have
to be changed accordingly. In contrast, BitMap [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] uses
a completely different design using compressed bit-matrix
structure.
      </p>
      <p>
        Finally Sesame [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] provides storage engines of all tree groups.
The performance of these systems have been evaluated in
[
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] and through the Berlin Benchmark [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
      </p>
      <p>Consequently there is no system yet using n-body
simulation to improve data locality and it’s interesting if such an
approach is able to improve the overall performance of graph
databases.
2.</p>
    </sec>
    <sec id="sec-3">
      <title>THE METHOD</title>
      <p>In contrast to existing methods to store graph data we
suggest an algorithm, which achieves a high degree of data
locality. This algorithm is based on the idea, that link length
don’t come for free, making longer links to more distant data
locations more expensive than shorter links. With this
additional costing factor c, an optimal solution for the locality
problem in databases can be defined as achieving the global
minimum of the sum of this costs overall nodes n:</p>
      <p>n
Call = min X ci</p>
      <p>i=0</p>
      <p>This optimization process becomes quickly unsolvable
using analytically methods, therefore a common n-body
simulation approach is applied. Every edge is seen as a physical
spring between two data nodes. Springs will add distance
depended forces Fl to the connected links causing them to
approach each other:</p>
      <p>Fl = Fc ∗ D(l)
Where Fc is the force constant and D(l) a distance function
of linked node l. This distance function can be for example
a linear function returning the distance to the linked node l
or an exponential function causing forces to increase
exponentially with the distance.</p>
      <p>Since a node is influenced by all its linked nodes, all forces
Fl have to summed up to achieve the final overall force Fn:</p>
      <p>n
Fn = X Fi</p>
      <p>i=0
an = Fi/mn
Δvn = an ∗ s</p>
      <p>Now we can calculate the acceleration of the current node
nusing its mass mn:</p>
      <p>In our prototype we set mn to 1 but for later
implementations this parameter may represent a ideal way to reduce the
movement of big nodes using the number of links as mass.</p>
      <p>This would cause big nodes to be moved less often. Finally
we can use an to calculate the change of velocity
1</p>
      <p>where s describes the used step size. For the sake of
simplicity our prototype used a step size of 1. The simulation
can now be formulated in three steps:
1. Calculate vn for all n.
2. Change vn according to Δvn and calculate new
posi</p>
      <p>tion.
3. Check if there is any movement . If yes then goto 1.
4. Simulation finished.
nodes. Indeed for a complete graph, the n-body simulation
2.1 Adjustments cannot improve any locality, because energy equilibrium is</p>
      <p>
        N-body simulation methods have been used widely and already reached and the simulation would terminate after
very successfully in many fields of physics over the past the first step. Assuming that n &gt;&gt; m the next important
decades. However some adjustments are necessary to make factor is snum, which depends on the dataset as well as the
the approach useful for locality calculations. used step size s. Consequently an increased step size would
As memory of all modern computers is accessed through dis- lead to less simulation steps. However too large steps sizes
crete addresses, the simulation has to take this into account also increase the computational error between steps and will
and have to operate on integers entirely. This approach has lead to an unstable simulation eventually. Fortunately, a
two advantages. In the first place it avoids the introduction variety of algorithms exist to minimize this approximation
of additional repulsion forces to keep nodes at a minimum error, using one step or multistep methods as well as
methdistance to each other and secondly, the calculations can be ods with variable step size at need [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
done with faster integer calculations. Finally, if simulated once, we assume that the majority of
As mentioned previously, graph data is naturally multi di- data locations will remain stable and won’t have to be
remensional, which stands in direct contrast to the one-dimensional calculated on every data update on global scale. This
estimemory space. Because of that, nodes may have found a fi- mation and in addition, that existing implementations deal
nal position, which is already be claimed by another node. with about 10 billion elements [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ], let us believe that a large
Therefore, a priority function has to be defined to solve this scale simulation of graph data is feasible.
problem, preserving that the node wins which leads to less
energy in the overall system. This can be accomplished by
using the nodes overall force as priority value. 3. PRELIMINARY EVALUATION
An example of this problem can be found in Figures 3 and 4
where nodes 2/5 and 3/6 claiming the same position. Figure
4 also shows, that preserving locality comes at cost of the
link length of other nodes.
2.2
      </p>
    </sec>
    <sec id="sec-4">
      <title>Complexity Estimation</title>
      <p>
        Generally the complexity of n-body simulations can be
estimated as O(n ∗ m ∗ snum) where n describes the number
of nodes, m the number of links per node and s the number
of simulation steps needed until energy equilibrium.
Consequently for a complete graph, where n = m the complexity
raises to O(n2 ∗ snum). This wouldn’t be feasible for high
amounts of data. Fortunately [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] showed for gravity
simulations, which can be reduced to a fully connected graph, that
complexity can be reduced to O(n ∗ log(n) ∗ snum), using a
supporting tree structure and aggregation for distant nodes.
Although this is the worst-case estimation, it is very unlikely
to happen for real data where the number of links per node
should always be significantly smaller than the number of
      </p>
      <p>To prove the suggested concept we implemented a
prototype and made some preliminary evaluations. To get
realistic results we chose a subset (first 200 000 triples = 110,205
nodes) of the DBpedia dataset. All tests were conducted
on a single machine (Mac Pro Intel Xeon 2,26 GHz) using
a simple single threaded process with 200 MiB of dedicated
ram.</p>
      <p>To get an visual impression how effective our method
increases data locality, we visualize every data element as a
pixel in an image. As we are working on a one-dimensional
space, all values are simply wrapped at the end of image
width to create a two dimensional image. Every pixel
position corresponds to the actual position of a data node in the
data space.</p>
      <p>In Figure 5 the color of this pixel represents the maximum
distance of a node to its linked neighbor nodes in the data
space. Using a maximum value of n/2 (value red) this Figure
shows the development over time until energy equilibrium is
reached. At t = 0 the data is scattered randomly in the
data space. There are plenty of nodes, which have to jump
through the whole data space to access their linked nodes.
At t = 0.5 the data distribution has improved already, but
can be further enhanced until a state of minimum energy
(no more movement of nodes) is reached (t = 1). The final
result shows that all nodes have now arrived at a position,
where they can access their most distant linked node with a
minimum of locality change.</p>
      <p>To get a better impression of the exact numbers, we created
a histogram (Figure 7) for the same sample data. For better
understanding, be aware of the logarithmic scaling on the
vertical axis. Furthermore we moved the mid-term frame
t = 0.5 to quarter time t = 0.25 to get a better impression
of the progress over time. Similar to Figure 5, at t = 0
one can observe an almost equal distribution of nodes along
the complete range of possible distances. As an important
matter of fact, there is already a peak of values having very
close linked nodes on the very left side (distance &lt; 1, 000)
of the diagram. Since it’s often the case that new nodes
are introduced followed by their direct neighbors, the input
file itself can be seen as origin of this peak. Of course this
issue can only have a positive impact on local data locality
and not on global scale, as we want to achieve. During the
simulation over t = 0.25 to t = 1.0 one can observe a
significant reduction of distances to about one quarter of the
originally data space. In addition, the histogram points out
that global data locality comes also at cost of local data
locality, which is showed by the reduction of the red peak at
t = 0 mentioned before to the blue one at t = 1.0. The
cause of this reduction can be seen again in the mapping of
multi dimensional data to less (in our case one) dimensional
space, where different data nodes claim the same position
(Figures 3 and 4).</p>
      <p>Furthermore there are some small peaks (two nodes)
remaining near distance 50, 000. These nodes couldn’t be aligned
very well. Although we always expected problems with
nodes that are highly linked to different other nodes and
can’t be further optimized by means of location, this
appears not to be the case here, as the number of links of the
worst-case node where only about 300. Unfortunately, this
remains a rather unsatisfied situation and has to be further
investigated in future. However, as shown in our sample
data set, these nodes can be considered as very rare (overall
8 nodes out of 110, 025 until distance of 26, 000).
These problems apart, it’s most important that the global
data locality improved substantially. As previously seen in
Figure 5, the histogram shows that most nodes are far less
distant to their linked nodes than at the start of simulation.
In particular, the link length was reduced to 1/4 in the worst
and to 1/10 in the average case.</p>
      <p>Based on this data it should be possible to make efficient
decisions how graph data can be separated in certain chunks,
to be distributed on different cores as well as on different
computers. To gather more insight into this, we used an
access heat map. To create this map all data positions lying
between a node and all it’s linked nodes are incremented by
one. Of course in main memory we are able to randomly
access every position at same speed, but in a distributed
environment this model fits very well. When this is done for
all nodes and their respective linked nodes, every position
marks the number of accesses needed to visit every
neighbor node within data space (Figure 6). This image gives
an impression, where the data space can be separated best,
choosing less dense (blue in the Figure) zones.</p>
    </sec>
    <sec id="sec-5">
      <title>CONCLUSION AND FUTURE WORK</title>
      <p>
        The aim of this paper was to show that a n-body
simulation can improve graph data locality significantly. After a
introduction to our suggested method, we evaluated a
experimental prototype using partial data of the DBpedia dataset
[
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. As a result, we were able to restrict jumps to about 1/4
of the whole data space in the worst-case and to 1/10 for
the average case. Although these are very promising
results, there is plenty of work remaining.
      </p>
      <p>We theoretically showed that our n-body approach should
scale well into millions of graph nodes. However, our
prototype is currently not optimized for very large data sets like
the complete DBpedia dataset, consisting of about 100
million triples. Hence our goal for future works will be to
optimize the simulation by improving the algorithm and finding
a way to distribute the simulation on many cores and
computers. As a result of this development, we hope to provide
practically evidence that our method is working on large real
world graphs preserving computational feasibility.
5.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>Wikipedia</given-names>
            <surname>Free</surname>
          </string-name>
          <article-title>Encyclopedia</article-title>
          . http://wikipedia.com, apr
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>D. J.</given-names>
            <surname>Abadi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Marcus</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. R.</given-names>
            <surname>Madden</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Hollenbach</surname>
          </string-name>
          .
          <article-title>Scalable semantic web data management using vertical partitioning</article-title>
          .
          <source>VLDB Endowment</source>
          , sep
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>M.</given-names>
            <surname>Atre</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Chaoji</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. J.</given-names>
            <surname>Zaki</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J. A.</given-names>
            <surname>Hendler</surname>
          </string-name>
          .
          <article-title>Matrix Bit loaded: a scalable lightweight join query processor for RDF data</article-title>
          . ACM, apr
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>J.</given-names>
            <surname>Barnes</surname>
          </string-name>
          and
          <string-name>
            <given-names>P.</given-names>
            <surname>Hut</surname>
          </string-name>
          .
          <article-title>A hierarchical O(N*log(N)) force-calculation algorithm</article-title>
          .
          <source>nature</source>
          ,
          <volume>324</volume>
          (
          <issue>4</issue>
          ):
          <fpage>446</fpage>
          -
          <lpage>449</lpage>
          ,
          <year>1986</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>C.</given-names>
            <surname>Becker. RDF Store</surname>
          </string-name>
          <article-title>Benchmarks with DBpedia. www4</article-title>
          .wiwiss.fu-berlin.de,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>R.</given-names>
            <surname>Binna</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Gassler</surname>
          </string-name>
          , E. Zangerle, and
          <string-name>
            <given-names>D.</given-names>
            <surname>Pacher</surname>
          </string-name>
          .
          <article-title>SpiderStore: Exploiting Main Memory for Efficient RDF Graph Representation</article-title>
          and
          <string-name>
            <given-names>Fast</given-names>
            <surname>Querying</surname>
          </string-name>
          .
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>C.</given-names>
            <surname>Bizer</surname>
          </string-name>
          .
          <article-title>The berlin sparql benchmark</article-title>
          .
          <source>Int J Semantic Web Inf Syst</source>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <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. Sesame:</surname>
          </string-name>
          <article-title>A generic architecture for storing and querying RDF and RDF schema</article-title>
          .
          <source>In Semantic Web - Iswc</source>
          <year>2002</year>
          , pages
          <fpage>54</fpage>
          -
          <lpage>68</lpage>
          ,
          <string-name>
            <given-names>Aidministrator</given-names>
            <surname>Nederland</surname>
          </string-name>
          <string-name>
            <surname>BV</surname>
          </string-name>
          , Amersfoort, Netherlands,
          <year>2002</year>
          .
          <string-name>
            <given-names>Aidministrator</given-names>
            <surname>Nederland</surname>
          </string-name>
          <string-name>
            <surname>BV</surname>
          </string-name>
          , Amersfoort, Netherlands.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>J.</given-names>
            <surname>Butcher</surname>
          </string-name>
          .
          <article-title>Numerical Methods for Ordinary Differential Equations</article-title>
          . Wiley,
          <volume>2</volume>
          <fpage>edition</fpage>
          , jun
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>O.</given-names>
            <surname>Erling</surname>
          </string-name>
          and
          <string-name>
            <surname>I. Mikhailov.</surname>
          </string-name>
          <article-title>Rdf support in the virtuoso dbms</article-title>
          . In T. Pellegrini,
          <string-name>
            <given-names>S.</given-names>
            <surname>Auer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Tochtermann</surname>
          </string-name>
          , and S. Schaffert, editors,
          <source>Networked Knowledge - Networked Media</source>
          , volume
          <volume>221</volume>
          <source>of Studies in Computational Intelligence</source>
          , pages
          <fpage>7</fpage>
          -
          <lpage>24</lpage>
          . Springer Berlin / Heidelberg,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>A.</given-names>
            <surname>Harth</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Umbrich</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <surname>A. Hogan.</surname>
          </string-name>
          <article-title>YARS2: A federated repository for querying graph structured data from the web</article-title>
          .
          <source>The Semantic Web</source>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>M.</given-names>
            <surname>Janik</surname>
          </string-name>
          and
          <string-name>
            <given-names>K.</given-names>
            <surname>Kochut. BRAHMS: A WorkBench RDF</surname>
          </string-name>
          <article-title>Store and High Performance Memory System for Semantic Association Discovery</article-title>
          .
          <source>In Fourth International Semantic Web Conference</source>
          , pages
          <fpage>431</fpage>
          -
          <lpage>445</lpage>
          . Springer,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>T.</given-names>
            <surname>Neumann</surname>
          </string-name>
          and
          <string-name>
            <surname>G. Weikum.</surname>
          </string-name>
          <article-title>The RDF-3X engine for scalable management of RDF data</article-title>
          .
          <source>The VLDB Journal - The International Journal on Very Large Data Bases</source>
          ,
          <volume>19</volume>
          (
          <issue>1</issue>
          ):
          <fpage>91</fpage>
          -
          <lpage>113</lpage>
          , feb
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>E.</given-names>
            <surname>Peter</surname>
          </string-name>
          .
          <article-title>A Heuristic for Graph Drawing</article-title>
          .
          <source>Congressus Numerantium</source>
          ,
          <volume>42</volume>
          :
          <fpage>149</fpage>
          -
          <lpage>160</lpage>
          , nov
          <year>1984</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>L.</given-names>
            <surname>Sidirourgos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Goncalves</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Kersten</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Nes</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Manegold</surname>
          </string-name>
          .
          <article-title>Column-store support for rdf data management: not all swans are white</article-title>
          .
          <source>Proc. VLDB Endow</source>
          .,
          <volume>1</volume>
          :
          <fpage>1553</fpage>
          -
          <lpage>1563</lpage>
          ,
          <year>August 2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>V.</given-names>
            <surname>Springel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. D. M.</given-names>
            <surname>White</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Jenkins</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. S.</given-names>
            <surname>Frenk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Yoshida</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Gao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Navarro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Thacker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Croton</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Helly</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. A.</given-names>
            <surname>Peacock</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Cole</surname>
          </string-name>
          , P. Thomas,
          <string-name>
            <given-names>H.</given-names>
            <surname>Couchman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Evrard</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. o. r.</given-names>
            <surname>Colberg</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Pearce</surname>
          </string-name>
          .
          <article-title>Simulations of the formation, evolution and clustering of galaxies and quasars</article-title>
          .
          <source>nature</source>
          ,
          <volume>435</volume>
          (
          <issue>7042</issue>
          ):
          <fpage>629</fpage>
          -
          <lpage>636</lpage>
          , jun
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>O.</given-names>
            <surname>Udrea</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pugliese</surname>
          </string-name>
          , and
          <string-name>
            <given-names>V. S.</given-names>
            <surname>Subrahmanian</surname>
          </string-name>
          .
          <article-title>Grin: a graph based rdf index</article-title>
          .
          <source>In Proceedings of the 22nd national conference on Artificial intelligence -</source>
          Volume
          <volume>2</volume>
          , pages
          <fpage>1465</fpage>
          -
          <lpage>1470</lpage>
          . AAAI Press,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>K.</given-names>
            <surname>Wilkinson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Sayers</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H.</given-names>
            <surname>Kuno</surname>
          </string-name>
          .
          <article-title>Efficient RDF storage and retrieval in Jena2</article-title>
          .
          <source>In Proceedings of SWDB</source>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>V.</given-names>
            <surname>Zabinako</surname>
          </string-name>
          and
          <string-name>
            <given-names>P.</given-names>
            <surname>Rusakovs</surname>
          </string-name>
          .
          <article-title>Development and Implementation of Partial Hybrid Algorithm for Graphs Visualization</article-title>
          .
          <source>Scientific Proceedings of Riga Technical University</source>
          ,
          <volume>5</volume>
          (
          <issue>34</issue>
          ):
          <fpage>192</fpage>
          -
          <lpage>203</lpage>
          , jul
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>