<!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>Towards an Object-Oriented Reasoning System for OWL</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Informatics, Aristotle University of Thessaloniki</institution>
          ,
          <country country="GR">Greece</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>In this paper we present O-DEVICE, a deductive object-oriented knowledge base system for reasoning over OWL documents. O-DEVICE imports OWL documents into the CLIPS production rule system by transforming OWL ontologies into an object-oriented schema of the CLIPS Object-Oriented Language (COOL) and instances of OWL classes into COOL objects. The purpose of this transformation is to be able to use a deductive object-oriented rule language for reasoning about OWL data. The O-DEVICE data model for OWL ontologies maps classes to classes, resources to objects, property types to class slot (or attribute) definitions and encapsulates resource properties inside resource objects, as traditional OO attributes (or slots). In this way, when accessing properties of a single resource, few joins are required. O-DEVICE is an extension of a previous system, called R-DEVICE, which effectively maps RDF Schema and data into COOL objects and then reasons over RDF data using a deductive object-oriented rule language.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Semantic Web is the next step of evolution for the Web, where information is given
well-defined meaning, enabling computers and people to work in better cooperation.
Ontologies can be considered as a primary key towards this goal since they provide a
controlled vocabulary of concepts, each with an explicitly defined and machine
processable semantics.</p>
      <p>
        Furthermore, a lot of effort is undertaken to define a rule language for the Semantic
Web on top of ontologies in order to combine already existing information and
deduce new knowledge. Currently, RuleML [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] is the main standardization effort for
rules on the Web to specify queries and inferences in Web ontologies, mappings
between ontologies, and dynamic Web behaviors of workflows, services, and agents.
      </p>
      <p>
        One approach to implement a rule system on top of the Semantic Web ontology
layer is to start from scratch and build inference engines that draw conclusions
directly on the OWL data model. However, such an approach tends to throw away
decades of research and development on efficient and robust rule engines. In this paper
we follow a different approach: we re-use an existing rule system (CLIPS [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]) for
reasoning on top of OWL data. However, before an existing rule system is used, careful
design must be made on how OWL data and semantics are going to be treated in the
host system.
      </p>
      <p>
        More specifically, we describe O-DEVICE, a system for inferencing over (on top
of) OWL documents. The system transforms OWL ontologies into an object-oriented
schema of the OO programming language provided within CLIPS, called COOL [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ],
and OWL data into objects. The O-DEVICE data model maps OWL classes to
classes, OWL resources to objects, OWL property types to class slot (or attribute)
definitions and encapsulates OWL resource properties inside objects, as traditional
OO attributes (or slots). In this way, when accessing properties of a single resource
few joins are required. The system also features a powerful deductive rule language
which supports inferencing over the transformed OWL descriptions. Users can either
use this deductive language to express queries or a RuleML-like syntax.
      </p>
      <p>
        O-DEVICE is an extension of a previous system, called R-DEVICE [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], which
effectively maps RDF Schema and data into objects and then reasons over RDF data
using a deductive object-oriented rule language. The rule language is implemented by
translating deductive rules into CLIPS production rules. Some of its features are
support for incrementally maintained, materialized views, normal and generalized path
expressions, stratified negation as failure, aggregate, grouping, and sorting, functions.
Due to space limitations only few features of the OWL mapping scheme are presented
in this paper. Furthermore, the rule language is not discussed.
      </p>
      <p>The rest of the paper is organized as follows: Section 2 presents related work on
rule systems on top of ontologies. Section 3 presents the overall architecture of the
system, describing shortly the functionality of the basic modules of the system.
Section 4 describes the mapping procedure of OWL semantics into COOL. Finally,
Section 5 concludes with a summary and potential future work.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Related Work</title>
      <p>
        A lot of effort has been made to develop rule engines for reasoning on top of OWL
ontologies. Bossam [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] is a RETE-based forward chaining rule engine that a)
supports both negation-as-failure and classical negation, b) relieves range-restrictedness
in the rule heads and c) supports remote binding for cooperative inferencing among
multiple rule engines. Bossam translates OWL documents into RDF triples as facts.
Any triples referring to OWL classes and restrictions are translated into unary
predicates and triples declaring property values into binary predicates. Finally, RDF
collections are translated into built-in list constructs.
      </p>
      <p>
        F-OWL [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] is an ontology inference engine for OWL, which is implemented using
