-
Notifications
You must be signed in to change notification settings - Fork 0
/
organizacion_informacion.tex
399 lines (319 loc) · 25.4 KB
/
organizacion_informacion.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
\chapter{Organización de la información\label{cap:organizacion}}
Antes de comenzar con el desarrollo de los procesos asociados a la Generación de Lenguaje Natural, iniciaremos con el problema de \textit{Organizar la Información} de una ontología.
Este capítulo describe el diseño e implementación de un módulo para organizar y estructurar la información de una ontología de forma más significativa. Reiter E.~\cite{reiter2007architecture} ha propuesto esta etapa previa de preprocesamiento para el análisis y la interpretación de datos, aunque fue aplicada en una entrada de datos en crudo (generada directamente de sensores) en lugar de una base de conocimiento. En este caso, el resultado del preprocesamiento será usado para poder abordar la coherencia global del texto.
\section{Introducción}
Considerando lo propuesto por la Teoría de Veins~\cite{cristea1998veins}, para proveer de coherencia global a un texto debemos crear una estructura jerárquica que facilite la relación entre unidades textuales. A medida que se avanza en el desarrollo de un texto, un concepto solo debería ser capaz de referenciar a otros conceptos que hayan sido nombrados anteriormente, ya sea en el mismo nivel de jerarquía o en niveles superiores. Esto implica evitar que una entidad en un nivel \emph{N} haga referencia a entidades que se encuentren en niveles \emph{N+1} (niveles inferiores).
Suponemos que las entidades que tienen mayor impacto en la ontología son las que deberían aparecer en los niveles superiores de la jerarquía, con el objetivo de usarlas como hilo conductores para estructurar el texto.
%Para identificar las entidades más relevantes, usaremos las medidas de centralidad de los nodos.
A continuación analizaremos la Figura~\ref{fig:pizza.owl}, la cual contiene representada gráficamente un subconjunto de las clases (Figura~\ref{fig:jerarquilapizza}) y propiedades (Figura~\ref{fig:propiedadespizza}) de la ontología {\tt pizza.owl}\footnote{https://protege.stanford.edu/ontologies/pizza/pizza.owl}, y explicaremos cómo pretendemos estructurar su información.
Nótese que hay formas más adecuadas que otras para comenzar a transmitirle a un receptor toda la información del grafo. Algunos de los posibles tópicos que engloban o relacionan a la mayoría de los datos expuestos son ``Tipo de comidas'', o ``Ingredientes de la pizza'', siendo que, la mayor cantidad de información está relacionada a la pizza.
Si se comenzara a estructurar el texto desde ``Helado'' o desde ``Vegetariana'', se perdería algo de coherencia global al no estar fuertemente relacionado con el resto de los tópicos.
%\begin{figure}
%\centering
%\subfigure[b]{\includegraphics[scale=0.7]{img/presentacion_problema/onto_pizza.pdf}\caption{Jerarquía de clases de la ontología pizza}}
%\subfigure[b]{\includegraphics[scale=0.7]{img/presentacion_problema/onto_pizza_properties.pdf}\caption{Jerarquía de propiedades de la ontología pizza}}
%\caption{Subconjunto de la ontología de pizzas.} \label{fig:pizza.owl}
%\end{figure}
\begin{figure}
\centering
\subfigure[Jerarquía de clases de la ontología pizza]{%\fbox{
\includegraphics[scale=0.9]{img/presentacion_problema/onto_pizza.pdf}\label{fig:jerarquilapizza}}%}
\subfigure[Jerarquía de propiedades de la ontología pizza] {\includegraphics[scale=0.9]{img/presentacion_problema/onto_pizza_properties.pdf}\label{fig:propiedadespizza}}
\caption{Subconjunto de la ontología de pizzas.} \label{fig:pizza.owl}
\end{figure}
Considerando que las ontologías de la Web Semántica son Redes Libres de Escala~\cite{zhang2008scale}, esperamos que la naturaleza de las relaciones brinden información suficiente para discriminar entre el contenido principal y el menos relevante.
Una vez identificados los nodos sobresalientes (temas principales), se debe estructurar la información a partir de ellos. Para esto se recorre el grafo de la ontología a través de las relaciones entre los nodos.
Para este problema hemos reconocido dos sub-problemas a tratar:
\begin{itemize}
\item La obtención de los tópicos más relevantes para tratar en el texto.%, que en nuestro caso son unidades de información representadas por \emph{owl:Class} y \emph{owl:NamedIndividual}.
\item El recorrido del grafo para obtener las unidades de información que maximicen la relación semántica respecto a los tópicos del texto (para abordar la coherencia global).% En este caso, las unidades de información que se tienen en cuenta para el recorrido del grafo son \emph{rdfs:subClassOf}, \emph{owl:ObjectProperty} y \emph{owl:DataProperty}.
\end{itemize}
Este sub-problema de la estructuración jerárquica como Árbol de entidades serán desarrollados en las siguientes secciones. %Nos referiremos a la estructura jerárquica como Árbol de Entidades.
\section{Diseño}
Para organizar la información, se crearon cuatro módulos que transforman la ontología de entrada en un árbol con toda la información contenida en la ontología. A continuación se describe cada módulo:
\begin{itemize}
\item \textbf{Traductor}: recibe la entrada y la traduce a una representación interna de la ontología.
\item \textbf{Clasificador de Entidades}: clasifica y extrae las entidades más relevantes, utilizando como criterio las medidas de centralidad.
\item \textbf{Generador del Árbol de Entidades}: se encarga de crear los niveles del Árbol de Entidades.
\item \textbf{Generador de Nuevo Grupo de Entidades}: recibe una Entidad y recorre sus relaciones para crear un nuevo grupo de entidades relacionado semánticamente.
\end{itemize}
En la Figura~\ref{fig:modulos_organizador_inf} se muestra la transformación de la ontología OWL a través de los módulos. Los pasos 4 y 5 son iterativos, el proceso finaliza cuando no queden más Entidades que explorar, lo cual es definido por el Generador del Árbol de Entidades.
\begin{figure}
\centering
\includegraphics%[width=12cm, height=6cm]
[scale=1]{img/organizacion_informacion/modulos_organizador_de_informacion.pdf}
\caption{Módulos que componen el Organizador de Información}
\label{fig:modulos_organizador_inf}
\end{figure}
\subsection{Traductor de la entrada}
El módulo Traductor crea una representación interna de la ontología cargando toda la información en una estructura que facilita el acceso y recorrido de los datos. Como algunos datos son accedidos a través de un razonador o importados de otras ontologías, se optó por cargar toda esta información una única vez para reducir el tiempo de espera cuando se requieren estos datos.
\subsection{Clasificación de las entidades más relevantes}
Una vez creada la representación de la ontología, el segundo módulo debe clasificar las entidades y extraer las más relevantes para crear el primer nivel del Árbol de Entidades. A continuación se explicará cómo son extraídas estas entidades.
\subsubsection{Criterio de clasificación}
El criterio principal para establecer una clasificación sobre las clases de una ontología, y que tal clasificación sirva para seleccionar las clases más relevantes, se basa en cuánta información posee una clase respecto al resto de las clases en la ontología. Consideramos que una clase tiene más información que otra si está presente en más cantidad de dominios de \emph{ObjectProperties}. Esto permite reconocer las clases que tengan mayor cantidad de conexiones con otras clases, y que a su vez sean el núcleo de la relación.
Para obtener la cantidad de información de cada clase, utilizaremos el grafo subyacente a la ontología y calcularemos el \emph{outdegree}~\footnote{El \emph{outdegree} es la medida de la cantidad de conexiones salientes de un nodo.} de cada nodo que represente una clase. Para el cálculo se tendrá en cuenta únicamente la relación \emph{rdf:domain}.
Teniendo en cuenta a las clases mejor clasificadas, se puede centrar la verbalización alrededor de estas clases.
Algunas ventajas de este enfoque son:
\begin{itemize}
\item Sencillez de implementación. Únicamente se debe recorrer el grafo calculando el valor de cada nodo. El recorrido del grafo tiene a lo sumo una complejidad polinomial.
\item No se requiere agregar información extra al dominio.
\item No es necesario utilizar sobre la ontología un razonador que requiera una complejidad computacional que sea intratable. La única observación es que hay que inferir el dominio y rango de las \emph{ObjectProperties}. Sin embargo, la inferencia de dominio y rango se realiza teniendo en cuenta la jerarquía de \emph{ObjectProperties}, sin necesidad de inferir clases equivalentes o disjuntas.
\end{itemize}
La eficacia de este enfoque depende fuertemente de que las \emph{ObjectProperties} más importantes tengan el dominio explícito.
\subsubsection{Seleccionando las principales clases}
\label{sec:select_class}
Una vez calculado el valor de cada clase, se pueden seleccionar las clases que superen cierto umbral para agregarlas al primer nivel de la estructura jerárquica que guiará el desarrollo del texto. En este trabajo, se recorren todas las clases y se seleccionan las que superen el valor promedio entre cantidad de propiedades y cantidad de clases.
Si ninguna supera el valor promedio, se selecciona la o las clases con el valor más alto.
Cuando se seleccionan las clases que van a representar los temas principales, puede ocurrir que se elijan clases de una misma rama en la jerarquía de clases. Esto hace que se pierda algo de semántica, pues se incluyen clases en el mismo nivel, siendo que algunas son más específicas y pueden ser alcanzadas desde sus ancestros. Para evitar este problema, se optó por eliminar las subclases que sean seleccionadas en un principio, y que tengan a una clase ancestro dentro de los temas principales. Por ejemplo, continuando con la ontología de las pizzas, si las principales clases seleccionadas son \emph{comida} y \emph{pizza}, la clase \emph{pizza} sería eliminada del conjunto, pues es subclase de \emph{comida}.
\subsection{Generador Árbol de Entidades}
El tercer módulo se encarga de crear la estructura del Árbol, sincronizando la interacción entre los demás módulos. Su objetivo es formar la jerarquía comenzando desde las Entidades más Relevantes, y agregando nuevos niveles con ayuda del Generador de Nuevos Grupos. Cuando no quedan más relaciones que recorrer en las Entidades del último nivel, revisa que todas las clases haya sido usadas al menos una vez. Si hay clases que no fueron utilizadas, invoca un algoritmo para agregar estas clases en una rama especial llamada \emph{Otras Secciones}. Es el caso, por ejemplo, de las clases \emph{Comida} y \emph{Helado} en la ontología \emph{pizza}.
Como ejemplo, el primer y segundo nivel de la ontología de las pizzas quedaría como en la Figura~\ref{fig:macro_planning_pizza}; y el tercer nivel se muestra en la Figura~\ref{fig:macro_planning_pizza_n2}.
\begin{figure}
\centering
\begin{minipage}[c]{0.7\textwidth}
%no borrar el % de dirtree porque es necesario.
{\footnotesize
\dirtree{%
.0 .
.1 pizza.
.2 tieneIngrediente.
.2 pizzaConCarne.
.2 pizzaConNombre.
.2 $\ldots$ las restantes subclases de pizza.
.1 comida.
.2 helado.
}}
\caption{Primer y segundo nivel del Árbol de Entidades de la ontología \emph{pizza}.}
\label{fig:macro_planning_pizza}
\end{minipage}
\end{figure}
\begin{figure}
\centering
\begin{minipage}[c]{0.7\textwidth}
%no borrar el % de dirtree porque es necesario.
{\footnotesize
\dirtree{%
.0 .
.1 pizza.
.2 tieneIngrediente.
.3 tieneBase.
.3 tieneCobertura.
.2 pizzaConCarne.
.2 pizzaConNombre.
.3 Margherita.
.3 Napoletana.
.3 $...$ las restantes subclases de pizzaConNombre.
.2 $...$ las restantes subclases de pizza, con sus respectivas subclases.
.1 comida.
.2 helado.
}}
\caption{Tercer nivel del Árbol de Entidades de la ontología \emph{pizza}.}
\label{fig:macro_planning_pizza_n2}
\end{minipage}
\end{figure}
Se puede ver en la Figura~\ref{fig:macro_planning_pizza_n2} que las subpropiedades \emph{tieneBase} y \emph{tieneCobertura} tienen en su dominio a \emph{pizza}, la clase más cercana recorriendo sus ancestros. Si existiera por ejemplo, \emph{tieneCondimento} como una tercer subpropiedad de \emph{tieneIngrediente}, cuyo dominio no tuviera \emph{pizza}, entonces no sería listada dentro del grupo \emph{tieneIngredientes} en la rama de \emph{pizza}. Sin embargo, deben explorarse las subpropiedades de \emph{tieneCondimento}, por el caso de que tenga alguna subpropiedad que tuviera como dominio a \emph{pizza}. Por ejemplo, supongamos que \emph{tieneCondimento} tiene como subpropiedad a \emph{tieneOrégano} con dominio \emph{pizza}, en ese caso se habilita a \emph{tieneCondimento} para ser insertado en el grupo junto a \emph{tieneCobertura} y \emph{tieneBase}.
\subsection{Generador de Nuevos Grupos de Entidades}
\label{sec:agrupando_info}
El cuarto módulo crea nuevos grupos de entidades para agregar como nuevos niveles al Árbol. Los elementos de cada grupo serán insertados como hijos de la Entidad correspondiente.
Dada una Entidad \emph{E}, deben recorrerse las relaciones de \emph{E} en la ontología, para seleccionar Entidades que serán agregadas al nuevo grupo.
El contenido de cada grupo depende del tipo de \emph{E}.
\begin{itemize}
\item Si \emph{E} es una Clase, el nuevo grupo estará constituido por Propiedades, Individuos y Subclases.
\item Si \emph{E} es una Propiedad, el nuevo grupo estará constituido por Subpropiedades cuyo dominio contenga a \emph{E}, o por las clases del Rango de \emph{E} si no posee Subpropiedades.
\item Si \emph{E} es un Individuo, no se creará ningún grupo nuevo.
\end{itemize}
Cuando existe más de una Propiedad en un grupo, se busca reemplazarlas por propiedades en común de más alto nivel en la jerarquía de propiedades. Por ejemplo, en la ontología de las pizzas, para la clase \emph{pizza} existen dos propiedades: \emph{tieneCobertura} y \emph{tieneBase}. Como estas dos propiedades tienen a su vez una subpropiedad en común llamada \emph{tieneIngrediente}, se reemplaza a las dos subpropiedades por su ancestro \emph{tieneIngrediente}.
%En la Figura~\ref{fig:diagrama_secuencia_contentGrouping} se muestra un pseudocódigo del algoritmo usado para agrupar la información de las clases.
%\begin{figure}
% \centering
% \includegraphics%[width=8cm, height=7cm]
% {img/organizacion_informacion/secuencia_contentGrouping}
% \caption{Diagrama de secuencia para agrupar la información de las Clases}
% \label{fig:diagrama_secuencia_contentGrouping}
%\end{figure}
\subsection{Diagrama de clases}
En la Figura~\ref{fig:diagrama_clases_organizador} se muestra el diagrama de clases correspondiente al Organizador de Información. El módulo \emph{Traductor} está representado a través de la clase \emph{OntologyManager}; el módulo Clasificador de Entidades está representado por la clase \emph{ContentClasification}; el módulo que genera el Árbol de Entidades está implementado por la clase \emph{GeneratorTreeManager}, y el módulo que crea nuevos grupos de entidades está implementado en la clase \emph{ContentGrouping}.
Las clases \emph{OWLIntClass}, \emph{OWLClass}, \emph{OWLDataProperty}, \emph{OWLObjectProperty}, \emph{OWLIndividual}, \emph{OWLRestriction} y \emph{Ontology} son usadas para representar la estructura de la ontología. Estos objetos son creados por la clase \emph{OntologyManager}.
\begin{figure}
\centering
\includegraphics{img/organizacion_informacion/diagrama_clases_organizador_informacion.pdf}
\caption{Diagrama de clases del Organizador de Información}
\label{fig:diagrama_clases_organizador}
\end{figure}
\section{Implementación}
Para documentar la implementación se tomarán principalmente las cuatro clases asociadas a los módulos del Organizador de Información. Para simplificar la longitud de las clases documentadas, solo se mostrará el encabezado de los métodos con sus respectivas descripciones, y solo se incluirá la implementación de los métodos más importantes.
La estructura de la ontología se crea a través de la clase \emph{OntologyManager}. Esta clase hace uso de la librería \emph{OWLAPI}\footnote{http://owlapi.sourceforge.net/} para cargar el archivo que contiene la ontología de entrada. El beneficio de esta librería es que también importa los archivos necesarios en caso de que hayan definiciones de tipo \emph{import} en la ontología. En el Anexo~\ref{sec:clase_ontologymanager} se muestra el método principal de \emph{OntologyManager} que contiene la llamada y la explicación de los métodos involucrados para crear la estructura de la ontología.
La clase \emph{Ontology} posee la estructura creada con \emph{OntologyManager}. También posee algunos métodos útiles para el proceso de organizar la información, los cuales se muestran en el Anexo~\ref{sec:clase_ontology}.
La clase \emph{ContentClasification} contiene los métodos necesarios para clasificar y extraer las entidades más relevantes. Su implementación se muestra en el Anexo~\ref{sec:clase_content_clasif}.
La clase \emph{ContentGrouping} posee tres métodos para generar los grupos de nuevos tópicos del Árbol de Entidades. En el Anexo~\ref{sec:clase_content_grouping} se presenta esta clase.
La clase \emph{GeneratorTreeManager} recorre recursivamente las Entidades creando las ramas del Árbol de Entidades. Se presenta un pseudocódigo en el Anexo~\ref{sec:clase_generator_tree} para explicar el recorrido.
El resto de las clases solo sirven para completar la estructura en forma de grafo de la ontología, pero no agregan métodos relevantes para el Organizador de Información.
\section{Casos de estudio}
En esta sección se presentan dos casos de estudio que muestran el comportamiento de la aplicación ante dos entradas diferentes, abarcando distintos aspectos de la solución propuesta. En el primer caso será usada la ontología de las pizzas, y en el segundo se hará uso de la ontología \emph{Wine}\footnote{https://www.w3.org/TR/owl-guide/wine.rdf}.
Al momento de realizar este trabajo no se reconoce ninguna aplicación que aborde el problema de organización de la información en una ontología, por lo que se expondrán tres casos de estudio sin la posibilidad de compararlos con otros resultados.
\subsection{Organización de Ontología Pizza}
Según la descripción de la ontología, este dominio representa las pizzas y sus coberturas, por lo que esperamos que las entidades que representen a las pizzas, a las coberturas y la información complementaria tiendan a agruparse en los niveles más altos de la jerarquía, mientras que en los niveles más bajos esperamos encontrar las clases más específicas y que tienen menor impacto sobre el entendimiento del dominio.
En el Anexo~\ref{apx:traza_pizza} se muestra una salida del programa en ejecución, en el que se ve el proceso de clasificación de las Entidades para obtener los temas principales, y luego se muestran algunas partes del proceso de creación de la estructura, donde se crean los niveles de la jerarquía de la estructura.
En la Figura~\ref{fig:caso_estudio_pizza} se puede ver el resultado de aplicar el algoritmo teniendo como entrada la ontología pizza.
Los nombres de las entidades fueron traducidos al español, para poder generar las sentencias en lenguaje español en el siguiente capítulo, pero el idioma no afecta los resultados del algoritmo propuesto.
\begin{figure}
\begin{multicols}{2}
\begin{figure}[H]
\dirtree{%
.1 Pizza.
.2 Pizza con nombre.
.3 Margherita.
.3 Frutti di mare.
.3 Giardiniera.
.3 ....
.3 Napoletana.
.2 Pizza con carne.
.2 Pizza picante.
.2 ....
.2 Pizza vegetariana.
.2 Ingredientes.
.3 Coberturas.
.4 Cobertura de pizza.
.5 Cobertura de verduras.
.6 Cobertura de pimiento.
.6 ....
.6 Cobertura de langostinos.
.3 Bases.
.4 Base de pizza.
.5 Base gruesa.
.5 Base delgada y crujiente.
}
\end{figure}
\begin{figure}[H]
\dirtree{%
.1 Otras secciones.
.2 Domain concept.
.3 Comida.
.4 Helado.
.4 Ingrediente.
.3 Pais.
.4 America.
.4 England.
.4 Italy.
.4 France.
.4 Germany.
.2 Value partition.
.3 Picante.
.4 Poco picante.
.4 Algo picante.
.4 Muy picante.
}
\end{figure}
\end{multicols}
\caption{Resultado del Organizador de Información con la ontología \emph{Pizza}.}
\label{fig:caso_estudio_pizza}
\end{figure}
La ontología pizza cuenta con 100 clases y 8 propiedades. De las 8 propiedades, 5 fueron usadas para clasificar las 100 clases (de las 8, 3 eran inversas a otras 3 por lo que no agregaban información nueva). El promedio de información obtenido fue 1.25, siendo la clase Pizza la única en superar este valor, lo que concuerda con el resultado esperado.
Como se puede observar en la Figura~\ref{fig:caso_estudio_pizza}, en la primer columna se encuentran los tópicos principales reconocidos por el algoritmo, y en la segunda columna se encuentra una rama especial, para aquellas clases que no habían sido utilizadas en el resto del árbol.
En la jerarquía de los tópicos principales, se puede ver como toda la información se agrupa como hijas de la entidad Pizza, describiendo los tipos de pizzas y sus ingredientes. Inmediato a los ingredientes lista las coberturas, y reconoce a las bases de pizza a la misma altura que las coberturas, asignándoles la misma importancia.
En la jerarquía de \emph{Otras Secciones}, se aprecian las demás entidades que aportan información secundaria a la descripción del dominio, que no está directamente relacionada con el dominio de las pizzas, como son los países, los tipos de picante y otras comidas.
Respecto al resultado esperado, la organización de la información es satisfactoria, ya que se asimila a la propia descripción del dominio.
\subsection{Organización de Ontología Wine}
Esta ontología tiene como objetivo describir un dominio de vinos y comidas\footnote{\url{https://protege.stanford.edu/publications/ontology_development/ontology101-noy-mcguinness.html}}, por lo que esperamos que las entidades que se consideren más relevantes sean aquellas afines a los vinos y comidas.
En la Figura~\ref{fig:caso_estudio_wine} se puede ver el resultado de aplicar el algoritmo.
\begin{figure}
\begin{multicols}{2}
{\small
\begin{figure}[H]
\dirtree{%
.1 Wine.
.2 Italian wine.
.3 Chianti.
.4 Chianti classico.
.2 $...$ \emph{(otras subclases de Wine)}.
.2 Wines descriptor.
.3 Sugar.
.4 Wine sugar.
.5 Dry.
.5 Off dry.
.5 Sweet.
.3 Colors.
.4 Wine color.
.5 White.
.5 Rose.
.5 Red.
.3 Flavors.
.4 Wine flavor.
.5 Moderate.
.5 Strong.
.5 Delicate.
.3 Bodies.
.4 Wine body.
.5 Medium.
.5 Full.
.5 Light.
.2 From grapes.
.3 Wine grape.
.4 Chenin blanc grape.
.4 $...$ \emph{(otras subclases de Wine grape)}.
}
\end{figure}}
\begin{figure}[H]
\dirtree{%
.1 Otras secciones.
.1 Region.
.2 Central texas region.
.2 $...$ \emph{(otras subclases de Region)}.
.1 Vintage year.
.2 Year1998.
.1 Wine descriptor.
.2 Wine taste.
.1 Non consumable thing.
.1 Vintage.
.2 Vintage years.
.1 Fruit.
.1 Winery.
.2 Chateau de meursault.
.2 $...$ \emph{(otras subclases de Winery)}.
.1 Consumable thing.
.2 Meal.
.3 Courses.
.4 Meal course.
.5 Cheese nuts dessert course.
.5 $...$ \emph{(otras subclases de Meal course)}.
.5 Foods.
.6 Edible thing.
.7 Fowl.
.8 $...$.
.7 Dessert.
.8 $...$.
.7 Meat.
.8 $...$.
.7 Seafood.
.8 $...$.
.7 Sweet fruit.
.8 Grape.
.8 $...$.
.7 Pasta.
.8 $...$.
.7 Non sweet fruit.
.5 Drinks.
.6 Potable liquid.
.7 Juice.
.7 Wine.
.8 Wines descriptor.
.8 From fruits.
}
\end{figure}
\end{multicols}
\caption{Resultado del organizador de información con la ontología Wine.}
\label{fig:caso_estudio_wine}
\end{figure}
La ontología Wine cuenta con 138 clases y 16 propiedades. De las 16 propiedades, 12 fueron usadas para verificar qué clases superan el promedio para ser seleccionadas como las principales. El promedio fue de 2.5 y la única clase que lo superó fue Wine, lo que cumple parcialmente el resultado esperado, ya que parte del objetivo de la ontología es describir el dominio de los vinos. Respecto a la sección que describe las comidas, quedó desplazada a \emph{Otras Secciones}, siendo un resultado no esperado según el objetivo de la ontología. Sin embargo, analizando manualmente la ontología, se puede apreciar que el porcentaje de información que describe a las comidas es significativamente menor en relación a la información referida a los vinos, factor por el cual resulta aceptable que no aparezcan como sección principal.
%\subsection{Organización de Ontología SNOMED-CT}
\section{Conclusiones}
Abordamos el problema de organizar la información de una ontología, tratando de maximizar la coherencia de la estructura generada. Como presentamos en el inicio de este Capítulo, tuvimos que definir:
\begin{itemize}
\item {\bf Las entidades que iban a representar los nodos de la estructura}: donde elegimos para el primer nivel de la jerarquía a las Clases, y para los próximos niveles a Clases, Propiedades e Individuos.
\begin{itemize}
\item {\bf El criterio para ponderar la importancia de las Clases para crear el primer nivel}: donde decidimos usar el criterio de centralidad de un nodo, teniendo en cuenta solo la relación \emph{rdfs:domain}.
\end{itemize}
\item {\bf El recorrido de la ontología para crear los siguientes niveles del Árbol}: para el cual seleccionamos las relaciones \emph{rdfs:Domain}, \emph{owl:subPropertyOf}, \emph{rdfs:Range} y \emph{rdfs:subClassOf}. El recorrido para cada Entidad visita todos sus vecinos a solo un nivel de profundidad.
\end{itemize}
Los resultados fueron satisfactorios, obteniendo estructuras que corresponden a los resultados esperados.
%Si bien el resultado de la clasificación de las entidades mas importantes depende de la cantidad de \emph{owl:ObjectProperties} y de que sus \emph{rdfs:domain} estén correctamente establecidos, en general el hecho de que son Redes Libres de Escala es un punto a favor para este enfoque.