<!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>A Tool for Efficient Development of Ontology-based Applications</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Olavo Holanda</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ig Ibert Bittencourt</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Seiji Isotani</string-name>
          <email>sisotani@icmc.usp.br</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Endhe Elias</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Judson Bandeira</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Computing Institute - Federal University Alagoas (UFAL) Maceio ́ - AL -</institution>
          <country country="BR">Brazil</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Department of Computer Science, Institute of Mathematics and Computer Science University of Sa ̃o Paulo, Sa ̃o Carlos</institution>
          ,
          <addr-line>Sa ̃o Paulo</addr-line>
          ,
          <country country="BR">Brazil</country>
        </aff>
      </contrib-group>
      <fpage>120</fpage>
      <lpage>131</lpage>
      <abstract>
        <p>In the past few years, the use of ontologies for creating more intelligent and effective application has increased considerably. This growth is due to the fact that ontologies attempt to provide semantics to the data consumed by machines, so that they can reason about these data. However, the development of applications based on ontologies is still difficult and time-consuming, because the existing tools lack to provide a simple and unified environment for the developers. Most of these tools only provide data manipulation using RDF triples, complicating the development of applications that need to work with the object orientation paradigm. Furthermore, tools which provide instances manipulation via object orientation do not support features such as manipulating ontologies, reasoning over rules or querying data with SPARQL. In this context, this work proposes a tool for supporting the efficient development of ontologies-based applications through the integration of existing technologies and techniques. In order to evaluate the benefits of this tool, a controlled experiment with eight developers (unfamiliar with ontologies) was performed comparing the proposed tool with another one used by the community.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        As a result, ontologies are not only applied as basis for the so called
Semantic Web, but in other areas of computing research and industry. For
example, e-commerce applications use ontologies for parametric searches and
heterogeneous systems integration[
        <xref ref-type="bibr" rid="ref9">Das et al. 2002</xref>
        ]. Another industry
segment is the media systems that has used this approach to do real-time data
inference, delivering up-to-date content for its users[
        <xref ref-type="bibr" rid="ref14">Kiryakov et al. 2010</xref>
        ].
In addition, several other fields are using ontologies such as medicine
[
        <xref ref-type="bibr" rid="ref2">Bard and Rhee 2004</xref>
        ], computer mobile [
        <xref ref-type="bibr" rid="ref7">Cheyer and Gruber 2010</xref>
        ] and adaptative
education [Bittencourt et al. 2009][
        <xref ref-type="bibr" rid="ref3">Bittencourt et al. 2006</xref>
        ][
        <xref ref-type="bibr" rid="ref4">Bittencourt and Costa 2011</xref>
        ].
      </p>
      <p>This dissemination is a consequence of the growing number of tools and software
libraries that allow the development of semantic applications. Currently, more than 170
tools are listed at the semanticweb.org, and this number tends to increase. Despite the high
number of tools, not all of them aim to support the development of applications for the
Semantic Web. On the other hand, the tools that offer this type of support do not provide
it through a simple and unified environment, that is, they fail to offer common
functionalities when developing applications based on ontologies, such as managing and querying
ontologies, reasoning over rules, manipulating instances via object oriented paradigm (in
contrast to the manipulation of instances via triple RDF - Resource Description
Framework), among others.</p>
      <p>In this context, this paper proposes a tool that provides simplified development of
ontologies through the object oriented model. Moreover, the tool provides an integration
of existing technologies and techniques to create a unified environment for developers of
applications based on ontologies. This tool provides services such as operations on
ontologies, manipulating instances, SPARQL1 (Simple Protocol and RDF Query Language)
queries, data inference over SWRL2 (Semantic Web Rule Language) rules, and so on. This
paper is organized as follows. In Section 2, the characteristics of each type of ontology
programming are outlined. In Section 3, the proposed tool is described. The performed
experiment, evaluating the proposed work is presented in Section 4. Section 5 presents
some conclusions and future works.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Ontology Programming</title>
      <p>During the development of a semantic-based application, the manipulation of instances
is one of the steps in the process of development. For this step, there are currently two
main approaches used by the ontology management systems: RDF triples and object
oriented development. In the next subsections, the main distinctions and benefits of the
aforementioned approaches are detailed.</p>
    </sec>
    <sec id="sec-3">
      <title>2.1. RDF Triples Development</title>
      <p>Most current APIs (Application Programming Interface) are still working with the
