<!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>Upgrading Databases to Ontologies</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Mathematics, University of Calabria</institution>
          ,
          <addr-line>87036 Rende (CS)</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Gisella Bennardo</institution>
          ,
          <addr-line>Giovanni Grasso, Nicola Leone, Francesco Ricca</addr-line>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Kewwords: Ontologies</institution>
          ,
          <addr-line>Rules, Databases, Answer Set Programming, Information Integration</addr-line>
          ,
          <country>Consistent Query Answering</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>In this paper we propose a solution that combines the advantages of an ontology speci cation language, having powerful rule-based reasoning capabilities, with the possibility to e ciently exploit large (and, often already existent) enterprise databases. In particular, we allow to \upgrade" existing databases to an ontology for building a uni ed view of the enterprise information. Databases are kept and the existing applications can still work on them, but the user can bene t of the new ontological view of the data, and exploit powerful reasoning and information integration services, including: problem-solving, consistency checking, and consistent query answering. Importantly, powerful rule-based reasoning can be carried out in mass-memory allowing to deal also with data-intensive applications.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        experts. Moreover, (ii) the obtained speci cation must incorporate the knowledge
(mainly regarding concept instances) already present in the enterprise information
systems. This knowledge is often stored in large (relational) database systems, and
loading it again in the ontologies may be unpractical or even unfeasible. This
happens because of the large amount of data to deal with, but also since databases
have to keep their autonomy (considering that many applications work on them).
In addition, when data residing in several autonomous sources are combined in a
uni ed view, inconsistency problems may arise [
        <xref ref-type="bibr" rid="ref12 ref2">2, 12</xref>
        ] that cannot be easily xed.
      </p>
      <p>In this paper we describe a solution that combines the advantages of an