Flora-2, an object-oriented knowledge base language and application development
platform that translates a unified language of F-logic, HiLog, and Transaction Logic
into the XSB deductive engine. Key features of F-OWL include the ability to reason
with the OWL ontology model, the ability to support knowledge consistency checking
using axiomatic rules defined in Flora-2, and an open application programming
interface (API) for Java application integrations.
      </p>
      <p>
        ROWL [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] system enables users to frame rules in RDF/XML syntax using
ontology in OWL. Using XSLT stylesheets, the rules in RDF/XML are transformed into
forward-chaining rules in JESS. It makes use of two more stylesheets to transform
ontology and instance files into Jess unordered facts that represent triplets. The file with
facts and rules are then fed to JESS which enables inferencing and rule invocation.
      </p>
      <p>
        SweetJess [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] is an implementation of a defeasible reasoning system (situated
courteous logic programs) based on Jess that integrates well with RuleML. However,
SweetJess rules can only express reasoning over ontologies expressed in
DAMLRuleML (a DAML-OIL like syntax of RuleML) and not on arbitrary OWL
data. Furthermore, SweetJess is restricted to simple terms (variables and atoms).
      </p>
      <p>
        SweetProlog [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] is a system for translating rules into Prolog. This is achieved via
a translation of OWL ontologies and rules expressed in OWLRuleML into a set of
facts and rules in Prolog. It is implemented in Java and makes use of three languages:
Prolog as a rule engine, OWL as an ontology and OWLRuleML as a rule language. It
enables reasoning (through backward chaining) over OWL ontologies by rules via a
translation of OWL subsets into simple Prolog predicates which a JIProlog engine can
handle. There are five principle functions that characterize SweetProlog: a) translation
of OWL and OWLRuleML ontologies into RDF triples, b) translation of OWL
assertions into Prolog, c) translation of OWLRuleML rules into CLP, d) transformation of
CLP rules into Prolog and e) interrogation of the output logic programs.
      </p>
      <p>
        DR-Prolog [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] is a system for defeasible reasoning on the Web. The system is
a) syntactically compatible with RuleML, b) features strict and defeasible rules,
priorities and two kinds of negation, c) is based on a translation to logic programming
with declarative semantics, and d) can reason with rules, RDF, RDF Schema and part
of OWL ontologies. The system is based on Prolog and supports monotonic and
nonmonotonic rules, open and closed world assumption and reasoning with
inconsistencies.
      </p>
      <p>
        SWRL [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] is a rule language based on a combination of OWL with the
Unary/Binary Datalog sublanguages of RuleML. SWRL enables Horn-like rules to be
combined with an OWL knowledge base. Negation is not explicitly supported by the
SWRL language, but only indirectly through OWL DL (e.g. class complements). Its
main purpose is to provide a formal meaning of OWL ontologies and extend OWL
DL. There is a concrete implementation of SWRL, called Hoolet. Hoolet translates
the ontology to a collection of axioms (based on the OWL semantics) which is then
given to a first order prover for consistency checking. Hoolet has been extended to
handle rules through the addition of a parser for an RDF rule syntax and an extension
of the translator to handle rules, based on the semantics of SWRL rules.
      </p>
      <p>
        SWSL [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] is a logic-based language for specifying formal characterizations of Web
services concepts and descriptions of individual services. It includes two
sublanguages: SWSL-FOL and SWSL-Rules. The latter is a rule-based sublanguage, which
can be used both as a specification and an implementation language. It is designed to
provide support for a variety of tasks that range from service profile specification to
service discovery, contracting and policy specification. It is a layered language and its
core consists of the pure Horn subset of SWSL-Rules.
      </p>
      <p>
        WRL [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] is a rule-based ontology language for the Semantic Web. It is derived