development based on RDF triples (subject, predicate and object). Thus, application developers
should be aware of how the ontology works in RDF layer, in order to manipulate the data
through each triple in application code.</p>
      <p>When the developer desires to add a resource (subject) in the ontology with several
properties inherent to it, several lines of code representing each triple of the resource
will be necessary. Each triple captures a single value of each property. Similarly, if the
application removes this resource, several triples should be removed.</p>
      <p>For example, to create an instance alice of the entity Person with the datatype
property name “Alice” using the Sesame API, which works with the development based
on RDF triples, several lines of code are needed. Figure 1 shows how to add this resource
in the Sesame repository.</p>
      <p>1SPARQL Query Language for RDF is W3C recommendation since January 2008 - http://www.
w3.org/TR/rdf-sparql-query/
2More information at: http://www.w3.org/Submission/SWRL/</p>
    </sec>
    <sec id="sec-4">
      <title>2.2. Object Oriented Development</title>
      <p>Instead of RDF triples, object-oriented applications manipulate data at object level and
their attributes. Such objects are characterized by a set of attributes and values. In this
sense, a tool is necessary to “mapp” the operations on objects to the RDF triples
infrastructure that works underneath. Some tools were created to provide such paradigm for
handling instances in ontologies.</p>
      <p>As a result, developers do not need to have a deep knowledge of the ontology
representation language. An object in the code represents an instance in the ontology,
their attributes are mapped to the properties of the instances and RDF classes become
Classes in the programming language. Therefore, to add a resource in the ontology, the
developer just need to add the object, facilitating, in this way, the development of such
applications.</p>
      <p>Comparing to Sesame example, Figure 2 shows the same resource added in the
Sesame repository, but now using Alibaba API, which allows the development based on
the object-oriented paradigm.</p>
    </sec>
    <sec id="sec-5">
      <title>3. Proposed Tool</title>
      <p>
        Currently, there are several tools which manipulate ontology through the paradigm of
object orientation
        <xref ref-type="bibr" rid="ref16 ref17 ref5">(e.g. Jastor [Szekely and Betz 2009] and Elmo [Mika 2007])</xref>
        instead of
RDF triples. However, these tools provide only the manipulation of instances, which is
only one step of the ontology-based development process. Therefore, when working with
these tools, developers need to search other libraries to build semantic applications with
usual features (e.g. query ontologies, handling instances, perform rules, etc.). To alleviate
this lack of appropriate development tools to build and maintain semantic applications,
this paper proposes a tool (more specifically a Java software library) that integrates several
features that facilitate the development based on ontologies.
      </p>
      <p>The system requirements of the proposed tool are:
• Repositories Handling: The first service needed for ontology-based development
that the tool provides is the remote management of Sesame repositories. This
management is composed of creation and delete of repositories in a Sesame server;
• Persistence of ontologies: The tool also provides, for the user, ontologies
persistence service in repositories. OWL or RDF files can be added to a repository,
which stores all data in binary files. Besides adding ontologies, this service allows
the delete and retrieve of a given ontology from repositories;
• Handling Instances: The main service provided by the tool is the manipulation
of ontology instances present in a repository. Note that this manipulation is done
through the paradigm of object orientation. This service is composed of the
methods for creating, retrieving and removing instances of a repository;
• Generation of Java code: To improve the instances manipulation following the
paradigm of object orientation, the automatic generation of Java code from
ontologies is required. This feature allows developers to “map” ontologies in Java
code, creating classes that represent entities and concepts in these ontologies. As
a final result of this feature, a Java library is created,
• SPARQL queries: When developing any application, it is very common to query
the data stored by it. It is not different when the application is based on ontologies,
where developers need a service that can query RDF graphs. The proposed tool
provides a service which offers queries on ontologies based on SPARQL language;
• Backup Repository: Developers often need, for some industry applications, to
keep backups of a repository. This feature allows the creation of backup files,
recovering these files into an empty repository and the copy between different
repositories;
• Verification and Validation of Ontology: A service that allows consistency
checking of an ontology. In other words, this feature verifies that an ontology
does not contain contradictions, i.e., if there is only one interpretation of the
concepts in the ontology;
• Reasoning over Rules: This service allows the performing of SWRL rules present
in the repository, creating new information through the reasoning over them.</p>
    </sec>
    <sec id="sec-6">
      <title>3.1. System Architecture</title>
      <p>
        The system architecture is based on the layers pattern [
        <xref ref-type="bibr" rid="ref6">Buschmann et al. 2007</xref>
        ], Figure
