<!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>Owlgres: A Scalable OWL Reasoner</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Markus Stocker</string-name>
          <email>mstocker@clarkparsia.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Michael Smith</string-name>
          <email>msmith@clarkparsia.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Clark &amp; Parsia LLC</institution>
          ,
          <addr-line>Washington, DC</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>We present Owlgres, a DL-Lite reasoner implementation written for PostgreSQL, a mature open source database. Owlgres is an OWL reasoner that provides consistency checking and conjunctive query services, supports DL-LiteR as well as the OWL sameAs construct, and is not limited to PostgreSQL. We discuss the implementation with special focus on sameAs and the supported subset of the SPARQL language. Emphasis is given to the implemented optimization techniques which resulted in significant performance improvement. Based on a confidential NASA dataset and part of the DBpedia dataset, we show a typical use case for Owlgres, i.e. given a terminology and a dataset, Owlgres provides querying on a persistent knowledge base with reasoning at query time in the expressivity of DL-LiteR.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>Web includes a powerful layer on top of RDF which enables automated reasoning.
Hence, in addition to data integration, automatic inference of implicit knowledge
may be a useful tool for the Semantic Web.</p>
      <p>Owlgres aims at both efficient querying over a scalable persistent store and
automatic reasoning for RDF and OWL data.</p>
      <p>The paper is organized as follows. In Section 2, we succinctly review the
DL-Lite family and discuss some implementation details with special emphasis
on optimization techniques. In Section 3, we discuss two use cases for Owlgres
which show a typical usage of efficient querying and reasoning over persistent
RDF data. In Section 4, we briefly discuss related work. Finally, in Section 5,
we draw some conclusions and talk about future directions.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Implementation: Some Details</title>
      <p>
        In this section, we discuss some details about the Owlgres implementation.
