<!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>Pattern Definitions and Semantically Annotated Instances</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Ivan Perez</string-name>
          <email>ivan.perez@imdea.org</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Oscar Corcho</string-name>
          <email>ocorcho@fi.upm.es</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>IMDEA Software . Universidad Polit ́ecnica de Madrid</institution>
          ,
          <country country="ES">Spain</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Ontology Engineering Group. Departamento de Inteligencia Artificial. Universidad Polit ́ecnica de Madrid</institution>
          ,
          <country country="ES">Spain</country>
        </aff>
      </contrib-group>
      <fpage>131</fpage>
      <lpage>138</lpage>
      <abstract>
        <p>Ontology design patterns are normally instantiated by replicating and adapting the pattern concepts and roles. The relation between pattern definitions and their instantiations is documented in natural language. The use of parametric ontologies or pattern-reuse modifications to OWL-DL has been suggested before, but so far only practical aspects have been analysed, leaving the formal semantics of these extensions as future work. In this work we present formal definitions for ontology pattern and pattern instantiations, together with the semantics of instantiation. We propose the use of semantic annotations to describe and generate OWL pattern instantiations, without the need for explicit ontology replication, and provide tools to support this process.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <sec id="sec-1-1">
        <title>Ontology patterns represent knowledge that is subject to appear frequently in different ontologies, normally with different names. Relations such as “being part of something”, “participating in an event” and “n-ary relations” are examples of such frequent type of knowledge.</title>
        <p>Pattern instantiation is normally done in two different ways: (1) importing
the pattern axioms and establishing mappings (equivalences) with existing
elements in our ontology, or (2) replicating the pattern by changing the names of its
elements. The former leads to representation and reasoning problems in case we
use the pattern twice in the same ontology, as described in section 2. The latter
is error prone and loses the relation between the instantiations and the pattern,
which is in some cases only described with comments in natural language.</p>
      </sec>
      <sec id="sec-1-2">
        <title>Ad-hoc pattern definition and instantiation languages have been proposed for</title>
        <p>this purpose. However, we propose using the ontology language expressiveness,
by means of semantic annotations, to support this pattern instantiation process.</p>
      </sec>
      <sec id="sec-1-3">
        <title>This paper is organised as follows. In section 2 we introduce some of the problems found when trying to reuse ontology design patterns. In section 3</title>
        <p>The work of IMDEA Software on this paper has been partially funded by the Spanish
Ministry of Industry, Tourism and Trade under the grant FIT-340503-2007-2, as part
of the Morfeo EzWeb strategic singular project.
we define formally the concepts of pattern and pattern instance. In section 4
we describe our tools for supporting pattern reuse. Finally, section 5 presents
conclusions, related work and further research topics in this area.</p>
        <sec id="sec-1-3-1">
          <title>Notation. We use the notation Concept for concepts or classes, property for</title>
          <p>
            properties or roles, and individual for individuals. The notation used for DL
formulas, unless stated otherwise, follows the one presented in [
            <xref ref-type="bibr" rid="ref1">1</xref>
            ].
2
          </p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>Problem description</title>
      <sec id="sec-2-1">
        <title>Let us start with an example where we want to represent cities as part of</title>
        <p>provinces, which we will use as an ontological pattern. We use the concepts</p>
        <sec id="sec-2-1-1">
          <title>City and Province, the property isPartOf, and the following axioms3:</title>
          <p>City</p>
        </sec>
        <sec id="sec-2-1-2">
          <title>If we add the concepts GermanCity and GermanProvince, we can reuse</title>
          <p>the above axiom to relate them. With the following axioms, we can use the
relation isPartOf also for German cities and provinces:</p>
          <p>GermanCity
GermanProvince</p>
          <p>City
