%%% antecedentes.tex --- 

%% Author: Giménez, Christian
%% Version: $Id: antecedentes.tex,v 0.0 2016/06/22 22:51:10 christian Exp$

% Copyright 2016 Giménez, Christian
  
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.

% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU General Public License for more details.

% You should have received a copy of the GNU General Public License
% along with this program.  If not, see <http://www.gnu.org/licenses/>.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Cualquier duda ejecutar texdoctk.

\chapter{Lógicas Descriptivas y Lenguajes de Ontologías}
%% \todo{Una descripción de las distintas lógicas y su valor de complejidad}
% \todo[inline]{18-1-2017 Germán: ¿Qué te parece esta estructura?
% 2.1 ALC
% 2.1.1. Sintaxis y Semántica
% 2.1.2. Propiedades Computacionales.
% 2.2 Extensiones de ALC (algo asi)
% 2.3. UML y DL.} %% Ya está, falta completar los textos.
%% \todo[inline]{18-1-2017 Germán: Creo que DL se escribe sin mathcal, en general.}
%% \germanin{18-1-2017}{Mirar el Cap. 2 de mi tesis.}
%% \germanin{18-1-2017}{Hacete acá una intro más general de las DL's.} %% 

\label{sec:DL}
En Ciencias de la Computación, una \emph{ontología} es la descripción del conocimiento sobre un dominio de interés.
%% \chris{27-06-2017}{Buscar una referencia}
Sin embargo, a diferencia de un modelo conceptual de datos, una ontología provee una representación independiente de una determinada aplicación. 
Es posible representar el conocimiento de una aplicación de dominio, de forma estructurada y formalmente bien comprendida, expresándola por medio de una Lógica Descriptiva (\DL{}) \cite{gbraun:BaHS07a}.
% Desde un punto de vista estrictamente lógico, las ontologías son equivalentes  a una base de conocimiento expresada en una Lógica Descriptiva (DL) \cite{gbraun:BaHS07a}.
Esto dota a los modelos resultantes de capacidades de razonamiento para validarlos y consultar sobre sus propiedades.


%% No encotré la cita And03webontology
Las \DL{}s  han sido adoptadas como el principal paradigma para la descripción ontológica, que luego redundó en la estandarización del lenguaje de ontologías Web OWL \cite{gbraun:2008:ONS,gbraun:2012:Krotzsch12:OWLProfiles}, por parte del \emph{World Wide Web Consortium (W3C)}. Además, dicha adopción posibilitó la construcción de herramientas para inferencias automáticas, definiendo así la base teórica para los sistemas de información.
%% Ver en pág. 8 The Description Logic Handbook. " Among these specialized representations we find semantic networks and frames..."
Las \DL{}s son una evolución de las redes semánticas \cite{quillian67:_word} y los sistemas basados en frames \cite{Minsky:1974:FRK} que, aunque carentes de una semántica precisa, su ventaja era la facilidad de comprensión \cite{gbraun:Baader:2003:DLH}. En este contexto, éstas lógicas surgen para dotar a estas representaciones de una semántica formal. Además, las \DL{}s son una familia de lenguajes de representación de conocimiento que pueden ser consideradas como un subconjunto decidible de la lógica de primer orden (\FOL{}). Ellas pueden ser usadas para describir el dominio de una aplicación en términos de clases y relaciones y admitiendo razonamiento decidible.
En la misma dirección, surge OWL \cite{gbraun:owl2:overview, gbraun:allemang2011semantic} como un lenguaje formal de la Web Semántica \cite{gbraun:bernerslee2001semantic}, para expresar ontologías. Basado en la semántica de \DL{}, OWL ha sido diseñado para aplicaciones que requieren procesar información, en lugar de sólo presentarla a los humanos, además de incrementar la interoperabilidad Web. 


El propósito del presente capítulo es hacer un breve repaso de las lógicas descriptivas básicas, tomando como referencia las lógicas \ALC{} y \ALCQI{}, y el lenguaje OWL, a través de sus características principales y sus sublenguajes subyacentes.
%% En la sección \label{preliminares}, se introduce los conceptos preliminares sobre la terminología relacionada.
%% A continuación,
En la sección \ref{dl} detallamos la sintaxis y semántica de las lógicas \ALC{} y \ALCQI{}. También, describimos algunas lógicas más expresivas y resumimos sus propiedades computacionales.
A continuación, en la sección \ref{owl}, analizamos OWL 1 y OWL 2 y realizamos una breve comparación de ambos. 
Finalmente, en la sección \ref{sec:UML-a-DL} describimos cómo codificar los diagramas de clases UML  utilizando las lógicas descriptivas y el lenguaje OWL 2.
%% En todos los casos, ilustramos con ejemplos que serán usados a lo largo de este trabajo.

%Actualmente, se han desarrollado estándares por la W3C para la web semántica. Estos, definen ciertos lenguajes para representar de forma textual un dominio determinado en lógica descriptiva, para que luego sea procesado por un programa razonador. Además, una serie de implementaciones de estos razonadores también fueron creados para poder resolver diferentes consultas e inferir conclusiones a partir del conocimiento modelado, por ejemplo Racer, Pellet, FaCT++, HermiT, etc.

%% - C: Lo paso más abajo:
%% En la parte terminológica, llamada TBox, podemos describir nociones relevantes de un dominio de aplicación estableciendo propiedades sobre los conceptos y roles, y relaciones entre ellos. La parte de aserciones de la base de conocimiento, denominada la ABox, es usada para describir una situación concreta detallando las propiedades para individuos.
%% -

%Nuestro primer objetivo es crear una representación formal del modelo conceptual que el usuario nos provee, esta representación formal debe poder hacerse de forma automática y debe permitir verificar su consistencia. Es por ello que en este capítulo se presenta a continuación un resumen de la \DL{} denominada \ALC{} y \ALCQI{}, y cómo Berardi et al. en \cite{DBLP:journals/ai/BerardiCG05} propone una traducción de los diagrama de clases UML a \DL{} que aprovechamos para explicar que nuestro objetivo no es sólo posible, sino que también existen varias alternativas que podemos optar para traducir y representar formalmente el modelo conceptual, como así también el uso de los diagramas de clases UML como una herramienta visual para que el usuario pueda realizar sus modelos de forma simple y con una curva de aprendizaje considerable.

% Se presenta en la siguiente sección un resumen de la familia de las lógicas descriptivas, junto con un detalle acerca de su complejidad computacional. Luego, en la sección \ref{sec:uml_rep_dl} se explica la traducción propuesta por Berardi et al. para representar por medio de \DL{} y \FOL{}. 

%% \section{Conceptos Básicos de \DL{}}
%% \todo[inline]{Completar \DL{}}


%\todo[inline]{Quizás deberíamos introducir ontologías}

%\section{Conceptos Básicos}
%\section{Conceptos Preliminares}\label{preliminares}
\section{Lógicas Descriptivas}\label{dl}
%% \chrisin{24-02-2017}{Germán, no saqué la sección ``Conceptos Básicos'', pensaba si está bien dejarla o la saco porque es algo que ya se debería considerar conocido. ¿Lo saco igual? (Todo original: ``adaptar según comentario en indice'')}
%% \germanin{18-1-2017}{adaptar segun comentario en indice.} %% Pensaba dejarlo, vamos a ver que onda {24-02-2017}

%% Representación de alto nivel de un mundo.
% gbraun:Baader:2003:DLH
% Research in the field of knowledge representation and reasoning is usually focused
% on methods for providing high-level descriptions of the world that can be effectively
% --
%  Indeed, although logic is the natural basis for specifying a meaning for these structures, it turns out
% that frames and semantic networks (for the most part) did not require all the ma-
% chinery of first-order logic, but could be regarded as fragments of it [Brachman and
% Levesque, 1985]. In addition, different features of the representation language would
% lead to different fragments of first-order logic. The most important consequence of
% this fact is the recognition that the typical forms of reasoning used in structure-
% based representations could be accomplished by specialized reasoning techniques,
% without necessarily requiring first-order logic theorem provers. Moreover, reason-
% ing in different fragments of first-order logic leads to computational problems of
% differing complexity.
Investigaciones en el campo de la representación de conocimiento y el razonamiento, usualmente se enfocan en métodos que provean una descripción de alto nivel de un mundo, que pueda ser usado de manera efectiva, para construir aplicaciones inteligentes. En este caso, con ``inteligente'' nos referimos a la posibilidad de encontrar consecuencias implícitas de una representación de conocimiento \cite{gbraun:Baader:2003:DLH}. A pesar de que las lógicas de primer orden (\FOL{}) ofrecen una maquinaria muy poderosa y general, para la representación de conocimientos en dominios reales no es preciso utilizar toda su expresividad, mas bien de fragmentos de ella, como queda demostrado por la utilización de redes semánticas y frames descripto en \cite{Brachman:1985:RKR}. A partir de esto, se deduce que son posibles los razonamientos basados en diferentes fragmentos de \FOL{} que conllevan a problemas de diversas complejidades. 

%% gbraun:BaHS07a cap. 3.1: "are a family of knowledge representation languages that can be used to represent the knowledge"
En consecuencia, surgen las Lógicas Descriptivas (\DL{}s), las cuales son una familia de lenguajes para la representación de conocimiento  de una forma estructural y formalmente bien comprendida \cite{gbraun:BaHS07a}. Su nombre proviene del hecho de que las nociones más importantes del dominio son descriptos como \emph{descripciones} de conceptos, en otras palabras, de expresiones que se construyen por medio de conceptos y roles atómicos usando constructores proveídos por la \DL{} particular.
%% \chrisin{27-06-2017}{Revisar los parrafos introductorios}

% En la semántica, un \emph{concepto} es interpretado como un conjunto de individuos y los \emph{roles} como conjunto de pares de individuos. El dominio de la interpretación puede ser elegido de forma arbitraria y puede ser infinito. La características de los dominios, en relación a finito/infinito y la consideración del mundo abierto, son distintivas de las lógicas descriptivas, con respecto a los lenguajes de modelado desarrollados en el estudio de bases de datos. Los conceptos atómicos son interpretados como subconjuntos del dominio de interpretación, mientras que la semántica para los otros constructores son especificados definiendo un conjunto de individuos denotado por cada constructor.

Semánticamente, un \emph{concepto} es interpretado como un conjunto de individuos y los \emph{roles} como conjuntos de pares de individuos. En el aspecto terminológico, una base de conocimiento, llamada TBox, describe nociones relevantes de un dominio de aplicación estableciendo propiedades sobre los conceptos y roles, y relaciones entre ellos. La parte de aserciones de la base de conocimiento, denominada ABox, es usada para describir una situación concreta detallando las propiedades para individuos. Ambos, TBox y ABox definen una ontología en \DL{}.%% \chris{13-2-2017}{¿Lo dejo?} %% Recién comenté esto en un todo opara toda la sección. 24-02-2017

%% \subsection{Nombre de las \DL{}}
%\section{Lógicas Descriptivas}\label{dl}
\subsection{\ALC{} y \ALCQI{}}
\ALC{} (Attributive concept Language with Complements) significa ``lenguaje de conceptos con atributos y complementos''. Se introdujo inicialmente en \cite{schmidt-schaubB:1991:ACD}, donde investigaron la incorporación de la unión ($\sqcup$), intersección ($\sqcap$) y complemento ($\lnot$) a un lenguaje de conceptos con atributos y su impacto en la complejidad computacional. %% como uno de los lenguajes parte de las familias de \DL{},

%\subsubsection{Sintaxis y Semántica}
\label{ref:alc_sintaxis_semantica}
A continuación, se brindarán definiciones formales de la sintaxis y semántica de los constructores según se encuentran en \cite{gbraun:BaHS07a}. 

\begin{definition*}{Sintaxis \ALC{}}
  \label{def:sintaxis_alc}
  Sea $N_C$ un conjunto de nombres de conceptos y $N_R$ un conjunto de nombres roles. El conjunto de descripciones de \ALC{}-conceptos es el conjunto más pequeño de forma que:

  \begin{enumerate}
  \item $\top$, $\bot$ y cada concepto $A \in N_C$ es un \ALC{}-concepto atómico.
  \item Si $C$ y $D$ son \ALC{}-conceptos y $r \in N_R$, entonces $C \sqcap D, C \sqcup D, \lnot C, \forall r.C$ y $\exists r.C$ son \ALC{}-conceptos.
  \end{enumerate}
\end{definition*}

\begin{definition*}{Semántica \ALC{}}
  Una interpretación $\mcI = (\Delta^\mcI, \cdot^\mcI)$ consiste de un conjunto no vacío $\Delta^\mcI$ denominado el dominio de $\mcI$ y la función $\cdot^\mcI$ que asocia cada \ALC{}-concepto con un subconjunto de $\Delta^\mcI$, y cada nombre de rol a un subconjunto de $\Delta^\mcI \times \Delta^\mcI$, para todos los \ALC{}-conceptos $C,D$ y para todo nombre de rol $r$: \\

  \begin{center}
    \renewcommand{\arraycolsep}{2pt}
    \(
    \begin{array}{rcl@{\hspace*{20pt}}rcl@{\hspace*{20pt}}rcl}
      \top^\mcI{}
      & =
      & \Delta^\mcI{}
      %% 
      & \bot^\mcI{}
      & =
      &\emptyset,
      %% 
      &
      &
      & \\
      %% 
      (C \sqcap D)^\mcI
      & =
      & C ^\mcI \cap D^\mcI
      %% 
      & (C \sqcup D)^\mcI
      & =
      & C^\mcI \cup D^\mcI
      %% 
      & \lnot C^\mcI
      & =
      & \Delta^\mcI \backslash C^\mcI \\
      %% 
      (\exists r.C)^\mcI
      & =
      & \multicolumn{7}{l}{\{x \in \Delta^\mcI | \) existe algún \(y \in \Delta^\mcI \hspace{0.5cm} (x,y) \in r^\mcI, \; y \in C^\mcI\}} \\
      %% 
      (\forall r.C)^\mcI
      & =
      & \multicolumn{7}{l}{\{x \in \Delta^\mcI |\) para todo \(y \in \Delta^\mcI,\;\) si \((x,y) \in r^\mcI\), entonces \(y \in C^\mcI\}} \\
    \end{array}
    \)
    \renewcommand{\arraycolsep}{5pt}
  \end{center} \ \\
  
Decimos que $C^\mcI$ ($r^\mcI$) es una extensión del concepto $C$ (rol $r$) en la interpretación $\mcI$. Si $x \in C^\mcI$, entonces decimos que $x$ es una instancia de $C$ en $\mcI$.
\end{definition*}

El dominio de la interpretación puede ser elegido de forma arbitraria y puede ser infinito. Las características de los dominios, en relación a finito/infinito y la consideración del mundo abierto, son distintivas de las lógicas descriptivas, con respecto a los lenguajes de modelado desarrollados en el estudio de bases de datos. Los conceptos atómicos son interpretados como subconjuntos del dominio de interpretación, mientras que la semántica para los otros constructores son especificados definiendo un conjunto de individuos denotado por cada constructor.

\begin{definition*}{GCI y Sintaxis y Semántica TBox}
  \label{def:gci}
  La inclusión general de conceptos (GCI por sus siglas en inglés ``General Concept Inclusion'') es de la forma $C \sqsubseteq D$, donde $C$ y $D$ son \ALC{}-conceptos. Un conjunto finito de GCIs es llamado un TBox. Una interpretación $\mcI$ es un modelo de un GCI $C \sqsubseteq D$ si $C^\mcI \subseteq D^\mcI$ también lo es de un TBox $T$ si éste lo es de cada GCI en $T$.
\end{definition*}

El uso de $C \equiv D$ es una abreviación para el par simétrico de GCIs $C \sqsubseteq D$ y $D \sqsubseteq C$.

Por otra parte, los axiomas para indicar que un individuo es una instancia de un concepto dado y para indicar que un par de individuos es una instancia de un rol serán incluidos en lo que se denomina ABox.

\begin{definition*}{Axioma de Aserción}
  \label{def:axioma_asercion}
  Un axioma de aserción es de la forma \axAs{x}{C} o \axAs{(x,y)}{r} donde $C$ es un \ALC{}-concepto, $r$ es un \ALC{}-rol y $x$ e $y$ son nombres de individuos. Un conjunto finito de axiomas de aserción es llamado un ABox. Una interpretación $\mcI$ es un modelo de un axioma de aserción \axAs{x}{C} si $x^\mcI \in C^\mcI$ e $\mcI$ es un modelo de un axioma de aserción \axAs{(x,y)}{r} si $(x^\mcI, y^\mcI) \in r^\mcI$ ; $\mcI$ es un modelo de un ABox $\mathcal{A}$ si es un modelo para todos los axiomas en $\mathcal{A}$.
\end{definition*}

Existen varias anotaciones para describir un ABox en la literatura, en este trabajo utilizaremos en forma indistinta $C(x)$ o $x:C$ para conceptos, y $r(x,y)$ o $\langle x,y \rangle : r$ para roles.


\begin{definition*}{Base de Conocimiento}
  \label{def:kb}
  Una base de conocimiento (KB) es un par $(T, A)$, donde $T$ es un TBox y $A$ es un ABox. Una interpretación $\mcI$ es un modelo de la KB $K = (T,A)$ si $\mcI$ es un modelo para $T$ e $I$ es un modelo para $A$.
\end{definition*}

%% \germanin{18-1-2017}{Quizás haría lo mismo que ALC para ALCQI de acuerdo a la traducción y explicaría Q e I y luego el resto mas sotf.} %% Falta mergera el git, pero esto ya está.


\begin{definition*}{Consecuencia Lógica}
  \label{def:consecuencia}
Un axioma $\alpha$ es una consecuencia de una KB, escrito como KB $\models \alpha$ si todo modelo de la KB es también un modelo de $\alpha$. Por lo tanto, para todo $\mcI$, donde $\mcI$ satisface a KB, también se cumple $\mcI \models \alpha$.
\end{definition*}
%% \chrisin{28-06-2017}{¿De dónde saqué la definición \ref{def:consecuencia}?} % del Handbook of Knowledge Representation.

%\todo[inline]{¿Este ejemplo lo sacaste de algún lado?}

\begin{example} Consideremos los siguientes \ALC{}-conceptos que describen una KB (un TBox y un ABox).\\
  \obeycr
  
  %% Calvanesse
  %%
  \textbf{TBox:}
  $T = \{\, Padre \equiv Humano \sqcap Hombre \sqcap \exists tieneHijos$
  $PadreAlegre \sqsubseteq Padre \sqcap \forall tieneHijos.(Doctor \sqcup Abogado \sqcup PersonaAlegre)$
  $AlegreAnc \sqsubseteq \forall descendiente.PadreAlegre$
  $Maestro \sqsubseteq \lnot Doctor \sqcap \lnot Abogado \,\}$
  
  \textbf{ABox:}
  $A = \{\, Maestro(mary), tieneHijos(john, mary), AlegreAnc(john) \,\}$
  \restorecr
  
  En este ejemplo se presenta una ontología expresada en \ALC{}-conceptos. En la primer línea se expresa que el concepto ``padre'' coincide con el de los humanos y que son de género masculino, además que deben tener hijos.
  Luego, un ``padre alegre'' es un subconjunto de los padres en los que todos sus hijos son doctores, abogados o son personas alegres.
  %
  %  
  %% Otro de Calvanesse:
  % \textbf{TBox:}
  % $Manager \sqsubseteq Empleado$
  % $AreaManager \sqsubseteq Manager$
  % $TopManager \sqsubseteq Manager$
  % $AreaManager \sqsubseteq \lnot TopManager$
  % $Manager \sqsubseteq AreaManager \sqcup TopManager$
  % $\exists salario_{Emp}^- \sqsubseteq Integer$
  % $\exists salario_{Emp} \sqsubseteq Empleado$
  % % $Empleado \sqsubseteq \exists salario_{Emp} \sqcap (\le 1 salario_{Emp})$ % ALC no soporta
  % $\exists trabaraPara \sqsubseteq Empleado$
  % $\exists trabajaPara^- \sqsubseteq Proyecto$
  % $Empleado \sqsubseteq \exists trabajaPara$
  % % $Proyecto \sqsubseteq ( \ge 3 TrabajaPara^-)$ % ALC no soporta 
  % $gestiona \sqsubseteq trabajaPara$
  %
  %
  % $AreaManager \sqcap TopManager \sqsubseteq \bot$
  % $\exists trabajaPara \subseteq Empleado$
  % $\exists trabajaPara^- \subseteq Proyecto$
  % $Proyecto \sqsubseteq \exists trabajaPara^-$
  %
  %% Artale
  %%
  %
  % $Manager \sqsubseteq Empleado$
  % $AreaManager \sqsubseteq Manager$
  % $TopManager \sqsubseteq Manager$
  % $AreaManager \sqcap TopManager \sqsubseteq \bot$
  % $\exists trabajaPara \subseteq Empleado$
  % $\exists trabajaPara^- \subseteq Proyecto$
  % $Proyecto \sqsubseteq \exists trabajaPara^-$
  %
  % $\ge 2 gestiona \sqsubseteq \bot$
  % $\ge 2 gestiona^- \sqsubseteq \bot$
  %
  %% Mi ejemplo
  %%
  % \textbf{TBox:}  
  % $String \sqsubseteq \top,\hspace{0.5cm} Persona \sqsubseteq \top, \hspace{0.5cm} Telefono \sqsubseteq \top, \hspace{0.5cm} Nombre \sqsubseteq String, \hspace{0.5cm} Apellido \sqsubseteq String$
  % $Celular \sqsubseteq Telefono, \hspace{0.5cm} Fijo \sqsubseteq Telefono, \hspace{0.5cm} \lnot (Celular \sqsubseteq Fijo), \hspace{0.5cm} \lnot (Fijo \sqsubseteq Celular)$ 
  % $\top \sqsubseteq \forall poseeTel^- .Persona \sqcap \forall poseeTel . Telefono$
  % $\top \sqsubseteq \forall poseeNom^- .Persona \sqcap \forall poseeNom . Nombre$
  % $\top \sqsubseteq \forall poseeAp^- .Persona \sqcap \forall poseeAp . Apellido$
  % $(\forall poseeNom.Nombre) \equiv Persona, \hspace{0.5cm} (\forall poseeNom.Apellido) \equiv Persona$
  %
  % \textbf{ABox:}
  % $String("Juan"), String("Perez"), \ldots$
  % $Persona(pers1), Telefono("441234"), Nombre("Juan"), Apellido("Perez"), Fijo("441234")$
  % $poseeTel(pers1, "1234"), poseeNom(pers1, "Juan"), poseeAp(pers1, "Perez")$
  % \restorecr
  %
  % El TBox describe los conceptos como Persona y Teléfono como parte del todo, String es un concepto que representará a todas las cadenas de caracteres que se puedan crear. Luego, describe la relación que posee los concepto Celular y Fijo con Teléfono y entre ellos mismos, indicando que los primeros están abarcados por el último, sin embargo son disjuntos.
  %
  % Las relaciones entre una persona y sus datos están dadas por las tres roles poseeTel, poseeNom y poseeAp. Tres \ALC{}-conceptos definen los componentes de estos tres roles y a continuación dos más determinan que cada persona debe tener un nombre y apellido asociado.
  %
  % Finalmente, se declara un ABox mostrando una instancia posible. Una entidad ``pers1'' del concepto Persona posee como nombre y apellido ``Juan Pérez'' y un teléfono fijo cuyo número es ``441234''.
  %% \germanin{16-05-2017}{Poner acá ejemplo de ALC, TBox y ABox}
\end{example}

%\subsection{\ALCQI{}}
La lógica descriptiva \ALCQI{} aumenta la expresividad de la lógica \ALC{} ampliando los constructores que define utilizando los roles inversos, denotado como $\mathcal{I}$, y con restricción numérica cualificada, notada como $\mathcal{Q}$. 
En el primer caso, en esta lógica más expresiva, ahora es posible modelar la inversa de una relación. Por ejemplo, la definición $\exists hijo^{-}.Doctor$ establece que alguien tiene un padre doctor, mediante el uso de la inversa del rol ``hijo''.
Asimismo, las restricciones numéricas cualificadas son una forma de restricciones numéricas, permitiendo la definición de cardinalidades sobre roles, en particular, sobre roles atómicos y su inversa. Usando esta nueva primitiva podemos modelar relaciones como $BuenPadre \sqsubseteq Padre \sqcap (\geq 2 \ tieneHijo.Hijo) $, dónde expresamos que un ``buen padre'' es un padre con al menos 2 hijos. 


%\subsubsection{Sintaxis y Semántica}
De forma análoga a las definiciones de  sintaxis y semántica \ALC{}, podemos describir la extensión \ALCQI{} incorporando las definiciones de $\mathcal{I}$ y $\mathcal{Q}$.

\begin{definition*}{Sintaxis \ALCQI{}}
  Sea $N_C$ un conjunto de nombres de conceptos y $N_R$ un conjunto de nombre de roles. El conjunto de descripciones de \ALCQI{}-conceptos es el conjunto más pequeño de forma que:

  \begin{enumerate}
  \item $\top$, $\bot$ y cada concepto $A \in N_C$ es un \ALCQI{}-concepto atómicos.
  \item Si $C$ y $D$ son \ALCQI{}-conceptos y $r \in N_R$, entonces $C \sqcap D, C \sqcup D, \lnot C, \forall r.C$ y $\exists r.C$ son \ALCQI{}-conceptos.
  \item Si $C$ es un \ALCQI{}-concepto, $r \in N_R$ y  $n \in \mathbb{Z}^+$, entonces $r^-$, $(\ge n\ r.C)$, $(\le n\ r.C)$ y $(= n\ r.C)$ también son \ALCQI{}-conceptos.
  \end{enumerate}
\end{definition*}

% En otras palabras, sumamos a los \ALC{}-conceptos definidos en la definición \ref{def:sintaxis_alc} los referentes al rol inverso y a los respectivos de la restricción numérica calificada.

\begin{definition*}{Semántica \ALCQI{}}
  Una interpretación $\mcI = (\Delta^\mcI, \cdot^\mcI)$ consiste de un conjunto no vacío $\Delta^\mcI$ denominado el dominio de $\mcI$ y la función $\cdot^\mcI$ que asocia cada \ALCQI{}-concepto con un subconjunto de $\Delta^\mcI$, y cada nombre de rol a un subconjunto de $\Delta^\mcI \times \Delta^\mcI$ de forma que, para todos los \ALCQI{}-conceptos $C, D$ y para todo nombre de rol $r$:

    \begin{center}
    \renewcommand{\arraycolsep}{2pt}
    \(
    \begin{array}{rcl@{\hspace*{20pt}}rcl@{\hspace*{20pt}}rcl}
      \top^\mcI{}
      & =
      & \Delta^\mcI{}
      %% 
      & \bot^\mcI{}
      & =
      &\emptyset,
      %% 
      &
      &
      & \\
      %% 
      (C \sqcap D)^\mcI
      & =
      & C ^\mcI \cap D^\mcI
      %% 
      & (C \sqcup D)^\mcI
      & =
      & C^\mcI \cup D^\mcI
      %% 
      & \lnot C^\mcI
      & =
      & \Delta^\mcI \backslash C^\mcI \\
      %% 
      (\exists r.C)^\mcI
      & =
      & \multicolumn{7}{l}{\{a \in \Delta^\mcI | \) existe algún \(b \in \Delta^\mcI\)\hspace{0.5cm} \((a,b) \in r^\mcI\) e \(b \in C^\mcI\}} \\
      %% 
      (\forall r.C)^\mcI
      & =
      & \multicolumn{7}{l}{\{a \in \Delta^\mcI |\) para todo \(b \in \Delta^\mcI,\;\) si \((a,b) \in r^\mcI\), entonces \(b \in C^\mcI\}} \\
      %% Inverso
      (r^-)^\mcI
      & =
      & \multicolumn{7}{l}{\{ (b,a) \in \Delta^\mcI \times \Delta^\mcI | (a,b) \in r^\mcI \}} \\
      %% Restricción numérica cualificada
      (\ge n\ r.C)^\mcI
      & =
      & \multicolumn{7}{l}{\{ a \in \Delta^\mcI |\, \left| \{ b \in \Delta^\mcI | (a,b) \in r^\mcI \land b \in C^\mcI \} \right| \ge n \} } \\
      (\le n\ r.C)^\mcI
      & = 
      & \multicolumn{7}{l}{\{ a \in \Delta^\mcI |\, \left| \{ b \in \Delta^\mcI | (a,b) \in r^\mcI \land b \in C^\mcI \} \right| \le n \} } \\
      (= n\ r.C)^\mcI
      & =
      & \multicolumn{7}{l}{\{ a \in \Delta^\mcI |\, \left| \{ b \in \Delta^\mcI | (a,b) \in r^\mcI \land b \in C^\mcI \} \right| = n \} } \\ 
    \end{array}
    \)
    \renewcommand{\arraycolsep}{5pt}
  \end{center}

  Decimos que $C^\mcI$ ($r^\mcI$) es una extensión del concepto $C$ (rol $r$) en la interpretación $\mcI$. Si $a \in C^\mcI$, entonces decimos que $a$ es una instancia de $C$ en $\mcI$.
\end{definition*}

Las definiciones subsecuentes de la sección \ref{ref:alc_sintaxis_semantica}, correspondiente a la inclusión general de conceptos, al axioma de aserción, a la base de conocimiento y consecuencias lógicas en \ALC{} (definición \ref{def:gci}, \ref{def:axioma_asercion}, \ref{def:kb} y \ref{def:consecuencia} respectivamente), son análogas para \ALCQI{}.

\begin{example}
  \label{ej:ALC}
  
  \begin{figure}[H]
    \centering
    \includegraphics[width=0.5\textwidth]{dia/UML-ejemplo-empleado.png}
    \caption{Representación de los conceptos y sus relaciones en el ejemplo \ref{ej:ALC}.}
    \label{fig:uml-ej}
  \end{figure}

  Considere el UML de la Figura \ref{fig:uml-ej}. Una representación \ALCQI{} de dicho modelo es la siguiente:
  % A continuación, se presenta una secuencia de \ALCQI{}-conceptos que describen una KB (un TBox y un ABox). Los conceptos y sus relaciones se representaron en el UML de la Figura \ref{fig:uml-ej} para ser usados como referencia. \\ 
  %% \obeycr

  %% TBox obtenido desde Artale, ABox inventado.
  \textbf{TBox:}\\

  \begin{tabular}{cc}
    \begin{minipage}{.45\textwidth}
      \footnotesize
      \begin{enumerate}[(1)]
      \item $Manager \sqsubseteq Empleado$ \label{tbox1}
      \item $AreaManager \sqsubseteq Manager$ \label{tbox2}
      \item $TopManager \sqsubseteq Manager$ \label{tbox3}
      \item $Manager \sqsubseteq AreaManager \sqcup TopManager$
      \item $AreaManager \sqcap TopManager \sqsubseteq \bot$ \label{tbox4}
      \item $\exists trabajaPara \sqsubseteq Empleado$ \label{tbox5}
      \item $\exists trabajaPara^- \sqsubseteq Proyecto$ \label{tbox6}
      \end{enumerate}
    \end{minipage}
    & 
      \begin{minipage}{.45\textwidth}
        \footnotesize
        \begin{enumerate}[(1)]
          \setcounter{enumi}{7}
        \item $Proyecto \sqsubseteq \exists trabajaPara^-$ \label{tbox7}
        \item $\exists gestiona \sqsubseteq TopManager$
        \item $\exists gestiona^-  \sqsubseteq Proyecto$
        \item $Proyecto \sqsubseteq \exists gestiona^-$
        \item $TopManager \sqsubseteq \exists gestiona$
        \item $(\ge 2\ gestiona ) \sqsubseteq \bot$ \label{tbox8}
        \item $(\ge 2\ gestiona^- ) \sqsubseteq \bot$ \label{tbox9}        
        \end{enumerate}
      \end{minipage}
  \end{tabular}

  \ \\
    
  Un posible \textbf{ABox} sería: \\
  \obeycr
  
  $A = \{\, Empleado(german), Empleado(laura), Empleado(christian), Proyecto(crowd),$
  $Manager(german), AreaManager(laura), TopManager(geman),$
  $gestiona(german, crowd), trabajaPara(christian, crowd) \,\}$
  \restorecr

  En este ejemplo se define un ABox el cual cumple con la representación \ALCQI{}. Sin embargo, es posible que un ABox genere inconsistencias en la KB. Considere los siguientes casos:

  \begin{itemize}
  \item $A \cup \{Manager(juan)\}$ debido a que $juan$ debe ser también un $Empleado$ por la regla en \ref{tbox1}, pero no está presente $Empleado(juan)$ en el ABox.
    
  \item $A \cup \{TopManager(laura)\}$ debido a que $AreaManager(laura)$ y $TopManager(laura)$ existen en el ABox, hace que $AreaManager$ y $TopManager$ no sean disjuntos contradiciendo la regla \ref{tbox4} en el TBox.
    
  \item $A \cup \{Empleado(juan), Manager(juan), TopManager(juan), gestiona(juan, crowd)\}$ debido a que hay 2 gestores para $crowd$ contradiciendo la regla \ref{tbox8}.
    
  \item $A \cup \{Proyecto(linkeddata), gestiona(german, linkeddata)\}$ debido a que hay 2 proyectos gestionados por $german$ contradiciendo la regla \ref{tbox9}.
  \end{itemize}

 En los dos primeros casos de ABox inconsistentes, la expresividad de la lógica \ALC{} puede representar las restricciones necesarias. Sin embargo, para los dos últimos, esto no es posible: no se puede limitar la cantidad de elementos que están dentro de un rol, debido a la falta de constructores cuantificadores como los expresados en las reglas \ref{tbox8} y \ref{tbox9}. 
  %
  %Proyexto
  %% Mi Ejemplo:
  %% 
  % \textbf{TBox:}
  % String \sqsubseteq \top, \hspace{0.5cm} Persona \sqsubseteq \top, \hspace{0.5cm} Telefono \sqsubseteq \top
  % $Celular \sqsubseteq Telefono, \hspace{0.5cm} Fijo \sqsubseteq Telefono, \hspace{0.5cm} \lnot (Celular \sqsubseteq Fijo), \hspace{0.5cm} \lnot (Fijo \sqsubseteq Celular)  
  % $Nombre \sqsubseteq String, \hspace{0.5cm} Apellido \sqsubseteq String$  
  % $\top \sqsubseteq \forall poseeTel^- .Persona \sqcap \forall poseeTel . Telefono$
  % $\top \sqsubseteq \forall poseeNom^- .Persona \sqcap \forall poseeNom . Nombre$
  % $\top \sqsubseteq \forall poseeAp^- .Persona \sqcap \forall poseeAp . Apellido$
  % $(\forall poseeNom.Nombre) \equiv Persona, \hspace{0.5cm} (\forall poseeNom.Apellido) \equiv Persona$
  % $(\ge 3\: poseeNom.Nombre) \equiv \emptyset, \hspace{0.5cm} (\ge 3\: poseeAp.Apellido) \equiv \emptyset
  %
  % \textbf{ABox:}
  % $String("Juan"), String("Perez"), \ldots$
  % $Persona(pers1), Telefono("441234"), Nombre("Juan"), Apellido("Perez"), Fijo("441234"),$
  % $Nombre("Alfredo"), poseeTel(pers1, "1234"), poseeNom(pers1, "Juan"),$
  % $poseeAp(pers1, "Perez"), poseeNom(pers1, "Alfredo")$
  % \restorecr
  %
  %Aquí se presenta una modificación del ejemplo \ref{ej:ALC}, el cual se agrega una restricción en el TBox, definiendo que la cantidad de nombres y apellidos de una persona no sean más de tres. Anteriormente, una persona podía tener tantos nombres, apellidos y teléfonos como se quisiera.
  %
  %El ABox propone un nombre más para la persona ``pers1''. Si incorporásemos uno más, la regla $(\ge 3\; poseeNom.Nombre) \equiv \emptyset$ no se cumpliría creando inconsistencia en nuestra KB.
  %
  %
  %% \germanin{16-05-2017}{Poner acá ejemplo de ALCQI, TBox y ABox}
\end{example}

\subsection{Familia de Lógicas Descriptiva}
%\chrisin{04-02-2017}{¿Cuál es la intención de ``extensiones'', hablar de \ALCQI{}'}
%\germanin{Podíamos hacer una tabla con las extensiones de la lógica. Qué agrega cada operador, sin entrar en la sintaxis y semántica. La intención es que abajo hablamos de las propiedades computacionales de otras lógicas, pero nunca las definimos antes}


%% Podemos observar que el nombre de una \DL{} particular refleja el poder expresivo, cada letra en el nombre corresponde a los constructores provistos. Por ejemplo, \ALC{} con roles transitivos (que sería llamado $\mathcal{ALC}_{R+}$) se expresa como $\mathcal{S}$, indicando una abreviación de una \DL{} ``básica''. La letra $\mathcal{H}$ representa subroles o jerarquía de roles, $\mathcal{O}$ representa nominales, $\mcI$ representa roles inversos, $\mathcal{N}$ restricciones y $\mathcal{Q}$ restricciones numéricas calificadas. La integración con un dominio/tipo de dato concreto es indicado agregando su nombre entre paréntesis, o una $\mathbf{D}$ ``genérica'' para mostrar que éste ha sido integrado. Por ejemplo, la \DL{} correspondiente para el lenguaje de ontologías OWL DL que incluye todos los constructores es denominado $\mathcal{SHOIN}(\mathbf{D})$.

Para muchas aplicaciones, el poder expresivo de las lógicas \ALC{} y \ALCQI{} puede no ser suficiente. 
Por lo tanto, para dar lugar a lógicas más expresivas, otros constructores fueron introducidos en \cite{schmidt-schaubB:1991:ACD} junto con una propuesta de un primer esquema de nombres para \DL{}s. Partiendo de los proveídos por la lógica \AL{}, la incorporación de otros constructores es indicado, mediante la concatenación al nombre de la lógica, las letras que representan a cada constructor agregado. Así, \ALC{} es obtenido desde \AL{} junto con el constructor de complemento ($\lnot$). 
Sin detallar totalmente la sintaxis y semántica de cada una, en la Tabla \ref{tab:DL-concept-constructors} se resumen dichas lógicas junto con sus símbolos representativos.
Además, en \cite{baader03:TDLH_A1} se describen lógicas que no poseen todos los constructores dados por \AL{}, por ejemplo, la \DL{} $\mathcal{FL}^-$ se obtiene a partir de \AL{} pero sin permitir la negación atómica, $\mathcal{FL}_0$ se obtiene a partir de $\mathcal{FL}^-$, pero quitando los cuantificadores existenciales limitados. Las \DL{}s mencionadas hasta ahora poseen como constructores de conceptos la intersección y restricciones de valor como núcleo común, pero la familia de lógicas \EL{} excluye las restricciones de valor, sólo la intersección de conceptos y el cuantificador existencial se pueden utilizar.
Con la finalidad de evitar nombres muy largos para expresar \DL{}s, la abreviatura $\mathcal{S}$ fue introducida para referirse a las lógicas \ALC{}$_{R^+}$ (en otras palabras, la lógica \ALC{} extendida con roles transitivos). 

Otros constructores y propiedades de relevancia se describen también con letras, como la letra $\mathcal{H}$ que representa subroles o jerarquía de roles, $\mathcal{O}$ representa nominales, $\mcI$ representa roles inversos, $\mathcal{N}$ restricciones y $\mathcal{Q}$ restricciones numéricas calificadas. La integración con un dominio/tipo de dato concreto es indicado agregando su nombre entre paréntesis, o una $\mathbf{D}$ ``genérica''. Por ejemplo, la \DL{} correspondiente para el lenguaje de ontologías OWL DL que incluye todos los constructores es denominado $\mathcal{SHOIN}(\mathbf{D})$.

\begin{table}[h!]
  \centering
  \small
  \begin{tabular}{|p{4cm}|c|c|r|}
    \hline
    Nombre & Sintaxis & Semántica & Símbolo \\
    \hline
    \hline
    Top
           & $\top$ & $\Delta^\mcI$ & \AL{} / \EL{} \\
    \hline
    Bottom
           & $\bot$ & $\emptyset$ & \AL{} / \EL{} \\
    \hline
    Intersección
           & $C \sqcap D$ & $C^\mcI \cap D^\mcI$ & \AL{} / \EL{} \\
    \hline
    Cuantificador existencial limitado
           & $\exists R.\top$ & $\{ a \in \Delta^\mcI | \exists b.(a,b) \in R^\mcI \}$ & \AL{} / \EL{}\\
    \hline
    \multirow{1}{4cm}{Restricción de valor}
           & $\forall R.C$ & $\{ a \in \Delta^\mcI | \forall b.(a,b) \in R^\mcI \rightarrow b \in C^\mcI \}$ & \AL{} \\
    \hline
    Negación
           & $\lnot C$ & $\Delta^\mcI \backslash C^\mcI$ & $\mathcal{C}$ \\
    \hline
    \multirow{3}{3cm}{Restricción num. calificada}
           & $\ge n R.C$ & $\{ a \in \Delta^\mcI | |\{ b \in \Delta^\mcI | (a,b) \in R^\mcI \land b \in C^\mcI \}| \ge n \}$ &  \\
           & $\le n R.C$ & $\{ a \in \Delta^\mcI | |\{ b \in \Delta^\mcI | (a,b) \in R^\mcI \land b \in C^\mcI \}| \le n \}$ & $\mathcal{Q}$ \\
           & $= n R.C$   & $\{ a \in \Delta^\mcI | |\{ b \in \Delta^\mcI | (a,b) \in R^\mcI \land b \in C^\mcI \}| = n \}$ & \\    
    \hline
    Inverso
           & $r^-$ & $\{ (b,a) \in \Delta^\mcI \times \Delta^\mcI | (a,b) \in r^\mcI \}$ & $\mathcal{I}$ \\
    \hline
    Unión
           & $C \sqcup D$ & $C^\mcI \cup D^\mcI$ & $\mathcal{U}$ \\
    
    \hline

    \multirow{1}{4cm}{Cuantificador existencial}
           & $\exists R.C$ & $\{ a \in \Delta^\mcI | \exists b.(a,b) \in R^\mcI \land b \in C^\mcI \}$ & $\mathcal{E}$ / \EL{}\\
    \hline
    \multirow{3}{3cm}{Restricción num. no calificada}
           & $\ge n R$ & $\{ a \in \Delta^\mcI | |\{ b \in \Delta^\mcI | (a,b) \in R^\mcI \}| \ge n \}$ &  \\
           & $\le n R$ & $\{ a \in \Delta^\mcI | |\{ b \in \Delta^\mcI | (a,b) \in R^\mcI \}| \le n \}$ & $\mathcal{N}$ \\
           & $= n R$   & $\{ a \in \Delta^\mcI | |\{ b \in \Delta^\mcI | (a,b) \in R^\mcI \}| = n \}$ & \\
    \hline
    \multirow{2}{3cm}{Mapeo rol-valor}
           & $R \subseteq S$ & $\{ a \in \Delta^\mcI | \forall b.(a,b) \in R^\mcI \rightarrow (a,b) \in S^\mcI \}$ & \\
           & $R = S$ & $\{ a \in \Delta^\mcI | \forall b.(a,b) \in R^\mcI \leftrightarrow (a,b) \in S^\mcI \}$ & \\
    \hline
    \multirow{2}{3cm}{Acuerdo y desacuerdo}
           & $u_1 \doteq u_2$ & $\{ a \in \Delta^\mcI | \exists b \in \Delta^\mcI . u_i^\mcI(a) = b = u_2^\mcI(a) \}$ & $\mathcal{F}$ \\
           & $u_1 \not\doteq u_2$ & $\{ a \in \Delta^\mcI | \exists b_1, b_2 \in \Delta^\mcI . u_i^\mcI(a) = b_1 \neq b_2 = u_2^\mcI(a) \}$ & \\
    \hline
    Nominal
           & $I$ & $I^\mcI \subseteq \Delta^\mcI$ con $|I^\mcI| = 1$ & $\mathcal{O}$ \\
    \hline
  \end{tabular}
  \caption{Sintaxis y semántica de constructores para la familia de \DL{}. Extraída de \cite{gbraun:Baader:2003:DLH} y ampliada según su texto.}
  \label{tab:DL-concept-constructors}
\end{table}

% \begin{table}[h]
%   \centering
%   \begin{tabular}{|l|r|r|}
%     \hline
%     \DL{} & Expresividad ($\mathcal{S}$ +) & Ejemplo\\
%     \hline
%     \SHIF{} & H (jerarquía de roles) + I + F (funcionalidad de roles)  &  \\
%     $\mathcal{SHOIQ(D)}^-_n$ & H + I + O (nominales) + (D) (dominios concretos)  &  \\
%     \SHOIN{} & H + O + I + N (restricciones numéricas no cualificadas) &  \\
%     \sROIQ{} & R (inclusión de roles complejos) + O + I + Q &  \\
%     \hline
%   \end{tabular}
%   \caption{Lógicas Descriptivas S = ALC}
%   \label{tab:cc_dl}
% \end{table}

%% \subsection{Relación de \DL{} y su Complejidad Computacional}
%\subsection{Servicios de Razonamiento}
%% \todo[inline]{Completar \ALC{} y su CC.} %% 23-02-2017 Ya estaba 






\subsection{Servicios de Razonamiento y Propiedades Computacionales}


La importancia de las \DL{}s y su tratabilidad se expresa en la capacidad de consultar el conocimiento representado a través de un conjunto de tareas o servicios de razonamiento para tal fin. Dichas tareas, además pueden ser reducidas, desde un punto de vista lógico, a otras tareas facilitando el desarrollo de herramientas como la que presentamos en este trabajo. A continuación detallaremos los servicios más relevantes, a partir de los cuales, clasificaremos las propiedades computacional de cada lógica.

%% \chrisin{30-06-2017}{Puse una cita a RACER, puesto que racer menciona las definiciones de cuándo considera una KB consistente y cuándo infiere un axioma A. ¿Está bien?}
\begin{itemize}

\item \textbf{Satisfacibilidad de la Base de Conocimiento}. Una KB es satisfacible (o consistente) si tiene un modelo. Por lo tanto, existe una interpretación $\mathcal{I}$ tal que $\mathcal{I}$ es modelo de la KB \cite{baader03:TDLH_C2, gbraun:racer:HaMo01a}.

\item \textbf{Inferencia de Axiomas}. Una KB infiere un axioma $\alpha$ si todo modelo de la KB es también un modelo de $\alpha$.
El problema de chequear la inferencia de axiomas puede reducirse a decidir si una KB es satisfacible \cite{gbraun:racer:HaMo01a}.

\item \textbf{Satisfacibilidad de Conceptos}. Dado una KB, un concepto $C$ es satisfacible con respecto a la KB si puede ser instanciado.
Por lo tanto, existe un modelo $I$ de KB que mapea $C$ a un conjunto no vacío: $C^{\mathcal{I}} \neq \emptyset$.
El problema de decidir la satisfacibilidad de un concepto $C$ puede ser reducido al servicio anterior determinando si KB $\models C \sqsubseteq \bot$ \cite{baader03:TDLH_C2, gbraun:racer:HaMo01a}.

\end{itemize}

Decidir si una base de conocimiento es consistente es importante \emph{per se}, ya que un KB inconsistente puede llevar a errores de modelado severos y a la derivación de axiomas inválidos. Una KB donde todos los conceptos son satisfacibles es llamada \emph{coherente}. %% Sin embargo, KBs incoherentes pueden ser satisfacibles.\chris{01-07-2017}{Ver con Germán}

% Dado que todo servicio es reducible a otro, vamos a
Es posible clasificar la complexidad computacional de las lógicas descriptivas en términos de satisfacibilidad de conceptos y axiomas generales de la forma $C \sqsubseteq D$, para conceptos arbitrarios $C$ y $D$. La Tabla \ref{tab:cc_dl} presenta una clasificación no exhaustiva con sus respectivas referencias.

%Es preciso comprender la complejidad computacional de las lógicas presentadas anteriormente. Previamente, vamos a definir  Éstas responden a una clase de complejidad diferente dependiendo de los constructores y los servicios de razonamiento, respecto al TBox y ABox, que soportan.
%En \cite{schmidt-schaubB:1991:ACD} se demuestra que chequear por satisfaciblidad de la lógica \ALC{} es de complejidad PSPACE-completo. Esto se puede demostrar por medio de la reducción al problema de validación para fórmulas boleanas cuantificadas.

%Según se describe en \cite{gbraun:2001:CRKR}, presenta un teorema describiendo que la satisfacibilidad de los conceptos \ALCQ{} es PSPACE-completa aún si la entrada es representada usando una codificación binaria. Además, se demuestra que la satisfacibildad de los conceptos para la lógica \ALCQI{}b (\ALCQI{} utilizando una entrada numérica representada por números binarios) es PSPACE-completo.

\begin{table}[h]
  \centering
  \begin{tabular}{|l|r|r|}
    \hline
    \DL{} & Complejidad & Comentario\\
    \hline
    \ALC{} & PSPACE-completo \cite{schmidt-schaubB:1991:ACD}& \\
    $\mathcal{ALCI}$ & PSPACE-completo \cite{gbraun:2001:CRKR}& \\
    \ALCQI{} & PSPACE-completo \cite{gbraun:2001:CRKR}& \\
    \SHIF{} & ExpTime-completo \cite{gbraun:2001:CRKR, HladikIJCAR2004} & \\
    \SHIN{} & ExpTime-completo \cite{gbraun:2001:CRKR, HladikIJCAR2004} & OWL-Lite \cite{gbraun:BaHS07a} \\
    $\mathcal{SHOIQ(D)}^-_n$ & \SHOIQ{} es NExpTime-completo \cite{gbraun:2001:CRKR, TobiesTCRCRNEDL}& Usado para DIG \cite{gbraun:dig} \\
    \SHOIN{} & NExpTime-completo \cite{gbraun:2001:CRKR, TobiesTCRCRNEDL}& Usado para OWL-DL \cite{gbraun:BaHS07a}\\
    \SROIQ{} & NExpTime-hard \cite{TobiesTCRCRNEDL, HorrocksDSHIQ, HorrKutzSattlerSROIQ}& Usado para OWL 1.1 \cite{patel-schneider06:_owl, HorrKutzSattlerSROIQ} \\
    \hline
  \end{tabular}
  \caption{Complejidad Computacional para satisfacibilidad de conceptos de algunas Lógicas Descriptivas}
  \label{tab:cc_dl}
\end{table}

%% It is easy to see that, except for individuals and datatypes, the constructors and
%% axioms of OWL can be translated into SHIQ; in fact, OWL Lite is equivalent to
%% SHIN (D) and OWL DL is equivalent to SHOIN (D) (see Section 3.2.3).
%% -- Pág. 167. Baader. "Handbook of Knowledge Representation"

%% \chrisin{16-04-2017}{Completar las citas que define la complejidad de cada DL en la Tabla \ref{tab:cc_dl}.}

\section{Lenguaje de Ontologías Web: OWL 2}\label{owl}
\label{sec:owl2}
%% \germanin{18-1-2017}{Me gusaría un ejemplo de OWL 2.} %% Ejemplo en la figura de más abajo.

La Web Semántica es una evolución de la Web actual donde la información tiene un significado explícito posibilitando el procesamiento automático por parte de las máquinas y la integración de la información disponible. La Web Semántica intenta integrar la capacidad del lenguaje XML para definir etiquetas y la flexibilidad de RDF para representar datos. Sin embargo, un nivel superior es necesario para describir el significado de los términos usados en estos nuevos documentos Web. En este contexto y, debido a la necesidad de ejecutar tareas de razonamiento sobre tales documentos, surge el Lenguaje de Ontologías Web (OWL).
OWL es un lenguaje de representación de conocimiento para la Web Semántica con un significado definido formalmente, ya que está basado en Lógicas Descriptivas. A partir de él, es posible definir ontologías especificando clases, individuos y valores de datos que pueden ser almacenados como documentos Web semánticos. Además, estas ontologías pueden incluir información escrita en otros lenguajes, por ejemplo RDF, para la descripción de recursos Web, versionado y anotaciones. 

Debido a sus grados de expresividad, el estándar OWL fue dividido en los siguientes sublenguajes: OWL Full, OWL DL y OWL Lite. El primero, OWL Full, contiene a los restantes sublenguajes y su expresividad lo vuelve indecidible. Una de las razones de ésta indecidibilidad es la falta de restricciones al momento de combinar individuos, clases y roles.
Diferente es el caso de OWL DL el cual es soportado por varias herramientas de software debido a su decidibilidad. Si bien OWL DL incluye todos los constructores OWL, ellos no pueden ser combinados de maneras aleatorias. En este contexto, definiciones de clases como instancias de otras clases no se permiten, entre otras. Finalmente OWL Lite, mantiene la decidibilidad pero es aún menos expresivo que los anteriores.  OWL Lite restringe aún más sus definiciones permitiendo sólo, por ejemplo, valores de cardinalidades 0 y 1. Las definiciones completas de estos sublenguajes pueden ser consultadas en \cite{owl:w3c04, w3c04:OWLWOLO}.

En particular, OWL 2 \cite{gbraun:owl2:primer, gbraun:owl2:overview} es esencialmente una pequeña extensión de su predecesor, OWL 1. Desde un punto de vista sintáctico, OWL 2 introduce una nueva sintaxis llamada \emph{Sintaxis Funcional}, que reemplaza a la sintaxis abstracta de OWL 1. El propósito de esta nueva sintaxis es facilitar la lectura estructural de las ontologías.
Además, OWL 2 mantiene la compatibilidad hacia atrás de OWL 2 DL con respecto al sublenguaje OWL 1 DL, mientras que define los siguientes perfiles
%% \chris{22-11}{Agus: preg. \bf Chequear}
explorando otras expresividades y propiedades computacionales, cuyos resultados son tres perfiles explayados en \cite{w3c:owl2:owl_web_ontol_languag_profil}: OWL 2 EL, OWL 2 QL y OWL 2 RL. En tanto que OWL 2 Full continua con las mismas limitaciones que el OWL 1 Full en referencia a su indecidibilidad. 

Con respecto a los nuevos perfiles OWL 2 \cite{w3c:owl2:owl_web_ontol_languag_profil}, OWL EL es utilizado en aplicaciones con ontologías que contienen un gran número de propiedades y/o clases. Captura un poder expresivo utilizado por la mayoría de las ontologías siendo un subconjunto de OWL 2 por lo que las tareas básicas de razonamiento pueden ser realizadas en tiempo polinomial con respecto al tamaño de la ontología. El acrónimo ``EL'' refleja la familia \EL{} \cite{Baader:2005:PEE, DBLP:conf/owled/BaaderLB08} de la lógica descriptiva, las cuales proveen solamente cuantificadores existenciales. OWL QL se utiliza especialmente para aplicaciones que usan un gran número de instancias de datos, donde las consultas es la tarea de razonamiento más importante. Basado en la familia \DL{}-Lite, usando técnicas de razonamiento consistentes y completas, una consulta conjuntiva puede ser realizada en LOGSPACE \cite{Calvanesse:TREQADL} con respecto al tamaño de los datos. El acrónimo ``QL'' refleja el hecho de que, responder consultas en este perfil, puede ser implementado por medio de una reescritura de las consultas a un lenguaje de consultas(``Query Language'' en inglés) relacional estándar. Por último, el objetivo de OWL 2 RL es tratar con aplicaciones que requieren razonamiento escalable sin sacrificar demasiado poder expresivo. Está diseñado para una fácil adopción por parte de los sistemas de inferencia basados en reglas y restringe el uso de constructores a ciertas posiciones sintácticas. El acrónimo ``RL'' refleja el hecho de que el razonamiento en este perfil puede ser implementado usando un lenguaje de reglas estándares.

%\begin{description}
%\item[OWL 2 EL] Particularmente útil en aplicaciones que utilizan ontologías con un gran número de propiedades y/o clases. Captura un poder expresivo utilizado por la mayoría de las ontologías siendo un subconjunto de OWL 2 por lo que las tareas básicas de razonamiento pueden ser realizadas en tiempo polinomial con respecto al tamaño de la ontología. El acrónimo ``EL'' refleja la familia \EL de la lógica descriptiva, las cuales proveen solamente cuantificadores existenciales.
%\item[OWL 2 QL] Creado especialmente para aplicaciones que usan un gran número de instancias de datos, donde las consultas es la tarea de razonamiento más importante. Usando técnicas de razonamiento consistentes y completas, una consulta conjuntiva puede ser realizada en LOGSPACE con respecto al tamaño de los datos. El acrónimo ``QL'' refleja el hecho de que responder consultas en este perfil puede ser implementado por medio de una reescritura de las consultas a un lenguaje de consultas(``Query Language'' en inglés) relacional estándar.
%\item[OWL 2 RL] Su objetivo son las aplicaciones que requieren razonamiento escalable sin sacrificar demasiado poder expresivo. Está diseñado para acomodar las aplicaciones OWL 2 RL de tal forma que sea más relevante la expresividad del lenguaje que la eficiencia \chris{16-05-2017}{¿Es así?¿Cómo se interpreta ``can trade the full expressivity of the language for efficiency''?}. El acrónimo ``RL'' refleja el hecho de que el razonamiento en este perfil puede ser implementado usando un lenguaje de reglas estándares.
%\end{description}

%Los perfiles son definidos realizando restricciones en las estructuras de las ontologías OWL 2. Estas restricciones sintácticas pueden ser especificadas modificando la gramática de la sintaxis funcional OWL 2 y posiblemente proveyendo restricciones globales adicionales. 

%En nuestro caso, nos permitirá representar los conceptos y roles de la \DL{} a una sintaxis XML que es fácil de computar. Además provee clases, propiedades, individuos y valores de datos que expanden la utilidad y expresividad.
%% \germanin{18-1-2017}{Creo que no tiene sentido una oración acá, ampliar un  poco o sacar.} %% Listo, amplié con la diferencia entre OWL 1 y 2.

%En la documentación oficial titulada ``Nuevas Características y Fundamentos''\footnote{\url{https://www.w3.org/TR/2012/REC-owl2-new-features-20121211/}}, se describe que éste lenguaje es una continuación de la versión inicial de OWL, la cual incluye una serie de características las cuales fueron determinadas basadas en aplicaciones reales y en la experiencia del usuario y de los desarrolladores de herramientas. Esta versión, agrega una serie de nuevas característica a OWL 1, incluyendo un incremento en el poder expresivo de las propiedades, soporte extendido a los tipos de datos, capacidad para metamodelos simples, capacidades de anotación extendida y llaves. Además define una serie de perfiles, subconjuntos del lenguaje que cumple ciertos requerimientos de performance o que pueden ser más fáciles de implementar.

%Una tabla de referencia para traducir entre \DL{} y OWL 2 puede observarse en \ref{tab:OWL-ref}. Un simple ejemplo de OWL 2 puede observarse en las figura \ref{fig:owl2-example}, para uno más elaborado se puede consultar el apéndice de la documentación oficial OWL 2 Primer\footnote{\url{https://www.w3.org/TR/2012/REC-owl2-primer-20121211/\#Appendix:_The_Complete_Sample_Ontology}}. Casos de uso más concretos se pueden encontrar a lo largo del Internet, como por ejemplo ``The Foundational Model of Anatomy'' (FMA)\footnote{\url{http://sig.biostr.washington.edu/projects/fm/omEditPublications.html}} es una ontología muy completa acerca de la anatomía ``canónica'' humana; también, se propuso una clasificación de componentes químicos escrita en el lenguaje OWL-DL en \cite{Villanueva-rosales_m.:describing}, incluso describe los primeros pasos de un modelado de éstos componentes y su comportamiento, además de las limitaciones de OWL 1 y 1.1 ante este dominio.



\subsubsection{Sintaxis y Semántica de OWL}


La sintaxis primaria para almacenar ontologías es la sintaxis \emph{RDF/XML} \cite{beckett04:RDFXMLSS}, también basada sobre RDF y por lo tanto, orientada al intercambio de datos. OWL 2 también incluye otras definiciones sintácticas: serializaciones RDF tales como \emph{Turtle} \cite{w3c:rdf:turtle} cuyo propósito es facilitar la lectura/escritura de tripletas RDF; una serialización XML, \emph{OWL/XML} \cite{gbraun:owl2:overview, motik12:OWL2WOLXMLS} para un manejo eficiente de herramientas XML y una sintaxis llamada \emph{Manchester} \cite{gbraun:owl2:overview, horridge12:OWL2WOLMS} la cual intenta hacer más entendibles los documentos ontológicos. 

%Dos tipos de OWL sintaxis han sido estandarizados: \emph{OWL RDF} y \emph{OWL sintaxis abstracta} (OWL abstract syntax), las cuales sirven para diferentes propósitos. La sintaxis OWL RDF está basado sobre RDF \cite{} y está orientada al intercambio de datos. Por otro lado, la sintaxis abstracta de OWL está orientada a mantener cierta legibilidad para humanos.
%Otros tipos han sido especificados para OWL, las cuales fueron creadas para fines científicos: 



 
%Hay varias sintaxis disponibles para OWL los cuales sirven para varios propósitos. La sintaxis de estilo funcional está diseñada para una fácil especificación y para proveer una base para la implementación de herramientas OWL 2 como APIs y razonadores. La sintaxis RDF/XML para OWL es simplemente RDF/XML, con una particular traducción para los constructores OWL. La sintaxis Manchester fue diseñada para facilitar a los lectores que no están vezados en las lógicas formales. La sintaxis OWL XML es una sintaxis XML para OWL definida por un esquema XML.

%Existen herramientas que pueden traducir entre las diferentes sintaxis para OWL \cite{w3c:owl2:owl_primer_20121211}.


Para poder razonar sobre las ontologías OWL 2, es necesario especificar su semántica. Actualmente, OWL 2 presenta dos semánticas estrechamente relacionadas:
\emph{Semántica Directa} (Direct Semantics) y \emph{Semántica Basada en RDF} (RDF-based Semantics).

La semántica directa define el significado de los axiomas OWL mediante relaciones directas a las Lógicas Descriptivas. Esto resulta en una semántica compatible con la semántica de modelos de $\mathcal{SROIQ}$ y en la posibilidad de utilizar herramientas para modelado ontológico integradas a sistemas de razonamiento.
Por otro lado, la semántica basada en RDF primero traduce axiomas OWL en grafos dirigidos expresados en RDF. Esta semántica es completamente compatible con la de RDF y puede ser también aplicada a cualquier ontología OWL 2 sin restricciones. Finalmente, la relación entre ambas es estrecha ya que dada una ontología OWL 2 DL, las inferencias hechas usando la semántica directa serán también válidas si dicha ontología es mapeada a grafos RDF e interpretada usando la semántica basada en RDF. Este último resultado ha sido publicado en \cite{schneider12:OWL2WOLRDFBS}. % \chris{30-06}{¿Está bien citado? ¿Se refiere a este libro?}
La Tabla \ref{tab:OWL-ref} muestra un correspondencia entre la lógica \ALCQI{} y los constructores de OWL 2.


\begin{table}
  \centering
  \begin{tabular}{|cc|cc|}
    \hline
    \ALCQI{} & OWL 2 & \ALCQI{} & OWL 2\\
    \hline
    \hline
    $C, \top$
           & \begin{minipage}{5cm}\scriptsize
             \vspace*{2mm}
\begin{verbatim}
<owl:Class IRI="C"/>
<owl:Class 
  abbreviatedIRI="owl:Thing"/>
\end{verbatim}
           \end{minipage} &
    $ A\sqsubseteq B$
           & \begin{minipage}{5cm}\scriptsize
             \vspace*{2mm}
\begin{verbatim}
<owl:SubClassOf>
  <owl:Class IRI="A"/>
  <owl:Class IRI="B"/>
</owl:SubClassOf>
\end{verbatim}
           \end{minipage} \\
    \hline
    $ A\sqcap B$
           & \begin{minipage}{5cm}\scriptsize
             \vspace*{2mm}
\begin{verbatim}
<owl:ObjectIntersectionOf>
  <owl:Class IRI="A"/>
  <owl:Class IRI="B"/>
</owl:ObjectIntersectionOf>
\end{verbatim}
           \end{minipage} &
    $ A\sqcup B$
           & \begin{minipage}{5cm}\scriptsize
             \vspace*{2mm}
\begin{verbatim}
<owl:ObjectUnionOf>
  <owl:Class IRI="A"/>
  <owl:Class IRI="B"/>
</owl:ObjectUnionOf>
\end{verbatim}
           \end{minipage} \\
    \hline
    $ R^-$
           & \begin{minipage}{5cm}\scriptsize
             \vspace*{2mm}
\begin{verbatim}
<owl:ObjectInverseOf>
  <owl:ObjectPropertyOf IRI="R"/>
</owl:ObjectInverseOf>
\end{verbatim}
           \end{minipage} &
    $ \lnot C$
           & \begin{minipage}{5cm}\scriptsize
             \vspace*{2mm}
\begin{verbatim}
<owl:ObjectComplementOf>
  <owl:Class IRI="C"/>
</owl:ObjectComplementOf>
\end{verbatim}
           \end{minipage} \\
    \hline
    $ (\le n\, R.\top) $
           & \begin{minipage}{5cm}\scriptsize
             \vspace*{2mm}
\begin{verbatim}
<owl:ObjectMinCardinality 
    cardinality="n">
  <owl:ObjectProperty IRI="R"/>
  <owl:Class 
    abbreviatedIRI="owl:Thing"/>
</owl:ObjectMinCardinality>
\end{verbatim}
           \end{minipage} &
    $ (\ge n\, R.\top) $
           & \begin{minipage}{5cm}\scriptsize
             \vspace*{2mm}
\begin{verbatim}
<owl:ObjectMaxCardinality 
    cardinality="n">
  <owl:ObjectProperty IRI="R"/>
  <owl:Class 
    abbreviatedIRI="owl:Thing"/>
</owl:ObjectMaxCardinality>
\end{verbatim}
           \end{minipage} \\
    \hline
    $ \forall R.C $
           & \begin{minipage}{5cm}\scriptsize
             \vspace*{2mm}
\begin{verbatim}
<owl:ObjectAllValuesFrom>
  <owl:ObjectProperty IRI="R"/>
  <owl:Class IRI="C"/>
  </owl:ObjectAllValuesFrom>
\end{verbatim}
           \end{minipage} &
    $ \exists R.C$
           & \begin{minipage}{5cm}\scriptsize
             \vspace*{2mm}
\begin{verbatim}
<owl:ObjectSomeValuesFrom>
  <owl:ObjectProperty IRI="R"/>
  <owl:Class IRI="C"/>
</owl:ObjectSomeValuesFrom>
\end{verbatim}
           \end{minipage} \\
    \hline
  \end{tabular}
    \caption{Referencias de los axiomas OWL 2 y su significado en \ALCQI{}. Extraído de \cite{bao12:OWL2WOLQRG, gbraun:owl2:primer}.}
  \label{tab:OWL-ref}
\end{table}

\begin{example}
  Considere la Tabla \ref{tab:owl1} donde se identifica las partes relevantes de un documento OWL/RDF por medio de una ontología usando dicha sintaxis. Los nombres e identificadores que se utilizan son mayormente IRIs. \chris{22-11}{Agus: completar o quitar ultima oración, \bf Chequear} %, aunque el de los 
  La primer sección son los espacios de nombres XML a utilizar y las abreviaturas asociadas a ellas. Los espacios de nombres de este ejemplo corresponden a OWL, RDFS (RDF Schema), RDF, XSD (XML Schema).
  En ``Información Básica'' se encuentra información que se considera útil para varias aplicaciones. También se provee el nombre, que usualmente es la ubicación en la Web en la que está disponible. Es común reutilizar información que está dentro de otra ontología importándola. En el ejemplo la ontología se denomina \url{http://example.com/owl/families} y se reutiliza los datos contenidos en \url{http://example.org/otherOntologies/families.owl}.
  Luego, se describe el nivel conceptual como los conceptos (\texttt{owl:Class}) y los roles (\texttt{owl:ObjectProperty} y \texttt{owl:DatatypeProperty}). En este caso, se define el concepto ``Woman'' como incluido dentro de ``Person'', los roles ``hasParent'' y su inverso ``hasChild'', el cual debe ser disjunto con ``hasSpouse''. También, se describe otro rol denominado ``hasAge'' cuyo dominio es ``Person'' y rango un tipo de dato ``nonNegativeInteger'' descripto en XML Schema.
  Finalmente, el ejemplo describe un individuo del concepto ``Woman'' llamado ``Mary''. Indica que, en la ontología importada, ``Mary'' es el mismo individuo descripto allí como ``MaryBrown''.

  %% \chrisin{02-10-2017}{\textbf{Laura y Germán:} Chequeen si está bien traducido el ejemplo a DL}
  En \DL{}, se describen los conceptos y roles de la siguiente manera: \obeycr
  
  $ Woman \sqsubseteq Person$
  $ hasParent^- \equiv hasChild$
  $ hasParent \sqcap hasSpouse \equiv \emptyset$
  $ (\exists hasAge.\top \sqsubseteq Person) $
  $ (\exists hasAge^-.\top \sqsubseteq nonNegativeInteger) $

  $ Woman(Mary) $
  \restorecr
  
\begin{table}[h]
  \centering
  \begin{tabular}{|c c|}
   \hline
    Espacios de Nombres & 
                          \begin{minipage}[c]{9cm}
                            {\scriptsize
\begin{verbatim}

<rdf:RDF xml:base="http://example.com/owl/families/"
  xmlns="http://example.com/owl/families/"
  xmlns:otherOnt=
    "http://example.org/otherOntologies/families/"
  xmlns:owl="http://www.w3.org/2002/07/owl#"
  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema#">

\end{verbatim} 
                            }
                          \end{minipage}
    \\
    \arrayrulecolor{gray}\hline\arrayrulecolor{black}
    Información Básica & 
                          \begin{minipage}[c]{9cm}
                            {\scriptsize
\begin{verbatim}

<owl:Ontology rdf:about="http://example.com/owl/families">
   <owl:imports rdf:resource=
    "http://example.org/otherOntologies/families.owl" />
</owl:Ontology>

\end{verbatim} 
                            }
                          \end{minipage}
    \\
    \arrayrulecolor{gray}\hline\arrayrulecolor{black}
    Conceptos & 
             \begin{minipage}[c]{9cm}
               {\scriptsize
\begin{verbatim}

<owl:Class rdf:about="Woman">
   <rdfs:subClassOf rdf:resource="Person"/>
</owl:Class>

\end{verbatim} 
               }
             \end{minipage}
    \\
    \arrayrulecolor{gray}\hline\arrayrulecolor{black}
    Roles & 
            \begin{minipage}[c]{9cm}
              {\scriptsize
\begin{verbatim}

<owl:ObjectProperty rdf:about="hasParent">
   <owl:inverseOf rdf:resource="hasChild"/>
   <owl:propertyDisjointWith rdf:resource="hasSpouse"/>
</owl:ObjectProperty>
<owl:DatatypeProperty rdf:about="hasAge">
  <rdfs:domain rdf:resource="Person"/>
  <rdfs:range rdfs:Datatype=
    "http://www.w3.org/2001/XMLSchema#nonNegativeInteger"/>
  <owl:equivalentProperty rdf:resource="&otherOnt;age"/>
</owl:DatatypeProperty>
 \end{verbatim} 
              }
            \end{minipage}
    \\
    \arrayrulecolor{gray}\hline\arrayrulecolor{black}
    Individuos & 
                 \begin{minipage}[c]{9cm}
                   {\scriptsize
\begin{verbatim}

<Person rdf:about="Mary">
  <rdf:type rdf:resource="Woman"/>
  <owl:sameAs rdf:resource="&otherOnt;MaryBrown"/>
</Person> 

\end{verbatim} 
                   }
                 \end{minipage}
    \\
    \arrayrulecolor{gray}\hline\arrayrulecolor{black} & 
             \begin{minipage}[c]{9cm}
               {\scriptsize
\begin{verbatim}

 </rdf:RDF>
\end{verbatim} 
               }
             \end{minipage}
    \\
    \hline
  \end{tabular}
  \caption{Partes de un documento OWL RDF para una ontología simple. Extractos de OWL RDF obtenidos de \cite{gbraun:owl2:primer}.}
  \label{tab:owl1}
\end{table}
\end{example}



%Finalmente, como es posible escribir OWL 2 en RDF/XML, una sintaxis denominada Turtle puede ser utilizada para describir un grafo RDF en una forma textual compacta y natural, con abreviaciones para los usos comunes de patrones y tipos de datos \cite{w3c:rdf:turtle}. \chris{24-02-2017}{¿dar ejemplos de estas sintaxis turtle y/o RDF?}


%\begin{figure}%[h]
%  \centering
%  \begin{minipage}{10cm}\scriptsize
%\begin{verbatim}
%<!DOCTYPE Ontology [
%<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
%<!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
%]>

%<Ontology
%    xmlns="http://www.w3.org/2002/07/owl#">
%  >
%  <Prefix name="owl" IRI="http://www.w3.org/2002/07/owl#"/>
%  <Declaration>
%    <Class IRI="http://www.owllink.org/examples/myOntology#A"/>
%    <Class IRI="http://www.owllink.org/examples/myOntology#B"/>
%    <Class IRI="http://www.owllink.org/examples/myOntology#C"/>
%  </Declaration>
  
%  <SubClassOf>
%    <Class IRI="http://www.owllink.org/examples/myOntology#A"/>
%    <Class IRI="http://www.owllink.org/examples/myOntology#B"/>
%  </SubClassOf>
%  <SubClassOf>
%    <Class IRI="http://www.owllink.org/examples/myOntology#B"/>
%    <Class IRI="http://www.owllink.org/examples/myOntology#C"/>
%  </SubClassOf>
%</Ontology>
%\end{verbatim}
%  \end{minipage}
%  \caption{Ejemplo de una ontología de OWL 2}
%  \label{fig:owl2-example}
%\end{figure}

%\subsubsection{Perfiles}
%La especificación de OWL 2 define tres perfiles (también llamados fragmentos o sublenguajes) los cuales son versiones recortadas del original que intentan balancear el poder expresivo y la eficiencia del razonamiento. Estos son:

%% \germanin{18-1-2017}{Esto me parece bien.}



Para finalizar esta sección, resumimos en la Tabla \ref{tab:owl2-profiles-complexity}, los distintos perfiles de OWL junto con su complejidad computacional para cada situación.

\begin{landscape}
  \newcommand{\ccomp}[1]{\scriptsize #1-completo}
  \newcommand{\deciAb}{\scriptsize Decibilidad Abierta}
  \newcommand{\deciCAb}{\multirow{1}{2cm}{\scriptsize Decidible pero de complejidad abierta (NP-Hard)}}
  \newcommand{\noap}{\scriptsize No Aplicable}
  \newcommand{\cIndec}{\scriptsize Indecidible}
  \newcommand{\cexptime}{\scriptsize EXPTIME}
  \begin{table}
    \centering
    \footnotesize
    \begin{tabular}{|c|p{4cm}|c|c|c|c|}
      \hline
      Lenguaje & Problema de Razonamiento & Complejidad Taxonómica & Complejidad Datos & Complejidad Consultas & Complejidad Combinada \\
      \hline
      \hline
      \multirow{1}{1.75cm}{\scriptsize OWL 2 con semántica basada en RDF}
               & Consistencia ontológica,
                 Subsume en expresiones de clases,
                 Chequeo de instancia,
                 Consulta conjuntiva
                                          & \cIndec & \cIndec & \cIndec & \cIndec \\
      \hline
      \multirow{2}{1.75cm}{\scriptsize OWL 2 con semántica directa}
               & Consistencia ontológica,
                 Satisfacibilidad de expresiones de clases,
                 Subsume en expresiones de clases,
                 Chequeo de instancias
                                          & \ccomp{N2EXPTIME} & \deciCAb & \noap & \ccomp{N2EXPTIME} \\
      \cline{2-6}
               & Consulta conjuntiva
                                          & \deciAb & \deciAb. & \deciAb & \deciAb \\
      \hline
      \multirow{2}{1.75cm}{OWL 2 EL}
               & Consistencia ontológica,
                 Satisfacibilidad de expresiones de clases,
                 Subsume en expresiones de clases,
                 Chequeo de instancias
                                          & \ccomp{PTime} & \ccomp{PTime} & \noap & \ccomp{PTime} \\
      \cline{2-6}
               & Consulta conjuntiva
                                          & \cexptime & \ccomp{PTime} & \ccomp{NP} & \cexptime \\
      \hline
      \multirow{2}{1.75cm}{OWL 2 QL}
               & Consistencia ontológica,
                 Satisfacibilidad de expresiones de clases,
                 Subsume en expresiones de clases,
                 Chequeo de instancias
                                          & \ccomp{NLogSpace} & $AC^0$ & \noap & \ccomp{NLogSpace} \\
      \cline{2-6}
               & Consulta conjuntiva
                                          & \ccomp{NLogSpace} & $AC^0$ & \ccomp{NP} & \ccomp{NP} \\
      \hline
      \multirow{3}{1.75cm}{OWL 2 RL}
               & Consistencia ontológica
                                          & \ccomp{PTime} & \ccomp{PTime} & \noap & \ccomp{PTime} \\
      \cline{2-6}
               & Satisfacibilidad de expresiones de clases,
                 Subsume en expresiones de clases,
                 Chequeo de instancias
                                          & \ccomp{PTime} & \ccomp{PTime} & \noap & \ccomp{co-NP} \\
      \cline{2-6}
               & Consulta conjuntiva
                                          & \ccomp{PTime} & \ccomp{PTime} & \ccomp{NP} & \ccomp{NP} \\
      \hline
      \multirow{2}{1.75cm}{OWL 1 DL}
               & Consistencia ontológica,
                 Satisfacibilidad de expresiones de clases,
                 Subsume en expresiones de clases,
                 Chequeo de instancias
                                          & \ccomp{NEXPTIME} & \deciCAb & \noap & \ccomp{NEXPTIME} \\
      \cline{2-6}
               & Consulta conjuntiva
                                          & \deciAb & \deciAb & \deciAb & \deciAb \\
      
      \hline
    \end{tabular}
    \caption[Complejidad computacional para los distintos perfiles de OWL 2]{Complejidad computacional para los distintos perfiles de OWL 2. Tabla extraída de \cite{gbraun:owl2:profiles}.}
    \label{tab:owl2-profiles-complexity}
  \end{table}
\end{landscape}

\section{UML como Lenguaje Gráfico para Ontologías}
\label{sec:uml_rep_dl}
\label{sec:UML-a-DL}
\index{UML}\index{\DL{}}\index{Lógica descripiva|see{\DL{}}}
%% \todo[inline]{¿Hacerlo sección o capítulo? Si capítulo, resuelve TODO de sección Modelado Conecptual}
%% \todo[inline]{18-1-2017 Germán: Cuál es la diferencia entre 2.2 y 2.4?} %% Borré la sección 2.4.
%% \germanin{18-1-2017}{Quizás en esta sección podríamos decir para que se usan estas lógicas. Tipo motivacioń y luego UML pasarlo a sección.} %% Al resolver el todo anterios se indicó para que sirve traducirlo a lógicas. También algunas consideraciones.
%\chrisin{16-02-2017}{Preguntar a Germán si se cumple el TODO: decir para qué se usan estas DL, tipo motivación.}


El modelado conceptual usando Lógicas Descriptivas (y OWL) permite eliminar ambigüedades en dichos modelos dando interpretaciones precisas del dominio, además de proveer capacidades de razonamiento para validarlo. En ambos casos, el inconveniente principal es que se requieren modeladores y usuarios con conocimientos en estos lenguajes para poder interpretar y comunicar los modelos. En este contexto, lenguajes de modelado conceptual gráfico tales como UML \cite{gbraun:Booch:2005:UML}, EER \cite{gbraun:Gogolla:1994:EER} o ORM \cite{gbraun:Halpin:2008:ORM}, podrían ser de ayuda. Estos lenguajes estándar permiten modelar la información de un dominio de interés en términos de clases y relaciones entre ellos, aunque no están exentos de introducir información implícita, inconsistencias o redundancias que pueden estar ocultas, principalmente, en modelos complejos.
Por lo tanto, equipar a las herramientas para el diseño conceptual con razonamiento automático y permitir la detección de propiedades relevantes en los diagramas, es altamente deseable.

Desde un punto de vista teórico, diferentes trabajos han mostrado que el razonamiento sobre UML \cite{DBLP:journals/ai/BerardiCG05}, EER \cite{gbraun:DBLP:conf/dlog/ArtaleCKRZ07} y ORM 2 \cite{Halpin2005, gbraun:DBLP:conf/otm/FranconiMS12} es posible, con ciertas restricciones propias de la expresividad de cada uno de los formalismos. En todos los casos, la expresividad es \ALCQI{}, para la cual la complejidad del razonamiento es EXPTIME-Completo. La Tabla \ref{tab:OWL-ref} muestró la correspondencia entre los constructores de OWL 2 y la lógica \ALCQI{}.

En el presente trabajo utilizaremos UML y, en particular, los diagramas de clases como lenguaje gráfico de modelado. 
UML es el estándar \emph{de-facto} para análisis y diseño de software. Es ampliamente usado en aplicaciones de software a escala industrial y diversas herramientas CASE (``Computer Aided Software Engineering''\footnote{Según \cite{Kuhn_1989}, CASE se define como la aplicación científica de un conjunto de herramientas y métodos a un software resultando en un producto de alta calidad, libre de defectos y mantenible.})
%% \chris{22-11}{Agus: ¿Lo hago footnote?}
lo soportan, como por ejemplo, ArgoUML \cite{schach03:IOOADUML, DBLP:conf/otm/ComplakWMM11} y Poseidon, entre otras. Una primera aproximación al razonamiento en UML es presentado en \cite{DBLP:journals/ai/BerardiCG05}, codificando en lógica las principales primitivas estáticas de UML relevantes conceptualmente y obviando aquellas relevantes a nivel implementación. De esta manera, se tomarán en cuenta diagramas que incluyan clases, relaciones binarias, n-arias y generalizaciones (totales y disjuntas) y atributos. La Tabla \ref{tab:resumen-UML-ALCQI} muestra cómo estas primitivas son codificadas en \ALCQI{}. Dicha codificación es la que consideraremos para el desarrollo de nuestra herramienta.




%Es posible mezclar dos mundos enormes que actualmente se utiliza para el desarrollo de aplicaciones como de la web semántica, el modelado conceptual y las lógicas. La unión puede provocar una expansión en la ingeniería del modelado conceptual como de la web semántica, puesto que reafirmará la creación de modelos más certeros y coherentes, incluso sin desprenderse del uso del modelado que el usuario considere cómodo de entender. Por otra parte, podremos también expresar ontologías lógicas por medio de modelos conceptuales evitando al usuario sumar a su curva de aprendizaje, además de ofrecer un agregado de servicios de razonamiento.

%Existen varios intentos para llevar a cabo esta mezcla, transformar un lenguaje de modelado como lo es ORM, ER y UML a lógica descriptiva, e incluso a lógica de primer orden. Además, la aplicación más considerable es la posibilidad de razonar sobre estas traducciones, por lo que es preciso considerar el compromiso entre poder expresivo de la lógica usada y su decidibilidad. 
%Jarrar en \cite{Jarrar2007:ORM_to_SHOIN} describe la traducción ORM a \SHOIN{}, Artale y Franconi en \cite{Artale1999:Temporal_ER_to_DL} detalla una extensión a las formalizaciones lógicas propuestas que se enfoca en las cualidades temporales en específico. Finalmente, Berardi et al. \cite{DBLP:journals/ai/BerardiCG05} sugiere una traducción para transformar diagramas de clases UML a \FOL{}, \ALC{} y \ALCQI{} con la intención de poder razonar sobre los diagramas para encontrar inconsistencias y/o redundacias, y además, demuestra que hacerlo sobre estas traducciones es de complejidad EXPTIME-hard.

%\subsubsection{UML y \FOL{}}
%\index{\FOL}\index{Lógica de Primer Order|see{\FOL{}}}
%En \cite{DBLP:journals/ai/BerardiCG05} sugiere una traducción en donde cada clase $C$ del diagrama UML se asocia a un predicado $C(x)$ unario de similar nombre en \FOL. 

%Un atributo $a$ de una clase $C$ de tipo $T$ se corresponde a un predicado binario $a$ en \FOL, tal que la siguiente aserción se cumple: $$\forall x,y. (C(x) \land a(x,y) ) \then T(y)$$. Observar que un atributo de un mismo nombre puede aparecer en cada clase, lo que hace necesario usar un subíndice para definirlos en \FOL.

%Si el atributo $a$ posee multiplicidad $[i \ldots j]$ entonces se puede expresar en \FOL así: $$\forall x. C(x) \then (i \le \# \{y|a(x,y)\} \le j)$$

%Las asociaciones en UML, definidas como una relación entre las instancias de dos o más clases, puede describirse en \FOL contemplando la cantidad de clases asociadas y la multiplicidad de cada clase en la asociación. 

%Para una relación $A$ comprendida entre instancias de clases $C_1, \ldots, C_n$ puede formalizarse como un predicado n-ario $A$ que cumpla con la siguiente afirmación: $$\forall x_1, \ldots, x_n . A(x_1, \ldots, x_n) \then C_1(x_1) \land \ldots \land C_n(x_n)$$.

%\begin{figure}
%  \centering

%  \begin{tikzpicture}
%    \node[draw, inner ysep=2mm, inner xsep=5mm] (c1) {$C_1$};
%    \node[draw, inner ysep=2mm, inner xsep=5mm] (c2) [right=7cm of c1] {$C_2$};
    
%    \draw (c1.east) -- (c2.west)
%    node[very near start,above] {$m_l \ldots m_u$} node [midway, below]{A} node[very near end, above] {$n_l \ldots n_u$};
%  \end{tikzpicture}
  
%  \caption{Asosiación binaria UML de referencia.}
%  \label{fig:UML-bin-asoc}
%\end{figure}

%Para el caso de relaciones binarias como la de la figura \ref{fig:UML-bin-asoc}, la multiplicidad se transcribe de la siguiente manera:
%$$\forall x.C_1(x) \then (n_l \le \#\{y| A(x,y)\} \le n_u)$$
%$$\forall y.C_2(y) \then (m_l \le \#\{x| A(x,y)\} \le m_u)$$

%Cuando la asociación tiene una clase asociada (figura \ref{fig:UML-asoc-con-clase}), se representa con un predicado unario A y n predicados binarios $r_1, \ldots, r_n$ uno por cada rol involucrado.  Por consiguiente, las siguientes sentencias \FOL deben suceder:

%$$\forall x,y. A(x) \land r_i(x,y) \then C_i(y) \; i = 1, \ldots, n$$
%$$\forall x. A(x) \then \exists y. r_i(x,y) \; i = 1, \ldots, n$$
%$$\forall x,y,y'. A(x) \land r_i(x,y) \land r_i(x,y') \then y = y' \; i = 1, \ldots, n$$
%$$\forall y_1, \ldots, y_n, x, x'. A(x) \land A(x') \land \bigwedge_{i=1}^n (r_i(x, y_i) \land r_i(x',y_i)) \then x = x'$$

%\begin{figure}
%  \centering

%  \begin{tikzpicture}
 %   \node[draw, inner ysep=2mm, inner xsep=5mm] (c1) {$C_1$};
%    \node[draw, inner ysep=2mm, inner xsep=5mm] (c2) [right=7cm of c1] {$C_2$};
    
%    \draw (c1.east) -- (c2.west)
%    node[very near start,above] {$m_l \ldots m_u$} node[very near start, below] {$A_1$} 
%    node[midway, below] (A) {} 
%    node[very near end, above] {$n_l \ldots n_u$}  node[very near end, below] {$A_2$};
    
%    \node[draw, inner ysep=2mm, inner xsep=5mm] (Anode) [below=1cm of A] {$A$};
%    \draw[dashed] (A) -- (Anode);
%  \end{tikzpicture}
  
%  \caption{Asociación con clase asociada. }
%  \label{fig:UML-asoc-con-clase}
%\end{figure}

%\subsubsection{UML y \ALCQI{}}
%\label{sec:UML-a-DL}
%% \todo[inline]{18-1-2017 Germán: Para no copiar lo del paper, hacemos una tabla y listo. Explicamos ALCQI y ponemos el FOL si es necesario. Si no, es un copy del paper original.} 03-02-2017: Listo, removí la explicación y dejé la tabla, escribí algo más simple y bien abreviado. Falta explicar ALCQI en su sección correspondiente.
%Es posible codificar UML a la \DL{} denominada \ALCQI{} ya que es un fragmento de \FOL{} %% \german{18-1-2017}{Acá nos queda descolgado ALCQI, la definición. Christian: Fijarse en todoes anteriores que piden agregar ese contenido.} %% La definición sintáctica y semántica de ALCQI ya fue agregada.
%equipado con tareas de razonamiento decidible. % Explicaremos el método también presentado en \cite{DBLP:journals/ai/BerardiCG05}.
%Es imprescindible conocer la forma de transformar diagramas a \DL{} pues existen lenguajes computacionales que nos permitirán interactuar con razonadores existentes, como OWL2 \cite{gbraun:owl2:primer}, los cuales se basan en estas lógicas.

%En la Tabla \ref{tab:resumen-UML-ALCQI} se presenta en forma resumida y tabulada la codificación de UML a \ALCQI{} para las distintas formas de asociación y primitivas presentada % en esta sección
%por \cite{DBLP:journals/ai/BerardiCG05}, la cual se usará de referencia en el resto de esta tesis.\chris{16-02-2017}{``en el resto de la tesis'' no, mejor dicho, en la sección que se implementará la traducción}

%%Considerese que la traducción comienza representando las clases UML por medio de conceptos en \ALCQI{}, de hecho, las clases y los conceptos denotan conjunto de objetos. Las asociaciones simples requieren del uso de roles, los cuales sus dos elementos deben ser limitados a los conceptos que representan las clases asociadas, luego debe expresarse la multiplicidad en \ALCQI{}. La herencia se representa dependiendo de sus caracterísiticas: la tabla sólo muestra cuando no es ni disjunta ni completa, cuando  es disjunta y cuando es completa a modo de ejemplo. \chris{16-02-2017}{Escribir un ``véase sección'' apuntando a la implementación.}

%\chrisin{16-02-2017}{Posiblemente traslade una explición más importante en la sección de implementación, donde se muestre bien cómo se implementa la traducción y cómo es esta última.} 
%\chrisin{03-02-2017}{¿explico la reificación?}

% Para expresar un atributo $a$ de tipo $T$ para la clase $C$, se utiliza una relación $a$ en \ALCQI{} y se especifica el tipo de atributo con lo siguiente: 
% $$C \sqsubseteq \forall a.T$$
% Para la multiplicidad $[i \ldots j]$ del atributo, se formaliza de la siguiente forma: 
% $$C \sqsubseteq (\ge i\, a.\top) \sqcap (\le j\, a.\top)$$
% Sin embargo, cuando la multiplicidad es $[0 \ldots *]$ se omite la afirmación previa, y cuando la multiplicidad no es explícita en el diagrama (en otras palabras, se asume $[1 \ldots 1]$) la afirmación anterior se convierte en:
% $$C \sqsubseteq \exists a.\top \sqcap (\le 1\, a.\top)$$ \\

% Una asociación binaria (o agregación) $A$ entre dos clases $C_1$ y $C_2$ es representada por un rol atómico $A$, incluyendo la afirmación siguiente:
% $$\top \sqsubseteq \forall A. C_2 \sqcap \forall A^-.C_1$$

% La multiplicidad de $A$ se formaliza por medio de las siguientes sentencias \ALCQI{}, refiérase a la figura \ref{fig:UML-bin-asoc} para ver una descripción gráfica de las variables:
% $$C_1 \sqsubseteq (\ge n_l\, A.\top) \sqcap (\le n_u\, A.\top)$$
% $$C_2 \sqsubseteq (\ge m_l\, A^-.\top) \sqcap (\le m_u\, A^-.\top)$$

% Las asociaciones binarias con clase de asociación, y las $n$-arias con o sin clase de asociación deben ser modeladas a través de la \textbf{reificación}, la cual consiste en que cada asociación $A$ relacionada con las clases $C_1, \ldots{}, C_n$ es representada por un concepto atómico $A$ junto con las siguientes sentencias: \index{reificación}\index{asociación|reificación} 
% $$A \sqsubseteq \exists   r_1 . C_1 \sqcap \ldots \sqcap \exists r_n . C_n   \sqcap  (\le 1\, r_1) \sqcap \ldots \sqcap (\le 1\, r_n)$$

% La multiplicidad en las asociaciones binarias con clase de asociación (véase \ref{fig:UML-asoc-con-clase}) son representadas por:
% $$C_1 \sqsubseteq (\ge n_l r_1^- .A) \sqcap (\le n_u r_1^- .A)$$
% $$C_2 \sqsubseteq (\ge m_l r_2^- .A) \sqcap (\le m_u r_2^- .A)$$

% La generalización puede ser representada por medio de una inclusión, siendo la clase $C$ y su clase hija $C_1$ resultando en $C_1 \sqsubseteq C$. La restricción de disjunción entre las clases $C_1, \ldots{}, C_n$ puede representarse por medio de la sentencia: 
% $$C_i \sqsubseteq \sqcap^{n}_{j = i+1} \lnot C_j \hspace{1cm} \mathrm{ donde }\: 1 \le i \le n-1$$
% En cambio, la restricción de cubrimiento \todo{¿está bien traducido? ``covering constraint''} se puede expresar como:
% $$C \sqsubseteq \sqcup^n_{i=1} C_i$$ \\

% \begin{figure}
%   \centering

%   \begin{tikzpicture}
%     \node[draw, inner ysep=2mm, inner xsep=5mm] (c1) {$C_1$};
%     \node[draw, inner ysep=2mm, inner xsep=5mm] (c2) [above right=2cm of c1] {$C_2$};
%     \node[draw, inner ysep=2mm, inner xsep=5mm] (cn) [right=7cm of c1] {$C_n$};
%     \node[draw, diamond] (asoc) [right=3cm of c1] {};

    
%     \draw (c1.east) -- (asoc.west) node[very near start, above] {$A_1$};
%     \draw (asoc.east) -- (cn.west) node[very near end, above] {$A_n$};
%     \draw (c2.south) -- (asoc.north) node[near start, above, sloped] {$A_2$};

%     \node[draw, inner ysep=2mm, inner xsep=5mm] (Anode) [below=1cm of asoc] {$A$};
%     \draw[dashed] (asoc.south) -- (Anode);
%   \end{tikzpicture}
  
%   \caption{Asociación $n$-aria en UML.}
%   \label{fig:UML-asoc-naria}
% \end{figure}

% \begin{figure}
%   \centering

%   \scriptsize
%   \begin{tikzpicture}
%     \node[draw,circle] (a) {$a$};
%     \node[draw,circle] (o2) [below=1cm of a] {$o_2$};  
%     \node[draw,circle] (o1) [left=1cm of o2]{$o_1$};
%     \node[draw,circle] (on) [right=1.5cm of o2] {$o_n$};

%     \node (dots) [right=5mm of o2] {$\mathbf{\ldots}$};

%     \node (Anode) [above right=0.1mm of a] {$A$};
%     \node (C1) [below left=0.1mm of o1] {$C_1$};
%     \node (C2) [below left=0.1mm of o2] {$C_2$};
%     \node (Cn) [below left=0.1mm of on] {$C_n$};

%     \draw[arrows=->] (a) -- (o1) node [midway, sloped, above] {$A_1$};
%     \draw[arrows=->] (a) -- (o2) node [midway, sloped, above] {$A_2$};
%     \draw[arrows=->] (a) -- (on) node [midway, sloped, above] {$A_n$};
%   \end{tikzpicture}
%   \normalsize
%   \begin{flushleft}
%   Considerese a $a, o_1, o_2, \ldots{}, o_n$ objetos de $A, C_1, C_2, \ldots{}, C_n$ respectivamente. Las líneas representan los conceptos $A_i \: 1 \le i \le n$ y sus relaciones asociadas entre $A$ y $C_i$. Aquí sólo se muestra una instancia de la asociación de la figura \ref{fig:UML-asoc-naria}.
%   \end{flushleft}
  
%   \caption{Representación visual de un ejemplo de la reificación aplicada a la asociación de la figura \ref{fig:UML-asoc-naria}}
%   \label{fig:UML-asoc-rei}
% \end{figure}

\begin{table}%[h!]
  \centering
  \small
  \begin{tabular}{|p{3cm}|c|p{7cm}|}
    \hline
    Expresión & UML & \ALCQI{} \\
    \hline
    Clase & 
    \tiny
    \tikz{ 
    \node[draw, inner ysep=2mm, inner xsep=5mm] (C) {$C$};
    
    \node [above=0.1mm of C] {}; % para dar espacio arriba
            } & $\begin{array}{l}
                   C
                 \end{array}$ \\
    \hline
    Clase con atributo & 
    \tiny
    \tikz{ 
    \node [inner ysep=2mm, inner xsep=5mm] (C) {$C$};
    \node [inner ysep=2mm, inner xsep=5mm] [below=0mm of C] (a) {$a$};
    \draw (C.south east) -- (a.north west);
    \draw (C.north east) rectangle (a.south west);

    \node [above=0.1mm of C] {}; % para dar espacio arriba
                         } & $\begin{array}{lcl}
                                C & \sqsubseteq & \forall a.T
                              \end{array}$ \\
    \hline
    Asociación binaria sin clase asociativa &
    \tiny
    \tikz{
    \node[draw, inner ysep=2mm, inner xsep=2mm] (c1) {$C_1$};
    \node[draw, inner ysep=2mm, inner xsep=2mm] (c2) [right=3cm of c1] {$C_2$}; 

    \draw (c1.east) -- (c2.west)
    node[at start,above, anchor=south west] {$m_l \ldots m_u$} node [midway, below]{A} node[at end, above, anchor=south east] {$n_l \ldots n_u$};

    \node [above=0.1mm of c1] {}; % para dar espacio arriba
    } & $\begin{array}{lcl}
           \top & \sqsubseteq & \forall A. C_2 \sqcap \forall A^-.C_1 \\
           C_1  & \sqsubseteq & (\ge n_l\, A.\top) \sqcap (\le n_u\, A.\top) \\
           C_2  & \sqsubseteq & (\ge m_l\, A^-.\top) \sqcap (\le m_u\, A^-.\top) \\
        \end{array}$ \\
    \hline
    Asociación binaria con clase asociativa & 
    \tiny
    \tikz{
    \node[draw, inner ysep=2mm, inner xsep=2mm] (c1) {$C_1$};
    \node[draw, inner ysep=2mm, inner xsep=2mm] (c2) [right=3cm of c1] {$C_2$};
    
    \draw (c1.east) -- (c2.west)
    node[at start, above, anchor=south west] {$m_l \ldots m_u$} node[at start, below, anchor=north west] {$A_1$} 
    node[midway, below] (A) {} 
    node[at end, above, anchor=south east] {$n_l \ldots n_u$}  node[at end, below, anchor=north east] {$A_2$};
    
    \node[draw, inner ysep=2mm, inner xsep=2mm] (Anode) [below=0.5cm of A] {$A$};
    \draw[dashed] (A) -- (Anode);

    \node [above=0.1mm of c1] {}; % para dar espacio arriba
    }  & Usar reificación. 

         $\begin{array}{lcl}
            A & \sqsubseteq & \exists   A_1 . C_1 \sqcap \exists A_2 . C_2 \sqcap \\
              & & (\le 1\, A_1) \sqcap (\le 1\, A_2) \\
            C_1 & \sqsubseteq & (\ge n_l A_1^- .A) \sqcap (\le n_u A_1^- .A) \\
            C_2 & \sqsubseteq & (\ge m_l A_2^- .A) \sqcap (\le m_u A_2^- .A) \\
          \end{array}$\\
    \hline
    Asociación n-aria con clase asociativa & 
    \tiny
    \tikz{    
    \node[draw, inner ysep=2mm, inner xsep=2mm] (c1) {$C_1$};
    \node[draw, inner ysep=2mm, inner xsep=2mm] (c2) [above right=0.5cm of c1] {$C_2$};
    \node[draw, inner ysep=2mm, inner xsep=2mm] (cn) [right=1.75cm of c1] {$C_n$};
    \node[draw, diamond] (asoc) [right=0.75cm of c1] {};
    
    \draw (c1.east) -- (asoc.west) node[at start, above, anchor=south west] {$A_1$};
    \draw (asoc.east) -- (cn.west) node[at end, above, anchor=south east] {$A_n$};
    \draw (c2.south) -- (asoc.north) node[at start, above, sloped, anchor=south west] {$A_2$};

    \node[draw, inner ysep=2mm, inner xsep=2mm] (Anode) [below=0.5cm of asoc] {$A$};
    \draw[dashed] (asoc.south) -- (Anode);

    \node [above=0.1mm of c2] {}; % para dar espacio arriba
    } & Usar reificación.

        $\begin{array}{lcl}
           A & \sqsubseteq & \exists   r_1 . C_1 \sqcap \ldots \sqcap \exists r_n . C_n   \sqcap \\
             & & (\le 1\, r_1) \sqcap \ldots \sqcap (\le 1\, r_n)
         \end{array}$ \\
    \hline
    Herencia &
    \tiny    
    \tikz{
    \node[draw, inner xsep=2mm, inner ysep=2mm] (C) {$C$};
    \node[draw, inner xsep=2mm, inner ysep=2mm] (C2) [below=1cm of C] {$C_2$};
    \node[draw, inner xsep=2mm, inner ysep=2mm] (C1) [left=0.5cm of C2]{$C_1$};
    \node (dots) [right=0.5cm of C2] {$\ldots$};
    \node[draw, inner xsep=2mm, inner ysep=2mm] (Cn) [right=0.5cm of dots] {$C_n$};
    
    \node (ac) [below=0.5cm of C] {};
    \node (ac1) [left=1.25cm of ac] {};
    \node (acn) [right=2cm of ac] {};
    
    \draw[arrows=-{Latex[length=0.25cm, open]}] (ac.center) -- (C);
    \draw (ac.center) -| (C1.north);
    \draw (ac.center) -- (C2);
    \draw (ac.center) -| (Cn.north);

    \node [above=0.1mm of C] {}; % para dar espacio arriba
               } & $ \begin{array}{lcl}
                       C_1 & \sqsubseteq & C,\, \ldots{},\, C_n \sqsubseteq C
                     \end{array}$\\
    \hline % Herencia disjunta
    Herencia disjunta &
    \tiny    
    \tikz{
    \node[draw, inner xsep=2mm, inner ysep=2mm] (C) {$C$};
    \node[draw, inner xsep=2mm, inner ysep=2mm] (C2) [below=1cm of C] {$C_2$};
    \node[draw, inner xsep=2mm, inner ysep=2mm] (C1) [left=0.5cm of C2]{$C_1$};
    \node (dots) [right=0.5cm of C2] {$\ldots$};
    \node[draw, inner xsep=2mm, inner ysep=2mm] (Cn) [right=0.5cm of dots] {$C_n$};
    
    \node (ac) [below=0.5cm of C] {};
    \node[anchor=south east] (cover) [above right=0.1mm of ac] {\{disjoint\}};
    \node (ac1) [left=1.25cm of ac] {};
    \node (acn) [right=2cm of ac] {};
    
    \draw[arrows=-{Latex[length=0.25cm, open]}] (ac.center) -- (C);
    \draw (ac.center) -| (C1.north);
    \draw (ac.center) -- (C2);
    \draw (ac.center) -| (Cn.north);

    \node [above=0.1mm of C] {}; % para dar espacio arriba
                        } & $\begin{array}{lcl}
                               C_i & \sqsubseteq & (\sqcap^n_{j=i+1} \lnot C_j)$ para $1 \le i \le n-1
                             \end{array}$ \\
    \hline % Herencia completa
    Herencia completa & 
    \tiny    
    \tikz{
    \node[draw, inner xsep=2mm, inner ysep=2mm] (C) {$C$};
    \node[draw, inner xsep=2mm, inner ysep=2mm] (C2) [below=1cm of C] {$C_2$};
    \node[draw, inner xsep=2mm, inner ysep=2mm] (C1) [left=0.5cm of C2]{$C_1$};
    \node (dots) [right=0.5cm of C2] {$\ldots$};
    \node[draw, inner xsep=2mm, inner ysep=2mm] (Cn) [right=0.5cm of dots] {$C_n$};
    
    \node (ac) [below=0.5cm of C] {};
    \node[anchor=south east] (cover) [above right=0.1mm of ac] {\{covering\}};
    \node (ac1) [left=1.25cm of ac] {};
    \node (acn) [right=2cm of ac] {};
    
    \draw[arrows=-{Latex[length=0.25cm, open]}] (ac.center) -- (C);
    \draw (ac.center) -| (C1.north);
    \draw (ac.center) -- (C2);
    \draw (ac.center) -| (Cn.north);

    \node [above=0.1mm of C] {}; % para dar espacio arriba
                        } & $\begin{array}{lcl}
                               C & \sqsubseteq & (\sqcup^n_{i=1} C_i)
                             \end{array}$ \\
    \hline
  \end{tabular}
  \caption[Resumen de las primitivas UML y su codificación a \ALCQI{}.]{Resumen de las primitivas UML y su codificación a \ALCQI{}. Tabla elaborada según la codificación explicada en \cite{DBLP:journals/ai/BerardiCG05}.}
  \label{tab:resumen-UML-ALCQI}
\end{table}


\begin{example}
  Consideremos el modelo de la Figura \ref{fig:uml-ej} y su representación en lógica descriptiva \ALCQI{} dadas en el Ejemplo \ref{ej:ALC}, un documento OWL que represente el modelo indicado se puede observar en formato OWL/XML en la Figura \ref{fig:ejemplo-owl} y Turtle en la Figura \ref{fig:ejemplo-owl-ttl} del Apéndice \ref{sec:owl-varias-sintaxis}.
    %% \todo[inline]{Pongamos acá un ejemplo bien power pero corto. UML, ALCQI y OWL}  
\end{example}














%\subsubsection{Conclusión \FOL{} y \DL{}}
%% \germanin{18-1-2017}{(ver en el adjunto de Germán) Acá es lo mismo para DL y FOL.} %% ¿¿¿quéeee???
%\chrisin{21-02-2017}{Germán, ¿qué querés decir con ``Acá es lo mismo para DL y FOL''?}
%% \germanin{18-1-2017}{La traducción de crowd UML-DL creo que debería estar en una sección aparte o en la sección 4.} %% Se hizo una intro de las traducciones, pero nada demasiado específico. 
%Como se puede observar, el proceso de razonamiento puede utilizarse en \FOL{} o en \DL{}, considerando que éste último incluso puede traducirse a \FOL{} de forma inmediata. El uso de uno u otro depende del soporte del programa razonador a utilizar, sin embargo, puede observarse que \DL{} fue creado con el objetivo de represetar conocimiento en términos de clases y relaciones entre estas, por lo que puede resultar más sencilla su utilización para representar diagramas de clases UML.

% \section{UML y su representación en \FOL{} y \DL{}}
% \label{sec:uml_rep_dl}
% \index{UML}\index{\DL{}}\index{Lógica descripiva|see{\DL{}}}
% %% \todo[inline]{¿Hacerlo sección o capítulo? Si capítulo, resuelve TODO de sección Modelado Conecptual}
% %% \todo[inline]{18-1-2017 Germán: Cuál es la diferencia entre 2.2 y 2.4?} %% Borré la sección 2.4.
% %% \germanin{18-1-2017}{Quizás en esta sección podríamos decir para que se usan estas lógicas. Tipo motivacioń y luego UML pasarlo a sección.} %% Al resolver el todo anterios se indicó para que sirve traducirlo a lógicas. También algunas consideraciones.
% \chrisin{16-02-2017}{Preguntar a Germán si se cumple el TODO: decir para qué se usan estas DL, tipo motivación.}

% Es posible mezclar dos mundos enormes que actualmente se utiliza para el desarrollo de aplicaciones como de la web semántica, el modelado conceptual y las lógicas. La unión puede provocar una expansión en la ingeniería del modelado conceptual como de la web semántica, puesto que reafirmará la creación de modelos más certeros y coherentes, incluso sin desprenderse del uso del modelado que el usuario considere cómodo de entender. Por otra parte, podremos también expresar ontologías lógicas por medio de modelos conceptuales evitando al usuario sumar a su curva de aprendizaje, además de ofrecer un agregado de servicios de razonamiento.

% Existen varios intentos para llevar a cabo esta mezcla, transformar un lenguaje de modelado como lo es ORM, ER y UML a lógica descriptiva, e incluso a lógica de primer orden. Además, la aplicación más considerable es la posibilidad de razonar sobre estas traducciones, por lo que es preciso considerar el compromiso entre poder expresivo de la lógica usada y su decidibilidad. 
% Jarrar en \cite{Jarrar2007:ORM_to_SHOIN} describe la traducción ORM a \SHOIN{}, Artale y Franconi en \cite{Artale1999:Temporal_ER_to_DL} detalla una extensión a las formalizaciones lógicas propuestas que se enfoca en las cualidades temporales en específico. Finalmente, Berardi et al. \cite{DBLP:journals/ai/BerardiCG05} sugiere una traducción para transformar diagramas de clases UML a \FOL{}, \ALC{} y \ALCQI{} con la intención de poder razonar sobre los diagramas para encontrar inconsistencias y/o redundacias, y además, demuestra que hacerlo sobre estas traducciones es de complejidad EXPTIME-hard.

% \subsection{UML y \FOL{}}
% \index{\FOL}\index{Lógica de Primer Order|see{\FOL{}}}
% En \cite{DBLP:journals/ai/BerardiCG05} sugiere una traducción en donde cada clase $C$ del diagrama UML se asocia a un predicado $C(x)$ unario de similar nombre en \FOL. 

% Un atributo $a$ de una clase $C$ de tipo $T$ se corresponde a un predicado binario $a$ en \FOL, tal que la siguiente aserción se cumple: $$\forall x,y. (C(x) \land a(x,y) ) \then T(y)$$. Observar que un atributo de un mismo nombre puede aparecer en cada clase, lo que hace necesario usar un subíndice para definirlos en \FOL.

% Si el atributo $a$ posee multiplicidad $[i \ldots j]$ entonces se puede expresar en \FOL así: $$\forall x. C(x) \then (i \le \# \{y|a(x,y)\} \le j)$$

% Las asociaciones en UML, definidas como una relación entre las instancias de dos o más clases, puede describirse en \FOL contemplando la cantidad de clases asociadas y la multiplicidad de cada clase en la asociación. 

% Para una relación $A$ comprendida entre instancias de clases $C_1, \ldots, C_n$ puede formalizarse como un predicado n-ario $A$ que cumpla con la siguiente afirmación: $$\forall x_1, \ldots, x_n . A(x_1, \ldots, x_n) \then C_1(x_1) \land \ldots \land C_n(x_n)$$.

% \begin{figure}
%   \centering

%   \begin{tikzpicture}
%     \node[draw, inner ysep=2mm, inner xsep=5mm] (c1) {$C_1$};
%     \node[draw, inner ysep=2mm, inner xsep=5mm] (c2) [right=7cm of c1] {$C_2$};
    
%     \draw (c1.east) -- (c2.west)
%     node[very near start,above] {$m_l \ldots m_u$} node [midway, below]{A} node[very near end, above] {$n_l \ldots n_u$};
%   \end{tikzpicture}
  
%   \caption{Asosiación binaria UML de referencia.}
%   \label{fig:UML-bin-asoc}
% \end{figure}

% Para el caso de relaciones binarias como la de la figura \ref{fig:UML-bin-asoc}, la multiplicidad se transcribe de la siguiente manera:
% $$\forall x.C_1(x) \then (n_l \le \#\{y| A(x,y)\} \le n_u)$$
% $$\forall y.C_2(y) \then (m_l \le \#\{x| A(x,y)\} \le m_u)$$

% Cuando la asociación tiene una clase asociada (figura \ref{fig:UML-asoc-con-clase}), se representa con un predicado unario A y n predicados binarios $r_1, \ldots, r_n$ uno por cada rol involucrado.  Por consiguiente, las siguientes sentencias \FOL deben suceder:

% $$\forall x,y. A(x) \land r_i(x,y) \then C_i(y) \; i = 1, \ldots, n$$
% $$\forall x. A(x) \then \exists y. r_i(x,y) \; i = 1, \ldots, n$$
% $$\forall x,y,y'. A(x) \land r_i(x,y) \land r_i(x,y') \then y = y' \; i = 1, \ldots, n$$
% $$\forall y_1, \ldots, y_n, x, x'. A(x) \land A(x') \land \bigwedge_{i=1}^n (r_i(x, y_i) \land r_i(x',y_i)) \then x = x'$$

% \begin{figure}
%   \centering

%   \begin{tikzpicture}
%     \node[draw, inner ysep=2mm, inner xsep=5mm] (c1) {$C_1$};
%     \node[draw, inner ysep=2mm, inner xsep=5mm] (c2) [right=7cm of c1] {$C_2$};
    
%     \draw (c1.east) -- (c2.west)
%     node[very near start,above] {$m_l \ldots m_u$} node[very near start, below] {$A_1$} 
%     node[midway, below] (A) {} 
%     node[very near end, above] {$n_l \ldots n_u$}  node[very near end, below] {$A_2$};
    
%     \node[draw, inner ysep=2mm, inner xsep=5mm] (Anode) [below=1cm of A] {$A$};
%     \draw[dashed] (A) -- (Anode);
%   \end{tikzpicture}
  
%   \caption{Asociación con clase asociada. }
%   \label{fig:UML-asoc-con-clase}
% \end{figure}

% \subsection{UML y \ALCQI{}}
% \label{sec:UML-a-DL}
% %% \todo[inline]{18-1-2017 Germán: Para no copiar lo del paper, hacemos una tabla y listo. Explicamos ALCQI y ponemos el FOL si es necesario. Si no, es un copy del paper original.} 03-02-2017: Listo, removí la explicación y dejé la tabla, escribí algo más simple y bien abreviado. Falta explicar ALCQI en su sección correspondiente.
% Es posible codificar UML a la \DL{} denominada \ALCQI{} ya que es un fragmento de \FOL{} %% \german{18-1-2017}{Acá nos queda descolgado ALCQI, la definición. Christian: Fijarse en todoes anteriores que piden agregar ese contenido.} %% La definición sintáctica y semántica de ALCQI ya fue agregada.
% equipado con tareas de razonamiento decidible. % Explicaremos el método también presentado en \cite{DBLP:journals/ai/BerardiCG05}.
% Es imprescindible conocer la forma de transformar diagramas a \DL{} pues existen lenguajes computacionales que nos permitirán interactuar con razonadores existentes, como OWL2 \cite{gbraun:owl2:primer}, los cuales se basan en estas lógicas.

% En la Tabla \ref{tab:resumen-UML-ALCQI} se presenta en forma resumida y tabulada la codificación de UML a \ALCQI{} para las distintas formas de asociación y primitivas presentada % en esta sección
% por \cite{DBLP:journals/ai/BerardiCG05}, la cual se usará de referencia en el resto de esta tesis.\chris{16-02-2017}{``en el resto de la tesis'' no, mejor dicho, en la sección que se implementará la traducción}

% Considerese que la traducción comienza representando las clases UML por medio de conceptos en \ALCQI{}, de hecho, las clases y los conceptos denotan conjunto de objetos. Las asociaciones simples requieren del uso de roles, los cuales sus dos elementos deben ser limitados a los conceptos que representan las clases asociadas, luego debe expresarse la multiplicidad en \ALCQI{}. La herencia se representa dependiendo de sus caracterísiticas: la tabla sólo muestra cuando no es ni disjunta ni completa, cuando  es disjunta y cuando es completa a modo de ejemplo. \chris{16-02-2017}{Escribir un ``véase sección'' apuntando a la implementación.}

% \chrisin{16-02-2017}{Posiblemente traslade una explición más importante en la sección de implementación, donde se muestre bien cómo se implementa la traducción y cómo es esta última.} 
% \chrisin{03-02-2017}{¿explico la reificación?}

% % Para expresar un atributo $a$ de tipo $T$ para la clase $C$, se utiliza una relación $a$ en \ALCQI{} y se especifica el tipo de atributo con lo siguiente: 
% % $$C \sqsubseteq \forall a.T$$
% % Para la multiplicidad $[i \ldots j]$ del atributo, se formaliza de la siguiente forma: 
% % $$C \sqsubseteq (\ge i\, a.\top) \sqcap (\le j\, a.\top)$$
% % Sin embargo, cuando la multiplicidad es $[0 \ldots *]$ se omite la afirmación previa, y cuando la multiplicidad no es explícita en el diagrama (en otras palabras, se asume $[1 \ldots 1]$) la afirmación anterior se convierte en:
% % $$C \sqsubseteq \exists a.\top \sqcap (\le 1\, a.\top)$$ \\

% % Una asociación binaria (o agregación) $A$ entre dos clases $C_1$ y $C_2$ es representada por un rol atómico $A$, incluyendo la afirmación siguiente:
% % $$\top \sqsubseteq \forall A. C_2 \sqcap \forall A^-.C_1$$

% % La multiplicidad de $A$ se formaliza por medio de las siguientes sentencias \ALCQI{}, refiérase a la figura \ref{fig:UML-bin-asoc} para ver una descripción gráfica de las variables:
% % $$C_1 \sqsubseteq (\ge n_l\, A.\top) \sqcap (\le n_u\, A.\top)$$
% % $$C_2 \sqsubseteq (\ge m_l\, A^-.\top) \sqcap (\le m_u\, A^-.\top)$$

% % Las asociaciones binarias con clase de asociación, y las $n$-arias con o sin clase de asociación deben ser modeladas a través de la \textbf{reificación}, la cual consiste en que cada asociación $A$ relacionada con las clases $C_1, \ldots{}, C_n$ es representada por un concepto atómico $A$ junto con las siguientes sentencias: \index{reificación}\index{asociación|reificación} 
% % $$A \sqsubseteq \exists   r_1 . C_1 \sqcap \ldots \sqcap \exists r_n . C_n   \sqcap  (\le 1\, r_1) \sqcap \ldots \sqcap (\le 1\, r_n)$$

% % La multiplicidad en las asociaciones binarias con clase de asociación (véase \ref{fig:UML-asoc-con-clase}) son representadas por:
% % $$C_1 \sqsubseteq (\ge n_l r_1^- .A) \sqcap (\le n_u r_1^- .A)$$
% % $$C_2 \sqsubseteq (\ge m_l r_2^- .A) \sqcap (\le m_u r_2^- .A)$$

% % La generalización puede ser representada por medio de una inclusión, siendo la clase $C$ y su clase hija $C_1$ resultando en $C_1 \sqsubseteq C$. La restricción de disjunción entre las clases $C_1, \ldots{}, C_n$ puede representarse por medio de la sentencia: 
% % $$C_i \sqsubseteq \sqcap^{n}_{j = i+1} \lnot C_j \hspace{1cm} \mathrm{ donde }\: 1 \le i \le n-1$$
% % En cambio, la restricción de cubrimiento \todo{¿está bien traducido? ``covering constraint''} se puede expresar como:
% % $$C \sqsubseteq \sqcup^n_{i=1} C_i$$ \\

% % \begin{figure}
% %   \centering

% %   \begin{tikzpicture}
% %     \node[draw, inner ysep=2mm, inner xsep=5mm] (c1) {$C_1$};
% %     \node[draw, inner ysep=2mm, inner xsep=5mm] (c2) [above right=2cm of c1] {$C_2$};
% %     \node[draw, inner ysep=2mm, inner xsep=5mm] (cn) [right=7cm of c1] {$C_n$};
% %     \node[draw, diamond] (asoc) [right=3cm of c1] {};

    
% %     \draw (c1.east) -- (asoc.west) node[very near start, above] {$A_1$};
% %     \draw (asoc.east) -- (cn.west) node[very near end, above] {$A_n$};
% %     \draw (c2.south) -- (asoc.north) node[near start, above, sloped] {$A_2$};

% %     \node[draw, inner ysep=2mm, inner xsep=5mm] (Anode) [below=1cm of asoc] {$A$};
% %     \draw[dashed] (asoc.south) -- (Anode);
% %   \end{tikzpicture}
  
% %   \caption{Asociación $n$-aria en UML.}
% %   \label{fig:UML-asoc-naria}
% % \end{figure}

% % \begin{figure}
% %   \centering

% %   \scriptsize
% %   \begin{tikzpicture}
% %     \node[draw,circle] (a) {$a$};
% %     \node[draw,circle] (o2) [below=1cm of a] {$o_2$};  
% %     \node[draw,circle] (o1) [left=1cm of o2]{$o_1$};
% %     \node[draw,circle] (on) [right=1.5cm of o2] {$o_n$};

% %     \node (dots) [right=5mm of o2] {$\mathbf{\ldots}$};

% %     \node (Anode) [above right=0.1mm of a] {$A$};
% %     \node (C1) [below left=0.1mm of o1] {$C_1$};
% %     \node (C2) [below left=0.1mm of o2] {$C_2$};
% %     \node (Cn) [below left=0.1mm of on] {$C_n$};

% %     \draw[arrows=->] (a) -- (o1) node [midway, sloped, above] {$A_1$};
% %     \draw[arrows=->] (a) -- (o2) node [midway, sloped, above] {$A_2$};
% %     \draw[arrows=->] (a) -- (on) node [midway, sloped, above] {$A_n$};
% %   \end{tikzpicture}
% %   \normalsize
% %   \begin{flushleft}
% %   Considerese a $a, o_1, o_2, \ldots{}, o_n$ objetos de $A, C_1, C_2, \ldots{}, C_n$ respectivamente. Las líneas representan los conceptos $A_i \: 1 \le i \le n$ y sus relaciones asociadas entre $A$ y $C_i$. Aquí sólo se muestra una instancia de la asociación de la figura \ref{fig:UML-asoc-naria}.
% %   \end{flushleft}
  
% %   \caption{Representación visual de un ejemplo de la reificación aplicada a la asociación de la figura \ref{fig:UML-asoc-naria}}
% %   \label{fig:UML-asoc-rei}
% % \end{figure}

% \begin{table}[h]
%   \centering
%   \small
%   \begin{tabular}{|p{3cm}cc|}
%     \hline
%     Expresión & UML & \ALCQI{} \\
%     \hline
%     Clase & 
%     \tiny
%     \tikz{ 
%     \node[draw, inner ysep=2mm, inner xsep=5mm] (C) {$C$};
    
%     \node [above=0.1mm of C] {}; % para dar espacio arriba
%     } & $C$ \\
%     \hline
%     Clase con atributo & 
%     \tiny
%     \tikz{ 
%     \node [inner ysep=2mm, inner xsep=5mm] (C) {$C$};
%     \node [inner ysep=2mm, inner xsep=5mm] [below=0mm of C] (a) {$a$};
%     \draw (C.south east) -- (a.north west);
%     \draw (C.north east) rectangle (a.south west);

%     \node [above=0.1mm of C] {}; % para dar espacio arriba
%     } & $C \sqsubseteq \forall a.T$ \\
%     \hline
%     Asociación binaria sin clase asociativa &
%     \tiny
%     \tikz{
%     \node[draw, inner ysep=2mm, inner xsep=2mm] (c1) {$C_1$};
%     \node[draw, inner ysep=2mm, inner xsep=2mm] (c2) [right=3cm of c1] {$C_2$}; 

%     \draw (c1.east) -- (c2.west)
%     node[at start,above, anchor=south west] {$m_l \ldots m_u$} node [midway, below]{A} node[at end, above, anchor=south east] {$n_l \ldots n_u$};

%     \node [above=0.1mm of c1] {}; % para dar espacio arriba
%     } & $\begin{array}{l}
%           \top \sqsubseteq \forall A. C_2 \sqcap \forall A^-.C_1 \\
%           C_1 \sqsubseteq (\ge n_l\, A.\top) \sqcap (\le n_u\, A.\top) \\
%           C_2 \sqsubseteq (\ge m_l\, A^-.\top) \sqcap (\le m_u\, A^-.\top) \\
%         \end{array}$ \\
%     \hline
%     Asociación binaria con clase asociativa & 
%     \tiny
%     \tikz{
%     \node[draw, inner ysep=2mm, inner xsep=2mm] (c1) {$C_1$};
%     \node[draw, inner ysep=2mm, inner xsep=2mm] (c2) [right=3cm of c1] {$C_2$};
    
%     \draw (c1.east) -- (c2.west)
%     node[at start, above, anchor=south west] {$m_l \ldots m_u$} node[at start, below, anchor=north west] {$A_1$} 
%     node[midway, below] (A) {} 
%     node[at end, above, anchor=south east] {$n_l \ldots n_u$}  node[at end, below, anchor=north east] {$A_2$};
    
%     \node[draw, inner ysep=2mm, inner xsep=2mm] (Anode) [below=0.5cm of A] {$A$};
%     \draw[dashed] (A) -- (Anode);

%     \node [above=0.1mm of c1] {}; % para dar espacio arriba
%     }  & \parbox{8cm}{Usar reificación. 

%          $\begin{array}{l}
%             A \sqsubseteq \exists   A_1 . C_1 \sqcap \exists A_2 . C_2   \sqcap  (\le 1\, A_1) \sqcap (\le 1\, A_2) \\
%              C_1 \sqsubseteq (\ge n_l A_1^- .A) \sqcap (\le n_u A_1^- .A) \\
%              C_2 \sqsubseteq (\ge m_l A_2^- .A) \sqcap (\le m_u A_2^- .A) \\
%           \end{array}$}\\
%     \hline
%     Asociación n-aria con clase asociativa & 
%     \tiny
%     \tikz{    
%     \node[draw, inner ysep=2mm, inner xsep=2mm] (c1) {$C_1$};
%     \node[draw, inner ysep=2mm, inner xsep=2mm] (c2) [above right=0.5cm of c1] {$C_2$};
%     \node[draw, inner ysep=2mm, inner xsep=2mm] (cn) [right=1.75cm of c1] {$C_n$};
%     \node[draw, diamond] (asoc) [right=0.75cm of c1] {};
    
%     \draw (c1.east) -- (asoc.west) node[at start, above, anchor=south west] {$A_1$};
%     \draw (asoc.east) -- (cn.west) node[at end, above, anchor=south east] {$A_n$};
%     \draw (c2.south) -- (asoc.north) node[at start, above, sloped, anchor=south west] {$A_2$};

%     \node[draw, inner ysep=2mm, inner xsep=2mm] (Anode) [below=0.5cm of asoc] {$A$};
%     \draw[dashed] (asoc.south) -- (Anode);

%     \node [above=0.1mm of c2] {}; % para dar espacio arriba
%     } & \parbox{8cm}{Usar reificación.

%         $A \sqsubseteq \exists   r_1 . C_1 \sqcap \ldots \sqcap \exists r_n . C_n   \sqcap  (\le 1\, r_1) \sqcap \ldots \sqcap (\le 1\, r_n)$} \\
%     \hline
%     Herencia &
%     \tiny    
%     \tikz{
%     \node[draw, inner xsep=2mm, inner ysep=2mm] (C) {$C$};
%     \node[draw, inner xsep=2mm, inner ysep=2mm] (C2) [below=1cm of C] {$C_2$};
%     \node[draw, inner xsep=2mm, inner ysep=2mm] (C1) [left=0.5cm of C2]{$C_1$};
%     \node (dots) [right=0.5cm of C2] {$\ldots$};
%     \node[draw, inner xsep=2mm, inner ysep=2mm] (Cn) [right=0.5cm of dots] {$C_n$};
    
%     \node (ac) [below=0.5cm of C] {};
%     \node (ac1) [left=1.25cm of ac] {};
%     \node (acn) [right=2cm of ac] {};
    
%     \draw[arrows=-{Latex[length=0.25cm, open]}] (ac.center) -- (C);
%     \draw (ac.center) -| (C1.north);
%     \draw (ac.center) -- (C2);
%     \draw (ac.center) -| (Cn.north);

%     \node [above=0.1mm of C] {}; % para dar espacio arriba
%     } & $ C_1 \sqsubseteq C,\, \ldots{},\, C_n \sqsubseteq C$  \\
%     \hline % Herencia disjunta
%     Herencia disjunta &
%     \tiny    
%     \tikz{
%     \node[draw, inner xsep=2mm, inner ysep=2mm] (C) {$C$};
%     \node[draw, inner xsep=2mm, inner ysep=2mm] (C2) [below=1cm of C] {$C_2$};
%     \node[draw, inner xsep=2mm, inner ysep=2mm] (C1) [left=0.5cm of C2]{$C_1$};
%     \node (dots) [right=0.5cm of C2] {$\ldots$};
%     \node[draw, inner xsep=2mm, inner ysep=2mm] (Cn) [right=0.5cm of dots] {$C_n$};
    
%     \node (ac) [below=0.5cm of C] {};
%     \node[anchor=south east] (cover) [above right=0.1mm of ac] {\{disjoint\}};
%     \node (ac1) [left=1.25cm of ac] {};
%     \node (acn) [right=2cm of ac] {};
    
%     \draw[arrows=-{Latex[length=0.25cm, open]}] (ac.center) -- (C);
%     \draw (ac.center) -| (C1.north);
%     \draw (ac.center) -- (C2);
%     \draw (ac.center) -| (Cn.north);

%     \node [above=0.1mm of C] {}; % para dar espacio arriba
%     } & $C_i \sqsubseteq (\sqcap^n_{j=i+1} \lnot C_j)$ para $1 \le i \le n-1$ \\
%     \hline % Herencia completa
%     Herencia completa & 
%     \tiny    
%     \tikz{
%     \node[draw, inner xsep=2mm, inner ysep=2mm] (C) {$C$};
%     \node[draw, inner xsep=2mm, inner ysep=2mm] (C2) [below=1cm of C] {$C_2$};
%     \node[draw, inner xsep=2mm, inner ysep=2mm] (C1) [left=0.5cm of C2]{$C_1$};
%     \node (dots) [right=0.5cm of C2] {$\ldots$};
%     \node[draw, inner xsep=2mm, inner ysep=2mm] (Cn) [right=0.5cm of dots] {$C_n$};
    
%     \node (ac) [below=0.5cm of C] {};
%     \node[anchor=south east] (cover) [above right=0.1mm of ac] {\{covering\}};
%     \node (ac1) [left=1.25cm of ac] {};
%     \node (acn) [right=2cm of ac] {};
    
%     \draw[arrows=-{Latex[length=0.25cm, open]}] (ac.center) -- (C);
%     \draw (ac.center) -| (C1.north);
%     \draw (ac.center) -- (C2);
%     \draw (ac.center) -| (Cn.north);

%     \node [above=0.1mm of C] {}; % para dar espacio arriba
%     } & $C \sqsubseteq (\sqcup^n_{i=1} C_i)$ \\
%     \hline
%   \end{tabular}
%   \caption{Resumen de las primitivas UML y su codificación a \ALCQI{}.}
%   \label{tab:resumen-UML-ALCQI}
% \end{table}


% \section{Conclusión \FOL{} y \DL{}}
% %% \germanin{18-1-2017}{(ver en el adjunto de Germán) Acá es lo mismo para DL y FOL.} %% ¿¿¿quéeee???
% \chrisin{21-02-2017}{Germán, ¿qué querés decir con ``Acá es lo mismo para DL y FOL''?}
% %% \germanin{18-1-2017}{La traducción de crowd UML-DL creo que debería estar en una sección aparte o en la sección 4.} %% Se hizo una intro de las traducciones, pero nada demasiado específico. 
% Como se puede observar, el proceso de razonamiento puede utilizarse en \FOL{} o en \DL{}, considerando que éste último incluso puede traducirse a \FOL{} de forma inmediata. El uso de uno u otro depende del soporte del programa razonador a utilizar, sin embargo, puede observarse que \DL{} fue creado con el objetivo de represetar conocimiento en términos de clases y relaciones entre estas, por lo que puede resultar más sencilla su utilización para representar diagramas de clases UML.

% \chapter{Tecnologías Existentes}
% % \germanin{18-01-2017}{Estructura:
% % 3.1 Sistemas de Razonamiento o Razonadores
% % 3.2 Protocolos de Comunicación
% % 3.2.1 DIG
% % 3.2.2 OWLlink.
% % 3.3 Comparación con otras herramientas.} %% La estructura ya está implementada 16/02/2017.
% %% \germanin{18-1-2017}{En el transcurso de este trabajo hemos relevado y probado bibliotecas y herramientas existentes. Por un lado, librerías, protocolos y herramientas necesarias para la implementación de crowd. Por otro, herramientas relacionadas, tanto gráficas como con interacción con los sistemas de razonamineto. Para dicha comparación se consideraron las ...} %% Ya modifiqué la intro.
% En el transcurso de este trabajo, hemos relevado y probado una serie de bibliotecas y herramientas existentes que consideramos necesarias para la construcción de la arquitectura y la implementación del prototipo.
% %% No sé que hacer con esta parte... hay que cambiarla...
% Éstas mayormente cumplen funciones relacionadas con las gráficas del modelo, la interacción con los sistemas de razonamiento, la creación web y el desarrollo de la ontología en DL.

% Fue preciso tomar ciertos criterios de comparación, estos se consideraron con especial atención en la biblioteca gráfica, su funcionamiento y agilidad, la facilidad que aporta al programar, sus capacidades para manipular las primitivas de los modelos, etc. Para el caso de los razonadores, se consideró la compatibilidad con ICOM, el soporte a protocolos de comunicación más actuales y la posibilidad de funcionamiento con ontologías lo suficientemente grandes para expresar modelos grandes. Para los protocolos, su expresividad y sus propiedades computacionales son importantes, sin embargo depende mucho de los razonadores que los implementen.

% % Una serie de herramientas y tecnologías fueron investigadas para proponer una arquitectura que reuse lo mayormente posible y adquirible en la actualidad.
% % Un programa razonador es necesario para poder alimentarlo con el modelo conceptual y realizar consultas de consistencia, pero es preciso comprender sus limitaciones y los lenguajes computacionales existentes para representar el modelo conceptual de manera formal.

% En las secciones siguientes se presenta los razonadores relevados y los dos protocolo más conocidos que se deben utilizar para comunicarse con ellos. Luego, se explican estos últimos en más detalle, en especial OWL 2 y OWLlink que son los más actuales al momento de escribir este capítulo.

% \chrisin{16-02-2017}{¿Será necesario hablar de las bibliotecas gráficas relevadas en este capítulo o en el siguiente?}

% \section{Razonadores}
% Es preciso utiliar un razonador para poder proveerle de la formalización del modelado conceptual y su posterior consulta para determinar la satisfacibilidad del mismo. Por consiguiente, el protipo poseerá un razonador en funcionamiento de fondo (véase la sección \ref{sec:mod_raz} para detalles de la conexión al razonador en la implementación en el prototipo).

% Existen varios razonadores disponibles en la actualidad los cuales, en su mayoría, se comunican por medio de uno o varios de los protocolos estandarizados existentes, dos de los más importantes son DIG y OWLlink. Ejemplos de estos razonadores son Pellet, Racer y RacerPro, TopBraid(el cual también es un entorno de desarrollo completo) y aún más que se encuentran listados por la W3C en la siguiente URL: \url{https://www.w3.org/2001/sw/wiki/Category:Reasoner}.

% \chrisin{16-02-2017}{Agregar algunas figuras, capturas de pantalla, ejemplos de uso o algún dato de algún razonador (Racer en especial).}

% \todo[inline]{Posiblemente enviar la figura \ref{fig:racerporter-example} y \ref{fig:racer-example} a un apéndice, a menos que haya una sección por cada razonador más importante relevado.}
  
% \begin{figure}[h]
%   \centering
%   \includegraphics[width=\linewidth]{Racer.png}
%   \caption{RacerPorter, la interfaz de Racer mostrando una ontología y consultando la consistencia de la misma.}
%   \label{fig:racerporter-example}
% \end{figure}
% \chrisin{20-02-2017}{El uso de Racer en la figura \ref{fig:racer-example} no me convence, es largo y no lo puedo acomodar mejor, ¿apéndice o fuera?}
% \begin{figure}[h]
%   \centering
%   \scriptsize
%   \begin{minipage}{8.5cm}
% \begin{verbatim}
% > cat ../owllink-examples/complete.xml 
% <?xml version="1.0" encoding="UTF-8"?>
% <RequestMessage xmlns="http://www.owllink.org/owllink#"
% 		xmlns:owl="http://www.w3.org/2002/07/owl#" 
% 		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
% 		xsi:schemaLocation="http://www.owllink.org/owllink# 
% 				    http://www.owllink.org/owllink-20091116.xsd">
%   <CreateKB kb="http://localhost/kb1" />
%   <Tell kb="http://localhost/kb1">
%     <owl:SubClassOf>
%       <owl:Class IRI="Person" />
%       <owl:Class abbreviatedIRI="owl:Thing" />
%     </owl:SubClassOf>
%   </Tell>  <!-- Queries -->  
%   <IsKBSatisfiable kb="http://localhost/kb1" />
%   <IsClassSatisfiable kb="http://localhost/kb1">
%     <owl:Class IRI="Person" />
%   </IsClassSatisfiable>  
%   <ReleaseKB kb="http://localhost/kb1" />
% </RequestMessage>

% > ./Racer -- -owllink ../owllink-examples/complete.xml 
% <?xml version="1.0" encoding="UTF-8"?>
% <ResponseMessage xmlns="http://www.owllink.org/owllink#"
%                  xmlns:owl="http://www.w3.org/2002/07/owl#">
%   <KB kb="http://localhost/kb1"/>
%   <OK/>
%   <BooleanResponse result="true"/>
%   <BooleanResponse result="true"/>
%   <OK/>
% </ResponseMessage>
% \end{verbatim}
% \end{minipage}
%   \caption{Racer input and output using the OWLlink protocol.}
%   \label{fig:racer-example}
% \end{figure}
% \section{Protocolos de Comunicación}
% \subsection{DIG Interface}
% \index{DIG}
% La interfaz DIG provee de un acceso uniforme a los razonadores de lógica descriptiva definiendo un protocolo simple basado en HTTP PUT/GET, en conjunto con esquemas XML, que describen un lenguaje conceptual junto con las operaciones que lo acompañan.

% La especificación de DIG 1.1, publicada en el año 2003, ofrece una expresividad que no es suficiente para capturar las ontologías OWL-DL en general. El lenguaje conceptual está basado en $\mathcal{SHOIQD}^-_n$, el cual consiste en operadores booleanos estándares ($\sqcap, \sqcup, \lnot$), restricciones cuantificadas universales y existenciales, limitadores de cardinalidad, jerarquía de roles, roles inversos, el constructor ``uno-de'' (``one-of'') y dominios concretos \cite{gbraun:dig}.

% Cabe aclarar que varias utilidades, como por ejemplo ICOM \cite{DBLP:conf/dlog/FillottraniFT11}, utilizan unicamente este protocolo para comunicarse con el razonador. DIG se encuentra discontinuado al día de la fecha haciendo que estas herramientas queden sin soporte para los nuevos razonadores.

% A continuación se muestran un resumen de los aspectos relevantes de DIG. Un ejemplo puede observarse en la figura \ref{fig:dig-example} donde se muestra, a modo de comparación, su representación en OWL. Más detalles se presentan en un caso de uso en \cite{dickinson04:_implem_exper_dig}.

% \begin{figure}[h]
%   \centering
%   \begin{tabular}{|c|c|}
%     \hline
%     RDF/XML & DIG \\
%     \hline
%     \begin{minipage}{4.5cm}\scriptsize
% \begin{verbatim}
% <owl:Class rdf:ID=”A”>
%   <owl:complementOf>
%     <owl:Class rdf:ID=”B” />
%   </owl:complementOf>
%   <rdfs:subClassOf>
%     <owl:Class rdf:ID=”C” />
%   </rdfs:subClassOf>
% </owl:Class>
% \end{verbatim}
%     \end{minipage}
%             &
%               \begin{minipage}{8cm}\scriptsize
%                 \vspace*{2mm}
% \begin{verbatim}
% <?xml version="1.0"?>
% <tells
%   xmlns=http://dl.kr.org/dig/lang
%   xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
%   xsi:schemaLocation="http://dl.kr.org/dig/lang
%     http://potato.cs.man.ac.uk/dig/level0/dig.xsd">
%   <defconcept name="http://example.org/foo#A" />
%   <defconcept name="http://example.org/foo#B" />
%   <defconcept name="http://example.org/foo#C" />
%   <impliesc>
%     <catom name="http://example.org/foo#A" />
%     <catom name="http://example.org/foo#C" />
%   </impliesc>
%   <equalc>
%     <catom name="http://example.org/foo#A" />
%     <not>
%       <catom name="http://example.org/foo#B"/>
%     </not>
%   </equalc>
% </tells>
% \end{verbatim}
%                 \vspace*{0.5mm}
%               \end{minipage}
%     \\
%     \hline
%   \end{tabular}
%   \caption{Ejemplo de DIG y su representación en OWL.}
%   \label{fig:dig-example}
% \end{figure}

% \subsubsection{Formato de los Mensajes}
% La comunicación con el razonador se realiza por medio de mensajes codificados como funciones \TELL{} y \ASK{}.

% La sintaxis para la petición \TELL{} contiene varios elementos \verb+tells+ que en sí mismo consiste en un número de enunciados ``tell'', los cuales son monotónicos (información que una vez proveída a la base de conocimiento (en inglés, Knowledge Base o simplemente KB) no puede ser retractada ni removida). Deben ser realizadas en el contexto de una base de conocimiento particular y el orden de estos enunciados no es importante. 

% En el caso de las peticiones \ASK{}, estas contienen varios elementos \verb+asks+, los cuales poseen un número de enunciados ``ask'' donde cada uno posee un atributo identificatorio para una colección de preguntas, permitiendo la presentación de multiples consultas en una sola solicitud.

% Las sintaxis para las respuestas contienen una descripción de las esperadas por las peticiones \ASK{}. Contiene un elemento \verb+response+, que a su vez posee un número de respuestas (una por cada consulta en la petición \ASK{} realizada). Cada respuesta particular posee un identificador que coincide con el de la consulta realizada.

% \begin{table}
%   \centering
%   \footnotesize
%   \begin{tabular}{|>{\tt}p{5cm}|p{10cm}|}
%     \hline
%     Elemento XML & Descripción \\
%     \hline
%     \hline
%     getIdentifier & Obtener desde el razonador una descripción de sí mismo, incluido el nombre, versión y un listado de elementos conceptuales del lenguaje DIG soportados. \\
%     newKB & Solicitar al razonador que reserver una nueva base de conocimiento y retorne un identificador único para la misma. Este identificador será utilizado para subsecuentes operaciones para inducar cuáles de las multiples bases de conocimientos serán referenciadas o consultadas. \\
%     releaseKB & Solicitar al razonador que libere la base de conocimiento referenciada junto con los recursos asociados a esta. Subsecuentes operaciones ``asks'' y ``tells'' sobre esta terminarán en error. \\
%     \hline
%     \multicolumn{2}{|c|}{Términos para los Conceptos}  \\
%     \hline
%     top & El concepto de universo \\
%     bottom & El concepto de vacío \\
%     catom & Introduce un concepto\\
%     and, or, not & Operadores booleanos para combinar expresiones conceptuales correspondiente a intersección, unión y complemento en \DL{} \\
%     some R E, all R E & Restricciones de propiedad existencial y universal \\
%     atmost n R E, atleast n R E & Restricciones de cardinalidad máxima y mínima \\
%     iset & Una expresión de clase que es exactamente la misma cantidad de individuos dados \\
%     stringmin, stringmax, stringequals,
%     stringrange, intmin, intmax, intequals, intrange & Conjunto limitado de expresiones de valor para dominios completos \\
%     ratom & Un nombre de rol \\
%     feature & Un nombre de rol funcional \\
%     inverse & Una expresión de rol indicando el inverso del rol dado\\
%     attribute & Un nombre de atributo \\
%     chain & Una composición lineal de nombres funcionales (``features'') \\
%     individual & Un nombre de individuo \\
%     \hline
%     \multicolumn{2}{|c|}{Verbos \TELL{}} \\
%     \hline
%     defconcept, defrole, deffeature,
%     defattribute, defindividual & Verbos de introducción de concepto \\
%     impliesc C1 C2 & Implicación de conceptos, cada C1 es también un C2 \\
%     equalc C1 C2 & Igualdad de conceptos \\
%     disjoint C1 C2 $\ldots$ Cn & Disjunción mutua entre las expresiones de conceptos dadas \\
%     impliesr R1 R2, equalr R1 R2 & Implicación e igualdad de roles; análogo a la implicación e igualdad de clases\\
%     domain R E, range R E & El rol R tiene como dominio o rango el concepto de la expresión E \\
%     rangeint A, rangestring A & Atributo A tiene como rango el tipo de dato concreto int o string \\
%     transitive R & El rol R es transitivo \\
%     functional R & El rol R es funcional \\
%     instaceof I C & El individuo I e una instancia de la expresión conceptual C\\
%     related I R I2 & El individuo I está relacionado con el individuo I2 por el rol R\\
%     value I A V & El individuo I tiene un valor concreto V para el atributo A \\
%     \hline
%     \multicolumn{2}{|c|}{Verbos \ASK{}} \\
%     \hline
%     allConceptNames, allRoleNames,
%     allIndividuals & Consultar por una lista de todos los nombres de conceptos, roles e individuos \\
%     satisfiable C & Consultar si el concepto C es satisfacible (si puede tener alguna instancia) \\
%     subsumes C1 C2, disjoint C1 C2 & Consultar si C1 subsume o es disjunto de C2 \\
%     parents, children, ancestors, descendants & Consultar por los sub o super conceptos para uno dado (padres/hijos) o por el cierre de todos los super o sub conceptos (ancestro/descendientes) \\
%     equivalents & Consultar por todos los conceptos equivalentes a uno dado\\
%     rparents, rchildren, rancestors, rdescendants & Consultar por los sub y super conceptos en la jerarquía de roles, de forma analoga que la jerarquía de clases. \\
%     instances C & Consultar todas las instancias del concepto C \\
%     types I & Consultar por todos los conceptos que pertencen a I \\
%     instance I C & Determinar si I es una instancia del concepto C \\
%     roleFillers I R & Consultar por todos los individuos que están en relación a I por medio del rol R \\
%     relatedIndividuals R & Consultar por todos los pares de individuos que son miembros del rol R \\
%     toldValues I A & Consultar por los valores del atributo A para el individuo I \\
%     \hline
%   \end{tabular}
%   \caption{Elementos XML disponibles para el protocolo DIG \cite{dickinson04:_implem_exper_dig}.}
%   \label{tab:DIG-XML}
% \end{table}

% \subsection{OWLlink}
% \index{OWLlink}
% OWLlink provee de una interfaz declarativa para razonadores basados en OWL. Su intención es la de proveer a las aplicaciones clientes de un mecanismo liviano para acceder a las funciones de razonamiento proveídas por un servidor.

% Aunque su sintaxis y semántica de las primitivas de OWLlink son basadas en OWL 2, los esfuerzos para dar soporte al núcleo del protocolo con respecto al parseo es reducido. Consecuentemente, OWLlink hereda todos los conceptos del lenguaje subyacente y las nociones de equivalencias estructurales de OWL 2. Sin embargo, no soporta ninguna de las partes de OWL 2 más allá de los niveles de axiomas.

% Además, la especificación de OWLlink no resuelve los inconvenientes refereidos a la conexión, transacción, autenticación, cifrado, compresión, concurrencia, multiples clientes y demás. Pero, algunas de estas características pueden ser proveídas transparentemente por protocolos de accesos \cite{conicet:Liebig_owllink:dig}.

% En la sección \ref{sec:UML-a-DL} se presenta un método de traducción de los diagramas UML a lógica descriptiva. Luego, en la sección \ref{sec:mod_trad} se explica el diseño del módulo para la arquitectura propuesta que la llevará a cabo y utilizará OWL 2 y OWLlink como lenguaje para expresar la lógica descriptiva basado en una reescritura directa OWL 2-\DL{} mostrada en la Tabla \ref{tab:OWL-ref}. Finalmente, en la sección \ref{sec:ejemplos} se puede observar el proceso completo en conjunto con los códigos OWLlink que produce los ejemplos descriptos.

% \begin{figure}
%   \centering

%   \includegraphics[width=10cm]{OWLlink-basic-objs.png}

%   \flushleft
%   Los nombres de todas las clases UML de OWL 2 poseen el prefijo \texttt{ox.} para indicar que no están definidos en la especificación OWLlink.
%   \caption{Objetos Básicos del Protoloco OWLlink \cite{conicet:Liebig_owllink:dig}}
%   \label{fig:owllink-objs}
% \end{figure}

% \begin{figure}[h]
%   \centering
%   \begin{minipage}{11cm}
%     \scriptsize
% \begin{verbatim}
% <?xml version="1.0" encoding="UTF-8"?>
% <RequestMessage xmlns="http://www.owllink.org/owllink#"
%   xmlns:owl="http://www.w3.org/2002/07/owl#" 
%   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
%   xsi:schemaLocation="http://www.owllink.org/owllink# 
%     http://www.owllink.org/owllink-20091116.xsd">
%   <CreateKB kb="http://www.owllink.org/examples/KB_1"/>
%   <Tell kb="http://www.owllink.org/examples/KB_1">
%     <owl:SubClassOf>
%       <owl:Class IRI="http://www.owllink.org/examples/myOntology#A"/>
%       <owl:Class IRI="http://www.owllink.org/examples/myOntology#B"/>
%     </owl:SubClassOf>
%     <owl:SubClassOf>
%       <owl:Class IRI="http://www.owllink.org/examples/myOntology#B"/>
%       <owl:Class IRI="http://www.owllink.org/examples/myOntology#C"/>
%     </owl:SubClassOf>
%   </Tell>
%   <IsClassSatisfiable kb="http://www.owllink.org/examples/KB_1">
%     <owl:Class IRI="http://www.owllink.org/examples/myOntology#A"/>
%   </IsClassSatisfiable>
%   <ReleaseKB kb="http://www.owllink.org/examples/KB_1"/>
% </RequestMessage>
% \end{verbatim}
%   \end{minipage}
%   \caption{Ejemplo de código OWLlink.}
%   \label{fig:owllink-example}
% \end{figure}

% \subsubsection{Tell y Aks}
% Como se mencionó antes y como muestra la figura \ref{fig:owllink-objs}, OWLlink se basa en primitivas del lenguaje OWL 2 en lo que respecta a peticiones \TELL{}. Esto significa que OWLlink permite usar varios axiomas acerca de clases, propiedades y hechos definidos en la Sección 6 de la especificación de OWL 2 en \cite{w3c:owl2:structural_spec_20080411}. En la sección \ref{sec:owl2} se referirá acerca de estos axiomas.

% OWLlink posee un conjunto de consultas generales para obtener información de las entidades de la base de conocimiento, como así también de los hechos deducibles. Las llamadas preguntas básicas (``basic aks'' en inglés) sólo cubre las consultas más comunes con respecto a los axiomas dados e inferidos de la KB. Extiende considerablemente la interfaz de consulta proveída por DIG 1.1, además de estar más alineados con OWL 2. La Tabla \ref{tab:owllink-asks} muestra la interfaz definida en OWLlink.

% \germanin{18-1-2017}{Tendriamos que chequear si esto está OK acá o va en un apéndice o directamente no va. Se pone un ejemplo y listo.} %% Hablar con Laura.
% %% \germanin{18-1-2017}{Mismo que DIG, quizás podríamos hacer un ejemplo genérico y el resto del estandar que vaya a apendice o directamente se saca.} %% ya se dió un ejemplo de OWLlink

% \begin{table}
%   \centering
%   \footnotesize
%   \begin{tabular}{|c|>{\tt}l|>{\tt}r|}
%     \hline
%     & Ask & KBResponse \\
%     \hline
%     \hline
%     \multirow{7}{2cm}{Entidades de la KB}
%     & GetAllClasses & SetOfClasses \\
%     & GetAllClasses & SetOfClasses \\
%     & GetAllObjectProperties & SetOfObjectProperties \\
%     & GetAllDataProperties & SetOfDataProperties \\
%     & GetAllAnnotationProperties & SetOfAnnotationProperties \\
%     & GetAllIndividuals & SetOfIndividuals \\
%     & GetAllDatatypes & SetOfDatatypes \\
%     \hline
%     \multirow{3}{2cm}{Estado}
%     & IsKBSatisfiable & BooleanResponse \\
%     & IsKBStructurallyConsistent & BooleanResponse \\
%     & GetKBLanguage & StringResponse \\
%     \hline
%     \multirow{17}{2cm}{Esquema}
%     & IsClassSatisfiable & BooleanResponse \\
%     & IsClassSubsumedBy & BooleanResponse \\
%     & AreClassesDisjoint & BooleanResponse \\
%     & AreClassesEquivalent & BooleanResponse \\
%     & GetSubClasses & SetOfClassSynsets \\
%     & GetSuperClasses & SetOfClassSynsets \\
%     & GetEquivalentClasses & SetOfClasses \\
%     & GetClassHierarchy & ClassHierarchy \\
%     & Are[O|D]PropertiesEquivalent & BooleanResponse \\
%     & Is[O|D]PropertySatisfiable & BooleanResponse \\
%     & Are[O|D]PropertiesDisjoint & BooleanResponse \\
%     & Is[O|D]PropertySubsumedBy & BooleanResponse \\
%     & Is[O|D]PropertyXXX & BooleanResponse \\
%     & GetSub[O|D]Properties & SetOf[O|D]PropertySynsets \\
%     & GetSuper[O|D]Properties & SetOf[O|D]PropertySynsets \\
%     & GetEquivalent[O|D]Properties & SetOf[O|D]Properties \\
%     & Get[O|D]PropertyHierarchy & [O|D]PropertyHierarchy \\
%     \hline
%     \multirow{15}{2cm}{Hechos}
%     & AreIndividualsEqual & BooleanResponse \\
%     & AreIndividualsDifferent & BooleanResponse \\
%     & IsInstanceOf & BooleanResponse \\
%     & GetTypes & SetOfClassSynsets \\
%     & GetEquivalentIndividuals & SetOfIndividuals \\
%     & Get[O|D]PropertyOfSource & SetOf[O|D]PropertySynsets \\
%     & GetObjectPropertyOfFiller & SetOfObjectPropertySynsets \\
%     & GetDataPropertyOfConstant & SetOfDataPropertySynsets \\
%     & Get[O|D]PropertiesBetween & SetOf[O|D]PropertySynsets \\
%     & GetInstances & SetOfIndividualSynsets \\
%     & GetObjectPropertyFillers & SetOfIndividualSynsets \\
%     & GetDataPropertyFillers & SetOfConstants \\
%     & Get[O|D]PropertySources & SetOfIndividualSynsets \\
%     & GetFlattenInstances & SetOfIndividuals \\
%     & GetFlattenObjectPropertyFillers & SetOfIndividuals \\
%     & GetFlattenObjectPropertySources & SetOfIndividuals \\
%     \hline
%   \end{tabular}
%   \caption{Consultas \ASK{}s posibles para OWLlink.}
%   \label{tab:owllink-asks}
% \end{table}

% \subsection{OWL 2}
% \label{sec:owl2}
% %% \germanin{18-1-2017}{Me gusaría un ejemplo de OWL 2.} %% Ejemplo en la figura de más abajo.

% OWL es un lenguaje para ontologías para la Web Semántica que posee un significado definido formalmente. En nuestro caso, nos permitirá representar los conceptos y roles de la \DL{} a una sintaxis XML que es fácil de computar. Además provee clases, propiedades, individuos y valores de datos que expanden la utilidad y expresividad.
% %% \germanin{18-1-2017}{Creo que no tiene sentido una oración acá, ampliar un  poco o sacar.} %% Listo, amplié con la diferencia entre OWL 1 y 2.

% En la documentación oficial titulada ``Nuevas Características y Fundamentos''\footnote{\url{https://www.w3.org/TR/2012/REC-owl2-new-features-20121211/}}, se describe que éste lenguaje es una continuación de la versión inicial de OWL, la cual incluye una serie de características las cuales fueron determinadas basadas en aplicaciones reales y en la experiencia del usuario y de los desarrolladores de herramientas. Esta versión, agrega una serie de nuevas característica a OWL 1, incluyendo un incremento en el poder expresivo de las propiedades, soporte extendido a los tipos de datos, capacidad para metamodelos simples, capacidades de anotación extendida y llaves. Además define una serie de perfiles, subconjuntos del lenguaje que cumple ciertos requerimientos de performance o que pueden ser más fáciles de implementar.

% Una Tabla de referencia para traducir entre \DL{} y OWL 2 puede observarse en \ref{tab:OWL-ref}. Un simple ejemplo de OWL 2 puede observarse en las figura \ref{fig:owl2-example}, para uno más elaborado se puede consultar el apéndice de la documentación oficial OWL 2 Primer\footnote{\url{https://www.w3.org/TR/2012/REC-owl2-primer-20121211/\#Appendix:_The_Complete_Sample_Ontology}}. Casos de uso más concretos se pueden encontrar a lo largo del Internet, como por ejemplo ``The Foundational Model of Anatomy'' (FMA)\footnote{\url{http://sig.biostr.washington.edu/projects/fm/omEditPublications.html}} es una ontología muy completa acerca de la anatomía ``canónica'' humana; también, se propuso una clasificación de componentes químicos escrita en el lenguaje OWL-DL en \cite{Villanueva-rosales_m.:describing}, incluso describe los primeros pasos de un modelado de éstos componentes y su comportamiento, además de las limitaciones de OWL 1 y 1.1 ante este dominio.

% \begin{figure}[h]
%   \centering
%   \begin{minipage}{10cm}\scriptsize
% \begin{verbatim}
% <!DOCTYPE Ontology [
% <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
% <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
% ]>

% <Ontology
%     xmlns="http://www.w3.org/2002/07/owl#">
%   >
%   <Prefix name="owl" IRI="http://www.w3.org/2002/07/owl#"/>
%   <Declaration>
%     <Class IRI="http://www.owllink.org/examples/myOntology#A"/>
%     <Class IRI="http://www.owllink.org/examples/myOntology#B"/>
%     <Class IRI="http://www.owllink.org/examples/myOntology#C"/>
%   </Declaration>
  
%   <SubClassOf>
%     <Class IRI="http://www.owllink.org/examples/myOntology#A"/>
%     <Class IRI="http://www.owllink.org/examples/myOntology#B"/>
%   </SubClassOf>
%   <SubClassOf>
%     <Class IRI="http://www.owllink.org/examples/myOntology#B"/>
%     <Class IRI="http://www.owllink.org/examples/myOntology#C"/>
%   </SubClassOf>
% </Ontology>
% \end{verbatim}
%   \end{minipage}
%   \caption{Ejemplo de una ontología de OWL 2}
%   \label{fig:owl2-example}
% \end{figure}

% \begin{table}
%   \centering
%   \begin{tabular}{|cc|}
%     \hline
%     \ALCQI{} & OWL 2\\
%     \hline
%     \hline
%     $C, \top$
%            & \begin{minipage}{7cm}\scriptsize
%              \vspace*{2mm}
% \begin{verbatim}
%   <owl:Class IRI="C" />
%   <owl:Class abbreviatedIRI="owl:Thing" />
% \end{verbatim}
%            \end{minipage} \\
%     \hline
%     $ A\sqsubseteq B$
%            & \begin{minipage}{7cm}\scriptsize
%              \vspace*{2mm}
% \begin{verbatim}
% <owl:SubClassOf>
%   <owl:Class IRI="A" />
%   <owl:Class IRI="B" />
% </owl:SubClassOf>
% \end{verbatim}
%            \end{minipage} \\
%     \hline
%     $ A\sqcap B$
%            & \begin{minipage}{7cm}\scriptsize
%              \vspace*{2mm}
% \begin{verbatim}
% <owl:ObjectIntersectionOf>
%   <owl:Class IRI="A" />
%   <owl:Class IRI="B" />
% </owl:ObjectIntersectionOf>
% \end{verbatim}
%            \end{minipage} \\
%     \hline
%     $ A\sqcup B$
%            & \begin{minipage}{7cm}\scriptsize
%              \vspace*{2mm}
% \begin{verbatim}
% <owl:ObjectUnionOf>
%   <owl:Class IRI="A" />
%   <owl:Class IRI="B" />
% </owl:ObjectUnionOf>
% \end{verbatim}
%            \end{minipage} \\
%     \hline
%     $ R^-$
%            & \begin{minipage}{7cm}\scriptsize
%              \vspace*{2mm}
% \begin{verbatim}
% <owl:ObjectInverseOf>
%   <owl:ObjectPropertyOf IRI="R" />
% </owl:ObjectInverseOf>
% \end{verbatim}
%            \end{minipage} \\
%     \hline
%     $ \lnot C$
%            & \begin{minipage}{7cm}\scriptsize
%              \vspace*{2mm}
% \begin{verbatim}
% <owl:ObjectComplementOf>
%   <owl:Class IRI="C" />
% </owl:ObjectComplementOf>
% \end{verbatim}
%            \end{minipage} \\
%     \hline
%     $ (\le n\, R.\top) $
%            & \begin{minipage}{7cm}\scriptsize
%              \vspace*{2mm}
% \begin{verbatim}
% <owl:ObjectMinCardinality cardinality="n">
%   <owl:ObjectProperty IRI="R" />
%   <owl:Class abbreviatedIRI="owl:Thing" />
% </owl:ObjectMinCardinality>
% \end{verbatim}
%            \end{minipage} \\
%     \hline
%     $ (\ge n\, R.\top) $
%            & \begin{minipage}{7cm}\scriptsize
%              \vspace*{2mm}
% \begin{verbatim}
% <owl:ObjectMaxCardinality cardinality="n">
%   <owl:ObjectProperty IRI="R" />
%   <owl:Class abbreviatedIRI="owl:Thing" />
% </owl:ObjectMaxCardinality>
% \end{verbatim}
%            \end{minipage} \\
%     \hline
%     $ \forall R.C $
%            & \begin{minipage}{7cm}\scriptsize
%              \vspace*{2mm}
% \begin{verbatim}
% <owl:ObjectAllValuesFrom>
%   <owl:ObjectProperty IRI="R" />
%   <owl:Class IRI="C" />
% </owl:ObjectAllValuesFrom>
% \end{verbatim}
%            \end{minipage} \\
%     \hline
%     $ \exists R.C$
%            & \begin{minipage}{7cm}\scriptsize
%              \vspace*{2mm}
% \begin{verbatim}
% <owl:ObjectSomeValuesFrom>
%   <owl:ObjectProperty IRI="R" />
%   <owl:Class IRI="C" />
% </owl:ObjectSomeValuesFrom>
% \end{verbatim}
%            \end{minipage} \\
%     \hline
%   \end{tabular}
%     \caption{Referencias de los axiomas OWL 2 y su significado en \ALCQI{}.}
%   \label{tab:OWL-ref}
% \end{table}

% \subsubsection{Sintaxis}
% Hay varias sintaxis disponibles para OWL los cuales sirven para varios propósitos. La sintaxis de estilo funcional está diseñada para una fácil especificación y para proveer una base para la implementación de herramientas OWL 2 como APIs y razonadores. La sintaxis RDF/XML para OWL es simplemente RDF/XML, con una particular traducción para los constructores OWL. La sintaxis Manchester fue diseñada para facilitar a los lectores que no están vezados en las lógicas formales. La sintaxis OWL XML es una sintaxis XML para OWL definida por un esquema XML.

% Existen herramientas que pueden traducir entre las diferentes sintaxis para OWL \cite{w3c:owl2:owl_primer_20121211}.

% Finalmente, como es posible escribir OWL 2 en RDF/XML, una sintaxis denominada Turtle puede ser utilizada para describir un grafo RDF en una forma textual compacta y natural, con abreviaciones para los usos comunes de patrones y tipos de datos \cite{w3c:rdf:turtle}. \chris{24-02-2017}{¿dar ejemplos de estas sintaxis turtle y/o RDF?}

% \subsubsection{Perfiles}
% La especificación de OWL 2 define tres perfiles (también llamados fragmentos o sublenguajes) los cuales son versiones recortadas del original que intentan balancear el poder expresivo y la eficiencia del razonamiento. Estos son:

% %% \germanin{18-1-2017}{Esto me parece bien.}

% \begin{description}
% \item[OWL 2 EL] Particularmente útil en aplicaciones que utilizan ontologías con un gran número de propiedades y/o clases. Captura un poder expresivo utilizado por la mayoría de las ontologías siendo un subconjunto de OWL 2 por lo que las tareas básicas de razonamiento pueden ser realizadas en tiempo polinomial con respecto al tamaño de la ontología. El acrónimo ``EL'' refleja la familia \EL de la lógica descriptiva, las cuales proveen solamente cuantificadores existenciales.
% \item[OWL 2 QL] Creado especialmente para aplicaciones que usan un gran número de instancias de datos, donde las consultas es la tarea de razonamiento más importante. Usando técnicas de razonamiento consistentes y completas, una consulta conjuntiva puede ser realizada en LOGSPACE con respecto al tamaño de los datos. El acrónimo ``QL'' refleja el hecho de que responder consultas en este perfil puede ser implementado por medio de una reescritura de las consultas a un lenguaje de consultas(``Query Language'' en inglés) relacional estándar.
% \item[OWL 2 RL] Su objetivo son las aplicaciones que requieren razonamiento escalable sin sacrificar demasiado poder expresivo. Está diseñado para acomodar las aplicaciones OWL 2 RL de tal forma que sea más relevante la expresividad del lenguaje que la eficiencia \todo{¿Es así?¿Cómo se interpreta ``can trade the full expressivity of the language for efficiency''?}. El acrónimo ``RL'' refleja el hecho de que el razonamiento en este perfil puede ser implementado usando un lenguaje de reglas estándares.
% \end{description}

% Los perfiles son definidos realizando restricciones en las estructuras de las ontologías OWL 2. Estas restricciones sintácticas pueden ser especificadas modificando la gramática de la sintaxis funcional OWL 2 y posiblemente proveyendo restricciones globales adicionales. \cite{w3c:owl2:owl_web_ontol_languag_profil}

% En la Tabla \ref{tab:owl2-profiles-complexity} se muestran los distintos perfiles junto con su complejidad computacional para cada situación.

% \newcommand{\ccomp}[1]{#1-comp}
% \newcommand{\deciAb}{D. Abierta}
% \newcommand{\deciCAb}{\multirow{1}{2cm}{Decidible pero de c. abierta (NP-Hard)}}
% \newcommand{\noap}{No Aplicable}
% \newcommand{\cIndec}{Indecidible}
% \begin{table}
%   \centering
%   \footnotesize
%   \begin{tabular}{|c|p{4cm}|c|c|c|c|}
%     \hline
%     Lenguaje & Problema de Razonamiento & C. Taxonómica & C. Datos & C. Consultas & C. Combinada \\
%     \hline
%     \hline
%     \multirow{1}{2cm}{OWL 2 con semántica basada en RDF}
%              & Consistencia ontológica,
%                Subsume en expresiones de clases,
%                Chequeo de instancia,
%                Consulta conjuntiva
%                                         & \cIndec & \cIndec & \cIndec & \cIndec \\
%     \hline
%     \multirow{2}{2cm}{OWL 2 con semántica directa}
%              & Consistencia ontológica,
%                Satisfacibilidad de expresiones de clases,
%                Subsume en expresiones de clases,
%                Chequeo de instancias
%                                         & \ccomp{N2EXPTIME} & \deciCAb & \noap & \ccomp{N2EXPTIME} \\
%     \cline{2-6}
%              & Consulta conjuntiva
%                                         & \deciAb & \deciAb. & \deciAb & \deciAb \\
%     \hline
%     \multirow{2}{2cm}{OWL 2 EL}
%              & Consistencia ontológica,
%                Satisfacibilidad de expresiones de clases,
%                Subsume en expresiones de clases,
%                Chequeo de instancias
%                                         & \ccomp{PTime} & \ccomp{PTime} & \noap & \ccomp{PTime} \\
%     \cline{2-6}
%              & Consulta conjuntiva
%                                         & EXPTIME & \ccomp{PTime} & \ccomp{NP} & EXPTIME \\
%     \hline
%     \multirow{2}{2cm}{OWL 2 QL}
%              & Consistencia ontológica,
%                Satisfacibilidad de expresiones de clases,
%                Subsume en expresiones de clases,
%                Chequeo de instancias
%                                         & \ccomp{NLogSpace} & $AC^0$ & \noap & \ccomp{NLogSpace} \\
%     \cline{2-6}
%              & Consulta conjuntiva
%                                         & \ccomp{NLogSpace} & $AC^0$ & \ccomp{NP} & \ccomp{NP} \\
%     \hline
%     \multirow{3}{2cm}{OWL 2 RL}
%              & Consistencia ontológica
%                                         & \ccomp{PTime} & \ccomp{PTime} & No aplicable & \ccomp{PTime} \\
%     \cline{2-6}
%              & Satisfacibilidad de expresiones de clases,
%                Subsume en expresiones de clases,
%                Chequeo de instancias
%                                         & \ccomp{PTime} & \ccomp{PTime} & No aplicable & \ccomp{co-NP} \\
%     \cline{2-6}
%              & Consulta conjuntiva
%                                         & \ccomp{PTime} & \ccomp{PTime} & \ccomp{NP} & \ccomp{NP} \\
%     \hline
%     \multirow{2}{2cm}{OWL 1 DL}
%              & Consistencia ontológica,
%                Satisfacibilidad de expresiones de clases,
%                Subsume en expresiones de clases,
%                Chequeo de instancias
%                                         & \ccomp{NEXPTIME} & \deciCAb & \noap & \ccomp{NEXPTIME} \\
%     \cline{2-6}
%              & Consulta conjuntiva
%                                         & \deciAb & \deciAb & \deciAb & \deciAb \\
    
%     \hline
%   \end{tabular}
%   \caption{Complejidad computacional para los distintos perfiles de OWL 2.}
%   \label{tab:owl2-profiles-complexity}
% \end{table}




%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "../../tesis"
%%% TeX-PDF-mode: t
%%% coding: utf-8
%%% End: 