3, where each layer uses only the services of the layer below. The architecture will be
detailed using a bottom-up approach, starting with the layer OWLIM. OWLIM is a set
of semantic repositories of high performance and scalability[
        <xref ref-type="bibr" rid="ref15">Kiryakov et al. 2005</xref>
        ]. The
proposed tool offers the repository creation with default configuration as OWLIM Lite
version. The OWLIM was used along with the Sesame server, so that these repositories
can be accessed remotely. The integration between Sesame and OWLIM is done by the
OWLIM tool, which implements an extension of the Sesame Repository API.
      </p>
      <p>
        To access a repository in Sesame server, it is necessary to use the Sesame
Repository API, which behaves in this case as a client in a client-server architecture
[
        <xref ref-type="bibr" rid="ref6">Buschmann et al. 2007</xref>
        ]. This API communicates via HTTP (Hypertext Transfer
Protocol) with Sesame server. In this layer are the methods required to connect to the
repository and data manipulation through RDF triples. Above this layer, there are four modules:
operations on ontologies, reasoning module, operations on repositories, and the KAO
pattern. The layer “operations in ontologies” is composed of functionalities performed on
ontologies (ontology itself, not the instances). Among these features are: the insertion
and delete of an ontology, generate Java code from one or more OWL files and ontology
validation.
      </p>
      <p>On the other hand the layer of “operations in repositories” brings together
relevant services for manipulating Sesame repositories. This module allows the developer
to operate in remote repositories, such operations can be: the creation or removal of a
repository, clear a repository (delete all data present on it) and create backup copies of a
given repository.</p>
      <p>
        The next layer to be detailed is the “reasoning module”. This module has the
goal to infer new data in a repository by executing SWRL rules present on it. Once you
run this module, it will look if there are rules in the repository, if any, it will check for
new data to be inferred from the execution of those discovered rules. See on Figure 1
that these last three discussed layers are under the “repository facade” layer, which is
designed to provide a unified access to these three modules through the Facade design
pattern [
        <xref ref-type="bibr" rid="ref11">Gamma et al. 2004</xref>
        ].
      </p>
      <p>Last but not least, comes the layer called “Knowledge Access Object” (KAO),
which is a persistent pattern similar to the Data Access Object (DAO), with the difference
that the KAO not only works with data, but works with information from the
ontologies. The KAO pattern aims to provide an abstraction of the persistence mechanism used,
providing some specific operations (such as creation, retrieval and removal of instances,
among others) without exposing details about connections to the repository. Thus, this
pattern can isolate the persistence layer of the business layer. In the next section, this
pattern will be illustrated.</p>
    </sec>
    <sec id="sec-7">
      <title>3.2. KAO Pattern</title>
      <p>The module has an abstract class called AbstractKAO responsible for all the abstraction of
the KAO pattern. It provides operations for manipulating instances (create, remove, and
retrieve) and performing queries. The query methods of the abstract class are protected,
that is, only a class that extends AbstractKAO can use these methods. This is intentional,
so that the KAO pattern works properly.</p>
      <p>Exemplifying the KAO pattern from the users’ perspective (Figure 4), who wants
to manipulate instances in a given ontology A. This user must create a concrete class
(called OntologyAKAO) that extends AsbtractKAO. This class has concrete methods of
creation, retrieval and removal of instances inherits from the abstract class. If the user
wants to make a query, he performs the query inside the class OntologyAKAO, isolating
thereby the persistence layer of the other application layers.</p>
    </sec>
    <sec id="sec-8">
      <title>4. Experiment</title>
      <p>
        This section proposes an experiment which analyzes the proposed tool, provides a
quantitative and qualitative evaluation. Moreover, the experiment does a comparison
between our tool and a tool available in the literature. This comparison aims to verify if
the obtained results satisfy the initial proposal, in order words, if the proposed tool
increases the efficiency of the programmer development. The experiment was based on
[
        <xref ref-type="bibr" rid="ref18">Wohlin et al. 2000</xref>
        ] and it has four steps: definition, planning, running and analysis.
      </p>
    </sec>
    <sec id="sec-9">
      <title>4.1. Definition</title>
      <p>The first step is determinate the problem which will be analyzed. For this work, the goal
