<!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>Ontology Patterns: Clarifying Concepts and Terminology</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Ricardo A. Falbo</string-name>
          <email>falbo@inf.ufes.br</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Giancarlo Guizzardi</string-name>
          <email>gguizzardi@inf.ufes.br</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Aldo Gangemi</string-name>
          <email>aldo.gangemi@cnr.it</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Valentina Presutti</string-name>
          <email>valentina.presutti@cnr.it</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Federal University of Espírito Santo</institution>
          ,
          <addr-line>Vitória</addr-line>
          ,
          <country country="BR">Brazil</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>ISTC, National Research Council</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Ontology patterns have been pointed out as a promising approach for ontology engineering. The goal of this paper is to clarify concepts and the terminology used in Ontology Engineering to talk about the notion of ontology patterns taking into account already well-established notions of patterns in Software Engineering.</p>
      </abstract>
      <kwd-group>
        <kwd>ontology pattern</kwd>
        <kwd>ontology design pattern</kwd>
        <kwd>ontology engineering</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Although nowadays ontology engineers are supported by a wide range of ontology
engineering methods and tools, building ontologies is still a difficult task even for
experts [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. In this context, reuse is pointed out as a promising approach for ontology
engineering. Ontology reuse allows speeding up the ontology development process,
saving time and money, and promoting the application of good practices [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
However, ontology reuse, in general, is a hard research issue, and one of the most
challenging and neglected areas of ontology engineering [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. The problems of selecting the
right ontologies for reuse, extending them, and composing various ontology
fragments have not been properly addressed yet [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
      </p>
      <p>
        Ontology patterns (OPs) are an emerging approach that favors the reuse of encoded
experiences and good practices. OPs are modeling solutions to solve recurrent
ontology development problems [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Experiments, such as the ones presented in [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], show
that ontology engineers perceive OPs as useful, and that the quality and usability of
the resulting ontologies are improved. However, compared with Software Engineering
where patterns have been used for a significant time [
        <xref ref-type="bibr" rid="ref6 ref7 ref8">6, 7, 8</xref>
        ], patterns in Ontology
Engineering are still in infancy. The first works are from the beginning of the 2000s
(e.g. [
        <xref ref-type="bibr" rid="ref10 ref9">9, 10</xref>
        ]), and only recently this approach has gained more attention, especially by
the communities of Ontology Engineering [
        <xref ref-type="bibr" rid="ref2 ref3 ref4 ref5">2, 3, 4, 5</xref>
        ] and Semantic Web [
        <xref ref-type="bibr" rid="ref1 ref11">1, 11</xref>
        ].
      </p>
      <p>In this paper, we discuss the notion of ontology pattern by means of an analogy to
the notion of pattern in Software Engineering. A premise underlying the discussion
made in this paper is that, for developing a domain ontology, an ontology engineer
should follow an ontology development process that is quite similar to the software
development process in Software Engineering. i.e., in our view, a domain ontology
should be developed following an ontology development process comprising
activities such as ontology requirements elicitation, ontology conceptual modeling,
ontology design, ontology implementation, and ontology testing.</p>
      <p>This paper is organized as follows. In Section 2, we present some important
pattern-related concepts as used in Software Engineering, and also the current view of
patterns in Ontology Engineering. In Section 3, we revisit some notions related to
ontology patterns by means of an analogy to patterns in Software Engineering. In
Section 4, we show, by means of examples, how some types of ontology patterns can
be used during the ontology development process. Finally, in Section 5, we present
our final considerations.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Software Engineering Patterns and Ontology Patterns</title>
      <p>
        Patterns, in general, are vehicles for encapsulating knowledge. They are considered
one of the most effective means for naming, organizing, and reasoning about design
knowledge. “Design knowledge” in this sentence is applied in a general sense,
meaning design in several different areas, such as Architecture and Software Engineering.
According to [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], “a pattern describes a particular recurring design problem that
arises in specific design contexts and presents a well-proven solution for the problem.
The solution is specified by describing the roles of its constituent participants, their
responsibilities and relationships, and the ways in which they collaborate”.
      </p>
      <p>
        In Software Engineering, patterns help to alleviate software complexity in several
phases of the software development process [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. During the software development
process, regardless of the method or process model adopted, there are some activities
that should be performed, namely: requirements elicitation, conceptual modeling,
architectural design, detailed design, and implementation. There are different types of
patterns covering different abstraction levels related to these phases. Analysis patterns
are to be used during conceptual modeling. They describe how to model (in the
conceptual level) a particular kind of problem in an application domain. They comprise
of conceptual model fragments that represent knowledge of the problem domain, and
their goal is to aid developers in understanding the problem rather than showing how
to design a solution. According to [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], there are two main types of analysis patterns:
domain-specific and domain-independent analysis patterns. Domain-specific analysis
patterns model problems that only appear in specific domains. They capture the core
knowledge related to a domain-specific problem and, therefore, they can be reused to
model applications that share this core knowledge. On the other hand,
domainindependent analysis patterns capture the core knowledge of atomic notions that are
not tied to specific application domains and, hence, can be reused to model the same
notions whenever they appear in any domain. Patterns such as the ones proposed by
Fowler [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] are examples of analysis patterns. Architectural patterns describe selected
types of components and connectors (the generalized constituent elements of all
software architectures) together with a control structure that governs system execution
[
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. They can be seen as templates for concrete software architectures [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], and thus
are to be used during the architectural design phase. Several of the patterns proposed
in the Pattern Oriented Software Architecture (POSA) approach [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], and most of the
patterns presented in [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] are architectural patterns. Design Patterns provide a scheme
for refining subsystems or components of a software system, or the relationships
between them. They describe commonly-recurring structures of communicating
components that solves general design problems within a particular context [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Design
patterns are medium-scale patterns. They are smaller in scale than architectural patterns,
but they are independent of a particular programming language
(implementationindependent patterns) [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Moreover, they are used in the detailed design phase. The
Gang of Four (GoF) patterns [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] are the most known examples of a design patterns
catalog. Finally, idioms (or programming patterns) represent the lowest-level patterns.
They are specific to a programming language (patterns at a source code level). An
idiom describes how to implement particular aspects of components or the
relationships between them, using the features of a given language [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Idioms are used in the
implementation phase. Coplien’s C++ patterns [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] are examples of idioms.
      </p>
      <p>
        The Ontology Engineering community has also tackled the notion of patterns,
especially for aiding developing domain ontologies. Domain ontologies aim at
describing the conceptualization related to a given domain, such as electrocardiogram in
medicine [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ].
      </p>
      <p>
        According to [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], an Ontology Design Pattern (ODP) is a modeling solution to
solve a recurrent ontology design problem. Gangemi and Presutti [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] have identified
several types of ODPs, and have grouped them into six families: Structural,
Reasoning, Correspondence, Presentation, Lexico-Syntactic, and Content ODPs.
      </p>
      <p>
        Structural ODPs include Logical and Architectural ODPs. Logical ODPs provide
solutions for solving problems of expressivity, while architectural ODPs affect the
overall shape of the ontology either internally or externally. Reasoning ODPs inform
about the state of an ontology, and let a system decide what reasoning has to be
performed on the ontology in order to carry out queries and evaluation, among others.
Correspondence ODPs include Reengineering ODPs and Mapping ODPs.
Reengineering ODPs provide solutions to the problem of transforming a conceptual model
(which can even be a non-ontological resource) into a new ontology. Mapping ODPs
are patterns for creating semantic associations between two existing ontologies.
Presentation ODPs deal with usability and readability of ontologies from a user
perspective. They are meant as good practices that support the reuse of ontologies by
facilitating their evaluation and selection (e.g. naming conventions). Lexico-syntactic
ODPs are linguistic structures or schemas that consist of certain types of words
following a specific order, and that permit to generalize and extract some conclusions
about the meaning they express. They are useful for associating simple Logical and
Content ODPs with natural language sentences, e.g., for didactic purposes. Finally,
Content ODPs are small fragments of ontology conceptual models that address a
specific modeling issue, and can be directly reused by importing them in the ontology
under development. They provide solutions to domain modeling problems [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>
        As pointed by Gangemi [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ], Content ODP can extract a fragment of either a
foundational or a core ontology, which constitutes its background. Based on this fact,
Falbo et al. [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] consider two types of Content ODPs: Foundational ontology patterns,
which are extracted from foundational ontologies, and tend to be more generally
applied, and Domain-related ontology patterns, which are domain-specific patterns, and
thus are applicable to solve problems in specific domains.
      </p>
      <p>
        The Manchester’s Ontology Design Patterns Catalog [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] is a public catalog of
ODPs focused on the biological knowledge domain. In this catalog, there types of
ODPs are considered, namely [
        <xref ref-type="bibr" rid="ref21 ref22">21, 22</xref>
        ]: Extensional ODPs, which provide ways of
extending the limits of the chosen knowledge representation language; Good practice
ODPs, which are used to produce more modular, efficient and maintainable
ontologies; and Domain Modeling ODPs, which are used to model a concrete part of the
knowledge domain.
      </p>
      <p>In contrast with the case of patterns in Software Engineering, patterns in Ontology
Engineering are not properly linked to the development phase in which they can be
applied. Moreover, it is important to highlight that the term “design” in “ontology
design patterns” does not have the same meaning of “design” in “design patterns” of
Software Engineering. In “ontology design patterns”, the term “design” is applied in a
general sense, meaning the creation (building) of the ontology. In Software
Engineering, in the other hand, “design” refers to the software development phase in which
developers cross the border from the problem space to the solution space. While
requirements elicitation and analysis deal with the problem domain, aiming at
understanding the problem to be solved and its domain, in the design phase, the focus is on
providing a solution, what requires taking technological aspects into account.
Conceptual models, built during requirements analysis, are only concerned with modeling a
view of the domain for a given application, and thus are independent of the
technology to be applied in the solution. Design models, on the other hand, are committed to
translating the conceptual view to the most suitable implementation according to the
underlying implementation environment and also considering a number of
nonfunctional (technological) requirements (such as efficiency, usability, reliability,
portability, etc.). Thus, designers should know a priori features of the implementation
environment to properly address the non-functional requirements in a given solution.
In fact, the same conceptual model can lead to several design solutions, and the
design phase involves choosing the most adequate solution for the problem.</p>
      <p>
        Guizzardi [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ] defends an analogous process for Ontology Engineering. In an
ontology conceptual modeling phase, a reference domain ontology should be produced,
whose aim is to make a clear and precise description of the domain elements for the
purposes of communication, learning and problem solving. Reference ontologies are
to be used in an off-line manner to assist humans in tasks such as meaning negotiation
and consensus establishment. In the design phase, this conceptual specification should
be transformed into a design specification by taking into account a number of issues
ranging from architectural issues and non-functional requirements, to target a
particular implementation environment. The same reference ontology can potentially be used
to produce a number of (even radically) different designs. Finally, in the
implementation phase, an ontology design is coded in a target language to be then deployed in a
computational environment. This implementation version is frequently termed an
operational ontology [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. Unlike reference ontologies, operational ontologies are not
focused on representation adequacy, but are designed with the focus on guaranteeing
desirable computational properties. A design phase, thus, is necessary to bridge the
gap between the conceptual modeling of reference ontologies and the coding of them
in terms of a specific operational ontology language (such as, for instance, OWL and
RDFS, but other DL-based languages [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ], Datalog-based languages [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ], relational
databases [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ], etc.). Issues that should be addressed in the design phase are, for
instance: determining how to deal with the differences in expressivity of the languages
that are used in each of these phases; or how to produce lightweight specifications
that maximize specific non-functional requirements, such as reasoning performance.
Figure 1 illustrates this Ontology Engineering view.
      </p>
      <p>
        Based on this view of Ontology Engineering, in the next section, we revisit the
notion of ontology patterns in order to clarify some concepts and the terminology used.
Moreover, we compare the types of ontology patterns identified by Gangemi and
Presutti [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] with the types of patterns related to the development phases in Software
Engineering.
3
      </p>
    </sec>
    <sec id="sec-3">
      <title>Ontology Patterns: Aligning Concepts and Terminology to</title>
    </sec>
    <sec id="sec-4">
      <title>Software Engineering Patterns</title>
      <p>
        Once we have discussed a view of ontology development that is analogous to the well
established view of software development in Software Engineering, we can revisit the
notion of Ontology Pattern. Gangemi and Presutti [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] define Ontology Design Pattern
as a modeling solution to solve a recurrent ontology design problem. As discussed in
the previous section, “design” in this definition is used in a broad sense. In order to
avoid confusion with the term “design” referring to the “design phase” of ontology
development, we prefer to name patterns applied to Ontology Engineering as
Ontology Patterns (instead of Ontology Design Patterns).
      </p>
      <p>We can now further elaborate the definition of ontology pattern: an Ontology
Pattern (OP) describes a particular recurring modeling problem that arises in specific
ontology development contexts and presents a well-proven solution for the problem.</p>
      <p>
        Taking this definition into account, we can now look at the types of ontology
patterns identified by Gangemi and Presutti [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], and try to introduce them in another
classification of ontology patterns that considers the ontology development phase
depicted in Figure 1.
      </p>
      <p>
        First, there are some types of patterns in [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] that, according to the definition
presented above, do not qualify as OPs. They capture best practices, but do not conform
to this definition. This is the case, for instance, of the lexico-syntatic and presentation
patterns, which do not refer to a modeling problem. Mapping OPs also do not fit well
to the definition above, since they do not address a modeling problem in a specific
ontology development context. Mapping OPs are useful for integrating ontologies,
and not for developing a new one. Although presentation OPs cannot be properly said
to be ontology pattern, they have a counterpart in Software Engineering: naming
conventions. In Software Engineering, there are name conventions that apply to different
development phases. For instance, language-specific naming conventions, such as
Java naming conventions, are to be applied during the implementation phase; naming
conventions for classes, attributes and operations in general can be applied during
conceptual modeling and design phases. Thus, analogously, ontology name
conventions that are language-independent are to be applied during ontology conceptual
modeling and design phases; language-specific ontology name conventions (such as
OWL name conventions) are to be used during ontology implementation.
      </p>
      <p>
        The Reengineering OP type is a case apart. Reengineering OPs are defined as
transformation rules applied in order to create a new ontology (target model) starting
from elements of a source model [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Based on this definition, we can say that they
can be applied in several ontology development phases. However, most of the
existing Reengineering patterns are language-dependent, such as patterns to transform
non-OWL models to OWL DL operational ontologies, or refactoring patterns for
refactoring an existing OWL DL source ontology into a new OWL DL target
ontology. Such alleged patterns are, in fact, not proper patterns but Idioms.
      </p>
      <p>In the other hand, content, architectural, logical and reasoning OPs can be related
to ontology development phases. Content OPs are analogous to analysis patterns in
Software Engineering; Architectural OPs to architectural patterns; and Logical and
Reasoning OPs to design patterns, although some of them are, again, in fact, idioms.</p>
      <p>
        Regarding the Manchester’s Catalog, according to [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ], “this catalog is generated
from OWL files”. Thus, its patterns better classify as Idioms.
      </p>
      <p>
        Figure 2 shows a taxonomy of OPs, reorganizing some of the ontology pattern
types identified in [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], and introducing subtypes of Content OPs (renamed as
Conceptual OPs), as defined in [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ].
      </p>
      <p>Ontology Conceptual Patterns are fragments of either foundational ontologies
(Foundational OPs) or domain reference ontologies (Domain-related OPs). They are
to be used during the ontology conceptual modeling phase, and focus only on
conceptual aspects, without any concern with the technology or language to be used for
deriving an operational ontology. Ontology Conceptual Patterns are analogous to
Analysis Patterns in Software Engineering. Foundational OPs are analogous to
Domainindependent Analysis Patterns, while Domain-related OPs are analogous to
Domainspecific Analysis Patterns.</p>
      <p>
        Foundational OPs (FOPs) are reusable fragments of foundational ontologies. Since
foundational ontologies span across many fields and model the very basic and general
concepts and relations that make up the world [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], FOPs can be applied in any
domain. They are reused by analogy between the pattern and the problem in hand. An
example of a FOP is the pattern for the problem of specifying roles with multiple
disjoint allowed types, which were extracted from the ontology of substantial
universals of the Unified Foundational Ontology (UFO) [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ]. Another example is the
appointment pattern, which were extracted from the ontology of social entities of UFO
[
        <xref ref-type="bibr" rid="ref28">28</xref>
        ]. These two FOPs and how they can be reused are discussed in Section 4.
      </p>
      <p>Domain-related OPs (DROPs) are reusable fragments extracted from reference
domain ontologies. DROPs should capture the core knowledge related to a domain,
and thus they can be seen as fragments of a core ontology of that domain. In contrast
with FOPs, DROPs are reused by extension, i.e. concepts and relations of the pattern
are specialized when the pattern is reused. In Section 4, we present a DROP for the
domain of software processes and discuss its reuse by extension in the development of
a software testing ontology.</p>
      <p>
        Ontology Architectural Patterns are patterns that describe how to arrange an
ontology (generally a large one) in terms of sub-ontologies or ontology modules, as well as
patterns that deal with the modular architecture of an ontology network, where the
involved ontologies play the role of modules [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. These patterns can be used both
during the conceptual modeling phase, and at the beginning of the ontology design
phase. Since modularity is recognized as an important quality characteristic of good
ontologies, we advocate for their use since the first stages of ontology development,
for splitting the ontology into smaller parts, allowing tackling the problems one at a
time. When applied at the beginning of the design phase, the purpose is to reorganize
the ontology modules for addressing technological aspects, in special by taking
nonfunctional requirements into account.
      </p>
      <p>
        Ontology Design Patterns (ODPs) are patterns that address problems that occur
during the ontology design phase. Based on the Gangemi and Presutti’s taxonomy of
types of ontology patterns [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], we identified two main types of ODPs: logical and
reasoning ODPs. Reasoning ODPs, as the name suggests, aims at addressing specific
design problems related to improving reasoning with ontologies (and qualities related
to reasoning, such as computational tractability, decidability and reasoning
performance). Logical ODPs, in turn, regards problems related to the expressivity of the
formalism to be used in ontology implementation. They help to solve design problems
that appear when the primitives of the implementation language do not directly
support certain logical constructs. Logical ODPs are extremely important for ontology
design, since most languages for coding operational ontologies are not focused on
representation adequacy, but are designed with the focus on guaranteeing desirable
computational properties [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]. We should highlight, however, that many patterns that
address reasoning and logical problems are, in fact, Ontology Idioms (or Ontology
Coding Patterns), since they describe how to solve problems related to reasoning or to
expressivity of a specific logical formalism (e.g. OWL). According to the notion
defended here, ODPs are more widely applied than ontology idioms, since they address
problems related to various languages that share the same characteristics. For
instance, a pattern addressing the problem of how to express n-ary relation semantics by
only using class and binary relation primitives is a Logical ODP. It applies to all
logical formalisms that do not have a construct for representing n-ary relationships, but
have constructs for representing classes and binary relations. A pattern addressing the
problem of how to express n-ary relation semantics in OWL is an Ontology Idiom.
      </p>
      <p>Figure 3 shows the relationships between the types of ontology patterns shown in
Figure 2 and the ontology development activities, shown in Figure 1. In the next
section, we illustrate some Ontology Conceptual Patterns, and discuss how they can be
reused.</p>
    </sec>
    <sec id="sec-5">
      <title>Reusing Ontology Conceptual Patterns</title>
      <p>There are two main ways of reusing ontology patterns: by analogy and by extension.
Moreover, several patterns can be reused when developing a domain ontology. Thus,
pattern composition is also an important mechanism for combining patterns.</p>
      <p>
        In reuse by analogy [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ], with an ontology modeling problem at hands, we look for
OPs that describe knowledge related to the type of situation we are facing. Once
selected the pattern, we have to identify which concepts in our domain correspond to the
concepts in the pattern, and we reproduce the structure of the pattern in the domain
ontology being developed. Most of the OPs are reused by analogy (including most
Ontology Architectural and Design Patterns, Idioms, but also Foundational Ontology
Patterns (FOPs)). Domain-related OPs (DROPs), in turn, are typically reused by
extension. In reuse by extension, the OP is incorporated in the domain ontology being
developed, and it can be extended by means of specialization of its concepts and
relations, and also by including new properties and relationships with the extended
concepts.
      </p>
      <p>
        Figure 4 shows the conceptual model of the FOP for the problem of specifying roles
with multiple disjoint allowed types [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ]. In this picture, the abstract class A is the
role mixin that covers different role types. Classes B and C are the disjoint subclasses
of A that can have direct instances, representing the roles (i.e., sortal, anti-rigid and
relationally dependent types) that carry the principles of identity that govern the
individuals that fall in their extension. Classes D and E are the ultimate kinds that supply
the principles of identity carried by B and C, respectively. The association R
represents the common specialization condition of B and C, which is represented in A.
Finally, class F represents a type that class A is relationally dependent of. Kind, Role
and Role mixin are concepts from the Unified Foundational Ontology (UFO), part A,
an ontology of endurants. This pattern is also embedded as a higher-granularity
modeling primitive in the ontology-driven conceptual modeling language OntoUML. For
details, see [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ].
      </p>
      <p>
        Figure 5 shows two FOPs extracted from UFO-C, an ontology of social entities
[
        <xref ref-type="bibr" rid="ref28">28</xref>
        ], namely: atomic/complex commitment types and appointments. The
Atomic/Complex Commitment Types pattern, as the name suggests, models the distinction
between atomic and complex commitments. According to UFO-C, Commitments, as
intentional moments, inhere in Agents. Commitments can be atomic (Atomic
Commitment) or complex (Complex Commitment). Complex commitments are composed
of other commitments. The Appointment Pattern models a special type of
commitment, named Appointment in UFO-C. An appointment is a commitment whose
propositional content explicitly refers to a time interval.
In Figure 6, we apply the three aforementioned patterns when developing a domain
ontology on the domain of Agendas. The Agenda Ontology was developed to support
the semantic integration of the Google Calendar API and the Google Contacts API to
a Software Engineering Environment. In an agenda we are mainly interested in
registering contacts and scheduled appointments. Contacts can be either organizations or
people, which have different principles of identity. For addressing the modeling
problem regarding contacts, we reuse the FOP presented in Figure 4; for addressing the
modeling problem regarding appointments, we reuse the FOPs presented in Figure 5.
The Agenda Ontology fragment produced applying these three FOPs is shown in
Figure 6. In this model, the fragment that was solved by reusing the FOP for roles
with multiple and disjunctive kinds (Figure 4) is shown detached in grey. As one can
observe, the structure of the FOP is exactly applied to solve the problem in the
Agenda Ontology.
      </p>
      <p>Regarding the reuse of the Atomic/Complex Commitment Types FOP and the
Appointment FOP, the structure of the models, although not exactly the same, is
analogous. An Appointment in the Agenda Ontology is an Appointment in the sense of
UFO-C. Like Commitments, Appointments can be classified as Atomic and Complex
Appointments (see Atomic/Complex Commitment Types FOP). In the case of the
Agenda Ontology, all complex appointments (said Multiple Appointment) are
composed of atomic appointments (said Single Appointment). Multiple Appointments are
further categorized according to their frequency of occurrence into: Diary
Appointment, Weekly Appointment and Monthly Appointment. Since in the agenda domain we
are not interested in commitments that are not appointments, we did not represent the
concept of commitment. However, since appointment is a special type of
commitment, appointments inhere in an agent (Agenda Owner).</p>
      <p>
        Concerning the reuse of DROPs, which occur by extension, Figure 7 shows a
fragment of the Reference Ontology on Software Testing (ROoST) [
        <xref ref-type="bibr" rid="ref30">30</xref>
        ], which were
developed reusing DROPs organized as an ontology pattern language [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. This picture
shows a small (and simplified) fragment of ROoST dealing with artifacts produced
and used by three software testing activities. This fragment of ROoST was built by
composing and extending two DROPs: Work Product Participation (WPPA) pattern
and Work Product Types (WPT) pattern. In Figure 7 the concepts from these patterns
are shown detached in grey. As shown in this model fragment, concepts and relations
from the DROPs (concepts: Activity Occurrence, Document and Code; relations: uses
and produces) are extended for the testing domain. Test Execution, Test Coding and
Test Case Design are subtypes of Activity Occurrence. Test Case and Test Result are
subtypes of Document (sub-kinds in UFO). Test Code is a sub-kind of Code, while
Code To Be Tested is a role played by a Code when used in a Test Execution.
Regarding relation specializations, Test Case Design produces Test Case. Test Coding uses
Test Case and produces Test Code. Finally, Test Execution uses Test Code and Code
To Be Tested, and produces Test Results.
      </p>
      <p>It is worthwhile to point out that new concepts and relations can also be added to
the domain ontology being developed. In the case of ROoST model fragment shown
in Figure 7, two relations were added: Test Code implements Test Case, and Test
Result is relative to Test Case.
5</p>
    </sec>
    <sec id="sec-6">
      <title>Final Considerations</title>
      <p>
        Ontology patterns (OPs) are currently recognized as a beneficial approach for
ontology development [
        <xref ref-type="bibr" rid="ref3 ref4">3, 4</xref>
        ]. In this paper we made an analogy between patterns in
Software Engineering and patterns in Ontology Engineering, in order to clarify and
harmonize the terminology used in both areas. Since patterns in Software Engineering
have already been studied and used longer than in Ontology Engineering, we revisited
some notions in the latter. In particular, by revisiting the classification proposed by
Gangemi and Presutti in [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], we propose another way of classifying OPs, which is
strongly related to the ontology development phase in which they are to be used.
Moreover, we discuss ways of reusing OPs, namely by analogy and by extension.
Domain-related OPs are typically reused by extension; while the other types of OPs
are typically reused by analogy. It is worthwhile to point out that a third way is
complementary to both: patterns composition. By means of examples, we illustrated how
different ontology conceptual patterns can be reused for developing domain reference
ontologies.
      </p>
      <p>Acknowledgments. This research is funded by the Brazilian Research Funding
Agencies FAPES (PRONEX # 52272362/11) and CNPq (#311578/2011-0).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Noppens</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Liebig</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <article-title>Ontology Patterns and Beyond - Towards a Universal Pattern Language</article-title>
          .
          <source>In: Proceedings of the Workshop on Ontology Patterns (WOP</source>
          <year>2009</year>
          ), Washington D.C., USA,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Poveda-Villalón</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Suárez-Figueroa</surname>
            ,
            <given-names>M.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gómez-Pérez</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <article-title>Reusing Ontology Design Patterns in a Context Ontology Network</article-title>
          . In: Second Workshop on Ontology Patterns (WOP
          <year>2010</year>
          ), Shangai, China,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Gangemi</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Presutti</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <article-title>Ontology Design Patterns</article-title>
          . In: Handbook on Ontologies,
          <article-title>Second edition</article-title>
          , Staab,
          <string-name>
            <given-names>S.</given-names>
            ,
            <surname>Studer</surname>
          </string-name>
          ,
          <string-name>
            <surname>R</surname>
          </string-name>
          . (Eds.), Springer,
          <year>2009</year>
          , pp.
          <fpage>221</fpage>
          -
          <lpage>243</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Blomqvist</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gangemi</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Presutti</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          <article-title>Experiments on Pattern-based Ontology Design</article-title>
          .
          <source>In Proceedings of K-CAP</source>
          <year>2009</year>
          , pp.
          <fpage>41</fpage>
          -
          <lpage>48</lpage>
          .
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Presutti</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Daga</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gangemi</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Blomqvist</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          <article-title>eXtreme Design with Content Ontology Design Patterns</article-title>
          .
          <source>In: Proceedings of the Workshop on Ontology Patterns (WOP</source>
          <year>2009</year>
          ), Washington D.C., USA,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <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.E.,
          <string-name>
            <surname>Vlissides</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Design</surname>
          </string-name>
          <article-title>Patterns: Elements of Reusable Object-Oriented Software</article-title>
          ,
          <string-name>
            <surname>Addison-Wesley</surname>
          </string-name>
          ,
          <year>1995</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Fowler</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <article-title>Analysis Patterns: Reusable Object Models</article-title>
          .
          <source>Addison-Wesley Professional Computing Series</source>
          ,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Buschmann</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Meunier</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rohnert</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sommerlad</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stal</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Pattern-Oriented Software</surname>
            <given-names>Architecture</given-names>
          </string-name>
          , Volume
          <volume>1</volume>
          :
          <string-name>
            <given-names>A</given-names>
            <surname>System of</surname>
          </string-name>
          <string-name>
            <surname>Patterns</surname>
          </string-name>
          , John Wiley &amp; Sons,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Clark</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Thompson</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Porter</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <article-title>Knowledge patterns</article-title>
          .
          <source>In: Proceedings of the 7th International Conference on Principles of Knowledge Representation and Reasoning (KR</source>
          <year>2000</year>
          ), pp.
          <fpage>591</fpage>
          -
          <lpage>600</lpage>
          , San Francisco,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10. Reich,
          <string-name>
            <surname>J.R.</surname>
          </string-name>
          <article-title>Ontological design patterns: Metadata of molecular biological ontologies, information and knowledge</article-title>
          .
          <source>Proceedings of the 11th International Conference on Database and Expert Systems Applications, DEXA</source>
          <year>2000</year>
          , pp.
          <fpage>698</fpage>
          -
          <lpage>709</lpage>
          , London,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Svatek</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <article-title>Design Patterns for Semantic Web Ontologies: Motivation and Discussion</article-title>
          .
          <source>In: Proceedings of the 7th Conference on Business Information Systems</source>
          , Poznan, Poland,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Buschmann</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Henney</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schmidt</surname>
            ,
            <given-names>D.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pattern-</surname>
          </string-name>
          Oriented
          <source>Software Architecture: On Patterns and Pattern Languages</source>
          , John Wiley &amp; Sons Ltd,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Schmidt</surname>
            ,
            <given-names>D. C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fayad</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jonhson</surname>
            ,
            <given-names>R.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Software</surname>
            <given-names>Patterns</given-names>
          </string-name>
          ,
          <source>Communications of the ACM</source>
          , vol.
          <volume>39</volume>
          , no.
          <issue>10</issue>
          ,
          <year>October 1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Hamza</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mahdy</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fayad</surname>
            ,
            <given-names>M.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cline</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <article-title>Extracting domain-specific and domainindependent patterns</article-title>
          .
          <source>In Companion of the 18th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications (OOPSLA '03)</source>
          , New York, USA, pp.
          <fpage>310</fpage>
          -
          <lpage>311</lpage>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Devedzic</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          <string-name>
            <surname>Software</surname>
            <given-names>Patterns</given-names>
          </string-name>
          ,
          <source>In: Handbook of Software Engineering and Knowledge</source>
          Engineering Vol.
          <volume>2</volume>
          -
          <string-name>
            <given-names>Emerging</given-names>
            <surname>Technologies</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.K.</given-names>
            <surname>Chang</surname>
          </string-name>
          (Ed.), World Scientific Pub Co Inc.,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Fowler</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <source>Patterns of Enterprise Application Architecture, Addison Wesley</source>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Coplien</surname>
            ,
            <given-names>J.O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Advanced</surname>
            <given-names>C</given-names>
          </string-name>
          +
          <article-title>+ Programming Styles and Idioms</article-title>
          ,
          <string-name>
            <surname>Addison-Wesley</surname>
          </string-name>
          ,
          <year>1992</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Guarino</surname>
          </string-name>
          , N.:
          <article-title>Formal Ontology and Information Systems</article-title>
          . In: Guarino, N. (ed.)
          <source>Formal Ontology and Information Systems</source>
          , pp.
          <fpage>3</fpage>
          -
          <lpage>15</lpage>
          , IOS Press, Amsterdam,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Gangemi</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <article-title>Ontology Design Patterns for Semantic Web Content</article-title>
          ,
          <source>In: Proc. of the 4th International Semantic Web Conference - ISWC'2005</source>
          , p.
          <fpage>262</fpage>
          -
          <lpage>272</lpage>
          , Galway, Ireland,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Falbo</surname>
            ,
            <given-names>R. A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Barcellos</surname>
            ,
            <given-names>M.P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nardi</surname>
            ,
            <given-names>J.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guizzardi</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          <article-title>Organizing Ontology Design Patterns as Ontology Pattern Languages, 10th Extended Semantic Web Conference</article-title>
          , Montpellier, France,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Ontology Design Patterns (ODPs) Public</surname>
          </string-name>
          <article-title>Catalog</article-title>
          . http://www.gong.manchester.ac.uk/odp/html/.
          <source>Last access in 2nd September</source>
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Aranguren</surname>
            ,
            <given-names>M.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Antezana</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kuiper</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stevens</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          <article-title>Ontology Design Patterns for bioontologies: a case study on the Cell Cycle Ontology</article-title>
          .
          <source>BMC bioinformatics</source>
          ,
          <volume>9</volume>
          (
          <issue>Suppl 5</issue>
          ):
          <fpage>S1</fpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Guizzardi</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <article-title>On Ontology, ontologies, Conceptualizations, Modeling Languages and (Meta)Models</article-title>
          , In O. Vasilecas,
          <string-name>
            <given-names>J.</given-names>
            <surname>Edler</surname>
          </string-name>
          ,
          <string-name>
            <surname>A.</surname>
          </string-name>
          <article-title>Caplinskas (Org</article-title>
          .).
          <source>Frontiers in Artificial Intelligence and Applications</source>
          , Databases and Information Systems IV. IOS Press, Amsterdam,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Guizzardi</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zamborlini</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>A Common</given-names>
            <surname>Foundational</surname>
          </string-name>
          <article-title>Theory for Bridging two levels in Ontology-Driven Conceptual Modeling</article-title>
          .
          <source>In: 5th International Conference of Software Language Engineering (SLE</source>
          <year>2012</year>
          ), Dresden. Germany,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <surname>Angele</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kifer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lausen</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <article-title>Ontologies in F-Logic</article-title>
          , In: Handbook on Ontologies,
          <article-title>Second edition</article-title>
          , Staab,
          <string-name>
            <given-names>S.</given-names>
            ,
            <surname>Studer</surname>
          </string-name>
          ,
          <string-name>
            <surname>R</surname>
          </string-name>
          . (Eds.), Springer,
          <year>2009</year>
          , pp.
          <fpage>45</fpage>
          -
          <lpage>70</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <surname>Silbernagl</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <article-title>Reasoning with Ontologies in Databases: including optimization strategies, evaluation and example SQL code</article-title>
          , VDM Verlag,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          27.
          <string-name>
            <surname>Guizzardi</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          <article-title>Ontological Foundations for Structural Conceptual Models</article-title>
          , Netherlands: Universal Press,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          28.
          <string-name>
            <surname>Guizzardi</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Falbo</surname>
            ,
            <given-names>R.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guizzardi</surname>
            ,
            <given-names>R.S.S.</given-names>
          </string-name>
          <article-title>Grounding software domain ontologies in the Unified Foundational Ontology (UFO): the case of the ODE software process ontology</article-title>
          .
          <source>In: Proceedings of the XI Iberoamerican Workshop on Requirements Engineering and Software Environments</source>
          , IDEAS'
          <year>2008</year>
          , Recife, Brazil, pp.
          <fpage>244</fpage>
          -
          <lpage>251</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          29.
          <string-name>
            <surname>Rittgen</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          , Translating Metaphors into Design Patterns,
          <source>In: Advances in Information Systems Development</source>
          , Springer, pp.
          <fpage>425</fpage>
          -
          <lpage>436</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          30.
          <string-name>
            <surname>Souza</surname>
            ,
            <given-names>E.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Falbo</surname>
            ,
            <given-names>R.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vijaykumar</surname>
            ,
            <given-names>N.L.</given-names>
          </string-name>
          ,
          <article-title>Using Ontology Patterns for Building a Reference Sofware Testing Ontology</article-title>
          , The 8th International Workshop on Vocabularies,
          <article-title>Ontologies and Rules for the Enterprise (VORTE</article-title>
          <year>2013</year>
          ), Vancouver, Canada,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>