ontology representation language (i.e., high expressive power and clean representation
of data) having powerful rule-based reasoning features, with the capability to
efciently exploit large (and, often already existent) enterprise databases. Basically,
if we are given some existing databases, we can analyze their schema and try to
recognize both entities and relationships they store. This information is exploited
for \upgrading" the database to an ontology. Here, ontology instances are
\virtually" speci ed (i.e. they are linked, not imported) by means of special logic rules
which de ne a mapping from the data in the database to the ontology. The
result is a uni ed ontological speci cation of the enterprise information that can be
employed, for browsing, editing and advanced reasoning. Moreover, possible
inconsistent information obtained by merging several databases is dealt with by adopting
data-integration techniques.</p>
      <p>
        We developed these solutions in OntoDLV [3{5], a system that implements a
powerful logic-based ontology representation language, called OntoDLP, which is
an extension of (disjunctive) Answer Set Programming [6{8] (ASP) with all the
main ontology constructs including classes, inheritance, relations, and axioms.1
OntoDLP combines in a natural way the modeling power of ontologies with a
powerful \rule-based" language allowing for disjunction in rule heads and nonmonotonic
negation in rule bodies. In general, disjunctive ASP, and thus OntoDLP, can
represent every problem in the complexity class 2P and 2P (under brave and cautious
reasoning, respectively) [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
      </p>
      <p>Summarizing, the main contributions of this paper are:
{ an extension of OntoDLP by suitable constructs, called virtual class and virtual
relation, which allows one to specify the extensions of ontology concepts/relations
by using data from existing relational databases;
{ the design of a rewriting technique for implementing Consistent Query
Answering (CQA) [2, 10{13] in OntoDLV. CQA allows for obtaining as much consistent
information as possible from queries, in case of global inconsistent information.</p>
      <p>
        Moreover, we e ciently implemented the proposed extensions in the OntoDLV
system by allowing for the evaluation of queries in mass memory. In this way,
OntoDLV can seamlessly provide to the users both an integrated ontological view
of the enterprise knowledge and e cient query processing on existing data sources.
1 The term \Answer Set Programming" was introduced by Vladimir Lifschitz in his
invited talk at ICLP'99 to denote the declarative programming paradigm originally
described in [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Since ASP is the most prominent branch of logic programming in
which rule heads may be disjunctive, the term Disjunctive Logic Programming (DLP)
refers explicitly to ASP. OntoDLP takes its name from ontologies plus DLP.
      </p>
    </sec>
    <sec id="sec-2">
      <title>The OntoDLP language</title>
      <p>
        In this section we brie y overview OntoDLP, an ontology representation and
reasoning language which provides the most important ontological constructs and
combines them with the reasoning capabilities of ASP. For space limitations we
cannot include a detailed description of the language. The reader is referred to [
        <xref ref-type="bibr" rid="ref4 ref5">4,
5</xref>
        ] for details. Moreover, hereafter we assume the reader to be familiar with ASP
syntax and semantics, for further details refer to [
        <xref ref-type="bibr" rid="ref14 ref6">6, 14</xref>
        ].
      </p>
      <p>
        More in detail, the OntoDLP language includes, the most common ontology
constructs, such as: classes, relations, (multiple) inheritance; and the concept
of modular programming by means of reasoning modules. A class can be thought
of as a collection of individuals. An individual, or object, is any identi able entity
in the universe of discourse. Objects, also called class instances, are unambiguously
identi ed by their object-identi er (oid) and belong to a class. A class is de ned by
a name (which is unique) and an ordered list of typed attributes, identifying the
properties of its instances. Classes can be organized in a specialization hierarchy
(or data-type taxonomy) using the built-in is-a relation (multiple inheritance). The
following are examples of both class and instance declarations:
class person(name : string; father : person; mother : person; birthplace : place):
class employee isa fpersong(salary : integer ; boss : person):
john : person(name : \John"; father : jack ; mother : ann; birthplace : rome):
Relationships among objects are represented by means of relations, which, like
classes, are de ned by a (unique) name and an ordered list of attributes. As in
ASP, logic programs are sets of logic rules and constraints. However, OntoDLP
extends the de nition of logic atom by introducing class and relation predicates,
and complex terms (allowing for a direct access to object properties). Logic rules
can be exploited for de ning classes and relations when their instances can be
\derived" (or inferred) from the information already stated in an ontology. This kind
of intensional constructs are called Collection classes and Intensional Relations.
Basically, collection classes collect instances de ned by another class and perform
a re-classi cation based on some information which is already present in the
ontology; whereas, intentional relations are similar to (but more powerful of) database
views. Importantly, the programs (set of rules) de ning collection classes (and
intensional relations) must be normal and strati ed (see e.g., [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]). For instance, the
class richEmployee can be de ned as follows:
collection class richEmployee(name : string)f
      </p>
      <p>E : richEmployee(name : N ) : E : employee(name : N; salary : S); S &gt; 1000000:g
Moreover, OntoDLP allows for special logic expressions called axioms modeling
sentences that are always true. Axioms provide a powerful mean for de ning/checking
consistency of the speci cation (i.e., discard ontologies which are, somehow,
contradictory or not compliant with the domain's intended perception). For example,
we may enforce that a person cannot be father of himself by writing: : X :
person(father : X ):</p>
      <p>In addition to the ontology speci cation, OntoDLP provides powerful reasoning
and querying capabilities by means of the language components reasoning modules
and queries. In practice, a reasoning module is a disjunctive ASP program conceived
to reason about the data described in an ontology. Reasoning modules are identi ed
by a name and are de ned by a set of (possibly disjunctive) logic rules and integrity
constraints; clearly, the rules of a module can access the information present in the
ontology.</p>
      <p>An important feature of the language is the possibility of asking conjunctive
queries, that, in general, can involve both ontology entities and reasoning modules
predicates. As an example, we ask for persons whose father is born in Rome as
follows: X : person(father : person(birthplace : place(name : \Rome")))?
3</p>
    </sec>
    <sec id="sec-3">
      <title>Virtual Classes and Virtual Relations</title>
      <p>In this section we show how an existing database can be \upgraded" to an OntoDLP
ontology. In particular, the new features of the language, called virtual classes and
virtual relations, are described by exploiting the following example.</p>
      <p>Suppose that a Banking Enterprise asks for building an ontology of its domain
of interest. This request has the goal of obtaining a uniform view of the knowledge
stored in the enterprise information system that is shared among all the enterprise
branches.</p>
      <p>
        The schema of the existing database of the enterprise is reported in Table 1.
The rst step that must be done is to reconstruct the semantics of the data stored
in this database. It is worth noting that, in general, a database schema is the
product of a previously-done modeling step on the domain of interest. Usually,
the result of this conceptual-design phase is a semantic data model that describes
the structure of the entities stored in the database. Likely, the database engineers
exploited the Entity-Relationship Model (ER-model) [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], that consists of a set
of basic objects (called entities), and of relationships among these objects. The
ER-model underlying a database can be reconstructed by reverse-engineering2 or
can be directly obtained from the documentation of the original project.
      </p>
      <p>
        Suppose now that, we obtained the ER-model corresponding to the database
of Table 1. In particular, the corresponding ER diagram is shown in Figure 1.
From this diagram it is easy to recognize that the enterprise is organized into
branches, which are located into a given place and also have an asset and a unique
name. A bank customer is identi ed by its social-security number and, in
addition, the bank stores information about customer's name, street and living place.
Moreover, customers may have accounts and can take out loans. The bank o ers
two types of accounts: saving-accounts with an interest-rate, and checking-accounts
with a overdraft-amount. To each account is assigned a unique account-number,
and maintains last access date. Moreover, accounts can be held by more than one
2 Note that, the reverse-engineering task is not trivial, and even automatic methods may
fail to reconstruct the original semantics [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ].
      </p>
      <p>customer-city
customer-name
customer-street
social-security</p>
      <p>loan-branch
loan-number</p>
      <p>amount
customer
borrower</p>
      <p>loan
depositor
Interest-rate
account-number</p>
      <p>balance
account</p>
      <p>isa
savings-account
checking-account
payment-number
payment-date
overdraft-amount
branch</p>
      <p>assets
branch-city
loan-payments
payment
payment-amount
customer, and obviously one customer can have various accounts (depositors). Note
that, in the case of accounts, the ER-model exploits specialization/generalization
construct. A loan is identi ed by a unique loan-number and, as well as accounts,
can be held by several customers (borrowers). In addition, the bank keeps track
of the loan amount and payments and also of the branch at the loan originates.
For each payment the bank records the date and the amount; for a speci c loan a
payment-number univocally identi es a particular payment.</p>
      <p>All this information represents a good starting point for de ning an ontology
that describes the banking enterprise domain.3 As a matter of fact, we can easily
exploit it both for identifying ontology concepts and for detecting the database
tables which store data about ontology instances. In practice, we can \upgrade"
the banking database to a banking ontology by creating an OntoDLP (base) class,
with name c, for each concept c in the domain; and by exploiting logic rules that
specify a mapping between class c and its instances \stored" in the database. A
class c de ned by means of mapping rules is called virtual, because its instances
come from an external source; but, as far as reasoning and querying are concerned
they are like any other class directly speci ed in OntoDLP. More in detail, a virtual
class is de ned by using the keywords virtual class followed by the class name,
and by the speci cation of class attributes; then, instances are de ned by means
of rules containing special atoms that allows for accessing the source database.</p>
      <p>First of all, external data sources are speci ed directly in OntoDLP, as instances
of the built-in class dbSource as follows:
db1 : dbSource(connectionURI : \http : ==db:banking:com"; user : \myUser ";
password : \myPsw "):
Here, the object identi er db1 is used to identify the enterprise database. Note that
such a mechanism allows to build an ontology starting from one or more databases,
just specifying more dbSources; moreover, this source identi cation strategy is
sufciently general to be (in the future) extended also to access other kind of sources
3 Note also that, our goal is not to provide a tool for reasoning on ER schemata; instead,
we allow the ontology engineer to design and \populate" an ontology that exploits data
about the instances that is stored in relational databases.
beside databases. Now, given the source identi er for the enterprise database, we
model the branch entity as follows:
virtual class branch(name : string; city : string; assets : integer )f
f (BN ) : branch(name : BN ; city : BC ; assets : A) :</p>
      <p>branch@db1(branch-name : BN ; branch-city : BC ; assets : A):g</p>
      <p>The rule acts as mapping between the data contained in table branch and the
instances of class branch by exploiting a new type of atom, called sourced atom. A
sourced atoms consist of a name (branch), that identi es a table "at" (@ ) a speci c
database source (db1 ), and a list of attributes (that match the table schema).
Attributes can be lled in by constants or variables.</p>
      <p>Note that, whereas databases store values, ontologies manage instances (which
are not values) that are uniquely identi ed by oids.4 We provided a speci c
solution for facing with this problem, in which values appearing in the databases
are kept, someway, distinct from object identi ers appearing in the ontology. In
particular, functional object identi ers, suitably built from database values, are
exploited for identifying ontology instaces. In our example, the head of the mapping
rule contains the functional term f (BN ), that builds, for each instance of branch,
a functional object identi er composed of the functor f containing the value of the
name attribute stored in the table branch. In practice, if the branch table stores a
tuple ("Spagna","Rome", 1000000), then the associated instance in the ontology
will be: f ("Spagna") : branch(name : "Spagna"; city : "Rome"; assets : 1000000 ). In
this way, the functional object identi er f ("Spagna") is built from the data value
"Spagna", keeping the data alphabet distinct from the one of object identi ers.</p>
      <p>
        Note that name is a key for table branch. Because object identi ers in
OntoDLP uniquely identify instances, it is preferable to exploit only keys for de ning
functional object identi ers. This simple policy ensures that we will obtain an
admissible ontology whenever the source database is unique and consistent; whereas,
if more than one source database is exploited for de ning ontology entities, some
admissibility constraint for the ontology schema (like e.g. referential integrity
constraints, unicity of object identi ers, etc. see [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ])) might be violated. To face with
this problem our system supports data integration features which are described in
Section 4. Clearly, in order to ensure the maximum exibility, the responsibility of
writing a \right" ontology mapping is left to the ontology engineer.
      </p>
      <p>We say that a virtual class declared by means of sourced atoms is in logical
notation. We provided also an alternative notation for accessing database tables,
called SQL notation. In particular, the virtual class branch can be equivalently
de ned as follows:
virtual class branch(name : string; city : string; assets : integer )f
f (BN ) : branch(name : BN ; city : BC ; assets : A) :
[db1; "SELECT branch-name AS BN ; branch-city AS BC ; assets AS A</p>
      <p>F ROM branch "]g</p>
      <p>Here, a special atom which contains an SQL query is used in the place of a
sourced one. Formally, a SQL atom consists of a pair [db object identi er, sql
query] enclosed in square brackets. The db object identi er picks out the database
on which the sql query will be performed.</p>
      <p>
        Consider now the customer entity. Also here, we de ne a virtual class as follows:
4 This is the well-known impedance mismatch problem [
        <xref ref-type="bibr" rid="ref19 ref20">19, 20</xref>
        ].
      </p>
      <p>virtual class customer (ssn : string; name : string; street : string; city : string)f
c(SSN ) : customer (ssn : SSN ; name : N ; street : S ; city : C ) :
customer@db1(social -security : SSN ; customer -name : N ; customer -street : S ;
customer -city : C ):g
The functional term c(SSN ) is used here in order to assign to each instance a
suitable functional object identi er built on the social -security attribute value.
Note that, a fresh functor is used for each virtual class. In this way, functional
object identi ers belonging to di erent classes are kept distinct. In our example,
the customer and the branch class instances are made disjoint by using functor f
and c, respectively.</p>
      <p>Following the same methodology, we de ne a virtual class for the loan entity:
virtual class loan(number : integer ; loaner : branch; amount : integer )f
l(N ) : loan(number : N ; loaner : f (L); amount : A) :</p>
      <p>loan@db1(loan-number : N ; branch-name : L; amount : A):g</p>
      <p>Note that, the loan class has an attribute (loaner ) of type branch. In this case,
functional terms are carefully employed in order to maintain referential integrity.
As shown above, the mapping uses the functional term f (L) to build values for
the loaner attribute. Basically, since the branch class use the functor f to build its
object identi ers, then we also use the same functor where an object identi er of
branch is expected.</p>
      <p>In the following, we exploit the same idea to model the payment entity:
virtual class payment(ref -loan : loan; number : integer ; payDate : date;</p>
      <p>amount : integer )f
p(l(L); N ) : payment(ref -loan : l (L); number : N ; payDate : D; amount : A) :
payment@db1(loan-number : L; payment-number : N ; payment-date : D;
payment-amount : A):g</p>
      <p>Also in this case we deal with referential integrity constraints by using a proper
functional term l(L) where a loan object identi er is expected (ref -loan attribute);
moreover, since payments are identi ed by a pair (payment-number, relative loan)
each instance of payment will be identi ed by a functional object identi er with
two arguments: one of these is a functional object identi er of type loan; and, the
other is the loan number.</p>
      <p>As far as accounts are concerned, we know from the ER-model that they are
specialized in two types: saving-accounts and checking-accounts. This situation can
be easily dealt with by exploiting inheritance (see Section 2). Thus, we rst de ne
a virtual class named account as follows:</p>
      <p>virtual class account(number : integer ; balance : integer ):
and, then, we provide two virtual classes, savingAccount and checkingAccount,
namely, which are declared to be both subclasses of account :
virtual class savingAccount isa faccountg(interestRate : integer )f
acc(N ) : savingAccount (number : N ; balance : B ; interestRate : I ) :</p>
      <p>saving-account @db1(account-number : N ; balance : L; interest-rate : I ):g
virtual class checkingAccount isa faccountg(overdraft : integer )f
acc(N ) : checkingAccount (number : N ; balance : B ; overdraft : I ) :</p>
      <p>checking-account @db1(account-number : N ; balance : L; overdraft-amount : I ):g
In order to conclude our \upgrading" process, we have to model the
relationships holding among the concepts in the banking domain. To deal with this
problem, OntoDLP allows for de ning also virtual relations. For instance, the ER
diagram of Figure 1 shows that customers and loans are in relationship through
borrower and depositor. Hence, we de ne two virtual relations as follows:
virtual relation borrower (cust : customer ; loan : loan)f
borrower (cust : c(C ); loan : l (L)) :</p>
      <p>borrower@db1(customer -social -sec : C ; loan-number : L):g
virtual relation depositor (cust : customer ; account : account; ; lastAccess : date)f
depositor (cust : c(C ); account : acc(A); lastAccess : D) :</p>
      <p>depositor@db1(customer -social -sec : C ; account-number : A; access-date : d ):g
It is worth noting that a virtual relation di ers from a virtual class mainly
because tuples are not equipped with object identi ers.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Data Integration Features</title>
      <p>
        In previous sections we showed how a existing database can be upgraded to an
OntoDLP ontology. Basically, the instances of ontology entities are virtually
populated by means of special logic rules, which act as a mapping from the information
stored in database tables to ontology instances. In general, the ontology engineer
can obtain the data from several source databases, which are combined in a uni ed
ontological view. This is a typical data integration scenario [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] where either some
admissibility conditions on the ontology schema (e.g., referential integrity
constraints, unicity of object identi ers, etc.), or some user-de ned axioms might be
violated by the obtained ontology.5 In order to face with this problem, a possibility
is to x manually either the information in the sources or the ontology speci
cation; but, if the ontology engineer can/does not want to modify the sources, then
it would be very useful to single out as much consistent information as possible for
answering queries. In our framework, we support both possibilities by o ering the
following data-integration features:
{ Consistency checking: verify whether the obtained ontology is consistent or not,
and, in the latter case, precisely detect tuples that violate integrity constraints
or user de ned axioms;
{ Consistent Query Answering (CQA) [2, 10{13]: compute answer to queries that
are true in every instance of the ontology that satis es the constraints and
di ers minimally from the original one.
      </p>
      <p>
        In the eld of data-integration several notions of CQA have been proposed (see [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]
for a survey), depending on whether the information in the database is assumed to
be correct and complete. Basically, the incompleteness assumption coincides with
5 It is easy to see that, our approach can be classi ed from a data integration point of
view as GAV (Global As View) [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] integration system.
the open world assumption, where facts missing from the database are not assumed
to be false. Conversely, we assume that sources are complete. This choice, common
in data warehousing, is suitable in a framework like OntoDLP that is based on the
closed world assumption; and, as argued in [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], strengthen the notion of minimal
distance from the original information.6 There are two important consequences
of this choice: integrity restoration can be obtained by only deleting tuples (note
that the empty model is always a repair [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]); and, computing CQA for
conjunctive queries remains decidable even when arbitrary sets of denial constraints and
inclusion dependencies are employed [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ].
      </p>
      <p>
        More formally, given an OntoDLP ontology schema and a set A of axioms or
integrity constraints, let O and Or be two ontology instances7, we say that Or is a
repair [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] of O w.r.t. A, if Or satis es all the axioms in A and the instances in Or
are a maximal subset of the instances in O. Basically, given a conjunctive query Q,
consistent answers are those query results that are not a ected by axioms violations
and are true in any possible repair [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. Thus, given and ontology instance O and a
set of axioms A, a conjunctive query Q is consistently true in O w.r.t. A if Q is true
in every repair of O w.r.t. A. Moreover, if Q is non-ground, the consistent answers
to Q are all the tuples t such that the ground query Q[t] obtained by replacing the
variables of Q by constants in t is consistently true in O w.r.t. A.
      </p>
      <p>
        Note that, as shown in [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] the problem of computing consistent answers to
queries (CQA) in the case of denial constraints and inclusion dependencies (such
kind of constraints are su cient to model every admissibility condition on an
OntoDLP schema[
        <xref ref-type="bibr" rid="ref3 ref4">3, 4</xref>
        ]) belongs to the 2P complexity class; thus, they can be
implemented by using disjunctive ASP.
      </p>
      <p>In the next Section, we describe how the new features were implemented and
in particular we show how to build an ASP program that implements CQA for the
above mentioned kind of axioms in the OntoDLV system.
5</p>
    </sec>
    <sec id="sec-5">
      <title>Implementation</title>
      <p>
        In this section, we rst brie y describe the OntoDLV system [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]; and then, we
detail the implementation of the new features, namely: virtual classes/relations
and consistent query answering.
      </p>
      <p>
        OntoDLV. OntoDLV is a complete framework that allows one to develop
ontology-based applications. Thanks to a user-friendly visual environment,
ontology engineers can create, modify, navigate, query ontologies, as well as perform
advanced reasoning on them. An advanced persistency manager allows one to store
ontologies transparently both in text les and internal relational databases; while
powerful type-cheking routines are able to analyze ontology speci cations and
single out consistency problems. All the system features are made available to software
6 It is worth noting that, in relevant cases like denial constraints, query results coincide
for both correct and complete information assumptions.
7 Here ontology instance refers to the unique set of ground instances modeled by an
ontology speci cation [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Note that, in our settings OntoDLP axioms can model both
denial constraints (like functional dependencies) and inclusion dependencies (in the
latter case, negation as failure is exploited).
developers through an Application Programming Interface (API) that acts as a
facade for supporting the development of applications based on OntoDLP [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. The
core of OntoDLV is a rewriting procedure (see [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]) that translates ontologies,
axioms, reasoning modules and queries to an equivalent ASP program which, in the
general case, runs on state-of-the art ASP system DLV [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. Importantly, if the
rewritten program is strati ed and non disjunctive [6{8] (and the input ontology
resides in relational databases) the evaluation is carried out directly in mass
memory by exploiting a specialized version of the same system, called DLVDB [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ].
Note that, since entity speci cations are strati ed and non-disjunctive, queries on
ontologies can always be evaluated in mass-memory (this is to say: \by
exploiting a DBMS"). This makes the evaluation process very e cient , and allows the
knowledge engineer to formulate queries in a language more expressive than SQL.
Clearly, more complex reasoning tasks (whose complexity is NP/co-NP, and up to
2P / 2P ) are dealt with by exploiting the standard DLV system instead.
Virtual Classes and Virtual Relations. The implementation of virtual classes
and virtual relation has been carried out by properly improving the rewriting
procedure and by extending the persistency manager in order to provide both storage
and manipulation facilities for virtual entities. More in detail, we implemented two
di erent usage modalities: o -line and on-line.
      </p>
      <p>In the rst, the relevant information is extracted from the sources by exploiting
SQL queries and, is stored into the internal data structures (basically, instances
are \imported" and stored by exploiting the persistency manager). In the latter,
queries are performed directly at the sources.</p>
      <p>The o -line mode is preferable when one wants to migrate the database into
an ontology, or when parts of a proprietary database are one-time granted to third
parties. In fact, once the import is done, the source database can be disconnected,
since instances are stored into the OntoDLV persistency manager. Obviously,
depending on database size, the o -line modality could be time-consuming or even
unpractical. In addition, one may want to keep the information in the original
database (which is accessed by legacy applications), in order to deal with \fresh"
information. In those cases, the on-line mode is preferable.</p>
      <p>
        In both on-line and o -line modes, queries on the ontology are performed
directly on mass-memory by exploiting DLVDB [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]. To this end, we extended the
rewriter procedure in such a way that DLVDB mapping statements are properly
generated. Indeed, DLVDB takes as input both a logic program and a mapping
speci cation linking database tables to logic predicates.
      </p>
      <p>
        Importantly, in order to avoid the materialization of the entire ontology for
evaluating an input query, an \unfolding" technique [
        <xref ref-type="bibr" rid="ref12 ref2">2, 12</xref>
        ] has also been integrated
into the Rewriter module. Basically, when we have a query q on the ontology,
every predicate of q is substituted with the corresponding query over the sources,
provided that suitable syntactic conditions are satis ed.
      </p>
      <p>As an example, if we ask for the instances of virtual class branch of Section 3
the following mapping directive for DLVDB is generated by the rewriter procedure:
USEDB \http : ==db:banking :com":myUser:myPsw.</p>
      <p>USE branch (branch-name, branch-city , assets)
MAPTO branchPredicate (varchar,varchar,integer ).</p>
      <p>The above directive speci es the database (USEDB) on which the SQL query
will be performed (may be the source database). Moreover, the listed attributes
of the table branch (USE) are mapped (MAPTO) on the logic predicate
branchPredicate. In this case, branchPredicate is the predicate name used internally to
rewrite in standard ASP the class branch.</p>
      <p>Implementation of CQA. In order to implement consistent query answering
we developed a new procedure in the OntoDLV system. Given an ontology O, this
procedure takes as input a conjunctive query Q, and a set of integrity constraints
A and builds both an ASP program cqa and a query Qcqa, such that: Q is
consistently true in O w.r.t. A i Qcqa is true in every answer set of cqa, in symbols:
cqa j=c Qcqa (in other words Qcqa is cautious consequence of cqa).</p>
      <p>
        Note that, this can be done in our settings since CQA belongs to the 2P
complexity class [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. However, we decided to support in the implementation only
a family of constraints in such a way that complexity of CQA stays in co-NP. In
particular, we consider constraints of the form:
(i) : a1(t1);
; an(tn); (t1; : : : ; tn):
(ii) : a1(t); not a2(t):
where ti is a tuple and (t1; : : : ; tn) is a conjunction of comparison literals of the
form X Y , with 2 f&lt;; &gt;; =; 6=g and X and Y are variables occurring in t1; : : : ; tn.
In the database eld constraints of type (i) are called denial constraints, whereas
constraints of type (ii) allow for modeling inclusion dependencies (see [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]).8 An
inclusion dependency is often denoted by Q[Y ] P [X] (where Q and P are
relations) and it requires that all values of attribute Y in Q are also values of attribute
X in some instance of P . For example, if P and Q are unary this can be ensured
in OntoDLP by writing : Q(X); not P (X): In particular, we allow only acyclic9
inclusion dependencies, since this assumption is su cient to guarantee that CQA
is in co-NP, see [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ].
      </p>
      <p>
        It is worth noting that, the algorithm that builds cqa is evaluated in OntoDLV
together with the ASP program produced by the OntoDLV rewriter. Since the
rewriting process suitably replaces OntoDLP atoms by standard ASP atoms [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ],
without loss of generality we adopt in the following the standard ASP notation for
atoms. Given a query Q, and a set of constraints A, cqa is built as follows:
1- for each constraints of the form (i) in A, insert the following rule into
a1(t1) _ _ an(tn) : a1(t1); ; an(tn); (t1; : : : ; tn):
2- for each atom a(t) occurring in some axiom of A, insert into
      </p>
      <p>a (t) : a(t); not a(t):
3- for all constraints of the form (ii) in A, insert the following rules in
a1(t) : a1(t1); not a2(t):
4- for each a(t) occurring in some axiom of A insert into
ar(t) : a (t); not a(t); not a(t):
cqa a rule:</p>
      <p>cqa:
cqa:
cqa the following rules:
8 Axioms of type (ii) can model inclusion dependencies under the assumption of complete
sources, where facts that are not in the ontology are considered to be false.
9 Informally, a set of inclusion dependencies is acyclic if no attribute of a relation R
transitively depends (w.r.t. inclusion dependencies) on an attribute of the same R.
Finally, Qcqa is built from Q by replacing atoms a(t) by ar(t), whenever a(t) occurs
in both Q and some constraint in A. The disjunctive rules (step 1) guess atoms to
be cancelled (step 2) for satisfying denial constraints, and rules generated by step
3, remove atoms violating also referential integrity constraints; eventually, step 4
builds repaired relations. Note that the minimality of answer sets guarantees that
deletions are minimized.</p>
      <p>As an example consider two relations m(code), and e(code,name). Suppose that
the axioms are : e(X; Y ); e(X; Z); Y &lt;&gt; Z:, : e(X; Y ); e(Z; Y ); X &lt;&gt; Z: and
: m(X); not code(X), where code(X) : e(X; Y ): requiring that both code and
name are keys for e and m[code] e[code]. Suppose now that, the following facts are
true e(1; a); e(2; b); e(2; a); m(1); m(2); it can be easily veri ed that all the axioms
are violated and m(2) is consistently true. The program obtained by rewriting the
constraints is:
e(X; Y ) _ e(X; Z) : e(X; Y ); e(X; Z); Y &lt;&gt; Z:
e(X; Y ) _ e(Z; Y ) : e(X; Y ); e(Z; Y ); X &lt;&gt; Z:
e (X; Y ) : e(X; Y ); not e(X; Y ): m (X) :
code (X) : code(X); not code(X): m(M ) :
mr(X) : m (X); not m(X); not m(X):
er(X; Y ) : e (X; Y ); not e(X; Y ); not e(X; Y ):
m(X); not m(X):
m (M ); not code (M ):
and the two answer sets of this program both contain mr(2), thus, m(2)? is derived
to be consistently true.
6</p>
    </sec>
    <sec id="sec-6">
      <title>Related Work</title>
      <p>
        As a matter of fact, the problem of linking ontology to databases is not new [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
Most of the available ontology systems and tools are able to deal with several
sources of information by exploiting di erent ontology languages (see [
        <xref ref-type="bibr" rid="ref24 ref25">24, 25</xref>
        ]).
Among them, the most closely related systems, which o er the possibility to import
relational databases into ontologies, are: the Ontobroker system [
        <xref ref-type="bibr" rid="ref26 ref27">26, 27</xref>
        ], and the
Neon tookit10. Both of them support a fragment of Flogic [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ], and allows one to
link relational database to Flogic ontologies. Comparing our approach with the
above mentioned ones, we notice that, OntoDLV supports a rule-based language
(ASP programs under the answer sets semantics) that, is strictly more expressive in
the propositional case, and retains decidability in the general case (programs with
variables). This allows to directly exploit the obtained ontology speci cation for
solving complex reasoning tasks; moreover, the advanced data-integration features
supported by OntoDLV, like consistent query answering, are missing in the above
mentioned systems, which, instead, support also the integration of sources di erent
from databases.
      </p>
      <p>
        Another related system is MASTRO [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ], that allows for linking a set of
preexisting data sources to ontologies speci ed in the description logic DL-LiteA. In
this approach, a very similar solution for creating object identi ers from database
values is used and, query answering on the obtained ontology is very e cient/scalable;
it can be performed in LogSpace in the size of the original database [
        <xref ref-type="bibr" rid="ref20 ref29">29, 20</xref>
        ].
Indeed, satis ability checking and query answering in DL-LiteA can be carried out
10 http://www.neon-toolkit.org/
by exploiting unfolding [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ], where queries on the ontology are replaced by
equivalent SQL speci cations on the databases containing the A-Box. This makes the
solution proposed in [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] very e ective when dealing with large databases, and
complexity-wise cheaper than our approach. However, the language of OntoDLV
is rule-based and, thus, allows for specifying more complex queries. Indeed,
OntoDLP combines (in a decidable framework) ontologies with recursive rules and
non-monotonic negation. Importantly, when the speci ed logic program is strati ed
and non-disjunctive, queries are unfolded, and computation is performed in
massmemory by exploiting DLVDB [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]. Note that, since the language of DLVDB [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]
is strictly more expressive than SQL (thanks to recursion and strati ed negation),
OntoDLV allows for the execution of more sophisticated queries w.r.t. [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ].
      </p>
      <p>
        Finally, since OntoDLP can be seen as an extension of disjunctive datalog with
object-oriented constructs, our work is related also to the techniques proposed in
the eld of object-oriented databases for mapping relational data to object-views
(see e.g. [
        <xref ref-type="bibr" rid="ref30 ref31">30, 31</xref>
        ]).
7
      </p>
    </sec>
    <sec id="sec-7">
      <title>Conclusion and Future Work</title>
      <p>In this paper we proposed a solution that allows one to \upgrade" one or more
existing enterprise relational databases to an ontology. The result is the natural
combination of the advantages of an ontology language (clean high-level view of
the information and powerful reasoning capabilities) with the e cient exploitation
of large already-existent databases.</p>
      <p>
        This was obtained by extending the OntoDLV language and system. In
particular, we implemented virtual classes and virtual relations, two new modeling
constructs that allow the knowledge engineer to de ne the instances of an ontology
by means of special logic rules, which act as a mapping from the information stored
in database tables to concept instances. Moreover, in order to deal with consistency
problems that may arise when data residing in di erent sources are combined in
a uni ed ontological view [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], we developed in OntoDLVconsistent query
answering [2, 10{13], so that the system is able to retrieve as much consistent information
as possible from the ontology.
      </p>
      <p>Ongoing work concerns the analysis of performances of our system on real-life
and large scale databases.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Gruber</surname>
            ,
            <given-names>T. R..:</given-names>
          </string-name>
          <article-title>A Translation Approach to Portable Ontology Speci cations</article-title>
          .
          <source>Knowledge Acquisition</source>
          <volume>5</volume>
          (
          <year>1993</year>
          )
          <volume>199</volume>
          {
          <fpage>220</fpage>
          "
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Lenzerini</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Data integration: a theoretical perspective</article-title>
          . In Popa, L., ed.:
          <source>PODS '02: Proc. of PODS</source>
          , New York, USA, ACM (
          <year>2002</year>
          )
          <volume>233</volume>
          {
          <fpage>246</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Ricca</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gallucci</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schindlauer</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dell'Armi</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Grasso</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leone</surname>
          </string-name>
          , N.:
          <article-title>OntoDLV: an ASP-based System for Enterprise Ontologies</article-title>
          .
          <source>JLC</source>
          (
          <year>2008</year>
          <article-title>) in print</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Ricca</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leone</surname>
          </string-name>
          , N.:
          <article-title>Disjunctive Logic Programming with types and objects: The DLV+ System</article-title>
          .
          <source>Journal of Applied Logics</source>
          <volume>5</volume>
          (
          <year>2007</year>
          )
          <volume>545</volume>
          {
          <fpage>573</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Dell'Armi</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gallucci</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leone</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ricca</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schindlauer</surname>
          </string-name>
          , R.:
          <article-title>OntoDLV: an ASP-based System for Enterprise Ontologies</article-title>
          .
          <source>In: Proceedings ASP07</source>
          . (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Gelfond</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lifschitz</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          :
          <article-title>Classical Negation in Logic Programs</article-title>
          and
          <string-name>
            <given-names>Disjunctive</given-names>
            <surname>Databases</surname>
          </string-name>
          .
          <source>New Generation Computing</source>
          <volume>9</volume>
          (
          <year>1991</year>
          )
          <volume>365</volume>
          {
          <fpage>385</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Gelfond</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leone</surname>
          </string-name>
          , N.:
          <article-title>Logic Programming and Knowledge Representation { the A-Prolog perspective</article-title>
          .
          <source>Arti cial Intelligence</source>
          <volume>138</volume>
          (
          <year>2002</year>
          )
          <volume>3</volume>
          {
          <fpage>38</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Minker</surname>
          </string-name>
          , J.:
          <article-title>Overview of Disjunctive Logic Programming</article-title>
          .
          <source>Annals of Mathematics and Arti cial Intelligence</source>
          <volume>12</volume>
          (
          <year>1994</year>
          )
          <volume>1</volume>
          {
          <fpage>24</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Eiter</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gottlob</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mannila</surname>
          </string-name>
          , H.:
          <article-title>Disjunctive Datalog</article-title>
          .
          <source>ACM Transactions on Database Systems</source>
          <volume>22</volume>
          (
          <year>1997</year>
          )
          <volume>364</volume>
          {
          <fpage>418</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Arenas</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bertossi</surname>
            ,
            <given-names>L.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chomicki</surname>
          </string-name>
          , J.:
          <article-title>Consistent Query Answers in Inconsistent Databases</article-title>
          .
          <source>In Proceedings of PODS '99)</source>
          , ACM Press (
          <year>1999</year>
          )
          <volume>68</volume>
          {
          <fpage>79</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Lembo</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lenzerini</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rosati</surname>
          </string-name>
          , R.:
          <article-title>Source Inconsistency and Incompleteness in Data Integration</article-title>
          .
          <source>In: Proc. of (KRDB-02)</source>
          , Toulouse France, CEUR Vol-
          <volume>54</volume>
          (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Bertossi</surname>
            ,
            <given-names>L.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hunter</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schaub</surname>
          </string-name>
          , T., eds.:
          <source>Inconsistency Tolerance. Volume 3300 of Lecture Notes in Computer Science</source>
          . Springer (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Chomicki</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Marcinkowski</surname>
          </string-name>
          , J.:
          <article-title>Minimal-change integrity maintenance using tuple deletions</article-title>
          .
          <source>Information and Computation</source>
          <volume>197</volume>
          (
          <year>2005</year>
          )
          <volume>90</volume>
          {
          <fpage>121</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Leone</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pfeifer</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Faber</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Eiter</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gottlob</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Perri</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Scarcello</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>The DLV System for Knowledge Representation and Reasoning</article-title>
          .
          <source>ACM Transactions on Computational Logic</source>
          <volume>7</volume>
          (
          <year>2006</year>
          )
          <volume>499</volume>
          {
          <fpage>562</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Apt</surname>
            ,
            <given-names>K.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Blair</surname>
            ,
            <given-names>H.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Walker</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Towards a Theory of Declarative Knowledge</article-title>
          . Morgan Kaufmann Publishers, Inc., Washington DC (
          <year>1988</year>
          )
          <volume>89</volume>
          {
          <fpage>148</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Smith</surname>
            ,
            <given-names>M.K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Welty</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>McGuinness</surname>
            ,
            <given-names>D.L.</given-names>
          </string-name>
          :
          <article-title>OWL web ontology language guide</article-title>
          .
          <source>W3C Candidate Recommendation</source>
          (
          <year>2003</year>
          ) http://www.w3.org/TR/owl-guide/.
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Chen</surname>
            ,
            <given-names>P.P.:</given-names>
          </string-name>
          <article-title>The Entity-Relationship Model - Toward a Uni ed View of Data</article-title>
          .
          <source>ACM Transactions on Database Systems</source>
          <volume>1</volume>
          (
          <year>1976</year>
          )
          <volume>9</volume>
          {
          <fpage>36</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Markowitz</surname>
            ,
            <given-names>V.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Makowsky</surname>
            ,
            <given-names>J.A.</given-names>
          </string-name>
          :
          <article-title>Identifying Extended Entity-Relationship Object Structures in Relational Schemas</article-title>
          .
          <source>IEEE Trans. Softw. Eng</source>
          .
          <volume>16</volume>
          (
          <year>1990</year>
          )
          <volume>777</volume>
          {
          <fpage>790</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Hull</surname>
            ,
            <given-names>R.:</given-names>
          </string-name>
          <article-title>A survey of theoretical research on typed complex database objects</article-title>
          .
          <volume>15</volume>
          (
          <year>1987</year>
          )
          <volume>193</volume>
          {
          <fpage>261</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Poggi</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lembo</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Calvanese</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Giacomo</surname>
            ,
            <given-names>G.D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lenzerini</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rosati.</surname>
          </string-name>
          , R.:
          <article-title>Linking Ontologies to Data</article-title>
          .
          <source>Journal of Data Semantics</source>
          (
          <year>2008</year>
          )
          <volume>133</volume>
          {
          <fpage>173</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Gallucci</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ricca</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Visual Querying and Application Programming Interface for an ASP-based Ontology Language</article-title>
          .
          <source>In Proc. of SEA'07</source>
          ,
          <string-name>
            <surname>AZ</surname>
          </string-name>
          , USA, (
          <year>2007</year>
          ).
          <volume>56</volume>
          {
          <fpage>70</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Terracina</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leone</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lio</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Panetta</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Experimenting with recursive queries in database and logic programming systems</article-title>
          .
          <source>TPLP 7</source>
          (
          <year>2007</year>
          )
          <volume>1</volume>
          {
          <fpage>37</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Abiteboul</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hull</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vianu</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          : Foundations of Databases. Addison-Wesley (
          <year>1995</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Duineveld</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stoter</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Weiden</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kenepa</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Benjamins</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          :
          <article-title>Wonder Tools? A Comparative Study of Ontological Engineering Tools</article-title>
          .
          <source>JHCS 1</source>
          (
          <year>2000</year>
          )
          <volume>1111</volume>
          {
          <fpage>1133</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <surname>Kalfoglou</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schorlemmer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Ontology mapping: the state of the art</article-title>
          .
          <source>Knowl. Eng. Rev</source>
          .
          <volume>18</volume>
          (
          <year>2003</year>
          )
          <volume>1</volume>
          {
          <fpage>31</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <surname>Fensel</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Decker</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Erdmann</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Studer</surname>
          </string-name>
          , R.: Ontobroker:
          <article-title>How to make the www intelligent</article-title>
          .
          <source>In: In Proc. of (KAW98)</source>
          . (
          <year>1998</year>
          ) 9{
          <fpage>7</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          27.
          <string-name>
            <surname>Sure</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Angele</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Staab</surname>
            ,
            <given-names>S.:</given-names>
          </string-name>
          <article-title>OntoEdit: Multifaceted Inferencing for Ontology Engineering</article-title>
          .
          <source>Journal of Data Semantics</source>
          <volume>1</volume>
          (
          <year>2003</year>
          )
          <volume>128</volume>
          {
          <fpage>152</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          28.
          <string-name>
            <surname>Kifer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lausen</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wu</surname>
          </string-name>
          , J.:
          <article-title>Logical foundations of object-oriented and frame-based languages</article-title>
          .
          <source>Journal of the ACM</source>
          <volume>42</volume>
          (
          <year>1995</year>
          )
          <volume>741</volume>
          {
          <fpage>843</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          29.
          <string-name>
            <surname>Calvanese</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Giacomo</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lembo</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lenzerini</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rosati</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          :
          <article-title>Tractable Reasoning and E cient Query Answering in Description Logics: The DL-Lite Family</article-title>
          .
          <source>Journal of Automated Reasoning</source>
          <volume>39</volume>
          (
          <year>2007</year>
          )
          <volume>385</volume>
          {
          <fpage>429</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          30.
          <string-name>
            <surname>Bancilhon</surname>
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Delobel</surname>
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kanellakis P. C.</surname>
          </string-name>
          <article-title>: Building an Object-oriented Database System: The Story of O2</article-title>
          . Morgan Kaufmann (
          <year>1992</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          31.
          <string-name>
            <surname>Abiteboul</surname>
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bonner</surname>
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Objects and</article-title>
          <string-name>
            <surname>Views. ACM SIGMOD</surname>
          </string-name>
          (
          <year>1991</year>
          )
          <volume>238</volume>
          {
          <fpage>247</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>32. ODMG: Object Data Management Group: http://www.odbms.org/.</mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>