Province</p>
        </sec>
        <sec id="sec-2-1-3">
          <title>These axioms do not guarantee that a GermanCity belongs to (isPartOf) a</title>
        </sec>
        <sec id="sec-2-1-4">
          <title>GermanProvince. This situation is more clear if we add new subconcepts of</title>
          <p>City and Province, for instance, FrenchCity and FrenchProvince:</p>
          <p>FrenchCity
FrenchProvince</p>
          <p>City
Province</p>
        </sec>
        <sec id="sec-2-1-5">
          <title>According to our axioms, it could be the case that a FrenchCity is part of a GermanProvince. To solve this, we may add the following axioms:</title>
          <p>GermanCity ≡ ∀isPartOf.GermanProvince
FrenchCity ≡ ∀isPartOf.FrenchProvince</p>
        </sec>
      </sec>
      <sec id="sec-2-2">
        <title>This solution is correct for our case. Note, however, that we have proposed</title>
        <p>an ad-hoc solution to a simple problem of multiple instantiation of one pattern.</p>
      </sec>
      <sec id="sec-2-3">
        <title>In larger ontologies, it may be easier to simply duplicate the original pattern using different names for each element in the pattern:</title>
        <p>
          3 We use this adhoc “pattern” to simplify our explanation, since we have not found any
well-known ontology pattern that contained these axioms and could be used instead.
Potential candidate patterns like Componency [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], Collection [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ], Collection Entity
[
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] or Classification [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ] lacked some of the concepts or axioms.
GermanCity
∀gIsPartOf−1.GermanCity
∀gIsPartOf.GermanProvince
= 1 gIsPartOf.GermanProvince
with a similar description for the concepts FrenchCity and FrenchProvince,
and the role fIsPartOf. To document the relation between the pattern and its
instances, we may keep the subclass relations above and add the following axioms:
gIsPartOf
fIsPartOf
isPartOf
isPartOf
but this adds one new axiom for each element that is part of an instance of a
pattern, and that relation is often just documented in natural language (as an
rdfs:comment associated to the role).
3
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Pattern definitions and instantiations</title>
      <p>Two key elements are needed in ontologies to support patterns: a means to define
the patterns and a way to use them. Before going into details, we introduce a
few elementary definitions that will be used along the paper. We use C for a
set of concept names, R for a set of role names, and I for individual names. We
consider a DL, with a set of symbols S, as a language over the union of all four
sets C, R, I and S. DL sentences are formulas, and an ontology is a finite set of
formulas of a particular DL. We consider C+, R+, I+ and S+ pairwise disjoint4.
Finally, given a set W , a list of symbols w1, . . . , wn ∈ W all different, and a
second list of symbols w1, . . . , wn ∈ W , we define the substitution function from
w1, . . . , wn ∈ W to w1, . . . , wn respectively, as the function f ⊆ W × W such
that:
f (x) =
wi
x
if there is an i ∈ {1, . . . , n} such that wi = x
otherwise</p>
      <sec id="sec-3-1">
        <title>We refer to that substitution function as the mapping</title>
        <p>[w1 → w1, . . . , wn → wn] or [f ]. Given a substitution function f , and given
a string w of elements in W of length n (that is, w : [n] → W )5, we define the
substitution of w under the total substitution function f : W → W , and we
represent it as w[f ], as the string w : [n] → W such that ∀i ∈ [n] w (i) = f (w(i)).
3.1</p>
        <p>Pattern definitions</p>
      </sec>
      <sec id="sec-3-2">
        <title>Ontology patterns are defined as DL models or UML diagrams, plus descriptions in natural language. If we use DL, we have no standard way of establishing</title>
        <p>4 We use the notation X+ for the Kleene plus, that is, the Kleene closure of the set</p>
        <p>
          X without the empty string. More details can be found in [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ].