Specifically, in Section 2.1, we briefly review DL-Lite and reference to the
relevant publications. In Section 2.2, we discuss the optimizations implemented in
Owlgres that have proved to be useful in minimizing the number of queries
returned by the DL-Lite reformulation. Finally, in Section 2.3, we highlight our
implementation for OWL sameAs and annotations [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
2.1
      </p>
      <sec id="sec-2-1">
        <title>The DL-Lite Family</title>
        <p>
          DL-Lite [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] is a family of description logics (DLs) tailored for tractable reasoning
and efficient query answering. The different logics of the family are fragments
of expressive DLs and show some interesting properties. First, they are rich
enough to capture the expressivity required for a number of specialized ontology
languages (e.g. UML). Second, in addition to supporting standard reasoning
services (e.g. subsumption), they are designed for conjunctive query answering
over an ABox maintained in secondary storage (typically a RDBMS). Third, they
show interesting computational properties, i.e. the standard reasoning tasks are
polynomial in the size of the TBox7 and query answering is LOGSPACE in data
size.
        </p>
        <p>
          For a discussion on the syntax and semantics of DL-Lite DLs we refer to [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ]
as a detailed review of the languages is not within the scope of this paper. For
the purpose of this paper, however, we briefly highlight the query reformulation
process used for DL-LiteR query answering.
        </p>
        <p>Query answering in DL-LiteR mainly consists of two steps. In the first step,
the conjunctive query provided by the user is reformulated based on the TBox
axioms. Hence, the user’s conjunctive query is expanded such that it encodes
the relevant TBox knowledge. (Note that the query is expanded to a collection
of queries and not in the number of query atoms.) For instance, assume a
terminology with two concepts C and D and an axiom which states that C is a
7 For comparison, OWL-DL, i.e. the SHOIN DL, is NExpTime-complete for concept
satisfiability and ABox consistency
subclass of D, i.e. C ⊑ D. If the user’s conjunctive query is {D(?x)}, i.e. a set
consisting of a query atom that asks for the individuals of the concept D, the
reformulation algorithm encodes the knowledge about C being a subclass of D
into the query. This is what is meant by reasoning at query time. We know by
the terminology that instances of C are also instances of D. Hence, we expand
the conjunctive user query {D(?x)} with a conjunctive query consisting of the
query atom C(?x).</p>
        <p>In the second step of DL-LiteR query answering, we discard the TBox and
the reformulated conjunctive query is evaluated over the ABox. In our working
example, the expanded conjunctive query {{D(?x)}, {C(?x)}} explicitly queries
for all the individuals of C or D. Hence, the overall result of the user query is
the union query of the reformulated sets of query atoms.</p>
        <p>In Owlgres, the second step consists of three additional steps. First, the
reformulated conjunctive query is optimized (see Section 2.2) with the goal of
minimizing the set of queries that eventually hit the database. Second, the optimized
reformulated conjunctive query is translated into SQL such that the request can
be evaluated by PostgreSQL. Finally, in the third step, we process the result set
returned by PostgreSQL and possibly apply further query constraints that have
not been written into the SQL query.
2.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>Optimizations</title>
        <p>Owlgres currently implements three types of optimizations: query simplification,
selectivity optimization, and the formulation of a set of conjunctive queries as a
single SQL UNION query.</p>
        <p>Query simplification is performed during the reformulation process and is
applied to the initial conjunctive query, as well as every expanded conjunctive
query returned during the reformulation process. The goal of query simplification
is to simplify a conjunctive query by removing atomic query atoms, e.g. C(?x),
that are redundant because of either role domains or role ranges. More precisely,
given a conjunctive query q the domain simplifier removes all atomic query
atoms from q that are redundant in q because they define a constraint which
is implicitly defined by the domain of a query role atom. For instance, if the
conjunctive query q is {{C(?x)}, {R(?x, ?y)}} and the domain of the role R is
known to be of type C, then the domain simplifier drops the atomic query atom
C(?x) from q as the information that the individuals bound to the variable ?x are
instances of C is redundant. By removing such atomic query atoms, we reduce
the number of atoms in some queries, which may significantly affect the number
of reformulated conjunctive queries.</p>
        <p>
          The second optimization is based on the concept of selectivity. Selectivity of
a condition is defined by Piatetsky-Shapiro and Connell in [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ] as the “fraction
of tuples that satisfy the condition”. In Owlgres, we are particularly interested in
knowing which query atoms or conjunctive queries have zero selectivity. If a query
atom in a conjunctive query has zero selectivity, then the entire conjunctive query
has zero selectivity, i.e. no tuple in the database will match the conjunctive query.
Hence, conjunctive queries with zero selectivity can be safely removed from the
reformulated conjunctive user query. This requires knowing which concepts and
which roles in the terminology have zero selectivity.
        </p>
        <p>
          There are two cases where selectivity optimization is applied in Owlgres.
[
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] mentions a rewriting technique for qualified existential quantifications (i.e.
∃R.C) where auxiliary roles are introduced. In Owlgres, we use this rewriting
technique to deal with qualified existential quantifications. Auxiliary roles are
generated by Owlgres internally during TBox loading for each encountered
qualified existential quantification. Naturally, auxiliary roles will not be involved in
any ABox assertion and, hence, have zero selectivity. This is important as the
reformulation may introduce auxiliary roles in the expansion of a conjunctive
query, but conjunctive queries with at least one auxiliary role have zero
selectivity and, hence, can be discarded.
        </p>
        <p>This first case of selectivity optimization can be generalized to any concept or
role name defined in the terminology. While in the first case of auxiliary roles the
zero selectivity is known without any computation, in the second case we need
to mantain counters for the frequency of TBox terms used in the ABox. This is
done during ABox loading which, in Owlgres, is a separate process from (and
performed after) TBox loading. Practically speaking, only terms that are known
to have zero selectivity are relevant for the optimization. As for auxiliary roles,
we perform this selectivity-based optimization after the reformulation process
to minimize the set of reformulated queries. The goal is to identify conjunctive
queries with at least one term (concept or role) that has a known zero selectivity,
in which case we can safely drop the corresponding conjunctive query from the
reformulated set of conjunctive queries.</p>
        <p>Finally, the optimized reformulated query is translated into a single SQL
UNION query. This has at least two advantages. First, a single SQL query avoids
multiple connections to the database, i.e. JDBC overhead. Second, we exploit
the native optimizer by providing a complex query that may be optimized by
the RDBMS.</p>
        <p>Statistics about the frequency of terms do not come for free. We need to
maintain them during updates and deletes. Unfortunately, the native PostgreSQL
optimizer seems to be unable to identify zero selectivity conjunctive queries,
which is probably caused by the fact that RDBMS typically use probabilities for
selectivity estimation and, hence, lack exact information. We speculated about
extending the native PostgreSQL optimizer such that it would have access to
exact figures. However, it was hard to estimate the cost of this effort and the
extension would tie Owlgres to PostgreSQL, at least with respect to selectivity
optimization.</p>
        <p>
          To give an idea about the effect of the implemented optimizations described
above, we evaluated the techniques on a concrete dataset and a set of queries. We
use the Lehigh University Benchmark [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ] (LUBM) and its associated SPARQL
[
          <xref ref-type="bibr" rid="ref16">16</xref>
          ] queries. (Note that LUBM, as generally used, is not expressible in DL-Lite
because it uses transitive properties and because qualified existentials are used
in the left side of subsumption relations. The results presented here are with a
modified version that reduces the expressivity.) Figure 1 shows the performance
100000
recanm lieascc 1000
feoP irhm
r t
y ago 100
reuQ l,(sm 10
1
        </p>
        <p>Not Optimized Optimized
of the 14 LUBM queries on the University0 dataset (i.e. roughly 100k triples).
The timings are in milliseconds on a logarithmic scale. We first show the timing
for the non-optimized reformulated set and then the timing for the optimized
set.</p>
        <p>1 2 3 4 5 6 7 8 9 10 11 12 13 14</p>
        <p>LUBM Query</p>
        <p>For instance, if we apply the optimizations described above to the LUBM
query 9 we reduce the initial reformulated set of 726 queries to just two queries.
These two queries are responsible for the final result set. By creating an SQL
UNION of the two queries we eventually execute a single SQL query. The LUBM
query 9 takes 18 seconds to be executed without the optimizations and 0.1
seconds with the optimizations. Identifying auxiliary roles is the main source of
optimization in this case.</p>
        <p>
          The following short example highlights a case where selectivity optimization
does an important job. The case is based on the DBpedia8 Infobox data and a
query for book titles. The DBpedia TBox is based on the YAGO [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ] terminology
which is, in turn, based on WordNet [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. Like WordNet, YAGO is deeply ramified.
Because the individuals defined by DBpedia are for the vast majority instances
of leaf concepts of the YAGO taxonomy, there are many YAGO terms that have
zero selectivity, even on a large dataset like the DBpedia Infobox data. To make
the point more clear, we provide some figures based on the query (here
abbreviated for the sake of readability) {{Book(?s)}, {name(?s, ?n)}} which asks for
the titles of books. We query over the DBpedia Infobox dataset, i.e. roughly
24 million triples (2,198,649 concept assertions and 21,503,343 data role
assertions). The TBox contains totally 58,108 concepts and 53,898 (i.e. around 93%)
of them have no asserted instances, i.e. zero selectivity. Without the selectivity
optimization, the reformulated set size for the query above is 83, i.e. the overall
result set is computed as a UNION query of 83 conjunctive queries. With the
selectivity optimization, the reformulated set size for the query is 16, i.e. only
16 queries out of 83 are responsible for the final result set. There is, hence, no
need to stress the database with 67 superflous queries. Without the optimizer,
the query runs in 61,743 ms and with the optimizer in 14,336 ms.
        </p>
        <sec id="sec-2-2-1">
          <title>8 http://dbpedia.org/</title>
          <p>2.3</p>
        </sec>
      </sec>
      <sec id="sec-2-3">
        <title>Support for OWL sameAs and Annotations</title>
        <p>Owlgres supports the OWL sameAs construct by preprocessing. In a nutshell,
OWL sameAs assertions are processed during ABox loading such that Owlgres
has correct information to handle the queries without doing any OWL sameAs
reasoning at query time. OWL sameAs support requires an extension to the
basic relational schemas since we need to store more information. In
particular, for ABox assertions we store both the asserted individual as well as the
canonical individual, where the canonical individual corresponds to the
individual returned by the computation of the OWL sameAs (transitive) closure for
the asserted individual after normalizing sameAs, i.e. after enforcing an ordering
on the individuals involved in the closure. For instance, assume an ABox with
the assertions C(a), C(b), C(c), R(a, r) and R(c, s). Moreover, it is asserted that
the individual a is sameAs b and the individual b is sameAs c. Depending on
the order in which the ABox assertions are processed, a final state for the three
concept assertions could be the one listed in Table 1.</p>
        <p>Because of the transitive OWL sameAs relation between the individuals a, b
and c, the canonical individual for each of them is, in our example, the individual
a.</p>
        <p>Naturally, we have to consider the extended schema for OWL sameAs in
query translation to SQL. In particular, relational joins that are required for
conjunctive queries are performed over the canonical rather than the asserted
individual. For instance, for the conjunctive query {{C(c)}, {R(c, ?x)}} we have
to join over the canonical individual for c such that the result set contains both
?x = r and ?x = s.</p>
        <p>Note that support for OWL sameAs does not come for free. We have to
maintain the closure during updates and deletes which is one reason why we
store both the asserted and canonical individual. Moreover, with OWL sameAs,
reasoning is performed in two modes: at load time for the OWL sameAs closure
and at query time for the DL-Lite query reformulation.</p>
        <p>
          Owlgres also supports OWL annotation properties. Although annotation
properties have no real semantics in OWL DL, they are important and often
used in queries. A simple example is rdfs:label and a query that asks for the
resource with a given label. In order to meet this important requirement, we
decided to support OWL annotations in Owlgres from the beginning. As required
by the specification [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ], we handle OWL annotation properties strictly separated
from OWL object and datatype properties. Furthermore, because of the
different nature of OWL annotation properties with a data literal and URI reference
object, Owlgres manages them in separate relations.
2.4
        </p>
      </sec>
      <sec id="sec-2-4">
        <title>SPARQL Support</title>
        <p>
          Owlgres supports SPARQL [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ] as a language to formulate queries over
knowledge bases. In Owlgres, the fundamental part of SPARQL are Basic Graph
Patterns (BGP). A BGP is translated into a conjunction of query atoms. For
instance, the (abbreviated) BGP { ?x rdf:type ub:Student . ?x ub:name ?n
} is translated into the conjunctive user query with two query atoms, i.e. {{
Student(?x) }, { ub:name(?x,?n) }}.
        </p>
        <p>As described in Section 2.1, the conjunctive user query is then
reformulated, optimized, translated into a single UNION SQL query and executed by
PostgreSQL. Currently, Owlgres supports result set modifier operations (e.g.
FILTER), although such operations are not pushed to the database but
performed in memory as an operation on the result set. Some SPARQL constructs
are currently not supported in Owlgres (e.g. OPTIONAL).
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Owlgres in Action: Use Cases</title>
      <p>In this section, we describe two use cases for Owlgres. As we argued in Section
1, the goal of Owlgres is to satisfy two needs. First, the need for a scalable and
flexible persistent store for RDF and OWL data. Second, the need for standard
reasoning services and efficient query answering over large knowledge bases.
3.1</p>
      <sec id="sec-3-1">
        <title>DBpedia Infobox Data</title>
        <p>The first use case is based on DBpedia, in particular the Infobox data, which
includes the content of Wikipedia infoboxes (e.g. the content in the box on the
right on the page for Albert Einstein9).</p>
        <p>
          The DBpedia Infobox data contains roughly 24 million triples. The main
problem with the DBpedia dataset is the unavailability of a proper TBox. The
terminology is defined in multiple files which, for Owlgres, means some initial
preprocessing. The ABox data has to be preprocessed too, especially because it
is provided in N-TRIPLES format and the OWL API10 used for the loader in
Owlgres does not support N-TRIPLES. We used Sesame [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] to stream the
NTRIPLES into Owlgres and discovered a number of issues in the original dataset,
in particular wrong datatype assertions.
        </p>
        <p>We successfully loaded the DBpedia Infobox dataset with 2,198,649 concept
assertions and 21,503,343 data role assertions on a Linux workstation with an
Intel dual core 2 GHz and 2 GB of memory. Loading performance in Owlgres is
roughly 2,000 statements per second. This is relatively slow. However, our focus</p>
        <sec id="sec-3-1-1">
          <title>9 http://en.wikipedia.org/wiki/Albert Einstein</title>
          <p>10 http://owlapi.sourceforge.net/
for Owlgres v.0.1 was not on optimizing loading performance but on optimizing
query performance. Little care has been given on analyzing loading performance.
However, as Owlgres is a backward chaining reasoner, i.e. reasoning is performed
at query time, we have great potential in getting good load performance (at least
for the non-OWL sameAs schema).</p>
          <p>The query we perform over DBpedia is for the book11 The Lord of the Rings.
As expected, both the DBpedia SPARQL endpoint12 and Owlgres return the
corresponding individual in the result set. In contrast, only Owlgres will return
the individual on a query for the publication13 The Lord of the Rings. The
DBpedia SPARQL endpoint does not perform the inference required for this
query.
3.2</p>
        </sec>
      </sec>
      <sec id="sec-3-2">
        <title>POPS</title>
        <p>POPS is an expertise location service that has been developed by Clark &amp;
Parsia for NASA with, as described by M. Grove in the W3C public use case,14
the aim of “integrating NASA’s information about its nearly 70,000 combined
civil service and contractor workforce in one place, linking the relevant, related
information to form a comprehensive data service for staffers, workforce
planners, analysts, and related personnel”. Currently, it is backed by Sesame and the
data is managed in main memory. The dataset contains 10,494,493 assertions
(621,546 concept assertions, 2,350,327 object role assertions and 7,522,620 data
role assertions).</p>
        <p>jSpace,15 a visual query builder and generic RDF browser developed by Clark
&amp; Parsia, is used as the user front-end for the POPS data and we tested with
Owlgres the initial query that is executed when jSpace is loaded on POPS. The
reformulated set for the query without any optimizations resulted to be of size
3,276. It is obvious, that such a large number of SQL queries would make Owlgres
practically useless.</p>
        <p>The optimization that significantly minimizes the number of queries that
have to be executed for this query is role simplification. By initially simplifying
the conjunctive user query and subsequently each generated expansion, we
reduce the reformulated set of queries to 9. By adding an inclusion axiom to the
TBox, specifically an axiom that specifies the range for a POPS property, the
reformulated set of queries can be optimized to one single query. This last query
perfoms in 5,384 milliseconds.
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Related Work</title>
      <p>
        A number of implementation efforts in the Semantic Web community focus on
efficient querying over RDF data. Triple stores like Sesame [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], Jena (SDB) [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]
11 http://dbpedia.org/class/yago/Book106410904
12 http://dbpedia.org/sparql
13 http://dbpedia.org/class/yago/Publication106589574
14 http://www.w3.org/2001/sw/sweo/public/UseCases/Nasa/
15 http://www.clarkparsia.com/jspace/
and OpenLink Virtuoso [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] aim at efficient querying by translating SPARQL
queries into SQL queries which are subsequently optimized and executed by the
underlying RDBMS. Other projects focus on optimized native index structures
[
        <xref ref-type="bibr" rid="ref11 ref18">11, 18</xref>
        ] or native persistent stores for RDF graphs.16
      </p>
      <p>
        BigOWLIM [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] is a proprietary implementation that supports RDFS, OWL
DLP and OWL Horst reasoning using a forward-chaining rule engine. In contrast,
Owlgres supports DL-LiteRreasoning performed at query time.
      </p>
      <p>
        Similar to Owlgres, QuOnto [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] is a querying system based on DL-Lite and
has been used in particular for the integration of relational data [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Compared to
Owlgres, QuOnto’s focus is on integrating data from multiple relational database
management systems while Owlgres manages RDF and OWL data as a
knowledge base and provides querying as an inference service.
5
      </p>
    </sec>
    <sec id="sec-5">
      <title>Conclusions and Future Work</title>
      <p>We presented Owlgres, a scalable DL-Lite reasoner written for PostgreSQL and
discussed the main features of DL-Lite in general. We described in details the
query optimization techniques that have been implemented in Owlgres,
optimizations which focus on minimizing the reformulated set of conjunctive queries
and, therefore, the number of queries that are executed by PostgreSQL. We
discussed the main aim of Owlgres with two use cases that show both goals of
handling millions of assertions and reasoning over RDF and OWL data in the
expressivity of DL-LiteR.</p>
      <p>Owlgres v.0.1 is a proof of concept. There are a number of directions on which
we can focus in the future to improve Owlgres. First, tuning of PostgreSQL may
help improving query performance even more and parallelisation may be useful
to process more data. Second, a more optimized loading procedure may help to
improve loading performance. Third, as Owlgres is not limited to PostgreSQL,
supporting other RDBMS most likely would improve user acceptance of Owlgres
in heterogeneous IT environments. Last but not least, improving the coverage
of the SPARQL language is another important goal which most likely improves
user acceptance.
16 http://jena.hpl.hp.com/wiki/TDB</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>Andrea</given-names>
            <surname>Acciarri</surname>
          </string-name>
          , Diego Calvanese, Giuseppe De Giacomo, Domenico Lembo, Maurizio Lenzerini, Mattia Palmieri, and Riccardo Rosati.
          <article-title>QuOnto: Querying ontologies</article-title>
          .
          <source>In Proc. of the 20th Nat. Conf. on Artificial Intelligence (AAAI</source>
          <year>2005</year>
          ),
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>Sean</given-names>
            <surname>Bechhofer</surname>
          </string-name>
          , Frank van Harmelen,
          <string-name>
            <surname>Jim Hendler</surname>
          </string-name>
          , Ian Horrocks, Deborah L.
          <string-name>
            <surname>McGuinness</surname>
          </string-name>
          ,
          <string-name>
            <surname>Peter F. Patel-Schneider</surname>
          </string-name>
          ,
          <article-title>and Lynn Andrea Stein</article-title>
          .
          <source>OWL Web Ontology Language Reference. W3C Recommendation</source>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>Tim</given-names>
            <surname>Berners-Lee</surname>
          </string-name>
          .
          <article-title>Linked Data: Design Issues</article-title>
          .
          <source>W3C</source>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>Jeen</given-names>
            <surname>Broekstra</surname>
          </string-name>
          , Arjohn Kampman, and Frank van Harmelen.
          <article-title>Sesame: A Generic Architecture for Storing and Querying RDF</article-title>
          . In
          <source>International Semantic Web Conference</source>
          <year>2002</year>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>Diego</given-names>
            <surname>Calvanese</surname>
          </string-name>
          , Giuseppe De Giacomo, Domenico Lembo, Maurizio Lenzerini, Antonella Poggi, and
          <string-name>
            <given-names>Riccardo</given-names>
            <surname>Rosati</surname>
          </string-name>
          .
          <article-title>Efficient integration of relational data through DL ontologies</article-title>
          .
          <source>In Proc. of the 20th International Workshop on Description Logics (DL-2007)</source>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>Diego</given-names>
            <surname>Calvanese</surname>
          </string-name>
          , Giuseppe De Giacomo, Domenico Lembo, Maurizio Lenzerini, and
          <string-name>
            <given-names>Riccardo</given-names>
            <surname>Rosati</surname>
          </string-name>
          .
          <article-title>Tractable reasoning and efficient query answering in description logics: The DL-Lite family</article-title>
          .
          <source>In Journal of Automated Reasoning</source>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>Diego</given-names>
            <surname>Calvanese</surname>
          </string-name>
          , De Giacomo Giuseppe, Domenico Lembo, Maurizio Lenzerini, and
          <string-name>
            <given-names>Riccardo</given-names>
            <surname>Rosati</surname>
          </string-name>
          .
          <article-title>Linking Data to Ontologies: The Description Logic DLLite(A)</article-title>
          .
          <source>In OWLED-06</source>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>Jeremy</surname>
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Carroll</surname>
            , Ian Dickinson, Chris Dollin, Dave Reynolds, Andy Seaborne, and
            <given-names>Kevin</given-names>
          </string-name>
          <string-name>
            <surname>Wilkinson</surname>
          </string-name>
          .
          <article-title>Jena: implementing the semantic web recommendations</article-title>
          .
          <source>In WWW Alt. '04: Proceedings of the 13th international World Wide Web conference on Alternate track papers &amp; posters</source>
          , pages
          <fpage>74</fpage>
          -
          <lpage>83</lpage>
          , New York, NY, USA,
          <year>2004</year>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>Christiane</given-names>
            <surname>Fellbaum. WordNet An Electronic Lexical Database</surname>
          </string-name>
          .
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Guo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Pan</surname>
          </string-name>
          , and
          <string-name>
            <surname>J. Heflin.</surname>
          </string-name>
          <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</source>
          , volume
          <volume>3</volume>
          , pages
          <fpage>158</fpage>
          -
          <lpage>182</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>Andreas</surname>
            <given-names>Harth</given-names>
          </string-name>
          , Jurgen Umbrich, Aidan Hogan, and Stefan Decker.
          <article-title>YARS2: A Federated Repository for Searching and Querying Graph Structured Data</article-title>
          .
          <source>Technical report</source>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>Kingsley</given-names>
            <surname>Idehen</surname>
          </string-name>
          .
          <article-title>A superplatform for merger driven data integration and business process services</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Atanas</surname>
            <given-names>Kiryakov</given-names>
          </string-name>
          , Damyan Ognyanov, and
          <string-name>
            <given-names>Dimitar</given-names>
            <surname>Manov</surname>
          </string-name>
          .
          <article-title>OWLIM - a Pragmatic Semantic Repository for OWL</article-title>
          .
          <source>In Proc. of Int. Workshop on Scalable Semantic Web Knowledge Base Systems (SSWS</source>
          <year>2005</year>
          ),
          <string-name>
            <surname>WISE</surname>
          </string-name>
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>Graham</given-names>
            <surname>Klyne</surname>
          </string-name>
          and
          <string-name>
            <given-names>Jeremy J.</given-names>
            <surname>Carroll</surname>
          </string-name>
          .
          <article-title>Resource Description Framework (RDF): Concepts and Abstract Syntax</article-title>
          .
          <source>W3C Recommendation</source>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>Gregory</given-names>
            <surname>Piatetsky-Shapiro</surname>
          </string-name>
          and
          <string-name>
            <given-names>Charles</given-names>
            <surname>Connell</surname>
          </string-name>
          .
          <article-title>Accurate estimation of the number of tuples satisfying a condition</article-title>
          .
          <source>SIGMOD Rec</source>
          .,
          <volume>14</volume>
          (
          <issue>2</issue>
          ):
          <fpage>256</fpage>
          -
          <lpage>276</lpage>
          ,
          <year>1984</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>Eric</given-names>
            <surname>Prud</surname>
          </string-name>
          <article-title>'hommeaux and Andy Seaborne. SPARQL Query Language for RDF</article-title>
          .
          <source>W3C Recommendation</source>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>Fabian</surname>
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Suchanek</surname>
            , Gjergji Kasneci, and
            <given-names>Gerhard</given-names>
          </string-name>
          <string-name>
            <surname>Weikum</surname>
          </string-name>
          .
          <article-title>Yago: A Core of Semantic Knowledge</article-title>
          .
          <source>In 16th international World Wide Web conference (WWW</source>
          <year>2007</year>
          ), New York, NY, USA,
          <year>2007</year>
          . ACM Press.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <surname>Cathrin</surname>
            <given-names>Weiss</given-names>
          </string-name>
          , Panagiotis Karras, and
          <string-name>
            <given-names>Abraham</given-names>
            <surname>Bernstein</surname>
          </string-name>
          .
          <article-title>Hexastore: Sextuple Indexing for Semantic Web Data Management</article-title>
          .
          <source>In Proc. of the 34th Intl Conf. on Very Large Data Bases (VLDB)</source>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>