is to evaluate the differences on the programmer development. This work does a
comparative analysis between the cost to implement a semantic application using the proposed
tool and the cost to implement the same application using another tool named Jastor. The
experiment occurred at university context and it was done in January 2012. The
experiment had eight participants and it focused on the comparison between the proposed tool
and the Jastor tool.</p>
    </sec>
    <sec id="sec-10">
      <title>4.2. Planning</title>
      <p>After the definition of scenario, the next step is planning. Thus, the planning was divided
into three main activities: i) creation of control groups; ii) specification of application
which will be developed; and iii) specification of the evaluation metrics. The experiment
also evaluates the proposed tool and the Jastor tool together with Jena. The choice of
these tools is due to two reasons. The first one is that Jena is one of the most popular APIs
for manipulating ontologies in Java. The second reason is the tool Jastor is the main tool
which works with ontologies in object level with Jena. Therefore, there was this need to
integrate the two tools (Jastor and Jena) for this experiment.</p>
      <p>The first activity of planning step is the creation of control groups. This
experiment had eight undergraduate students of Computer Science and Computer Engineering
courses. Several lessons were taught in order to equate the knowledge of participants,
thus increasing the experiment control. The lessons were about: i) object-oriented
programming and Java language; ii) ontologies modeling using the Prote´ge´ environment; iii)
queries on ontologies using SPARQL language; and iv) inference on ontologies using
SWRL. None of the participants built any ontology-based application before the
experiment.</p>
      <p>The experiment environment was divided into four control groups, where each
group had a pair of students. The first group was named F5 and its pair used machines
with Intel Core i5 CPU processor and 4GB of RAM. The second group was named F3
and its pair used machines with an Intel Core i3 CPU processor and 4GB of RAM. The F5
and F3 groups used the proposed tool. On the other hand, J5 and J3 groups used the tools
Jastor/Jena and their machines were the same of F5 and F3, respectively. All machines
in the experiment performed the operating system Windows 7 Professional 64-bits. The
Table 1 summarizes the experiment environment.</p>
      <p>After the groups creation, the second activity is the specification of the application
which will be developed by the participants. During the experiment, each group will
develop the same ontology-based application using its allocated tool. This application</p>
      <p>Machine
Intel Core i5 CPU processor and 4GB of RAM
Intel Core i3 CPU processor and 4GB of RAM
Intel Core i5 CPU processor and 4GB of RAM
Intel Core i3 CPU processor and 4GB of RAM</p>
      <p>Allocated Tool
Proposed Tool
Proposed Tool
Jastor/Jena Tool</p>
      <p>Jastor/Jena Tool
uses an adaptation of the Family.swrl.owl3 ontology. This ontology is included in Prote´ge´
ontology libraries and it aims to demonstrate the use of SWRL rules in ontology about
family relationships. The same Java project will be given to all groups and it contains
the main method (Main) with features not implemented. The groups goal is run the Main
method. Therefore, the groups must implement the necessary infrastructure using the
allocated tool. The Main method has common steps in the development of ontology-based
applications, such as: i) add the ontology in repository/database; ii)manipulate instances
of ontology; iii)run the SWRL rules; and iv) do SPARQL queries.</p>
      <p>The last activity of the planning of the experiment is the specification of the
evaluation metrics. As aforementioned, the experiment focuses on the developing efficiency of
the participants. Therefore, some quantitative metrics were defined, such as: i)
development time, measured in hours; ii) number of lines of implemented code, in this case were
not counted: the Main lines, the commented lines and the blank lines; iii) performance,
measured in milliseconds, iv) memory usage, measured in Megabytes; and v) number of
errors encountered during development, these errors are Java exceptions that were thrown
when a method of the tools was run incorrectly.</p>
      <p>In order to have a subjective evaluation about the proposed tool, a questionnaire