5 We follow the notation for strings and alphabets in [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. [n], where n is a natural
number, represents the subset of natural numbers from 1 to n.
which parts of the model are meant to be substituted. In case we use UML, the
semantics in ontologies when the pattern is instantiated is not clear.
        </p>
      </sec>
      <sec id="sec-3-3">
        <title>In our proposal, we also use DL models to define patterns. However, we add an</title>
        <p>interface to the pattern, that is, a definition of which parts are instantiable. This
allows us to establish if an element in a pattern is not meant to be substituted
or instantiated. This can happen because a name is just presented to simplify
the axioms, or if the element in question represents more general knowledge.</p>
        <sec id="sec-3-3-1">
          <title>As an example, we will use the model in section 2, with concepts City and</title>
        </sec>
        <sec id="sec-3-3-2">
          <title>Province, the property isPartOf, and the following axioms:</title>
          <p>City</p>
          <p>This model and the interface {City, Province, isPartOf} is a pattern
definition.</p>
        </sec>
      </sec>
      <sec id="sec-3-4">
        <title>Definition 1. (Ontological knowledge pattern)</title>
        <p>Given an ontology O, and given the sets C ⊆ C, R ⊆ R and I ⊆ I. The tuple
O, C , R , I is an ontological knowledge pattern.</p>
      </sec>
      <sec id="sec-3-5">
        <title>Unless stated otherwise, we will normally refer to ontology patterns as pat</title>
        <p>tern definitions or simply patterns. If O, C , R , I is a pattern, we will refer to</p>
        <sec id="sec-3-5-1">
          <title>C , R and I as the interface of the pattern.</title>
          <p>3.2</p>
          <p>Pattern instantiations</p>
        </sec>
      </sec>
      <sec id="sec-3-6">
        <title>A model is an instantiation of a pattern with a parameter/value assignation if</title>
        <p>the model has exactly the same axioms as the pattern, where the parameters
have been substituted with their corresponding values. Note that the values must
be of the same kind, that is, we can substitute or instantiate a concept with a
concept, a role with a role and an individual with an individual.</p>
      </sec>
      <sec id="sec-3-7">
        <title>Given the pattern definition above, we can instantiate it with the assignations</title>
        <p>FrenchCity to City and FrenchProvince to Province, having as a result
the following model:</p>
        <p>FrenchCity
∀isPartOf−1.FrenchCity
∀isPartOf.FrenchProvince
= 1 isPartOf.</p>
      </sec>
      <sec id="sec-3-8">
        <title>The following is a formal definition of pattern instantiation:</title>
      </sec>
      <sec id="sec-3-9">
        <title>Definition 2. (Pattern instantiation)</title>
        <p>Let O, C , R , I be a pattern, where O is an ontology over some description
logic D. Let c1, . . . , cm ∈ C , k1, . . . , km ∈ C be concepts, r1, . . . , rn ∈ R ,
s1, . . . , sn ∈ R be roles, and i1, . . . , ip ∈ I , j1, . . . , jp ∈ I be individuals.</p>
        <p>We say that O is an instance of the pattern O, C , R , I with the mappings
c1 → k1, . . . , cm → km, r1 → s1, . . . , rn → sn, i1 → i1, . . . , ip → jp if O =
{o[c1 → k1, . . . , cm → km, r1 → s1, . . . , rn → sn, i1 → i1, . . . , ip → jp] | o ∈ O}
and O is also an ontology over D.
3.3</p>
        <p>Rebasing ontologies to avoid name clashing
We now address a practical issue commonly found when partially instantiating
the same pattern twice as part of the same ontology. Imagine that we instantiate
the city pattern for French and German cities, and do not want to name isPartOf
differently in each case. The following axioms would be part of the result:
∀isPartOf−1.GermanCity
∀isPartOf−1.FrenchCity
which implies that either isPartOf is empty or GermanCity and FrenchCity
are related (one is a subclass of the other).</p>
      </sec>
      <sec id="sec-3-10">
        <title>Finding these problems may not be so obvious. Besides, name clashes may</title>
        <p>occur in non-instantiable elements. The pattern designer may document or avoid
these issues, but it is the responsibility of the pattern user to make sure that no
inconsistencies are introduced with multiple instantiations of a pattern.</p>
      </sec>
      <sec id="sec-3-11">
        <title>Name clashes are not necessarily a mistake from a formal point of view, so these are only guidelines to pattern design. However, we will help avoid these situations by means of namespace (or URI) translations.</title>
      </sec>
      <sec id="sec-3-12">
        <title>URIs and ontology rebasing. When coded in OWL, ontologies have a base</title>
      </sec>
      <sec id="sec-3-13">
        <title>URI and all entities local to it have that URI as a prefix of their complete names.</title>
      </sec>
      <sec id="sec-3-14">
        <title>By changing the base URI of an ontology, we are effectively renaming all the local</title>
        <p>entities at once, thus avoiding all name clashes of non-instanced local names.</p>
        <sec id="sec-3-14-1">
          <title>In our formal definitions, we consider the unqualified name sets Cu, Ru and</title>
        </sec>
        <sec id="sec-3-14-2">
          <title>Iu, respectively, for concepts, names and individuals. We also consider a set M</title>
          <p>of namespaces, such that C = M × Cu, R = M × Ru, and I = M × Iu. Like
before, Cu, Ru and Iu are pairwise disjoint.</p>
        </sec>
      </sec>
      <sec id="sec-3-15">
        <title>Definition 3. (Ontology rebasing)</title>
        <p>Let O be an ontology, and m, m ∈ M two namespaces. We define the rebasing of
O from m to m , and we represent it as Om→m , as the ontology {o[f ] | o ∈ O}
where f is the substitution function defined by the relation {(x, y) ∈ C ∪ R ∪ I ×
C ∪ R ∪ I | ∃z ∈ (Cu ∪ Ru ∪ Iu) x = m, z ∧ y = m , z }.</p>
      </sec>
      <sec id="sec-3-16">
        <title>The previous definition of pattern instantiation is now extended as follows:</title>
      </sec>
      <sec id="sec-3-17">
        <title>Definition 4. (Pattern instantiation)</title>
        <p>We say that an ontology O is an instantiation of the pattern P with the
namespace change from m to m and the mappings [e1 → d1, . . . , en → dn] if O =
O m→m and O is an instantiation of the pattern P with the mappings [e1 →
d1, . . . , en → dn].</p>
        <p>For example, assume we use http://foo/Cities as the base URI of the cities
pattern and http://foo/Cities#isPartOf as the qualified name of isPartOf. If
we set http://foo/FCities and http://foo/GCities as the base URIs of the
instances for French and German cities respectively, applying the new pattern
instance definition with the same mappings as before would give us the following
axioms instead, where no name clashes occur:
∀http://foo/GCities#isPartOf−1.http://foo/GCities#GermanCity
∀http://foo/FCities#isPartOf−1.http://foo/FCities#FrenchCity
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Tool support</title>
      <sec id="sec-4-1">
        <title>We provide tool support for the processes of pattern definition and instantiation.</title>
        <p>
          Pattern definition. Patterns are defined as ontologies with an interface, hence
to define patterns we simply need to support interface declaration. For this
purpose, we have developed:
– An ontology [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] with the annotation property exportable, which can be set
for any class, property or individual, and is true if the element is part of the
interface (instantiable) or false otherwise. Its default value is assumed to
be true, so that users do not need to annotate all the elements in a pattern.
– A Prot´eg´e plugin [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] to assign values for this annotation property.
        </p>
      </sec>
      <sec id="sec-4-2">
        <title>Pattern instantiation and use. Defining pattern instances means identifying</title>
        <p>the pattern to be used, establishing a parameter/value map and a URI rebasing.</p>
      </sec>
      <sec id="sec-4-3">
        <title>This task is supported with the following elements:</title>
        <p>
          – An ontology [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ] to describe instantiations. It contains concepts to represent
mappings between entities and URI rebases.
– A Prot´eg´e plugin [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] that eases the creation of these instantiation A-Boxes.
        </p>
      </sec>
      <sec id="sec-4-4">
        <title>It also allows the user to apply a particular instantiation.</title>
        <p>
          – An ontology [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] with an annotation property called isPatternInstance,
that indicates that an ontology is the result of applying a particular pattern
instance definition as defined in the first step.
        </p>
        <p>The new Prot´eg´e plugin is accessible under the menu Tools, as an import
wizard. The process is divided in three steps. First, the location of a pattern
definition (an ontology) is provided. Second, the plugin shows all the elements
in that pattern that are exportable. The user can then introduce the main
information about the instantiation, that is, the new names for each entity that will
be instantiated, and the URI rebase. Third, the plugin allows the user to select a
location where the instantiation will be saved. This will create an ontology with
all the information of this particular instantiation (the entity mappings and the</p>
      </sec>
      <sec id="sec-4-5">
        <title>URI rebase), located in a different file. A screenshot is shown in Fig. 1.</title>
      </sec>
      <sec id="sec-4-6">
        <title>Once the process is finished, the plugin loads the pattern, applies the URI</title>
        <p>rebase and entity mapping, and adds all the axioms into the currently active
ontology. It also annotates the ontology with the property isPatternInstance,
using the base URI of the pattern instance definition as value.
5</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Conclusions and future work</title>
      <sec id="sec-5-1">
        <title>In this paper we have shown how patterns can be defined as ontologies with an</title>
        <p>interface (as if they were parametric ontologies), and how pattern instantiations
can be formalised as a substitution of the parameters in a pattern ontology,
providing formal definitions for both concepts. We have also analysed some of
the problems derived from multiple pattern instantiation, and suggested ontology
rebasing as a way to avoid name clashes.</p>
      </sec>
      <sec id="sec-5-2">
        <title>Some notable work in pattern definition is presented in [5], where patterns are</title>
        <p>presented as part of an ontology modification language (OPPL), not focusing on
pattern reuse specifically. There are also some relationships with Package-Based</p>
      </sec>
      <sec id="sec-5-3">
        <title>Description Logics [2], where three views to entities are provided: public, protected and private. The authors of Package-Based Description Logics state that this change introduces parameterism in ontologies, although its expressiveness is not explored.</title>
        <p>The current OWL syntax and tool support is built completely around
annotation properties. Prot´eg´e plugins are based on the OWLAPI library, and they
are currently in an early beta-testing state of development. In future versions of
the syntax, we plan to keep annotation properties to indicate if an element is
instantiable in a pattern, and add support for pattern imports to the modules
mechanism in OWL. This could be done by extending owl:imports with a nested
tag owl:patterninstance, which in turn would have from uri and to uri
attributes for the rebasing. Also, nested owl:mapping elements with attributes
from name and to name could be used for the element/value assignations. The
meaning of these attributes, their domain and range, would be according to what
was established in the Pattern Instance definition ontology, in section 4.</p>
      </sec>
      <sec id="sec-5-4">
        <title>Regarding the expressiveness of the pattern definition language, it currently</title>
        <p>allows roles, concepts and individuals to be treated as parameters. This may be
sufficient in most cases, but it might be interesting to have other parametrisable
parts of an ontology. For instance, numbers in cardinality restrictions could also
be parameters. Note that the introduction of parametricity at this level would
likely make the pattern definition no longer be an ontology.</p>
      </sec>
      <sec id="sec-5-5">
        <title>Even though some content ODPs can easily be represented with our definition of pattern, it is not clear that all ODPs can. Future research should also focus on trying to find Ontology Design patterns that cannot be represented with our definition, in order to identify other elements that can also be parameterised.</title>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>Franz</given-names>
            <surname>Baader</surname>
          </string-name>
          and
          <string-name>
            <given-names>Werner</given-names>
            <surname>Nutt</surname>
          </string-name>
          .
          <article-title>Basic description logics</article-title>
          .
          <source>In Franz Baader</source>
          , Diego Calvanese, Deborah L.
          <string-name>
            <surname>McGuinness</surname>
          </string-name>
          ,
          <string-name>
            <surname>Daniele Nardi</surname>
          </string-name>
          , and
          <string-name>
            <surname>Peter F.</surname>
          </string-name>
          Patel-Schneider, editors,
          <source>Description Logic Handbook</source>
          , pages
          <fpage>43</fpage>
          -
          <lpage>95</lpage>
          . Cambridge University Press,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>Jie</given-names>
            <surname>Bao</surname>
          </string-name>
          , Doina Caragea, and
          <string-name>
            <given-names>Vasant</given-names>
            <surname>Honavar</surname>
          </string-name>
          .
          <article-title>On the semantics of linking and importing in modular ontologies</article-title>
          .
          <source>In International Semantic Web Conference</source>
          , pages
          <fpage>72</fpage>
          -
          <lpage>86</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Jean</surname>
            <given-names>H.</given-names>
          </string-name>
          <string-name>
            <surname>Gallier</surname>
          </string-name>
          .
          <article-title>Logic for computer science: foundations of automatic theorem proving</article-title>
          . Harper &amp; Row Publishers, Inc., New York, NY, USA,
          <year>1985</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>Aldo</given-names>
            <surname>Gangemi</surname>
          </string-name>
          .
          <article-title>Collection design pattern</article-title>
          . http://ontologydesignpatterns.org/wiki/Submissions:Collection.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>Luigi</given-names>
            <surname>Iannone</surname>
          </string-name>
          , Alan Rector, and
          <string-name>
            <given-names>Robert</given-names>
            <surname>Stevens</surname>
          </string-name>
          .
          <article-title>Embedding knowledge patterns into OWL</article-title>
          .
          <source>In 6th Annual European Semantic Web Conference (ESWC2009)</source>
          , pages
          <fpage>218</fpage>
          -
          <lpage>232</lpage>
          ,
          <year>June 2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Iv</surname>
          </string-name>
          <article-title>´an P´erez</article-title>
          . Ontology engineering protege plugins,
          <year>2009</year>
          . IMDEA Software. http://sharesource.org/project/ontoengineeringprotegepluglins/.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Iv</surname>
          </string-name>
          <article-title>´an P´erez</article-title>
          .
          <source>Pattern definition ontology</source>
          ,
          <year>2009</year>
          . IMDEA Software. http://babel.ls.fi.upm.es/˜iperez/pattern-ontologies/patterndefinition.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Iv</surname>
          </string-name>
          <article-title>´an P´erez</article-title>
          .
          <source>Pattern instance ontology</source>
          ,
          <year>2009</year>
          . IMDEA Software. http://babel.ls.fi.upm.es/˜iperez/pattern-ontologies/patterninstance.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Iv</surname>
          </string-name>
          <article-title>´an P´erez</article-title>
          .
          <source>Pattern Instance definition ontology</source>
          ,
          <year>2009</year>
          . IMDEA Software. http://babel.ls.fi.upm.es/˜iperez/pattern-ontologies/patterninstancedefinition.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>Valentina</given-names>
            <surname>Presutti</surname>
          </string-name>
          .
          <article-title>Classification design pattern</article-title>
          . http://ontologydesignpatterns.org/wiki/Submissions:Classification.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <given-names>Valentina</given-names>
            <surname>Presutti</surname>
          </string-name>
          .
          <article-title>Collection Entity design pattern</article-title>
          . http://ontologydesignpatterns.org/wiki/Submissions:CollectionEntity.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>Valentina</given-names>
            <surname>Presutti</surname>
          </string-name>
          .
          <article-title>Componency design pattern</article-title>
          . http://ontologydesignpatterns.org/wiki/Submissions:Componency.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>