from the ontology component of the Web Service Modeling Language WSML. The
language is located in the Semantic Web stack next to the Description Logic based
Ontology language OWL. WRL constists of three variants, namely Core, Flight and
Full. WRL-Core marks the common core between OWL and WRL and is thus the
basic interoperability layer with OWL. WRL-Flight is based on the Datalog subset of
F-Logic, with negation-as-failure under the Perfect Model Semantics. WRL-Full is
based on full Horn with negation-as-failure under the Well-Founded Semantics.
3
      </p>
    </sec>
    <sec id="sec-3">
      <title>System Architecture</title>
      <p>The architecture of the system (Fig 1) consists of the following five basic modules:
• Rule Program Loader
• OWL Triple Loader
• Deductive Rule Translator
• OWL Triple Translator
• OWL Extractor</p>
      <p>The user inputs (step 1) the URL of the RuleML rule file to the Rule Program
Loader, which downloads it. The rule file also contains information about the location
of the OWL files, the names of the derived classes to be exported as results and the
name of the output OWL file. The Rule Program Loader scans the rule file to target
the relevant OWL documents to which the rule file refers and passes theirs URLs to
the OWL Triple Loader (step 2). The RuleML program is translated into the native
O-DEVICE rule notation using an XSLT stylesheet. The O-DEVICE rule program is
then forwarded to the Deductive Rule Translator (step 4).</p>
      <p>
        The OWL Triple Loader accepts a specific URL of an OWL document from the
Rule Program Loader to download (step 2). Furthermore it uses the ARP Parser [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]
to translate the OWL document in the N-Triple format. The OWL Triple Translator
accepts from the OWL Triple Loader the produced triples (step 3) and transforms
them into classes, properties and objects of COOL The mapping scheme is described
in Section 4.
      </p>
      <p>The Deductive Rule Translator accepts from the Rule Program Loader a set of
O-DEVICE rules (step 4) and translates them into a set of CLIPS production rules
(step 5). After the translation of deductive rules or the loading of the compiled rules,
CLIPS runs the production rules and generates the objects that constitute the result of
the rule program. The result-objects are exported to the user (step 6) as an OWL
document through the OWL Extractor.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Mapping OWL Primitives into COOL</title>
      <p>
        In this section we describe how the OWL data model is mapped onto the COOL