was elaborated which has questions about the experience of each developer after the end
of the experiment. The quantitative and subjective results will be used in the comparison
between the tools. The questions are:
1. What did you think about the tool documentation?
2. What did you think about the tool setup?
3. What was the complexity level in the addition of ontology on repository?
4. What was the complexity level in the manipulation of instances?
5. What was the complexity level in the running of the SWRL rules?
6. What was the complexity level in the running SPARQL queries?
7. What did you think that overall the tool?</p>
    </sec>
    <sec id="sec-11">
      <title>4.3. Running</title>
      <p>The experiment started on January 23th, 2012 and it finished on January 26th, 2012. On
the first morning, the experiment was introduced to the participants. At this moment,
a general explanation was presented about the experiment and this moment was the first
contact between experiment and participants. After the explanation, the pairs were formed
and the tools were allocated to each pair (see Table 4.2). Furthermore, the links4 were
3Available at: http://protege.cim3.net/file/pub/ontologies/family.swrl.
owl/family.swrl.owl</p>
      <p>4Jastor and Jena documentation: http://jastor.sourceforge.net/ and
http://jena.sourceforge.net/documentation.html. Proposed tool documentation:
http://jointnees.sourceforge.net/tutorial.html
provided which present the documentation of the tools.</p>
      <p>The first data were collected during the experiment. Each pair reported the
development time and number of errors encountered. When some team can run the Main
method without errors, their code is evaluated. After evaluation, the number of
implemented code lines was collected. This count was done manually. On the other hand, the
JConsole5 tool was used to collect the data related to performance and memory usage.</p>
    </sec>
    <sec id="sec-12">
      <title>4.4. Analysis of Results</title>
      <p>For providing more valuable information about the two target tools, the Table 2 presents
the data related to quantitative metrics.</p>
      <p>Regarding the development time, the proposed tool showed a lower time than the
tool Jastor/Jena. On the one hand, the F3 pair finished the experiment in 6 hours and the
F5 pair in 7 hours. On the other hand, the J3 pair finished in 18 hours and J5 in 15 hours.
The development time is one of the most important factors to evaluate the efficiency on
development of ontology-based application. Thus, the proposed tool helps the developers
in this issue.</p>
      <p>The third column (Table 2) presents the number of code lines for each team.
Although, the difference between the pairs was very close when writing code, the proposed
tool presented to be considerably more optimized in this issue. This is due to the high
level of abstraction which the proposed tool provides.</p>
      <p>Then, two factors (performance and memory) are analyzed. Although, these
factors are not directly related to efficiency in development, they are very important in the
performance of the built application. The performance and the memory usage are
measured when the Main is running. The performance of the proposed tool was better when
we comparing the teams F3 and J5. In other words, the proposed tool had shown the
higher performance using a lower machine. The best performance was the F5 team (2.5
seconds) and the worst was J3 team (4.1 seconds). Related to the memory usage, the
proposed tool was better because the pairs who used it obtained a significantly smaller cost
than the other two pairs. The number of errors metric can be considered the best issue of
this work, because the groups who used the proposed tool found four times less number
of errors than the others, who used Jastor/Jena.</p>
      <p>The Table 3 presents the results of qualitative evaluation. The participants gave a
standard note on each question where 1 is the lowest and 5 is the highest. Depending on
the question, 1 means terrible and 5 means great. The results show that the proposed tool
surpasses the Jastor/Jena tools and they are a reflection of the quantitative results.
5Available at: http://openjdk.java.net/tools/svc/jconsole/
Question 1
Question 2
Question 3
Question 4
Question 5
Question 6
Question 7</p>
      <p>Tool
Proposed Tool</p>
      <p>Jastor/Jena
Proposed Tool</p>
      <p>Jastor/Jena
Proposed Tool</p>
      <p>Jastor/Jena
Proposed Tool</p>
      <p>Jastor/Jena
Proposed Tool</p>
      <p>Jastor/Jena
Proposed Tool</p>
      <p>Jastor/Jena
Proposed Tool</p>
      <p>Jastor/Jena</p>
    </sec>
    <sec id="sec-13">
      <title>5. Conclusions and Future Works</title>
      <p>This paper aimed to propose a tool to unify several features (manipulate instances,
operations on ontologies and repositories, SPARQL query support and inference over SWRL
rules) necessary for the development of applications based on ontologies. The tool was
presented through its architecture and services description.</p>
      <p>
        As a result, an experiment was conducted to evaluate the tool, focusing on the