object-oriented model of the CLIPS language. The class hierarchy of O-DEVICE
follows precisely the class hierarchy of OWL, as it is declared in the OWL Specification
[
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. The mapping of the RDF Model into COOL is already defined in R-DEVICE
[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], so we just extended the existing RDF hierarchy. In this section we describe only
the way O-DEVICE handles OWL primitives.
4.1
      </p>
      <sec id="sec-4-1">
        <title>Mapping ontologies and data to objects</title>
        <p>The mapping scheme of OWL ontologies and data to objects tries to exploit as many
built-in features of the host object-oriented language (namely COOL) as possible. In
this way, querying of objects and reasoning over OWL data will be faster. The main
features of the basic O-DEVICE mapping scheme are the following:
• Built-in OWL classes are represented both as classes and as objects, instances of
the rdfs:Class class. This binary representation is due to the fact that COOL
does not support meta-classes, so the role of meta-class is played by the instances
of rdfs:Class class. User-defined classes follow the same scheme except for the
fact that the "meta-class" objects are instances of the class owl:Class.
Metaclasses are needed in order to store certain information about a class. So, for
example, the OWL class Whale (in section 4.2.1) is represented in O-DEVICE both by a
defclass Whale construct and a [Whale] object that is an instance of the
owl:Class class. Inheritance issues of class hierarchies are treated by the
classinheritance mechanism of COOL, for inheriting properties from superclasses to
subclasses, for including the extensions of subclasses to the extensions of the
superclasses and for the transitivity of the rdfs:subClassOf property.
• All OWL data (resources) are represented as COOL objects, direct or indirect
instances of the owl:Thing class.
• Properties are direct or indirect instances of the class owl:DatatypeProperty or
owl:ObjectProperty. This also includes subclasses of the above classes, such
as owl:TransitiveProperty. Furthermore, properties are defined as slots
(attributes) of their domain class(es). The values of properties are stored inside
resource objects as slot values. OWL properties are multislots, i.e. they store lists of
values, because a resource can have multiple times the same property attached to it.</p>
      </sec>
      <sec id="sec-4-2">
        <title>Handling OWL Semantics</title>
        <p>In OWL specification, there are new classes and properties that enrich the language
with more semantics than RDF. For a system to be able to reason correctly on OWL
documents, it should handle these classes and properties appropriately. O-DEVICE
currently handles ontologies in OWL DL, which supports rich expressiveness and
gives computational guarantees. In the subsections below, we describe how the
system handles some of the OWL constructs, giving for each case a short example.</p>
      </sec>
      <sec id="sec-4-3">
        <title>4.2.1 Property Restrictions</title>
        <p>Class owl:Restriction is a special kind of class description. It describes an
anonymous class, namely a class of all individuals that satisfy the restriction. OWL
distinguishes two kinds of property restrictions: value and cardinality constraints.
Value constraints are declared with the properties owl:allValuesFrom,
owl:someValuesFrom, owl:hasValue and the cardinality constrains with the
properties owl:cardinality, owl:minCardinality, owl:maxCardinality.</p>
        <p>Before we explain how O-DEVICE handles these properties, we briefly describe a
system slot we use to specify the type of a property range. In COOL we define the
value type of a slot via the INSTANCE-NAME keyword for object properties and the
INTEGER, SYMBOL, etc, keywords for the datatype properties. However, there is no
way to specify explicitly the class that an object property is allowed to be. This is very
critical for our system and we solve this problem by inserting a meta-class variable
(slot), named class-refs, which holds the class types for all the object properties of
a class. This system-slot is stored within the "meta-class" object.</p>
        <p>Due to space limitations, below we only present how O-DEVICE handles
owl:allValuesFrom and owl:minCardinality.</p>
        <sec id="sec-4-3-1">
          <title>Restriction owl:allValuesFrom</title>
          <p>A restriction containing an owl:allValuesFrom constraint is used to describe a
class of all individuals for which all values of the property under consideration are
either members of the class extension of the class description or are data values within
the specified data range. Currently the system does not support data ranges. So we
will give an example about the class extension of the class description.</p>
          <p>Suppose we have the following OWL document with four classes, Mammal,
Whale, Land and Water and one object property living_place. The domain of
living_place is Mammal and its range is Land. This property is inherited by Whale;
however, the restriction for Whale is that this property can take values only from Water.
&lt;owl:Class rdf:ID="Mammal"/&gt;
&lt;owl:Class rdf:ID="Whale"&gt;</p>
          <p>&lt;rdfs:subClassOf rdf:resource="#Mammal"/&gt;
&lt;/owl:Class&gt;
&lt;owl:Class rdf:ID="Land"/&gt;
&lt;owl:Class rdf:ID="Water/"&gt;
&lt;owl:ObjectProperty rdf:ID="living_place" &gt;
&lt;rdfs:domain rdf:resource="#Mammal" /&gt;
&lt;rdfs:range rdf:resource="#Land" /&gt;
&lt;/owl:ObjectProperty&gt;
&lt;owl:Class rdf:about="Whale" &gt;
&lt;rdfs:subClassOf&gt;
&lt;owl:Restriction&gt;
&lt;owl:onProperty rdf:resource="#living_place" /&gt;
&lt;owl:allValuesFrom rdf:resource="#Water" /&gt;
&lt;/owl:Restriction&gt;
&lt;/rdfs:subClassOf&gt;
&lt;/owl:Class&gt;</p>
          <p>The "meta-class" object for Whale is shown below (without unnecessary details).
[Whale] of owl:Class
(class-refs example:living_place example:Water rdf:type owl:Class
...</p>
          <p>owl:equivalentClass owl:Class owl:intersectionOf List)
(rdf:type [owl:Class])</p>
          <p>The multislot class-refs contains value pairs in the form property-range and holds
the ranges for the values of all the object properties of a certain class. For example,
the first two values of the slot are example:living_place and example:Water. This
means that the object property example:living_place of class example:Whale can take
values only from example:Water. The same slot of class example:Mammal, which is a
super-class of example:Whale contains the pair example:living_place-example:Land
taken from the rdfs:domain restriction of the definition of property
example:living_place. This information is used from the system during its operation either
to enforce correct data types or to infer types for values of object properties.</p>
          <p>The owl:hasValue constraint is implemented as a default slot value in COOL,
whereas the owl:someValuesFrom constraint is implemented a combination of a
minimum cardinality constraint (see below) and a special run-time check upon the
creation of the resource-object.</p>
        </sec>
        <sec id="sec-4-3-2">
          <title>Restriction owl:minCardinality</title>
          <p>This restriction defines a lower bound of the number of possible values of a property.
COOL directly supports cardinality constraints for multislots. Consider the following
example:
&lt;owl:Class rdf:about="#Wine" &gt;
&lt;rdfs:subClassOf&gt;
&lt;owl:Restriction&gt;
&lt;owl:onProperty rdf:resource="#madeFromGrape" /&gt;
&lt;owl:minCardinality rdf:datatype="&amp;xsd;nonNegativeInteger"&gt;1
&lt;/owl:minCardinality&gt;
&lt;/owl:Restriction&gt;
&lt;/rdfs:subClassOf&gt;
&lt;/owl:Class&gt;</p>
          <p>The definition of Wine is:
(defclass example:Wine (is-a gen1)
(multislot example:madeFromGrape (type STRING) (cardinality 1
?VARIABLE)))</p>
          <p>The cardinality constraint has the form (cardinality 1 ?VARIABLE) which means
that the lower bound is 1 and the upper bound unrestricted. The rest of the OWL
cardinality constraints are implemented similarly.</p>
        </sec>
      </sec>
      <sec id="sec-4-4">
        <title>4.2.2 Boolean Combinations of Classes</title>
        <p>In OWL it is possible to create new classes by combining existing classes through
Boolean operators. For example, the owl:intersectionOf property links a class to
a list of class descriptions and defines the new class extension to contain precisely
those individuals that are members of the class extension of all class descriptions in
the list. We describe the use of this property using the following simple example:
&lt;owl:Class rdf:ID="Man"&gt;
&lt;owl:intersectionOf rdf:parseType="Collection"&gt;
&lt;owl:Class rdf:resource="#Human"/&gt;
&lt;owl:Class rdf:resource="#Male"/&gt;
&lt;/owl:intersectionOf&gt;
&lt;/owl:Class&gt;</p>
        <p>Class Man is an intersection of classes Human and Male. This is implemented in
O-DEVICE as a class that is a subclass of the other two:
(defclass example:Man (is-a example:Human example:Male))
(defclass example:Human (is-a owl:Thing))
(defclass example:Male (is-a owl:Thing))</p>
        <p>Objects that belong to class Man also belong to both its superclasses through the
default class extension mechanism of COOL. Furthermore, when a resource is an
instance of both Human and Male classes, the core triple translator of R-DEVICE
should create a dummy class, which is the intersection of the two classes, and then
create a new object as an instance of this dummy class. However, if the intersection
class already exists, then the new object is created as an instance of that class.</p>
        <p>Union of classes is implemented as a common superclass. The complement of a
class is implemented through the rule language of O-DEVICE by replacing all
references to the complement of a class A with the keyword ~A, which actually ranges
over all objects that are not instances of A. In this way, we are able to implement the
strong negation of OWL into a production rule environment where the closed world
assumption holds and only negation-as-failure exists.</p>
      </sec>
      <sec id="sec-4-5">
        <title>4.2.3 Class Equivalence</title>
        <p>The built-in property owl:equivalentClass links a class description to another
class description stating that both class extensions contain exactly the same set of
individuals. Consider the following example:
&lt;owl:Class rdf:ID="Picture" /&gt;
&lt;owl:Class rdf:ID="Figure"&gt;</p>
        <p>&lt;owl:equivalentClass rdf:resource="#Picture" /&gt;
&lt;/owl:Class&gt;
&lt;owl:Class rdf:ID="Image" &gt;</p>
        <p>&lt;owl:equivalentClass rdf:resource="#Picture" /&gt;
&lt;/owl:Class&gt;</p>
        <p>This is treated by creating a system class, with a random generated name, and
making all the equivalent classes above subclasses of this class.
(defclass gen1 (is-a owl:Thing))
(defclass example:Picture (is-a gen1))
(defclass example:Figure (is-a gen1))
(defclass example:Image (is-a gen1))</p>
        <p>These are the corresponding "meta-objects":
[example:Picture] of owl:Class
(class-refs ... owl:equivalentClass owl:Class ... )
(owl:equivalentClass [example:Image] [example:Figure])
(rdf:type [owl:Class]) (primary y)
(rdfs:subClassOf [gen1]) (equivalent gen1)
[example:Image] of owl:Class
(class-refs ... owl:equivalentClass owl:Class ... )
(owl:equivalentClass [example:Figure] [example:Picture])
(rdf:type [owl:Class]) (primary n)
(rdfs:subClassOf [gen1]) (equivalent gen1)
[example:Figure] of owl:Class
(class-refs ... owl:equivalentClass owl:Class ... )
(owl:equivalentClass [example:Image] [example:Picture])
(rdf:type [owl:Class]) (primary n)
(rdfs:subClassOf [gen1]) (equivalent gen1)</p>
        <p>Notice the two system properties primary and equivalent. The primary slot takes
values ‘y’ or ‘n’ and is used as follows: one of the equivalent classes is randomly
chosen to be a primary one (thus having the value y for the slot primary). This class is
considered the representative of all the others and is used during the construction of
the set of equivalent classes. Notice that the slot owl:equivalentClass holds the
names of the rest of the equivalent classes of the set. In the example, the
representative class of all the equivalent classes is Picture.</p>
        <p>The equivalent property holds the name of the superclass of all the equivalent
classes. In the example, the superclass of all equivalent classes is gen1. The semantics
of class equivalence is actually implemented through the rule language of
O-DEVICE; when a class appears in a rule, the system checks if it has a non-null
value in the property equivalent. If yes, then the name of the class is replaced by the
equivalent class. For example, if Picture (or Image or Figure) appears in a rule, then
it will be substituted by gen1 and thus this rule will cover all the equivalent classes
since the extension of gen1 covers the same set of objects, namely the union of the
extensions of all the equivalent classes.</p>
        <p>The owl:sameAs construct is handled in a similar way, by creating a primary
object that represents all the “same” objects, which delegate to the primary object all
their property values. In this way the primary object is always “retrieved” by the rule
language, since the rest of the objects to not have any property values. When any of
these objects is directly queried, it delegates the query to the primary object. In this
way we overcome the unique-names assumption of OO programming languages.</p>
      </sec>
      <sec id="sec-4-6">
        <title>4.2.4 Special Properties</title>
        <p>In OWL several special characteristics of properties can be defined such as
transitivity, symmetry, etc. For example, when a property P is transitive and the pairs (x, y)
and (y, z) are instances of P, then it can be inferred that the pair (x, z) is also an
instance of P. Consider the following example:
&lt;owl:Class rdf:ID="Region" /&gt;
&lt;owl:TransitiveProperty rdf:ID="subRegionOf"&gt;
&lt;rdfs:domain rdf:resource="#Region"/&gt;
&lt;rdfs:range rdf:resource="#Region"/&gt;
&lt;/owl:TransitiveProperty&gt;
&lt;Region rdf:ID="region1" &gt;</p>
        <p>&lt;subRegionOf rdf:resource="#region2"/&gt;
&lt;/Region&gt;
&lt;Region rdf:ID="region2" &gt;</p>
        <p>&lt;subRegionOf rdf:resource="#region3"/&gt;
&lt;/Region&gt;
&lt;Region rdf:ID="region3" /&gt;</p>
        <p>Region1 is a sub-region of region2 and region2 is a sub-region of region3. Because
subRegionOf is a transitive property, the system must infer that region1 is also a
sub-region of region3. In O-DEVICE the corresponding objects are:
[example:region2] of example:Region</p>
        <p>(rdf:type [example:Region]) (example:subRegionOf [example:region3])
[example:region3] of example:Region
(rdf:type [example:Region]) (example:subRegionOf)</p>
        <p>The value example:region3 has been explicitly stored to the property
subRegionOf of the instance region1. In fact, the OWL Triple Translator module calculates
and materializes the transitive closure of transitive properties when OWL documents
are loaded. In this way, during the execution of rules there is no need to navigate
through transitive properties. Almost the same scheme is used to implement
symmetric and inverse properties. The OWL Triple Translator module materializes the
reverse relationships at load time. Functional and inverse functional properties are
implemented with the aid of the COOL cardinality constraint.
5</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Conclusions and Future Work</title>
      <p>In this paper we have presented O-DEVICE, a deductive object-oriented knowledge
base system for reasoning over OWL documents. O-DEVICE imports OWL
documents into the CLIPS production rule system by transforming OWL ontologies into
an object-oriented schema and instances of OWL classes into objects. In this way,
when accessing multiple properties of a single resource, few joins are required. The
system also features a powerful deductive rule language which supports inferencing
over the transformed OWL descriptions, which however has not been presented in
this paper, due to space limitations. The mapping scheme of OWL ontologies and data
to COOL objects is partly based on the underlying COOL object model and partly on
the compilation scheme of the deductive rule language.</p>
      <p>
        O-DEVICE is still work in progress; therefore, certain features of the descriptive
semantics of OWL are still under development. For example, functional properties are
currently handled only as cardinality restrictions, whereas their role is also to
conclude that two different names might actually represent the same resource. All these
interpretations of OWL constructs are currently being implemented by appropriately
extending the OWL Triple Translator (Fig. 1) with production rules that assert extra
triples, which are further treated by the translator. Notice that asserting new properties
to an already imported ontology might call for object and/or class re-definitions,
which are efficiently handled by the core triple translator of R-DEVICE [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
Therefore, the triple translator is non-monotonic, and so is the rule language, since it
supports stratified negation as failure and incrementally maintained materialized views.
      </p>
      <p>
        Planned future work includes:
• Deploying the reasoning system as a Web Service.
• Implementing a Semantic Web Service composition system using OWL-S service
descriptions and user-defined service composition rules.
• Integrating O-DEVICE with a defeasible logic reasoner [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], an extension of the
R-DEVICE system, and study how defeasible logic can be used to describe and
implement web service composition strategies.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Angele</surname>
            <given-names>J</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Boley</surname>
            <given-names>H.</given-names>
          </string-name>
          , J. de Bruijn, Fensel D.,
          <string-name>
            <surname>Hitzler</surname>
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kifer</surname>
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Krummenacher</surname>
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lausen</surname>
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Polleres</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Studer</surname>
            <given-names>R.</given-names>
          </string-name>
          ,
          <article-title>"Web Rule Language (WRL)"</article-title>
          ,
          <source>Technical Report</source>
          , http://www.wsmo.org/wsml/wrl/wrl.html
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Bassiliades</surname>
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Antoniou</surname>
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vlahavas</surname>
            <given-names>I.</given-names>
          </string-name>
          ,
          <article-title>“A Defeasible Logic Reasoner for the Semantic Web”</article-title>
          ,
          <source>3rd Int. Workshop on Rules and Rule Markup Languages for the Semantic Web (RuleML</source>
          <year>2004</year>
          ), Springer-Verlag,
          <source>LNCS 3323</source>
          , pp.
          <fpage>49</fpage>
          -
          <lpage>64</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Bassiliades</surname>
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vlahavas</surname>
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>“R-DEVICE: A Deductive RDF Rule Language</surname>
            <given-names>”</given-names>
          </string-name>
          ,
          <source>3rd Int. Workshop on Rules and Rule Markup Languages for the Semantic Web (RuleML</source>
          <year>2004</year>
          ), Springer-Verlag,
          <source>LNCS 3323</source>
          , pp.
          <fpage>65</fpage>
          -
          <lpage>80</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Battle</surname>
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bernstein</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Boley</surname>
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Grosof</surname>
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gruninger</surname>
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hull</surname>
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kifer</surname>
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Martin</surname>
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>McIlraith</surname>
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>McGuinness</surname>
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Su</surname>
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tabet</surname>
            <given-names>S.</given-names>
          </string-name>
          ,
          <article-title>"SWSL-rules: A rule language for the semantic web"</article-title>
          ,
          <source>W3C rules workshop</source>
          , Washington DC, USA, April 2005
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Bikakis</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Antoniou</surname>
            <given-names>G.</given-names>
          </string-name>
          ,
          <article-title>DR-Prolog: A System for Reasoning with Rules and Ontologies on the Semantic Web 2005</article-title>
          ,
          <source>Proc. 25th American National Conference on Artificial Intelligence (AAAI-2005).</source>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Boley</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tabet</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Wagner</surname>
          </string-name>
          , G.,
          <article-title>“Design Rationale of RuleML: A Markup Language for Semantic Web Rules”</article-title>
          ,
          <source>Proc. Int</source>
          . Semantic Web Working Symp., pp.
          <fpage>381</fpage>
          -
          <lpage>402</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Chen</surname>
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zou</surname>
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kagal</surname>
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Finin</surname>
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>“F-OWL</surname>
          </string-name>
          :
          <article-title>An OWL Inference Engine in Flora-2”</article-title>
          , http://fowl.sourceforge.net/
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8. CLIPS 6.23
          <string-name>
            <given-names>Basic</given-names>
            <surname>Programming</surname>
          </string-name>
          <string-name>
            <surname>Guide</surname>
          </string-name>
          , http://www.ghg.net/clips
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Gandon</surname>
            <given-names>F. L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sheshagiri</surname>
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sadeh</surname>
            <given-names>N. M.</given-names>
          </string-name>
          ,
          <article-title>"ROWL: Rule Language in OWL and Translation Engine for JESS"</article-title>
          , http://mycampus.sadehlab.cs.cmu.edu/public_pages/ ROWL/ROWL.html
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Grosof</surname>
            <given-names>B.N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gandhe M.D.</surname>
          </string-name>
          ,
          <string-name>
            <surname>Finin</surname>
            <given-names>T.W.</given-names>
          </string-name>
          , “SweetJess: Translating DAMLRuleML to JESS”,
          <source>Proc. RuleML Workshop</source>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Horrocks</surname>
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Patel-Schneider</surname>
            <given-names>P.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Boley</surname>
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tabet</surname>
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Grosof</surname>
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dean</surname>
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>“</surname>
            <given-names>SWRL</given-names>
          </string-name>
          :
          <article-title>A semantic web rule language combining OWL and RuleML”, Member submission</article-title>
          ,
          <source>May</source>
          <year>2004</year>
          ,
          <article-title>W3C</article-title>
          . http://www.w3.org/Submission/SWRL/
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Jang</surname>
            <given-names>M.</given-names>
          </string-name>
          ,
          <article-title>"Bossam - A Java-based Rule Processor for the Semantic Web"</article-title>
          , http://mknows.etri.re.kr/bossam
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Laera</surname>
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tamma</surname>
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bench-Capon</surname>
            <given-names>T.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Semeraro</surname>
            <given-names>G.</given-names>
          </string-name>
          ,
          <article-title>“SweetProlog: A System to Integrate Ontologies and Rules”</article-title>
          ,
          <source>3rd Int. Workshop on Rules and Rule Markup Languages for the Semantic Web (RuleML</source>
          <year>2004</year>
          ), Springer-Verlag,
          <source>LNCS 3323</source>
          , pp.
          <fpage>188</fpage>
          -
          <lpage>193</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>McBride</surname>
            <given-names>B.</given-names>
          </string-name>
          , “
          <article-title>Jena: Implementing the RDF Model and Syntax Specification”</article-title>
          ,
          <source>Proc. 2nd Int. Workshop on the Semantic Web</source>
          ,
          <year>2001</year>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Web Ontology</surname>
          </string-name>
          <article-title>Language (OWL)</article-title>
          , http://www.w3.org/2004/OWL/
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>