efficiency of the programmer development. The experiment compared the proposed tool
with the tools Jastor and Jena, and both the objective analysis (development time, lines of
code, performance, memory and number of errors) and the subjective analysis (through
forms) showed better results for the proposed work. Furthermore, although not yet
presented in the literature, versions of the proposed tool were used in some works already
published, such as [
        <xref ref-type="bibr" rid="ref8">da Silva et al. 2011</xref>
        ], [
        <xref ref-type="bibr" rid="ref10">Ferreira et al. 2011</xref>
        ], [
        <xref ref-type="bibr" rid="ref13">Holanda et al. 2012</xref>
        ] and
[
        <xref ref-type="bibr" rid="ref1">Ataide et al. 2011</xref>
        ].
      </p>
      <p>However, there are some issues in this work that still need to be addressed. The
conducted experiment should be extended to other tools, such OWL2Java and
ProtegeOWLAPI and with a greater number of developers. The SWRL algorithm must be
improved aiming a better performance and further features can be added to the presented
tool.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <surname>Ataide</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Brito</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pedro</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Costa</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Bittencourt</surname>
            ,
            <given-names>I. I.</given-names>
          </string-name>
          (
          <year>2011</year>
          ).
          <article-title>A semantic tool to assist authors in the instantiation of software product lines for intelligent tutoring systems context</article-title>
          .
          <source>In Proceedings of the 4th Workshop on Semantic Web and Education. WSWEd.</source>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <string-name>
            <surname>Bard</surname>
            ,
            <given-names>J. B. L.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Rhee</surname>
            ,
            <given-names>S. Y.</given-names>
          </string-name>
          (
          <year>2004</year>
          ).
          <article-title>Ontologies in biology: design, applications and future challenges</article-title>
          .
          <source>Nature Reviews Genetics</source>
          ,
          <volume>5</volume>
          (
          <issue>3</issue>
          ):
          <fpage>213</fpage>
          -
          <lpage>222</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <string-name>
            <surname>Bittencourt</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bezerra</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nunes</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Costa</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tadeu</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nunes</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Costa</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Silva</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          (
          <year>2006</year>
          ).
          <article-title>Ontologia para construc¸ a˜o de ambientes interativos de aprendizagem. Anais do Simp o´sio Brasileiro de Inform a´tica na Educac¸ a˜o, 1(1</article-title>
          ):
          <fpage>567</fpage>
          -
          <lpage>576</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <string-name>
            <surname>Bittencourt</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Costa</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          (
          <year>2011</year>
          ).
          <article-title>Modelos e ferramentas para a construc¸ a˜o de sistemas educacionais adaptativos e semaˆnticos</article-title>
          .
          <source>Revista Brasileira de Informa´tica na Educac¸ a˜o</source>
          ,
          <volume>19</volume>
          (
          <issue>01</issue>
          ):
          <fpage>85</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <string-name>
            <surname>Bittencourt</surname>
            ,
            <given-names>I. I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Costa</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Silva</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Soares</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          (
          <year>2009</year>
          ).
          <article-title>A computational model for developing semantic web-based educational systems</article-title>
          .
          <source>Knowledge-Based Systems</source>
          ,
          <volume>22</volume>
          (
          <issue>4</issue>
          ):
          <fpage>302</fpage>
          -
          <lpage>315</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <string-name>
            <surname>Buschmann</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Henney</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Schmidt</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          (
          <year>2007</year>
          ).
          <article-title>Pattern-oriented software architecture: On patterns and pattern languages</article-title>
          .
          <source>Wiley series in software design patterns</source>
          . Wiley.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <string-name>
            <surname>Cheyer</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Gruber</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          (
          <year>2010</year>
          ).
          <article-title>Siri: A virtual personal assistant for iphone, an ontology-driven application for the masses</article-title>
          . Presentation at Open, International, Virtual Community of Practice on Ontology, Ontological Engineering and Semantic Technology.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <string-name>
            <surname>da Silva</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bittencourt</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ataide</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Holanda</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Costa</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          , Teno´rio, T., and
          <string-name>
            <surname>Brito</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          (
          <year>2011</year>
          ).
          <article-title>An ontology-based model for driving the building of software product lines in an its context</article-title>
          . In Dicheva, D.,
          <string-name>
            <surname>Markov</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Stefanova</surname>
          </string-name>
          , E., editors,
          <source>Third International Conference on Software, Services and Semantic Technologies S3T</source>
          <year>2011</year>
          , volume
          <volume>101</volume>
          <source>of Advances in Intelligent and Soft Computing</source>
          , pages
          <fpage>155</fpage>
          -
          <lpage>159</lpage>
          . Springer Berlin / Heidelberg.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          <string-name>
            <surname>Das</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wu</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>McGuinness</surname>
            ,
            <given-names>D. L.</given-names>
          </string-name>
          (
          <year>2002</year>
          ).
          <article-title>The emerging semantic web: selected papers from the first Semantic Web Working Symposium</article-title>
          , volume
          <volume>75</volume>
          <source>of Frontiers in artificial intelligence and applications</source>
          ,
          <source>chapter Industrial Strength Ontology Management</source>
          , pages
          <fpage>101</fpage>
          -
          <lpage>118</lpage>
          . IOS press.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          <string-name>
            <surname>Ferreira</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Holanda</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Melo</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bittencourt</surname>
            ,
            <given-names>I. I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Freitas</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Costa</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          (
          <year>2011</year>
          ).
          <article-title>An agent-based semantic web blog crawler</article-title>
          .
          <source>In Proceedings of the 7th International Conference on Information Technology and Applications</source>
          . ICITA, Sydney.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          <string-name>
            <surname>Gamma</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Helm</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          , Johnson, R., and
          <string-name>
            <surname>Vlissides</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          (
          <year>2004</year>
          ).
          <article-title>Design Patterns: Elements of Reusable Object-Oriented Software</article-title>
          . Pearson Education.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          <string-name>
            <surname>Hepp</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leenheer</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Moor</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Sure</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          (
          <year>2007</year>
          ).
          <article-title>Ontology management: semantic web, semantic web services, and business applications</article-title>
          .
          <source>Semantic web and beyond</source>
          . Springer.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          <string-name>
            <surname>Holanda</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ferreira</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Costa</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bittencourt</surname>
            ,
            <given-names>I. I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Melo</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Peixoto</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Tiengo</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          (
          <year>2012</year>
          ).
          <article-title>Educational resources recommendation system based on agents and semantic web for helping students in a virtual learning environment</article-title>
          (to appear).
          <source>International Journal of Web Based Communities.</source>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          <string-name>
            <surname>Kiryakov</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bishop</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ognyanoff</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Peikov</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tashev</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Velkov</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          (
          <year>2010</year>
          ).
          <article-title>The features of bigowlim that enabled the bbcs' world cup website</article-title>
          . In Krummenacher, R.,
          <string-name>
            <surname>Aberer</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Kiryakov</surname>
          </string-name>
          , A., editors,
          <source>In proceendings Workshop of Semantic Data Management (SemData).</source>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          <string-name>
            <surname>Kiryakov</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ognyanov</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Manov</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          (
          <year>2005</year>
          ).
          <article-title>Owlim - a pragmatic semantic repository for owl</article-title>
          . In
          <string-name>
            <surname>Dean</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guo</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jun</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kaschek</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Krishnaswamy</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pan</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Sheng</surname>
          </string-name>
          , Q., editors,
          <source>Web Information Systems Engineering - WISE 2005 Workshops</source>
          , volume
          <volume>3807</volume>
          of Lecture Notes in Computer Science, pages
          <fpage>182</fpage>
          -
          <lpage>192</lpage>
          . Springer Berlin / Heidelberg.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          <string-name>
            <surname>Mika</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          (
          <year>2007</year>
          ).
          <article-title>Social networks and the Semantic Web</article-title>
          .
          <source>Semantic web and beyond</source>
          . Springer.
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          <string-name>
            <surname>Szekely</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Betz</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          (
          <year>2009</year>
          ).
          <article-title>Jastor: Typesafe, ontology driven rdf access from java</article-title>
          . Available from http://jastor.sourceforge.net.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          <string-name>
            <surname>Wohlin</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Runeson</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          , H o¨st,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Ohlsson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. C.</given-names>
            ,
            <surname>Regnell</surname>
          </string-name>
          ,
          <string-name>
            <surname>B.</surname>
          </string-name>
          , and Wessle´n,
          <string-name>
            <surname>A.</surname>
          </string-name>
          (
          <year>2000</year>
          ).
          <article-title>Experimentation in software engineering: an introduction</article-title>
          . Kluwer Academic Publishers, Norwell, MA, USA.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>