Capítulo 6

Anuncio
cenidet
Centro Nacional de Investigación y Desarrollo Tecnológico
Departamento de Ciencias Computacionales
TESIS DE MAESTRÍA EN CIENCIAS
Metodología para Definir una Arquitectura de Sitios Web Basada
en Diseño de Ontologías
presentada por
Matilde Baños Nolasco
Ing. en Sistemas Computacionales por el I. T. de Minatitlán
como requisito para la obtención del grado de:
Maestría en Ciencias en Ciencias de la Computación
Director de tesis:
Dr. José Antonio Zárate Marceleño
Co-Director de tesis:
Dr. Juan Gabriel González Serna
Jurado:
M.C. Mario Guillén Rodríguez – Presidente
Dr. José Antonio Zárate Marceleño– Secretario
M.C. Reynaldo Alanís Cantú – Vocal
M.C. Hugo Estrada Esquivel – Vocal Suplente
Cuernavaca, Morelos, México.
11 de septiembre de 2008
“Hay hombres que luchan un día y son buenos.
Hay otros que luchan un año y son mejores.
Hay quienes luchan muchos años, y son muy buenos.
Pero hay los que luchan toda la vida, esos son los imprescindibles.”
Bertolt Brecht
Dedicatoria
A mis padres:
A mi padre. Por enseñarme que nada en la vida es fácil de alcanzar, pero que el trabajo duro
siempre recibe recompensa. De usted aprendí que es importante ser estricto y justo, sin dejar
de ser flexible. Que se debe mantener la dignidad a toda costa y que nunca se debe negar la
mano a quien la extiende buscando ayuda.
Aunque no está físicamente, estará siempre en mi corazón y en cada logro de mi vida.
A mi madre. Gracias por tu fortaleza y tu entereza a lo largo de los años. Por los enormes
sacrificios con los que has sacado adelante a nuestra familia. Por demostrarme que ni siquiera
los impedimentos físicos son un pretexto para dejarse vencer y que no existe sentimiento que
engrandezca tanto al hombre como el amor sin medida.
A mi hermana:
Por demostrar siempre tu amor, con palabras y con acciones. Tu expresividad es una
cualidad de la que yo carezco, pero ha sido siempre un puente para mantener la unión en los
eslabones más débiles de nuestra relación familiar.
Has estado siempre ahí para cuidarme cuando era necesario y asumir tu papel. Gracias por
todo.
A mi abuela:
Por ser una segunda madre para mí. Gracias por los cuidados y regaños que todavía
recibimos. Por las oraciones en mi nombre y las bendiciones diarias cada mañana y cada
noche. Con el paso del tiempo he aprendido el valor de tenerla todavía conmigo, como un
tesoro de historias y experiencias y, más que nada, de amor.
Agradecimiento
A CONACYT por el apoyo económico otorgado para la realización de este proyecto.
A mi director de tesis, Dr. José Antonio Zárate Marceleño, por brindarme su ayuda y
consejo en el desarrollo de esta investigación, por su profesionalismo y su calidad humana. A
mi codirector, Dr. Juan Gabriel González Serna, a quien admiro por su dedicación en el
trabajo.
A los revisores de esta tesis de investigación, M.C. Hugo Estrada Esquivel, M.C. Mario
Guillén y M.C. Reynaldo Alanís Cantú, por su disposición, sus valiosos comentarios y
observaciones.
Al Centro Nacional de Investigación y Desarrollo Tecnológico y a todo el personal que
labora en esta institución. En especial al M.C. Hugo Estada Esquivel, quien confió siempre en
mis capacidades y me brindó su amistad sincera. A la Dra. Azucena Montes Rendón y al Dr.
Máximo López Sánchez.
A Eduardo, por tu cariño constante y sincero. Mil gracias por la oportunidad de
conocer a un hombre maravilloso de quien solo puedo expresarme de la mejor manera.
Gracias también por creer en mí.
Al Lic. Andrés Díaz Elizalde, por ser siempre un valioso ejemplo y haber encontrado
en su amistad una guía moral que me ha ayudado a madurar en muchos aspectos de mi vida.
A mis amigos: María Magdalena, Yazmin, Adriana, Abdiel, Hugo Alberto, Christian
Emmanuel y Cristian Servelio. Por acompañarme en los momentos de incertidumbre y en las
alegrías de todos los días.
A mis amigos del cenidet: Jorge Alberto, por ser una persona maravillosa y amable
que con algunas reservas me compartió su sentir. Edgar Omar, por los consejos a distancia y
el apoyo incondicional, espero que podamos contar siempre el uno con el otro. Ismael Rafael,
por tu carácter noble y tu actitud desinteresada, y en especial a Jesús Guillermo por tu
compañía y contagiosa fortaleza de espíritu cuando más me hizo falta, por ser mi amigo a
pesar de todo siempre tendrás un lugar especial en mi corazón.
Para mis tíos Raymundo, Gloria, Roberto y Rosalía, quienes están siempre al
pendiente, a pesar de la distancia.
A todos, mil gracias.
Matilde Baños Nolasco.
Resumen
Los sitios Web son un recurso para distribuir información, utilizados para distintos
propósitos, como: informativos, transaccionales, de comunidad, entretenimiento, comerciales,
de gobierno, de educación, personales, entre otros.
Por su naturaleza, los sitios Web, poseen estructuras difíciles de entender, debido a la
multiplicidad de sus enlaces y la falta de semántica en éstos.
El uso de enlaces entre páginas sin entender el significado semántico de lo que
relacionan, genera una estructura bajo el esquema de organización de “Web pura” [Powell
2002]. Este tipo de esquema resta claridad a la estructura. Diversos estudios como los
realizados por el IHMC demuestran que el aprendizaje se basa en el uso de relaciones entre
conceptos. Es por ello que resulta necesario agregar semántica que ayude a entender cómo
están relacionados entre sí los elementos que conforman el sitio Web.
Se han realizado análisis de diferentes enfoques para la búsqueda de la definición
formal de las relaciones. Algunos de estos enfoques son: las relaciones semánticas definidas
en la lingüística (en este trabajo se hizo hincapié en una de ellas, la meronimia) y propiedades
de UML.
El presente trabajo describe una metodología que utiliza conceptos de diseño de
ontologías para crear estructuras. La metodología propuesta muestra que la construcción del
sitio implica el uso de un conjunto de relaciones entre sus elementos (páginas, archivos
multimedia, entre otros), donde las relaciones corresponden a los enlaces. Con esto se intenta
proporcionar una solución a la falta de semántica de la arquitectura de los sitios Web.
Para llevar a cabo esta tarea se siguió un proceso de análisis sobre un dominio
específico. Posteriormente se determinaron patrones de construcción que ayudaron a obtener
conceptos propios del dominio para conformar una jerarquía de clases. Se establecieron
relaciones entre los conceptos, una tipificación de dichas relaciones, siendo ésta la principal
aportación de este trabajo y además, se implementó un editor de sitios Web basado en los
resultados del análisis anterior.
Abstract
Websites are a resource for distributing information, used for different purposes such as:
informative, transactional, community, entertainment, business, government, educational,
personal ones, among others.
Because of its nature, Websites, have structures difficult to understand, due to the
multiplicity of their links and the lack of semantics in these.
The use of links among pages without understanding the semantic meaning of what
they relate generates a structure under the "pure web" organization scheme [Powell 2002].
This type of scheme reduces clarity to the structure. Several studies, such as the ones coming
from the IHMC’s, show that the learning process is based in the use of relations among
concepts. Therefore, is necessary to add semantics to the Web site structure such that they
help to understand how the elements forming it are interrelated among them.
There have been done analyses of different approaches for the searching of formal
definition of the relations. Some of these approaches are: the semantic relations, mereology
characteristics and UML properties.
The present work describes a methodology that uses ontology design concepts in
order to create structures. The proposed methodology shows that the construction of the site
implies the use of a set of relations among its elements (pages, multimedia files, and others),
where relations fit to links. This is an attempt to provide a solution to the lack of semantics in
Websites architecture.
To carry out this task an analysis process was followed over a specific domain.
Afterwards construction patterns were determined that help to obtain concepts of the domain
to conform a hierarchy of classes. Relations among concepts were established, a
categorization of such relations, being this the principal contribution of this work, and it was
also developed a Website editor based on the results of the previous analysis.
Índice de contenido
CAPÍTULO 1.
1.1.
1.2.
1.3.
1.4.
1.5.
1.6.
1.7.
1.8.
INTRODUCCIÓN ..................................................................................................................... 1
ANTECEDENTES .......................................................................................................................................... 2
DESCRIPCIÓN DEL PROBLEMA ........................................................................................................................ 3
OBJETIVO.................................................................................................................................................. 3
JUSTIFICACIÓN ........................................................................................................................................... 4
ALCANCES ................................................................................................................................................. 5
LIMITACIONES ............................................................................................................................................ 5
BENEFICIOS ............................................................................................................................................... 6
ORGANIZACIÓN DEL DOCUMENTO.................................................................................................................. 6
CAPÍTULO 2.
MARCO TEÓRICO ................................................................................................................... 8
2.1.
CONCEPTO ................................................................................................................................................ 9
2.2.
SITIO WEB ................................................................................................................................................ 9
2.3.
ARQUITECTURA DE SITIOS WEB ..................................................................................................................... 9
2.4.
ONTOLOGÍA ............................................................................................................................................ 10
2.5.
DISEÑO WEB ........................................................................................................................................... 10
2.6.
USABILIDAD ............................................................................................................................................ 11
2.7.
MAPA CONCEPTUAL .................................................................................................................................. 11
2.8.
XML...................................................................................................................................................... 12
2.9.
OWL ..................................................................................................................................................... 12
2.10.
RELACIÓN ............................................................................................................................................... 12
2.10.1.
Relación de hiperonimia-hiponimia ........................................................................................... 13
2.10.2.
Relación Sintagmática ................................................................................................................ 13
2.10.3.
Relación de meronimia .............................................................................................................. 14
2.10.3.1.
2.10.3.2.
2.10.3.3.
2.10.3.4.
Mereología ............................................................................................................................................14
Meronimias centrales ........................................................................................................................... 15
Meronimias no centrales ...................................................................................................................... 15
Propiedades secundarias de las relaciones parte-todo .........................................................................16
2.10.4.
Relación topológica .................................................................................................................... 17
2.11.
UML ..................................................................................................................................................... 17
2.11.1.
Propiedades de las relaciones de agregación y composición para UML................................... 17
2.12.
SISTEMAS DE NAVEGACIÓN DE SITIOS WEB .................................................................................................... 18
2.12.1.
Conjunto primario de navegación ........................................................................................ 18
2.12.2.
Conjunto secundario de navegación .................................................................................... 18
2.12.3.
Conjunto terciario de navegación .............................................................................................. 18
CAPÍTULO 3.
ESTADO DEL ARTE................................................................................................................ 20
3.1.
WEBTOC ............................................................................................................................................... 21
3.2.
DREAMWEAVER ...................................................................................................................................... 22
3.2.1. Visualización del mapa del sitio ...................................................................................................... 22
3.3.
SGMAPPER............................................................................................................................................. 23
3.3.1. Organización jerárquica del sitio Web ............................................................................................ 23
3.3.2. Organización de red del sitio Web .................................................................................................. 23
3.3.3. Enlaces asociativo implícito ............................................................................................................ 23
3.3.4. Formato SGF ................................................................................................................................... 24
3.3.5. Implementación .............................................................................................................................. 24
3.4.
URIGRAPH .............................................................................................................................................. 25
3.4.1. Capas del modelo Urigraph ............................................................................................................ 26
Página i
3.4.2. Gramática XML ............................................................................................................................... 28
3.5.
CMAPTOOLS ........................................................................................................................................... 29
3.6.
OOWS (MÉTODO DE PRODUCCIÓN DE SOLUCIONES WEB ORIENTADOS A OBJETO).............................................. 30
3.6.1. Especificación del problema ........................................................................................................... 30
3.7.
TOUCH GRAPH......................................................................................................................................... 32
3.7.1. TouchGraph propietario ................................................................................................................. 32
3.7.2. TouchGraph de código abierto ....................................................................................................... 32
3.7.2.1.
3.7.2.2.
LinkBrowser...........................................................................................................................................33
WikiBrowser ..........................................................................................................................................34
3.8.
PERSONALBRAIN ...................................................................................................................................... 34
3.8.1. El pensamiento activo .................................................................................................................... 34
3.8.2. Relaciones de pensamientos .......................................................................................................... 35
3.9.
ONTOWEBBER......................................................................................................................................... 36
CAPÍTULO 4.
ANÁLISIS Y DISEÑO DE LA SOLUCIÓN ................................................................................... 38
4.1.
DESCRIPCIÓN GENERAL DE LA SOLUCIÓN PROPUESTA ....................................................................................... 39
4.2.
DESARROLLO DE UNA METODOLOGÍA PARA DEFINIR ESTRUCTURAS DE SITIOS WEB BASADA EN DISEÑO DE ONTOLOGÍAS 39
4.2.1. Estudio de los dominios de trabajo ................................................................................................ 39
4.2.1.1.
4.2.1.2.
4.2.2.
Análisis de sitios Web de dominio educación (edu) ..............................................................................39
Estructura de páginas ............................................................................................................................ 41
Construcción de una ontología del dominio de educación ............................................................ 44
4.2.2.1.
4.2.2.2.
4.2.2.3.
4.2.2.4.
4.2.2.5.
4.2.2.6.
Identificación del propósito de la ontología .......................................................................................... 44
Identificación de conceptos del dominio .............................................................................................. 44
Creación de la taxonomía de clases ......................................................................................................45
Atributos de las clases de la ontología ..................................................................................................47
Definición de clases de la taxonomía ....................................................................................................47
Establecimiento de relaciones de la ontología ...................................................................................... 50
4.3.
EDITOR DE ESTRUCTURAS DE SITIOS WEB ...................................................................................................... 62
4.3.1. Análisis de requerimientos del usuario .......................................................................................... 62
4.3.2. Arquitectura general de la herramienta y descripción de las funciones ........................................ 62
4.3.3. Usuarios de la herramienta ............................................................................................................ 63
4.3.4. Limitaciones de la herramienta ...................................................................................................... 64
4.4.
DISEÑO .................................................................................................................................................. 64
4.4.1. Diagramas de casos de uso ............................................................................................................. 64
CAPÍTULO 5.
IMPLEMENTACIÓN .............................................................................................................. 69
5.1.
CREACIÓN DE LA ONTOLOGÍA CON LA HERRAMIENTA PROTÉGÉ .......................................................................... 70
5.2.
DESARROLLO DE LA APLICACIÓN .................................................................................................................. 71
5.2.1. Características generales de implementación ................................................................................ 71
5.2.2. Implementación de módulos .......................................................................................................... 72
5.2.2.1.
5.2.2.2.
5.2.2.3.
5.2.2.4.
5.2.2.5.
5.2.2.6.
5.2.2.7.
CAPÍTULO 6.
Carga de la ontología............................................................................................................................. 72
Creación de grafos con la herramienta .................................................................................................73
Crear archivo XML a partir de un grafo .................................................................................................76
Generar grafo a partir de un archivo XML ............................................................................................. 78
Generar estructura del sitio Web ..........................................................................................................79
Generar reporte de errores ................................................................................................................... 82
Validar la estructura de sitio Web .........................................................................................................83
PRUEBAS ............................................................................................................................. 85
6.1.
INTRODUCCIÓN ........................................................................................................................................ 86
6.2.
HIPÓTESIS ............................................................................................................................................... 86
6.3.
PRUEBA DE USABILIDAD ............................................................................................................................. 86
6.3.1. Descripción de las pruebas ............................................................................................................. 86
6.3.2. Problemas encontrados .................................................................................................................. 87
6.4.
PLAN DE PRUEBAS..................................................................................................................................... 88
Página ii
Características a probar .................................................................................................................. 88
6.4.1.
6.4.1.1.
6.4.1.2.
Procedimiento de las pruebas ........................................................................................................ 89
6.4.2.
6.4.2.1.
6.4.2.2.
EDWEB-101 Pruebas de creación y edición de grafos ...........................................................................89
EDWEB-102 Pruebas de creación de estructuras de sitios Web ........................................................... 92
Resultados de las pruebas .............................................................................................................. 92
6.4.3.
CAPÍTULO 7.
7.1.
7.2.
7.3.
7.4.
Pruebas de creación y edición de grafos ............................................................................................... 88
Pruebas de creación de estructuras de sitios Web ...............................................................................89
CONCLUSIONES ..................................................................................................................102
CONCLUSIONES ...................................................................................................................................... 103
APORTACIONES ...................................................................................................................................... 103
TRABAJOS FUTUROS ................................................................................................................................ 103
PUBLICACIONES...................................................................................................................................... 104
ANEXO A: .......................................................................................................................................................105
EJEMPLOS DE ETIQUETADO ...........................................................................................................................105
ANEXO B: .......................................................................................................................................................107
IMPLEMENTACIÓN .........................................................................................................................................107
REFERENCIAS .................................................................................................................................................116
Índice de figuras
FIGURA 1.1. NÚMERO TOTAL DE SITIOS WEB. OCTUBRE 1995-JULIO 2008 ............................................................................. 4
FIGURA 3.1. EJEMPLO DE APLICACIÓN DE WEBTOC ........................................................................................................... 21
FIGURA 3.2. FUNCIONAMIENTO DEL CLIENTE .................................................................................................................... 25
FIGURA 3.3. EJEMPLO DE LA CAPA TOPOLÓGICA DE ............................................................................................................ 26
FIGURA 3.4. ESTRUCTURA DE LA URL EN URIGRAPH .......................................................................................................... 28
FIGURA 3.5. GRAMÁTICA XML DE URIGRAPH................................................................................................................... 28
FIGURA 3.6. APROXIMACIÓN A LA METODOLOGÍA OOWS .................................................................................................. 30
FIGURA 3.7. EJEMPLO DE HINT ...................................................................................................................................... 33
FIGURA 3.8. TIPOS DE PENSAMIENTO .............................................................................................................................. 35
FIGURA 4.1. PÁGINA PRINCIPAL DEL CINVESTAV ............................................................................................................. 42
FIGURA 4.2. EJEMPLO DE ESTRUCTURA JERÁRQUICA ENTRE LA PÁGINA PRINCIPAL DEL CINVESTAV Y ELEMENTOS DEL GRUPO DE
NAVEGACIÓN PRIMARIO ...................................................................................................................................... 43
FIGURA 4.3. ENLACES DEL CONJUNTO SECUNDARIO DE NAVEGACIÓN ..................................................................................... 43
FIGURA 4.4. DIAGRAMA DE CLASES DE LA ONTOLOGÍA ........................................................................................................ 45
FIGURA 4.5. CONJUNTO DE RELACIONES .......................................................................................................................... 50
FIGURA 4.6. ARQUITECTURA GENERAL DEL EDITOR EDWEB ................................................................................................ 62
FIGURA 4.7. CASOS DE USO........................................................................................................................................... 65
FIGURA 5.1. JERARQUÍA DE CLASES ................................................................................................................................. 70
FIGURA 5.2. CONJUNTO DE PROPIEDADES ........................................................................................................................ 71
FIGURA 5.3. CLASES PARA EXPLOTACIÓN DE LA ONTOLOGÍA ................................................................................................. 73
FIGURA 5.4. DIAGRAMA DE ACTIVIDADES PARA LA CREACIÓN DE GRAFOS ............................................................................... 74
FIGURA 5.5. CLASES PARA LA CREACIÓN DE GRAFOS ........................................................................................................... 75
FIGURA 5.6. DIAGRAMA DE ACTIVIDADES PARA LA CREACIÓN DE UN ARCHIVO XML ................................................................. 76
FIGURA 5.7. DIAGRAMA DE CLASES PARA LA CREACIÓN DE UN ARCHIVO XML ......................................................................... 77
FIGURA 5.8. DIAGRAMA DE CLASES PARA LA GENERACIÓN DE UN GRAFO ................................................................................ 78
FIGURA 5.9. DIAGRAMA DE ACTIVIDADES PARA LA GENERACIÓN DE UN GRAFO ........................................................................ 79
FIGURA 5.10. DIAGRAMA DE ACTIVIDADES PARA LA GENERACIÓN DE ESTRUCTURAS DE SITIOS WEB ............................................. 80
Página iii
FIGURA 5.11. DIAGRAMA DE CLASES PARA LA GENERACIÓN DE ESTRUCTURAS DE SITIOS WEB ..................................................... 81
FIGURA 5.12. DIAGRAMA DE CLASES PARA LA GENERACIÓN DE REPORTE DE ERRORES ............................................................... 82
FIGURA 5.13. DIAGRAMA DE ACTIVIDADES PARA LA GENERACIÓN DE REPORTE DE ERRORES ....................................................... 83
FIGURA 5.14. DIAGRAMA DE ACTIVIDADES PARA LA VALIDACIÓN DE ESTRUCTURAS DE SITIOS WEB .............................................. 84
FIGURA 5.15. DIAGRAMA DE CLASES PARA LA VALIDACIÓN DE ESTRUCTURAS DE SITIOS WEB ...................................................... 84
Índice de tablas
TABLA 2.1. RELACIONES CENTRALES DE MERONIMIA CON FACTOR DE INTERFERENCIA "OPCIONALIDAD" ....................................... 15
TABLA 2.2. MERONIMIAS NO CENTRALES DE TIPO COLECTIVIDAD .......................................................................................... 16
TABLA 4.1. CONJUNTO DE SITIOS WEB ANALIZADOS........................................................................................................... 40
TABLA 4.2. DEFINICIÓN DE CLASES DE LA TAXONOMÍA ........................................................................................................ 46
TABLA 4.3. DEFINICIÓN DE LA CLASE DESCRIPCIÓN ABSTRACTA............................................................................................. 47
TABLA 4.4. DEFINICIÓN DE LA CLASE DESCRIPCIÓN FÍSICA .................................................................................................... 48
TABLA 4.5. DEFINICIÓN DE LA CLASE ESTUDIANTE .............................................................................................................. 48
TABLA 4.6. DEFINICIÓN DE LA CLASE ORGANIZACIÓN FUNCIONAMIENTO ................................................................................ 48
TABLA 4.7. DEFINICIÓN DE LA CLASE PRODUCTO ............................................................................................................... 48
TABLA 4.8. DEFINICIÓN DE LA CLASE SERVICIO EXTERNO ..................................................................................................... 48
TABLA 4.9. DEFINICIÓN DE LA CLASE SERVICIO INTERNO...................................................................................................... 49
TABLA 4.10. DEFINICIÓN DE LA CLASE SUCESO .................................................................................................................. 49
TABLA 4.11. DEFINICIÓN DE LA CLASE TRABAJADOR ........................................................................................................... 49
TABLA 4.12. DEFINICIÓN DE LA CLASE TRÁMITE ................................................................................................................ 49
TABLA 4.13. DEFINICIÓN DE LA CLASE UNIDAD ORGANIZACIONAL ......................................................................................... 50
TABLA 4.14. DOMINIO Y RANGO PARA LA RELACIÓN (A) MERONIMIA FACULTATIVA-FACULTATIVA ............................................. 51
TABLA 4.15. DOMINIO Y RANGO PARA LA RELACIÓN (B) MERONIMIA FACULTATIVA-FACULTATIVA ............................................. 52
TABLA 4.16. DOMINIO Y RANGO PARA LA RELACIÓN (C) MERONIMIA GRUPO-MIEMBRO: ........................................................ 52
TABLA 4.17. DOMINIO Y RANGO PARA LA RELACIÓN (D) MERONIMIA COLECCIÓN-MIEMBRO .................................................... 53
TABLA 4.18. DOMINIO Y RANGO PARA LA RELACIÓN (E) MERONIMIA CANÓNICA-CANÓNICA ..................................................... 53
TABLA 4.19. DOMINIO Y RANGO PARA LA RELACIÓN (F) MERONIMIA CANÓNICA-CANÓNICA ..................................................... 54
TABLA 4.20. DOMINIO Y RANGO PARA LA RELACIÓN (G) MERONIMIA CANÓNICA-CANÓNICA .................................................... 54
TABLA 4.21. DOMINIO Y RANGO PARA LA RELACIÓN (H) MERONIMIA CANÓNICA-CANÓNICA .................................................... 55
TABLA 4.22. DOMINIO Y RANGO DE LA RELACIÓN (I) MERONIMIA CANÓNICA-CANÓNICA ......................................................... 55
TABLA 4.23. DOMINIO Y RANGO PARA LA RELACIÓN (J) MERONIMIA CANÓNICA-CANÓNICA ..................................................... 56
TABLA 4.24. DOMINIO Y RANGO PARA LA RELACIÓN (K) MERONIMIA CANÓNICA-FACULTATIVA ................................................. 56
TABLA 4.25. DOMINIO Y RANGO PARA LA RELACIÓN (L) MERONIMIA CANÓNICA-FACULTATIVA ................................................. 57
TABLA 4.26. DOMINIO Y RANGO PARA LA RELACIÓN (M) MERONIMIA CANÓNICA-FACULTATIVA ................................................ 57
TABLA 4.27. DOMINIO Y RANGO PARA LA RELACIÓN (N) MERONIMIA FACULTATIVA -CANÓNICA ................................................ 58
TABLA 4.28. DOMINIO Y RANGO PARA LA RELACIÓN TOPOLÓGICA ....................................................................................... 58
TABLA 4.29. DOMINIO Y RANGO PARA LA RELACIÓN PRODUCE............................................................................................. 58
TABLA 4.30. DOMINIO Y RANGO PARA LA RELACIÓN REGISTRA ............................................................................................. 59
TABLA 4.31. CONJUNTO DE PROPIEDADES PARA RELACIONES MERONÍMICAS ........................................................................... 60
TABLA 4.32. PROPIEDADES DE CU-1 CREAR GRAFO DEL SITIO WEB ...................................................................................... 65
TABLA 4.33. PROPIEDADES DE CU-2 CREAR ARCHIVO XML A PARTIR DE UN GRAFO................................................................. 66
TABLA 4.34. PROPIEDADES DE CU-3 GENERAR GRAFO A PARTIR DE UN ARCHIVO XML............................................................. 66
TABLA 4.35. PROPIEDADES DE CU-4 GENERAR ESTRUCTURA DEL SITIO WEB .......................................................................... 66
TABLA 4.36. PROPIEDADES DE CU-5 CREAR REPORTE DE ERRORES ....................................................................................... 67
TABLA 4.37. PROPIEDADES DE CU-6 VALIDAR ESTRUCTURA DEL SITIO WEB ........................................................................... 67
TABLA 6.1. CASO DE PRUEBA EDWEB-101-001 CARGA DE LA ONTOLOGÍA .......................................................................... 93
TABLA 6.2. CASO DE PRUEBA EDWEB-101-002 CREAR UN GRAFO MANUAL......................................................................... 94
TABLA 6.3. CASO DE PRUEBA EDWEB-101-003 GENERAR UN ARCHIVO XML ...................................................................... 94
Página iv
TABLA 6.4. CASO DE PRUEBA EDWEB-101-004 GENERAR UN GRAFO AUTOMÁTICAMENTE ..................................................... 96
TABLA 6.5. CASO DE PRUEBA EDWEB-101-005 REPORTAR ENLACES INDEFINIDOS................................................................. 97
TABLA 6.6. CASO DE PRUEBA EDWEB-101-006 VALIDAR EL GRAFO.................................................................................... 98
TABLA 6.7. CASO DE PRUEBA EDWEB-102-001 GENERAR ESTRUCTURA DEL SITIO WEB ......................................................... 99
TABLA 6.8. DESCRIPCIÓN DE GRAFOS DE LOS CASOS DE PRUEBA DE LA HERRAMIENTA EDWEB ................................................. 101
Página v
Capítulo 1. Introducción
En el presente capítulo se exponen los antecedentes que dieron origen a la tesis; se describe el
problema al cual se dio solución; se definen los objetivos de la presente investigación; sus
alcances y limitaciones; y los beneficios que aporta. Finalmente, en el último apartado, se
describe la organización del documento.
Capítulo 1. Introducción
1.1. Antecedentes
La World Wide Web (WWW, Red Global Mundial) fue creada entre 1989 y 1990 por Tim
Berners-Lee como la culminación del hipertexto, iniciando así una nueva era de difusión
masiva de la información. A medida que la Web evolucionó se incrementaron sus funciones,
apareciendo posteriormente los actuales navegadores y las interfaces gráficas así como
diversos servicios en función de las necesidades del usuario. Éstas pueden ser de tipo
informativo, transaccionales, de comunidad, entretenimiento, comerciales, de gobierno, de
educación, personales, entre otras.
Con la evolución de internet surgió la necesidad de organizar la información y
mejorar su explotación. Así nacieron conceptos tales como la Web semántica [W3C 2008] y se
hizo popular el uso de ontologías, utilizadas desde hace varios años en diversas áreas de
conocimiento, que permitieron comprender la información distribuida en la WWW
Las ontologías se fundamentan en la representación de la realidad por medio de
conceptos, es decir, la abstracción de ciertos aspectos de entidades que existen en un dominio
específico. Asimismo definen el modo en que dichas entidades se relacionan entre ellas.
Tienen una posición central en la visión de la Web semántica, que se refiere a la integración y
representación de datos, así como la manera en que se relacionan con los objetos de la vida
real.
El término semántico fue introducido por el propio Berners-Lee, quien desde el inicio
de la WWW consideró la inclusión de información en las páginas de los sitios Web.
Actualmente existen lenguajes y estándares para la representación de datos y la
formalización de ontologías como: XML, RDF, RDF Schema y OWL, descritos en [OWL 2008]
La Web semántica brinda una mejora a internet porque proporciona información
adicional que aporta significado y relaciones entre datos. Sin embargo, su propósito es
facilitar la interoperabilidad entre los sistemas de información para reducir la intervención
humana, es decir, que sea transparente para un usuario del sistema.
Esta tesis proporciona un enfoque dirigido al arquitecto de sitios Web, sin ignorar el
impacto que tendrá en los usuarios finales del sitio. Su principal contribución consiste en una
metodología basada en los conceptos de diseño de ontologías para agregar significado a las
estructuras de sitios Web de un dominio específico dejando a un lado el contenido de las
páginas.
La investigación realizada defiende la idea de que no sólo el contenido presenta
elementos que son utilizados para una mejor descripción del sitio Web. Sostiene además que
la arquitectura posee conceptos que guardan ciertas relaciones entre ellos, en forma tal que
ayudan a conceptualizar y definir un sitio Web para que su generación y mantenimiento sean
más sencillos para el responsable del mismo.
Página 2
Capítulo 1. Introducción
1.2. Descripción del problema
En la actualidad existen millones de sitios de diferentes ámbitos, cada uno creado de acuerdo
a patrones de diseño que consideran aspectos estéticos más que de organización del sitio.
Desde el comienzo de la WWW, Berners-Lee intentó integrar aspectos semánticos en
los sitios Web, sin conseguirlo. En consecuencia se desencadenó un problema relacionado con
la creación de los mismos. Actualmente muchas páginas no poseen metadatos que describan
la información contenida en los sitios, ni datos sobre su estructura.
A raíz de la creación de la Web semántica se integró la parte semántica al contenido
de las páginas. Sin embargo se ha dejado a un lado la arquitectura de los sitios Web.
Actualmente existen diferentes maneras de crear un sitio Web, utilizando plantillas
Cascading Style Sheets (CSS, Hoja de Estilo en Cascada) [W3C 2008c], mapas de sitios [DICIF
2008], mapas conceptuales [Novak 84], entre otras. Hay además herramientas que permiten la
implementación de estas técnicas para la elaboración de sitios Web.
El uso de plantillas CSS se aplica al diseño Web, siendo de carácter estético y no de
composición. Los mapas de los sitios se elaboran siguiendo un patrón de grafo dirigido, en el
que se establece la navegación del usuario entre páginas. Pero este grafo no incluye un
etiquetado que establezca la relación directa entre los elementos que componen la estructura.
En el caso de los mapas conceptuales, el usuario establece manualmente las relaciones
entre los conceptos. Sin embargo, estas relaciones no presentan algún tipo de validación y
mucho menos ayudan a definir su semántica.
Los métodos anteriores muestran la estructura de un sitio, proporcionan vistas del
acomodo de los elementos de las páginas y sugieren un modo de diseñar el sitio Web, pero
no definen el significado de su estructura o, si lo hacen, no permiten su posterior utilización,
a diferencia del enfoque presentado en este trabajo.
La importancia del problema señalado radica en la relevancia que adquiere la
estructura en el proceso de elaboración del sitio Web debido a que es la base que soporta la
organización lógica de su información y su posterior mantenimiento. Una buena arquitectura
del sitio Web asegura que el proceso de diseño sea más eficiente, lo cual no se logra si el
diseñador no es capaz de expresar de manera clara cómo está conformada la estructura.
1.3. Objetivo
El objetivo de este trabajo de investigación es proporcionar elementos que permitan al
arquitecto de sitios Web construir estructuras dotadas de significado que proporcionen
mayor grado de comprensión y ayuden en la creación y mantenimiento del sitio. Para
cumplir con este objetivo, se distinguen las siguientes actividades:
Página 3
Capítulo 1. Introducción



Estudiar los conceptos referentes al diseño de ontologías y la manera en que se
aplican a la arquitectura de sitios Web.
Desarrollar una metodología para construir sitios Web basada en diseño de
ontologías.
Elaborar un editor de sitios Web para validar la metodología de construcción de sitios
Web.
1.4. Justificación
En el presente apartado se indican los puntos que justifican el trabajo de investigación
realizado.
En base a una larga búsqueda no se encontraron trabajos que definan un modo de
estructurar los sitios Web o que involucren una lógica de construcción al momento de
realizar el modelado. La propuesta más cercana a este trabajo se refiere al uso de
mapas conceptuales, en los que las relaciones y los conceptos sólo tienen significado
para el arquitecto del sitio Web y no un significado preestablecido. Otros trabajos
como [Adobe 2007], [Liechti 1998], [IHCM 2007], [TouchGraph 2007a], [Brain 2007] y
[Jin 2001] sólo han desarrollado herramientas que visualizan el grafo del sitio Web.
El uso de sitios Web se ha diversificado y extendido con rapidez. De acuerdo a las
estadísticas proporcionadas por el sitio [Netcraft 2008], en marzo del 2008 existían
162,662,052 sitios Web y para julio del 2008 la cantidad aumentó a 175,480,931 . Las
cifras anteriores confirman la necesidad de incorporar semántica a la organización de
los sitios Web.
Figura 1.1. Número total de sitios Web. Octubre 1995-Julio 2008
Fuente: http://news.netcraft.com/archives/2008/07/index.html
Página 4
Capítulo 1. Introducción
Estudios realizados por el Instituto para el Conocimiento Humano y Máquina
(Institute for Human and Machine Cognition), revelan que el ser humano aprende y
recuerda el conocimiento significativo a través de un conjunto de relaciones entre
conceptos. Los mapas conceptuales aplican esta idea y ayudan a las personas a
examinar diversos campos de conocimiento [Cañas 2001]. Utilizar elementos como
mapas de conceptos en las estructuras de sitios Web implica que será más fácil para
los diseñadores y usuarios utilizar estos sitios. Sin embargo, sería de mayor utilidad
formalizar dichas relaciones y conceptos, tal como se establece en este trabajo.
El modelo relacional evolucionó hasta convertirse en el modelo entidad-relación que
proporcionó semántica a su predecesor, pues el modelo relacional carecía de poder
expresivo. Dicha evolución coloca al modelo relacional en un nivel inferior
comparado con el modelo entidad-relación [Silberschartz 2006]. Integrar un
componente semántico a la arquitectura de sitios Web, de la misma forma que el
modelo entidad-relación añadió semántica al modelo relacional, conducirá a mejoras
en la construcción en su estructura. De la misma manera, significaría una evolución
con respecto a las herramientas utilizadas en la actualidad para producir grafos de
sitios Web, debido a que estas herramientas trabajan de un modo similar al modelo
relacional.
1.5. Alcances
A continuación se listan los puntos cubiertos en la tesis:







Estudiar las metodologías para diseño de ontologías.
Analizar una muestra del dominio de sitios Web de educación, como caso de estudio.
Estudiar las relaciones aplicables en la construcción de sitios Web, partiendo del
análisis de relaciones definidas en la lingüística y en UML.
Definir formalmente las relaciones encontradas en el caso de estudio.
Definir formalmente las clases de conceptos encontradas en el caso de estudio.
Crear una herramienta para la edición de sitios Web con fines de prueba de la
metodología propuesta.
El editor creado permite al usuario crear sitios Web y almacenar archivos descriptivos
de sus estructuras, así como generar páginas en blanco de dicha estructura.
1.6. Limitaciones
Se listan los puntos no cubiertos que delimitan el alcance de este trabajo.


La herramienta propuesta no ofrece la funcionalidad de crear un sitio Web de manera
automática, sino únicamente una estructura relacionada del sitio conformada de
páginas en blanco que pueden ser editadas posteriormente por medio de
herramientas de diseño.
Las relaciones definidas no contemplan elementos dinámicos ni de contenido del sitio
Web (imagen, texto, etc.).
Página 5
Capítulo 1. Introducción




Se contemplan en los casos de uso la creación de un sitio Web nuevo, visualización de
grafos creados a partir de archivos XML existentes y evaluación de un sitio Web
editado con la herramienta.
En el caso de la creación de un sitio Web, no se etiqueta automáticamente el grafo,
sino que el diseñador se encarga de tomar las relaciones convenientes para utilizarlas
según se da el caso.
Las pruebas de usabilidad realizadas validan la hipótesis de las mejoras con respecto
a la construcción y mantenimiento del sitio, no las posibles mejoras que encuentra un
usuario al navegar por el sitio, es decir, estas pruebas se dirigen a quien crea el sitio y
no a los usuarios finales del mismo.
No se contemplan elementos de diseño gráfico de la interfaz de usuario.
1.7. Beneficios
Los beneficios que derivados de esta tesis de investigación se listan a continuación:






La metodología establece conceptos y relaciones predefinidas como soporte en la
creación de sitios Web, elementos que hasta el momento no son ofrecidos por otras
metodologías de construcción de sitios Web.
La metodología propuesta incluye la creación que una ontología que puede
compartirse y extenderse, por lo que puede aplicarse a otros dominios de sitios Web.
Se valida la semántica de las relaciones predefinidas y su equivalente en una
implementación.
El editor permite agregar una estructura lógica del sitio Web, partiendo de la
metodología propuesta.
El diseñador del sitio se beneficia al poseer una herramienta que, al etiquetar el sitio,
le permite más adelante, en caso de ser necesario, realizar cambios a la estructura de
un modo más fácil.
Los sitios Web estructurados a partir de su semántica pueden brindar un mayor grado
de comprensión para el diseñador del sitio.
1.8. Organización del documento
El documento de tesis se organiza en las secciones que se listan a continuación:
Capítulo 1: Introducción. Ubica al lector en el contexto del trabajo de investigación.
Hace referencia al panorama general del tema desarrollado.
Capítulo 2: Marco teórico. Contiene el conjunto central de conceptos que ayudan a la
comprensión de la investigación.
Capítulo 3: Estado del arte. Resume los trabajos relacionados, encontrados en la
literatura y que sirven como punto de referencia y comparación con el trabajo
propuesto.
Capítulo 4: Análisis y diseño de la solución.
Capítulo 5: Desarrollo de la investigación.
Página 6
Capítulo 1. Introducción
Capítulo 6: Implementación. Incluye elementos de codificación y las clases utilizadas
en cada caso de uso propuesto en el análisis.
Capítulo 7: Pruebas. Se desarrollan los casos de prueba previstos en el plan de
pruebas para el editor creado.
Capítulo 8: Conclusiones. Proporciona los resultados y observaciones finales de este
trabajo de investigación.
Página 7
Capítulo 2. Marco teórico
Se expone a continuación, el conjunto de conceptos que sirven de guía al lector para tener una
mejor comprensión del trabajo desarrollado.
Capítulo 2. Marco teórico
2.1. Concepto
Un concepto, de acuerdo a la recopilación de Sager en diversas instituciones
estandarizadas [Sager 1990], puede definirse de acuerdo a las siguientes acepciones:
Los conceptos son constructos mentales, abstracciones que se pueden emplear para
clasificar los distintos objetos del mundo exterior e interior (Recomendación Estándar
Británica para la selección, formación y definición de términos técnicos).
Los objetos de todos los campos de conocimiento y actividades humanas, las cosas,
sus propiedades, cualidades, fenómenos, etc., se representan mediante conceptos
(Propuesta de revisión del Reino Unido para el documento de la ISO R/704).
Un concepto es un constructo mental para la clasificación de objetos individuales del
mundo exterior e interior por medio de una abstracción más o menos arbitraria
(Borrador de 1968 del estándar ISO 704).
Un concepto es una unidad de pensamiento, generada mediante la agrupación de
objetos individuales relacionados entre sí por características comunes (Borrador de
documento DIN, alemán).
Un concepto es un grupo coherente de juicios sobre un objeto cuyo núcleo se
compone de aquellos juicios que reflejan las características inherentes del objeto
(Propuesta de la Unión Soviética para la revisión del documento ISO 704).
Un concepto es una unidad de pensamiento.
2.2. Sitio Web
Un sitio Web es una serie o colección de páginas que definen la estructura del mismo y se
identifican por una única dirección, Localizador Uniforme de Recurso (URL) [Cooley 2000].
Un sitio Web puede ser modelado como un grafo dirigido con nodos Web y arcos
Web, donde los nodos corresponden a tipos de páginas (tales como HTML, PHP, ASP, CGI,
JSP, etcétera.), y los arcos corresponden a los hipervínculos interconectando a las páginas
Web [Lee 2006].
2.3. Arquitectura de sitios Web
De acuerdo con [Greenwich 2007], se define arquitectura de sitios Web como el arte y ciencia de
crear buenos sitios Web, en donde se proporciona una amplia aproximación a la planeación y
diseño de sitios Web. Se le llama arquitectura, porque, tal como lo hace arquitectura
tradicional, implica aspectos de ingeniería, estéticos y funcionales, siendo algunos de sus
requerimientos:



Contenido útil y bien organizado [Utilidad y comodidad].
Buenas técnicas de diseño [Eficiencia y firmeza].
Buen diseño visual [Belleza].
Página 9
Capítulo 2. Marco teórico
La arquitectura de sitios Web requiere especial atención al contenido Web, el plan de
negocio de la empresa, la usabilidad, el diseño de interacción, la arquitectura de la
información y el diseño Web.
Los puntos tradicionales de comodidad, firmeza y satisfacción que pueden guiar la
arquitectura de sitios Web se encuentran dentro de las etapas que inician con la planeación
del contenido Web hasta el manejo del mismo, de la manera en que se encuentran en la
arquitectura física y otras disciplinas de diseño.
2.4. Ontología
Especificación explícita y formal de una conceptualización compartida [Gruber 1993]. En esta
definición, convertida ya en estándar, conceptualización se refiere a un modelo abstracto de
algún fenómeno del mundo del que se identifican los conceptos que son relevantes; explícito
hace referencia a la necesidad de especificar de forma consciente los distintos conceptos que
conforman una ontología; formal indica que la especificación debe representarse por medio de
un lenguaje de representación formalizado y compartida refleja que una ontología debe, en el
mejor de los casos, dar cuenta de conocimiento aceptado (como mínimo, por el grupo de
personas que deben usarla).
La ontología es una descripción de conceptos pertenecientes a un dominio, así como
las relaciones existentes entre ellos. El estudio de las ontologías nace de la filosofía y proviene
de las etimologías griegas “ontos” (el ser) y “logos” (estudio), que significaría el estudio del
ser.
El término ontología en informática hace referencia al intento de formular un
exhaustivo y riguroso esquema conceptual dentro de un dominio dado, con la finalidad de
facilitar la comunicación y la compartición de la información entre diferentes sistemas.
2.5. Diseño Web
Búsqueda multidisciplinaria perteneciente al planeamiento y producción de sitios Web,
incluyendo, pero no limitada a: desarrollo técnico, estructura de la información, diseño visual
y entrega a través de la red [Powell 2002].
Hay cinco áreas que cubren la mayoría de las facetas del diseño Web:



Contenido: incluye la forma y organización del contenido del sitio. Puede tener un
rango que va desde cómo el texto es escrito hasta cómo es organizado, presentado y
estructurado, usando tecnologías tales como HTML.
Visual: se refiere a la disposición de la pantalla usada en un sitio. La disposición es
creada usualmente con HTML, CSS o incluso Flash y puede incluir elementos gráficos
de tipo decorativo o para navegación. El aspecto visual del sitio es el más obvio del
diseño Web, pero no el único o el más importante.
Tecnológico: mientras el uso de varias tecnologías Web de capa, como HTML o CSS,
caen dentro de esta categoría, tecnología en este contexto se refiere comúnmente a los
Página 10
Capítulo 2. Marco teórico


diversos elementos interactivos del sitio, particularmente aquellos construidos usando
técnicas de programación. Tales elementos comprenden los lenguajes de guión del
lado cliente, como JavaScript, y las aplicaciones del lado servidor, como los Java
Servlets.
Envío: la velocidad y confiabilidad del envío de un sitio sobre internet o una red
interna de una corporación está relacionada con el software y hardware del servidor
usado y la arquitectura de red empleada.
Propósito: la razón de que el sitio exista, regularmente relacionado a aspectos
económicos, es la parte más importante del diseño Web. Este elemento debe ser
considerado en todas las decisiones que envuelvan a las otras áreas.
2.6. Usabilidad
La usabilidad, de acuerdo a [Nielsen 2003], es un atributo de calidad que mide lo fáciles de
usar que son las interfaces de usuario. La palabra usabilidad se refiere además a los métodos
para proveer facilidad de uso durante el proceso de diseño.
La usabilidad se define por cinco componentes de calidad:





Aprendizaje: qué tan fácil es para los usuarios lograr las tareas básicas la primera vez
que se enfrentan al diseño.
Eficiencia: una vez que los usuarios han aprendido el diseño, qué tan rápido
desempeñan las tareas.
Recordable: cuando los usuarios usan el diseño después de un periodo de no usarlo,
qué tan fácil se restablece su habilidad.
Errores: cuántos errores comete el usuario y qué tan fácil se recupera de ellos.
Satisfacción: qué tan placentero resulta el diseño para el usuario.
2.7. Mapa conceptual
Los mapas conceptuales, desarrollados por Novak [Novak 1984] son usados para representar
gráficamente conocimiento en todos los dominios, bajo la idea de que, en esta forma, el
conocimiento puede ser fácilmente entendido por otros.
De acuerdo a los trabajos de investigación de Cañas [Cañas 2003], los mapas
conceptuales están conformados de conceptos y relaciones entre ellos. Se define concepto
como una regularidad percibida en un evento u objeto, o una serie de eventos u objetos,
designado por una etiqueta. Los conceptos se encierran usualmente en círculos o cajas y las
relaciones entre conceptos son indicadas por líneas de conexión que los enlazan. Las palabras
en los enlaces especifican las relaciones entre los conceptos. La etiqueta para la mayoría de los
conceptos es una sola palabra, aunque algunas veces se utilizan símbolos como + o %. La
tripleta concepto-enlace-concepto conforma una proposición, es decir, una sentencia
significativa sobre algún objeto o evento.
Página 11
Capítulo 2. Marco teórico
Otra característica de los mapas conceptuales es que los conceptos son representados
en forma jerárquica con los conceptos más inclusivos en la parte superior del mapa y los
conceptos más específicos debajo del mapa.
Además, algo importante y característico de los mapas conceptuales es la inclusión de
enlaces cruzados. Esto crea una relación explícita entre conceptos en diferentes regiones o
dominios dentro del mapa conceptual. Los enlaces cruzados muestran cómo un concepto,
dentro de un dominio de conocimiento representado en el mapa, está relacionado con otro
concepto en otro dominio mostrado en el mapa.
Los mapas conceptuales se aplican en diferentes áreas, una de ellas es la navegación
en internet.
2.8. XML
El metalenguaje Extensible Markup Language (XML, Lenguaje de Marcas Extensible) [W3C
2008b] es una simplificación y adaptación del Standard Generalized Markup Language (SGML,
Lenguaje de Marcación Estandarizado) y permite definir la gramática de lenguajes específicos
(de la misma manera que HTML es a su vez un lenguaje definido por SGML) en un formato
de texto simple y flexible. Por lo tanto XML no es realmente un lenguaje en particular, sino
una manera de definir lenguajes para diferentes necesidades. Algunos de los lenguajes que
usan XML para su definición son: eXtensible Hypertext Markup Language (XHTML, Lenguaje
Extensible de Marcado de Hipertexto), Scalable Vector Graphics (SVG, Gráfico Vectorial
Escalable), Mathematical Markup Language (MathML, Lenguaje de Marcado Matemático).
XML no ha nacido sólo para su aplicación en Internet, sino que se propone como un
estándar para el intercambio de información estructurada entre diferentes plataformas. Se
puede usar en bases de datos, editores de texto, hojas de cálculo y casi cualquier cosa
imaginable.
2.9. OWL
Web Ontology Language (OWL) está diseñado para ser usado por aplicaciones que necesitan
procesar el contenido de la información en lugar de solo presentar información al ser
humano. OWL proporciona una mayor interpretabilidad del contenido Web que el soportado
por XML, RDF y RDF Schema (RDF-S), proveyendo vocabulario adicional junto con
semánticas formales. OWL tiene tres sublenguajes incrementalmente expresivos: OWL Lite,
OWL DL y OWL Full [Mc GUINESS 2004].
2.10. Relación
Las relaciones en las ontologías se representan a través de tripletas, donde los elementos se
toman de dos conjuntos C y R, cuyos elementos son llamados conceptos y relaciones.
Página 12
Capítulo 2. Marco teórico
De este modo existe una función de relación entre dos conceptos del conjunto C,
donde uno es el dominio y otro el rango, enlazados por medio de un elemento del conjunto R
de relaciones.
2.10.1. Relación de hiperonimia-hiponimia
Una relación léxica de tipo genérico-específico [SIL 2008] es una asociación jerárquica entre
unidades léxicas con un significado más amplio y general y otra unidad léxica con un
significado más reducido y específico.
Dentro de esta relación, se envuelve la asociación entre:


Hipónimo: una unidad léxica (X) específica, con mayor complejidad semántica.
Hiperónimo: una unidad léxica (Y) general, con menor complejidad semántica.
X es un hipónimo de Y si:


La sentencia “X es necesariamente Y” es normal.
La sentencia “Y es necesariamente X” no es normal.
2.10.2. Relación Sintagmática
El sintagma es un término acuñado por [Saussure 1983], quien lo define así:
«Las palabras contraen entre sí, en virtud de su encadenamiento, relaciones fundadas
en el carácter lineal de la lengua, que excluye la posibilidad de enunciar dos elementos a la
vez. Los elementos se alinean uno tras otros en la cadena del habla. Estas combinaciones que
se apoyan en extensión se pueden llamar sintagmas.
El sintagma se compone de dos o más unidades consecutivas (p. ej. re-leer; contra todos;
la vida humana; Dios es bueno; si hace buen tiempo, saldremos; etc.) y colocado en un sintagma un
término sólo tiene valor porque se opone al que le precede o al que le sigue o a ambos...La
noción sintagma no sólo se aplica a las palabras, sino también a los grupos de palabras, a las
unidades complejas de toda dimensión y de toda especie (palabras compuestas, derivadas,
miembros de oración, oraciones enteras)...La oración es el tipo por excelencia de sintagma».
Para los fines propuestos se utilizan los sintagmas predicativos, definidos por
[Trubetzkoy 1939], que se encuentran compuestos por un sujeto y un predicado.
Página 13
Capítulo 2. Marco teórico
2.10.3. Relación de meronimia
La meronimia es una relación semántica no-simétrica entre los significados de dos palabras
dentro del mismo campo semántico1. Se denomina merónimo a la palabra cuyo significado
constituye una parte del significado total de otra palabra, denominada ésta holónimo. Por
ejemplo, dedo es merónimo de mano y mano es merónimo de brazo; a su vez, brazo es holónimo
de mano y mano es holónimo de dedo.
La relación de meronimia se define de la siguiente manera [DÍEZ 1999]:



2.10.3.1.
Es la relación que existe entre partes y todo.
Es diferente de la hiponimia: un brazo no es un tipo de cuerpo, sino parte del
cuerpo.
Están sujetas a construcciones posesivas inalienables (frente a las alienables como
Juan tiene un libro o El libro de Juan). Esto quiere decir que las construcciones
posesivas no pueden transmitirse ni cederse.
Mereología
Mereología es la teoría de las relaciones de parte y todo y las relaciones de partes en un todo.
Sus raíces comienzan en la filosofía, con el atomismo Presocrático y los escritos de Platón y
Aristóteles.
En todas las teorías filosóficas de partes, la relación meronimia significa un orden
parcial; es decir, una relación reflexiva, antisimétrica y transitiva, representada por los
siguientes axiomas conocidos como Ground Mereology, pertenecientes a la Mereología Minimal:
x es parte de sí mismo
Si x es parte de y y y es parte de x, entonces x y y son iguales
Si x es parte de y y y es parte de z, entonces x es parte de z
Se define también dentro de esta teoría la parte propia con sus correspondientes
axiomas:
x no es parte propia de sí mismo
1
Campo semántico: conjunto de palabras o elementos significantes con significados relacionados.
Página 14
Capítulo 2. Marco teórico
Si x es parte propia de y, entonces y no es parte propia de x
Si x es parte propia de y y y es parte propia de z, entonces x es parte propia de z
Las relaciones anteriores pueden denominarse “primitivas”, por lo que la
Mereología Minimal evolucionó a lo que se conoce como Mereología Extensional y ésta, a
su vez, a la Mereología Clásica, que incluye las operaciones de suma, producto, diferencia
y complemento.
2.10.3.2.
Meronimias centrales
Las meronimias centrales son un conjunto de relaciones encontradas en el trabajo de [Cruse
1986] que tienen su fundamento en relaciones de tipo léxico paradigmático y se aplican entre
partes y todos de entidades físicas cohesionadas y tangibles, tomando en cuenta un factor de
interferencia llamado “Opcionalidad” (Tabla 2.1).
Tabla 2.1. Relaciones centrales de meronimia con factor de interferencia "Opcionalidad"
Relación
Meronimia
Descripción
Canónica-Canónica2
Meronimia Facultativa-Facultativa3
Meronimia Facultativa-Canónica4
Meronimia Canónica-Facultativa5
Todo con parte obligatoria, parte obligatoria de
un todo.
Todo con parte opcional, parte opcional de un
todo.
Todo con parte opcional, parte obligatoria de un
todo.
Todo con parte obligatoria, parte opcional de un
todo.
Existen otras meronimias centrales con factores de interferencia tales como: congruencia,
espectro de sentidos y la holo-meronimia.
2.10.3.3.
Meronimias no centrales
Las meronimias no centrales se encuentran, al igual que las centrales, en los trabajos de
[Cruse 1986]. Las meronimias tomadas en cuenta en lo consecutivo son las colectividades,
que se refieren a un tipo de entidades menos integrado estructuralmente que los objetos y sus
partes son todas independientes –y a menudo diferenciadas- de un tipo más básico.
2
Meronimia C-C (en este documento)
Meronimia F-F (en este documento)
4
Meronimia F-C (en este documento)
5
Meronimia C-F (en este documento)
3
Página 15
Capítulo 2. Marco teórico
Tabla 2.2. Meronimias no centrales de tipo colectividad
Relación
Descripción
Grupo-Miembro
Asociaciones de humanos con un propósito o
función común.
Agrupación con atributos comunes.
Agrupación de objetos inanimados.
Clase-Miembro
Colección-Miembro
Otros tipos de meronimias no centrales son: lugares, ingredientes, partículas y
medidas.
2.10.3.4.
Propiedades secundarias de las relaciones parte-todo
A continuación se describen brevemente las propiedades de las meronimias contempladas en
la Mereología Minimal, descritas en [Guizzardi 2005]. Estas propiedades son llamadas
características secundarias y no están contempladas en las teorías de mereología clásica.







Parte exclusiva: x de tipo A es una parte (propia) exclusiva de otro individuo y de tipo
B si y sólo si y es el único B que tiene a x como parte.
Relación parte-todo exclusiva general (Gx): un universal A se relaciona con un B
universal por una relación de éste tipo, si cada instancia x de A tiene una parte
exclusiva de tipo B. Para toda x que pertenece a A existe una y que pertenece a B, tal
que x es parte de y.
Parte compartida: una parte compartida representa que las instancias de una clase no
pueden ser compartidas, pero el concepto representado por esa clase sí. Las partes
compartidas se consideran como roles explícitos. La etiqueta {conceptual} es
propuesta por [Saksena 1998], para representar el concepto compartido.
Dependencia existencial: denota existencia. Un individuo x es existencialmente
dependiente sobre otro individuo y, simbolizado como
si y sólo si y debe
existir cuando x existe o formalmente:
Parte esencial: un individuo x es una parte esencial de y si y sólo si y es
existencialmente dependiente de x y x es necesariamente una parte de y. Se distingue
a la parte esencial con la etiqueta {essential=true}.
Parte obligatoria: un individuo x es una parte obligatoria de otro individuo y si y sólo
si y es genéricamente dependiente de un universo U que x instancia y y tiene
necesariamente como parte una instancia de U.
Individual extensional: un individuo y es llamado un individual extensional si y sólo
si para cada x tal que x es parte de y, x es una parte esencial de y.
Página 16
Capítulo 2. Marco teórico

Parte inseparable: un individuo x es una parte inseparable de otro individuo y si y
sólo si x es existencialmente dependiente sobre y y si x es necesariamente una parte de
y. Se distingue la parte inseparable con la etiqueta {inseparable=true}.

Todo obligatorio: un individuo y es un todo obligatorio para un individuo x si y sólo
si x es necesariamente parte de una instancia individual de U.
2.10.4. Relación topológica
La relación topológica [Díez 1999] es una relación léxica paradigmática que ocurre entre una
unidad léxica que denota un contenedor, área o duración temporal y una unidad léxica que
denota lo que está contenido en ellos o en un lugar alrededor. Es una relación que puede ser
confundida con una meronimia.
El dominio de la relación es un sustantivo (objeto de referencia) y el rango de la
misma es otro sustantivo (objeto contenido o colocado en un lugar alrededor del objeto de
referencia).
2.11. UML
Unified Modeling Language (UML, Lenguaje de Modelado Unificado) es un lenguaje para
especificar, visualizar, construir y documentar los artefactos de los sistemas de software, así
como para modelar negocios y otros sistemas que no son de software [UML 2005].
2.11.1. Propiedades de las relaciones de agregación y composición para UML
En [Manoli 2004] se plantea una diferenciación de las relaciones de agregación, composición
y asociación a partir de ciertas características de UML, sin embargo, no es posible aplicarlas
de manera directa como relaciones entre entidades de un sitio Web, debido a la naturaleza de
las mismas. Es por ello que, a partir de la teoría sobre relaciones de este tipo se ha hecho una
adaptación de las mismas.



Multiplicidad: la multiplicidad determina cuántos objetos participan en la relación, si
una multiplicidad mínima es 0, indica que la relación es opcional, mientras que una
multiplicidad mínima mayor o igual a 1 indica una relación obligatoria.
Propagación de borrado: indica qué acción debe ser ejecutada cuando un objeto es
borrado (sobre sus enlaces o sus objetos asociados).
o {Restringida}: si el objeto tiene enlaces, no debe ser borrado.
o {Cascada}: si el objeto tiene enlaces, los enlaces y los objetos asociados deben
ser borrados.
o {Enlace}: si el objeto tiene enlaces, los enlaces deben ser borrados, no los
objetos asociados.
Comportamiento temporal: especifica que una instancia puede ser conectada o
desconectada dinámicamente (creando o destruyendo un enlace) con una o más
Página 17
Capítulo 2. Marco teórico
instancias de una clase relacionada (por medio de relaciones de
asociación/agregación) durante su existencia.
o Dinámico: indica que es posible crear o destruir un enlace durante el tiempo
de vida completo del objeto.
o Estático: indica que el comportamiento anteriormente descrito solo es posible
durante el proceso de creación.
2.12. Sistemas de navegación de sitios Web
Los sistemas de navegación son una pieza importante en la experiencia del usuario del sitio
Web. De acuerdo a Rosenfeld [Rosenfeld 2006] existen tres conjuntos de navegación que se
describen a continuación.
2.12.1. Conjunto primario de navegación
Este conjunto indica los accesos invariables del sitio, como una estructura de árbol, donde la
página principal es el nodo raíz del que se desprenden los hijos, conformando un sistema de
navegación jerárquico. Los enlaces de este tipo son estructurales, pues se encuentran
definidos de manera fija en estructuras de acceso como menús y no embebidos en la
información de las páginas, como se presenta en los sistemas de hipertexto6.
2.12.2. Conjunto secundario de navegación
Posee enlaces que normalmente son temporales, pues representan información relevante
dentro del sitio en un momento específico, por lo que pueden desaparecer en cuanto pierden
su carácter de importancia. Esta información proviene también de secciones internas del sitio,
creando enlaces que rompen con el esquema de jerarquía orientándose a un estilo de Web
pura.
Estos enlaces de tipo hipertextual se forman entre los elementos del árbol
proporcionando mayor flexibilidad a la navegación y añadiendo o retirando componentes.
2.12.3. Conjunto terciario de navegación
Contiene enlaces que aparecen en todo el sitio, por ejemplo, la función de búsqueda. A este
esquema se le conoce también como sistema de navegación global.
6
Los sistemas de hipertexto se enfocan al contenido y sus relaciones.
Página 18
Capítulo 2. Marco teórico
La identificación de los esquemas de organización en el sitio permite identificar
conceptos que se repiten en cada muestra e incluso detectar las partes de la estructura donde
dichos conceptos se ubican.
Los conceptos encontrados en el dominio de sitios Web de educación se describen en
el diccionario del anexo A, aunque cabe aclarar que no son los únicos términos encontrados,
sino aquellos que se tomaron por su continua aparición.
Página 19
Capítulo 3. Estado del Arte
Este capítulo se enfoca en hacer una descripción de los trabajos y encontrados en la literatura
que se asemejan en ciertas características a la propuesta descrita en capítulos posteriores.
Estos trabajos sirven como un marco de referencia que ayuda a delimitar la investigación y a
encontrar aspectos de mejora que se toman en cuenta al momento de llevarla a cabo.
Capítulo 3. Estado del arte
3.1. WebTOC
WebTOC [Plaisant 1997] es una herramienta elaborada en Java que permite visualizar el
contenido de un sitio Web. La visualización se lleva a cabo a través de una tabla jerárquica
que organiza el contenido. Consta de dos partes:
1) Parser: analizador sintáctico que genera una tabla de contenidos (TOC7) para
representar el sitio.
2) Interfaz de usuario: un Applet de Java que muestra el TOC y proporciona interacción
dentro de un navegador convencional.
Figura 3.1. Ejemplo de aplicación de WebTOC
Fuente: ftp://ftp.cs.umd.edu/pub/hcil/Demos/WebTOC/Paper/WebTOC.html
Cada línea de texto del TOC representa un enlace a un documento, ya sea una página
Web o un archivo multimedia. En la parte superior izquierda de la figura 3.1 se observa un
panel de control con una barra de colores que representan cuatro tipos de elementos del sitio:
texto, imagen, audio y otros. Debajo de la barra de colores hay una escala para indicar el
tamaño de los archivos que inicia con 1kb (1000 bytes).
En la parte inferior izquierda de la figura 3.1 se despliega el TOC del sitio. Una barra a
la derecha de cada etiqueta de la jerarquía indica los tipos de archivos (tomando en cuenta la
barra de colores) y su tamaño.
7
Tabla de Contenido, por sus siglas en inglés.
Página 21
Capítulo 3. Estado del arte
Para generar automáticamente la tabla de contenidos primero se limita el análisis a los
enlaces locales del sitio Web8. Existe también una opción para mostrar enlaces externos en el
WebToc, sin indicar el tamaño o tipo de documentos. Posteriormente, el analizador sintáctico
genera un archivo con formato similar al HTML, que contiene información del servidor e
indica el inicio y fin de un grupo de enlaces e información sobre cada documento o enlace. El
archivo creado tiene una extensión “.hdir”.
3.2. DreamWeaver
Dreamweaver versión 8.0 [Adobe 2007] es un editor HTML profesional para diseñar,
codificar y desarrollar sitios, páginas y aplicaciones Web. Trabaja en un entorno de
codificación HTML manual y en un ambiente visual.
Esta herramienta ofrece entornos de codificación de otras funciones. Incluye
elementos para la edición de código y material de referencia sobre HTML, CSS, JavaScript,
ColdFusion Markup Languaje (CFML), Microsoft Active Server Pages (ASP) y JavaServer
Pages (JSP).
Además, Dreamweaver permite visualizar la carpeta local de un sitio en forma de
mapa visual de íconos vinculados, denominado mapa del sitio. Los mapas del sitio sirven
para añadir nuevos archivos a un sitio de Dreamweaver y para agregar, modificar o eliminar
vínculos.
3.2.1. Visualización del mapa del sitio
Para ver el mapa del sitio, se define primero una página principal, que puede ser cualquier
página del sitio Web. No es necesario que sea la página inicial, pues ésta es sólo el punto de
partida del grafo.
La herramienta proporciona un menú que muestra el sitio, el servidor o la unidad
actual. Luego se selecciona un archivo para que sea convertido en la página principal.
Dreamweaver señala cada elemento del mapa del sitio con colores:





8
Texto en rojo: indica un vínculo roto.
Texto en azul y marcado con un icono de globo terráqueo: indica un archivo de otro
sitio o un vínculo especial (por ejemplo, un correo electrónico o script).
Marca de verificación verde: indica un archivo protegido por el autor.
Marca de verificación roja: indica un archivo protegido por otro usuario.
Ícono de candado: indica un archivo de sólo lectura (Windows) o bloqueado
(Macintosh).
WebTOC sigue los enlaces o nombres de directorios para construir un árbol jerárquico del sitio.
Página 22
Capítulo 3. Estado del arte
Trabajar con un mapa de sitio permite seleccionar páginas, abrirlas para editarlas,
añadir nuevas páginas al sitio, crear vínculos entre archivos y cambiar títulos de páginas.
Incluso pueden observarse detalles de una sección específica de un sitio al convertir una rama
en el centro del mapa del sitio.
3.3. SGMapper
SGMapper [Liechti 1998] es una herramienta que utiliza metadatos SGF9 para generar mapas
de sitio interactivos. Los grafos estructurados proporcionan navegación escalable y la
posibilidad de editar grafos grandes. Brindan además una distinción entre enlaces jerárquicos
y asociativos. Estos dos tipos de enlaces se denominan explícitos. También se crean enlaces
asociativos implícitos para mostrar asociaciones entre subjerarquías.
3.3.1. Organización jerárquica del sitio Web
Un sitio Web puede organizarse como una jerarquía en base a metadatos SGF. Esta
organización refleja relaciones de agregación y proporciona facilidad de exploración.
Posteriormente los datos se envían a un servidor y se muestran en SGMapper.
El usuario selecciona un nodo para expandir la jerarquía. Si un usuario presiona dos
veces un nodo, la URL correspondiente se descarga y se muestra en el navegador.
3.3.2. Organización de red del sitio Web
La relación asociativa define la estructura de red de un sitio Web. Explorar una estructura de
red tendría los mismos resultados que explorar una jerarquía.
3.3.3. Enlaces asociativo implícito
Sean A y B dos subjerarquías con, por lo menos, un enlace asociativo explícito entre dos
elementos a y b, donde a pertenece a A y b pertenece a B, se dice que existe una relación
asociativa implícita entre A y B.
9
Formato de Grafo Estructurado, por sus siglas en inglés.
Página 23
Capítulo 3. Estado del arte
3.3.4. Formato SGF
Para describir el sitio Web se utiliza el formato SGF, que ayuda a codificar la información.
Existe una especificación SGF, en la forma de una DTD10 XML usada para codificar
metadatos de nodos y enlaces. La DTD contiene restricciones para una clase de documento.
Algunas de las restricciones válidas del formato SGF se muestran a continuación, de manera
breve:














El sitio Web se captura como un grafo estructurado.
La raíz de un documento SGF debe ser un elemento del tipo grafo estructurado.
Un elemento del tipo grafo estructurado puede tener un número arbitrario de
subelementos, seguidos por subelementos de tipo nodos, jerarquías y redes.
Los elementos nodo pueden tener un número arbitrario de elementos nodo.
Los elementos de tipo jerarquía pueden tener un número arbitrario de enlaces.
Los elementos de tipo red pueden tener un número arbitrario de enlaces
Un elemento nodo debe tener un identificador único.
Un elemento nodo puede tener un atributo de etiqueta.
Un elemento nodo puede tener un número arbitrario de subelementos.
Un enlace debe tener un atributo de fuente, para el cual debe existir un identificador
único.
Un enlace debe tener un atributo de destino, para el cual debe existir un identificador
único.
Un enlace puede tener un atributo de etiqueta.
Un enlace puede tener un número arbitrario de subelementos.
Un subelemento debe tener dos atributos: nombre y valor.
El uso de subelementos hace extensible al SGF, permitiéndole la adición de
información específica de la aplicación.
3.3.5. Implementación
La herramienta cliente necesita tres elementos: un navegador Web estándar para acceder a la
información en la Web, un visor interactivo para realizar el análisis de los documentos SGF y
visualizar la estructura del sitio y un programa espía que pueda realizar la comunicación
entre los dos anteriores. La comunicación se lleva a cabo por medio de mensajes.
El comportamiento del sistema se describe en la figura 3.2.
10
Descripción de Tipo de Documento, por sus siglas en inglés.
Página 24
Capítulo 3. Estado del arte
Figura 3.2. Funcionamiento del cliente
1) El espía manda un mensaje de eco para recibir como respuesta otro mensaje cuando
una URL sea descargada por el navegador.
2) El espía manda un mensaje para indicar que soporta archivos SGF y así el recurso sea
descargado.
3) El recurso es traído desde el navegador.
4) El navegador avisa al espía que se ha descargado una URL y manda el tipo MIME
para ser verificado en el espía.
5) Se verifica que sea un tipo SGF.
6) El documento SGF es traído por el navegador y éste lo almacena en disco, enviando
una solicitud al espía para que lo abra.
7) Cuando el navegador ha enviado el documento al espía, éste manda los metadatos al
visor para mostrarlos.
8) Cuando un usuario presiona dos veces sobre un nodo del visor, este último alerta al
espía.
9) El espía le solicita al navegador descargar la URL correspondiente.
10) El recurso finalmente es traído y mostrado en el navegador.
Del lado del servidor sólo debe cuidarse que el documento SGF exista en el servidor y
sea accesible al menos por un hipervínculo y que cuando se mande este documento al cliente,
el servidor especifique explícitamente que es un documento SGF.
3.4. UriGraph
UriGraph es un modelo de estructuración de sitios Web que especifica la identidad,
identificador, posición y composición de cada recurso que constituye el sitio Web [Simic
2002].


Identidad: intención del concepto representado. Conjunto de los atributos que definen
al concepto
Identificador: representado por la URI. Debe comunicar la información de la
identidad del recurso.
Página 25
Capítulo 3. Estado del arte


Composición: cada recurso Web se compone de varias partes o componentes de
recurso.
Posición: define las relaciones de un recurso con otros componentes de ese sitio.
El modelo Urigraph [Simic 2003] utiliza análisis de URI a través de un grafo dirigido.
Este modelo se divide en tres capas, descritas a continuación.
3.4.1. Capas del modelo Urigraph
1) Capa topológica
Figura 3.3. Ejemplo de la capa topológica de
UriGraph
Fuente: [Simic 02]
Define un grafo G=(V,E) donde:








V = {conjunto de n nodos | v1 hasta vn Є V}
E= {conjunto de aristas ≠ V}
Existe una relación binaria entre V y E.
Hay dos tipos de nodos:
P= {conjunto de nodos sitio}
T= {conjunto de nodos transición}
∃(r) | r= nodo raíz análogo a la página principal del grafo dirigido.
∀(v) ∃( Dv) | (v Є V)^es(Dv , conjunto de nodos destino)
Para cada nodo v existe un conjunto de nodos destino Dv que consiste en todos los
nodos conectados al nodo v a través de sus aristas salientes.
Página 26
Capítulo 3. Estado del arte

Los nodos sitio son representados por círculos. Los nodos transición se representan
como rectángulos anchos y las aristas como flechas. El nodo raíz se marca con el
símbolo de una casa (figura 3).
Los nodos sitio simbolizan clases de recursos que contienen uno o varios recursos
similares que difieren en contenido, pero no en el modo en que son representados en el sitio.
El nodo raíz es la página principal del sitio y los nodos transición marcan el análisis de piezas
de información.
Los términos básicos de la topología son:



Camino: secuencia de nodos donde dos nodos consecutivos se conectan con una arista
en la misma dirección.
Pasaje: camino que comienza en el nodo raíz y termina con un nodo sitio.
Circuito: camino que comienza y termina en el mismo nodo.
Los casos de conexiones imposibles se muestran a continuación:



Las conexiones no son reflexivas: un nodo no se conecta consigo mismo.
No hay conexión directa de dos nodos sitio.
Una transición sólo puede tener una arista de salida a un nodo sitio, como máximo.
2) Capa de análisis de solicitud
Capa intermedia que define las reglas para analizar el identificador del recurso. El
identificador del recurso distingue dos partes de la URI, la ruta y la solicitud, por lo que la
capa intermedia aloja dos secuencias, una secuencia de segmentos de ruta y una secuencia de
segmentos de solicitud (figura 3.4). El análisis del identificador inicia en el nodo raíz con un
contenedor lleno de todos los segmentos de la solicitud HTTP y sigue las aristas a través de
los nodos. El análisis termina regularmente en algún nodo sitio con un contenedor vacío, así
se construye un pasaje en el grafo. Si el análisis termina en un nodo transición se considera la
solicitud como incompleta y el análisis es insatisfactorio.
Página 27
Capítulo 3. Estado del arte
Figura 3.4. Estructura de la URL en Urigraph
3) Capa de síntesis de respuesta
La capa más alta de la arquitectura, define cómo la información es extraída de la
solicitud e integrada en la respuesta. La respuesta contiene la identidad y composición del
recurso identificado por la solicitud. La información de respuesta no es gráfica.
3.4.2. Gramática XML
La gramática XML se usa para descripciones y consiste en una estructura de elementos que
encierra nodos sitio, transiciones de ruta y transiciones de solicitud. Estos elementos ayudan
a representar varios tipos de nodos. Cada nodo posee un identificador usado para conectar
un subelemento connectTo. Un ejemplo de la gramática para la figura 3.4 se muestra a
continuación.
Figura 3.5. Gramática XML de Urigraph
Página 28
Capítulo 3. Estado del arte
3.5. CmapTools
El software CmapTools [IHCM 2007] se desarrolló en el IHMC11 y proporciona el uso de
mapas conceptuales, particularmente en la WWW. Permite crear mapas de conceptos para
organizar contenidos y colaborar con la creación de mapas a distancia. Utiliza una
arquitectura cliente/servidor. Los usuarios comparten sus mapas en un servidor.
CmapTools permite disponer grandes cantidades de documentación (imágenes, texto,
videos y páginas Web) de tal forma que el acceso sea fácil, a través de la navegación de
mapas conceptuales sobre un tema determinado.
Los mapas conceptuales son una opción ante el problema de los usuarios para
encontrar un modelo de organización de páginas o no conocer el contenido de las páginas a
las que tendrán acceso con ciertos enlaces. Esto se debe a que, al seleccionar las ligas o
enlaces, el usuario frecuentemente no tiene idea de cuál será el contenido de la página
destino.
CmapTools utiliza los conceptos de modelos conceptuales, tales como nodos que se
enlazan con relaciones. Estos enlaces están etiquetados. En cada nodo o concepto del mapa, el
usuario dispone de un menú de íconos. Éstos corresponden a diversos medios (texto,
imágenes, video, otros mapas conceptuales, etc.) relacionados al tema del nodo (concepto)
seleccionado. Al seleccionar un icono, el sistema despliega información de otros recursos
referentes al concepto.
Los íconos aparecen en diversas combinaciones dependiendo de la información
disponible sobre el concepto dado. Todas las ligas tienen semántica definida por el diseñador
del sitio, ya sea explícita en el mapa o por contexto al navegar entre mapas u otros medios. El
usuario sabe entonces hacia dónde va cuando sigue una liga, en contraste con otras
herramientas de navegación, especialmente en la WWW.
Para construir los mapas se usa un editor. El usuario relaciona los medios (video,
imágenes, sonido, mapas, entre otros) y sus iconos con los nodos (conceptos). Aprovechando
la extensión y omnipresencia de Internet, se construyen sistemas de multimedia accesibles
desde cualquier lugar del mundo. El programa está escrito en Java y se ejecuta en cualquier
plataforma computacional (Windows, Macintosh, UNIX, etc.)
Existen herramientas similares a CmapTools, tales como:


View Your Mind12
DeepaMehta13
11
El Instituto para la Cognición Humano y Máquina es una institución de investigación sin fines de lucro del
Sistema de Universidades de Florida.
12
Página oficial del software View Your Mind: http://www.insilmaril.de/vym/
Página 29
Capítulo 3. Estado del arte
Estas herramientas no se reportan debido a que sus características no varían en
comparación con CmapTools.
3.6. OOWS (Método de Producción de Soluciones Web Orientado a Objeto)
El Método OOWS [Fons 2002] es una extensión del Método OO para la generación
automática de código usando modelos conceptuales, que se basa a su vez en OASIS14. OOWS
permite capturar y representar la semántica de navegación y de presentación de la
información por medio de primitivas de abstracción de alto nivel. Posteriormente conforma
un repositorio de requisitos básicos de construcción, procesados con la finalidad de generar
interfaces de usuario.
Figura 3.6. Aproximación a la metodología OOWS
El modelado del sistema con OOWS abarca dos pasos: la especificación del problema
y el desarrollo de la solución.
3.6.1. Especificación del problema
Comprende la captura del comportamiento que satisface los requisitos de los usuarios
identificados.
13
Página oficial del software DeepaMehta: http://www.deepamehta.de/
Por sus siglas en inglés, Especificación Abierta y Activa de Sistemas de Información. Es un enfoque formal
para la especificación de modelos conceptuales siguiendo el paradigma orientado a objetos.
14
Página 30
Capítulo 3. Estado del arte
En la especificación del problema se desarrolla la fase del Modelado Conceptual que
divide su operación en los siguientes modelos [Fons 2002]:
A) Modelo semántico: se define la estructura del sistema (clases, operaciones y atributos)
y las relaciones estructurales entre clases por medio de un Diagrama de Clase.
B) Modelo dinámico: captura las interacciones entre objetos.
C) Modelo funcional: toma la semántica de cambios de estado.
La parte complementaria al Método OO integra dos modelos:
D) Modelo de Navegación: proporciona a los usuarios acceso a la información y la
funcionalidad para llevar a cabo sus tareas dentro del sistema y las secuencias de
caminos que deben seguir para conseguirlo.
Se compone de un conjunto de mapas de navegación cuya función es representar la
visión global del sistema para cada tipo de usuario, definiendo su navegación
permitida. Éste se representa usando un grafo dirigido donde los nodos son los
contextos de navegación y los arcos son enlaces de navegación.
Un contexto de navegación es una unidad de interacción abstracta que representa una
vista sobre un conjunto de datos y servicios accesible para un usuario en un
determinado momento. Está compuesto por un conjunto de clases de navegación
haciendo referencia a las clases identificadas en el modelo de objetos, con las que se
define la visibilidad ofrecida al agente en ese nodo.
E) Modelo de presentación: cuando el modelo de navegación captura la semántica de
navegación del sistema, se asocian características de presentación al mismo. El modelo
de presentación complementa la información capturada en el modelo de navegación
para crear las interfaces con información de presentación.
Tras el modelado, se genera el código basándose en la recopilación de requisitos, por
medio del compilador de modelos conceptuales (model compiler) que, en función de
patrones arquitectónicos y dependiendo de la plataforma destino, construye el
sistema de software que recoge los requisitos de aplicación modelada.
El Método OO maneja diferentes tipos de relaciones que son correspondientes a
algunas relaciones de UML [Insfrán 1998].
1) Agregación, también conocida como “parte de”: relación jerárquica en la que el
concepto de nodo padre es más amplio que el de los nodos hijo. La relación de
agregación es no reflexiva, no simétrica y transitiva.
2) Herencia, también conocida como “es un”.
A) Especialización: trata la herencia descendiente o derivación de clases hijas a
partir de una clase padre.
Página 31
Capítulo 3. Estado del arte
B) Generalización: es la inversa de la especialización. Tratar la herencia
ascendente o generación de clases (padre) a partir de propiedades comunes de
clases definidas (hijas) con anterioridad.
3) Agentes: relación entre objetos cliente y servidor.
3.7. Touch Graph
TouchGraph [TouchGraph 2007a] es una herramienta realizada en Java para visualización de
redes de información relacionadas entre sí, mostrando grafos interactivos. Por medio de una
imagen visual, un usuario puede navegar a través de redes de gran tamaño. La solución de
visualización propuesta permite mostrar relaciones entre personas, organizaciones e ideas.
El proyecto TouchGraph se divide en dos modalidades, propietario y de código
abierto, presentadas a continuación.
3.7.1. TouchGraph propietario
Integra visualización gráfica de componentes tradicionales de tablas y árboles para descubrir
información, proveyendo soluciones ad-hoc a las necesidades de empresas y compañías. La
plataforma permite el acceso a cualquier fuente de información conectado o no conectado a
internet, así como la generación de reportes en hojas de cálculo o imágenes en archivos PDF.
El sitio Web muestra el funcionamiento de TouchGraph en un navegador de
demostración para el sitio Amazon, un navegador para la visualización de redes sociales
aprovechando la plataforma de Facebook15 y una aplicación para explorar conexiones entre
sitios relacionados usando datos obtenidos de Google .
3.7.2. TouchGraph de código abierto
La idea de TouchGraph fue concebida por Alex Shapiro, como una combinación de
elementos de herramientas de visualización propietarias como inXigth y TheBrain, usando el
lenguaje Java bajo el sistema CVS16.
A continuación se analizarán dos de las aplicaciones relevantes contenidas en el
repositorio.
15
Facebook es un sitio Web de redes sociales (estructuras sociales representadas por grafos donde los nodos son
individuos y las aristas las relaciones entre ellos). Página oficial de Facebook: http://www.facebook.com/
16
Sistema de control de versiones, por sus siglas en inglés: mantiene el registro de los trabajos y cambios en los
ficheros que forman un proyecto y permite la colaboración entre desarrolladores.
Página 32
Capítulo 3. Estado del arte
3.7.2.1.


LinkBrowser
Grafica desde archivos XML (TG-XML)
Genera grafos y los almacena en archivos TG-XML.
A) Inclusión de Hints (información adicional) de los nodos
Figura 3.7. Ejemplo de Hint



Los nodos pueden contener información adicional como archivos HTML, hiperenlaces
o imágenes.
La información de cada nodo aparece en marcos internos.
La información adicional de cada nodo puede desplegar archivos HTML externos
mediante el uso de marcos.
B) Uso de URL´s
Los nodos pueden tener URL´s asociadas, que actúan al seleccionar un nodo y
presionarlo.
Las URL´s pueden marcarse como locales o remotas. Una URL local no necesita usar
el prefijo “http://” y las páginas asociadas pueden cargarse en un marco interno. Las URL´s
remotas aparecen por separado en una ventana de navegador distinta.
Las URL´s pueden marcarse como archivos XML. Cuando se presiona un nodo, se lee
un archivo TG-XML y se carga el grafo que éste especifica.
Se proporciona un botón de retorno para volver a un archivo TG-XML cargado
previamente.
Página 33
Capítulo 3. Estado del arte
3.7.2.2. WikiBrowser
TouchGraph WikiBrowser [TouchGraph 2007b] es una demostración de cómo TouchGraph
puede usarse para visualizar una wiki. Actualmente la versión de prueba presenta las bases
de datos de enlaces Meatball Wiki y EmacsWiki, pero ninguna otra base de datos codificada
en un formato similar puede mostrarse.
Por ahora, la herramienta es una versión de prueba debido a que la base de datos de
enlaces no se actualiza dinámicamente mientras se navega o carga desde una URL antes de
activar la visualización. Para solucionarlo se plantea adquirir la estructura de enlaces por
medio de una API basada en XML.
Las bases de datos de enlaces proporcionan una lista de todos los enlaces de páginas
de una wiki local. El primer enlace en cada línea es la página que está siendo buscada y los
siguientes enlaces son aquellos que fueron encontrados en dicha página. WikiBrowser es
capaz de crear un grafo a partir de las bases de datos de hiperenlaces.
La aplicación consta de un navegador HTML convencional en la parte izquierda y un
grafo en el lado derecho de la pantalla. Las etiquetas del nodo corresponden a las páginas de
hipertexto, conectadas por enlaces que representan los hiperenlaces entre las páginas. Los
nodos de color café muestran hiperenlaces de páginas internas de la wiki y los púrpura
simbolizan a las páginas externas.
3.8. PersonalBrain
PersonalBrain [Brain 2007] es un software desarrollado por medio de la tecnología de
modelado de información llamada “The Brain”, que funciona bajo la idea de que la
información se almacena del mismo modo en que el cerebro lo hace, de manera intuitiva, con
asociaciones entre los pensamientos que están contenidos ilimitadamente en el cerebro.
PersonalBrain usa como bloque básico de construcción un formato de dato llamado
pensamiento (thought). Los pensamientos pueden ser un tipo de información cualquiera,
como conceptos, proyectos, personas, materias, documentos, páginas Web, etc.
La herramienta permite crear enlaces y asociaciones entre los pensamientos, formando
una interfaz visual que refleja estas asociaciones en un grafo. Un cerebro no es una estructura
jerárquica, ningún pensamiento es más importante que otro, por ello el usuario puede
representar el modo en que se relacionan y lo que contienen.
3.8.1. El pensamiento activo
Al centro de PersonalBrain hay un pensamiento activo que representa el concepto central
sobre el que se dibuja una serie de pensamientos relacionados en diferentes zonas.
Página 34
Capítulo 3. Estado del arte
Las zonas son áreas que manejan relaciones específicas del pensamiento central. Hay
cuatro zonas: la zona de padres, la zona de hijos, la zona de saltos y la zona de hermanos.
3.8.2. Relaciones de pensamientos
La idea de PersonalBrain es crear y mostrar relaciones entre tipos de información. Las
relaciones se construyen creando y ordenando pensamientos hijos, padres y saltos. Los
nombres de las relaciones no tienen relación con el tipo de información que pueden contener,
solamente describen su asociación con el pensamiento activo y las relaciones entre ellos.
Hay cuatro tipos de relaciones entre pensamientos: padre, hijo, salto y hermano [Brain
2004].
Figura 3.8. Tipos de pensamiento




Padre: un pensamiento padre tiene al menos un pensamiento debajo de él, es
desplegado en la zona de padres, directamente sobre el pensamiento activo. Un
pensamiento puede tener múltiples padres (un máximo de 32).
Hijo: es una subcategoría de un pensamiento activo. Varios pensamientos pueden
compartir un padre. El máximo número de pensamientos hijos que puede tener un
padre es de 128.
Hermano: un pensamiento hermano comparte el mismo padre que un pensamiento
activo. Los hermanos son parte de un grupo cuya fuente de temas es el pensamiento
padre.
Salto: un pensamiento de salto se relaciona con el pensamiento activo, pero no es una
subcategoría. Los saltos se usan para crear relaciones entre grupos de pensamientos
que están desplegados en la zona de salto. El máximo número de pensamientos de
salto es de 32.
Los nodos se organizan en zonas: la zona de padres está sobre el pensamiento activo,
la zona de hijos debajo de él, la zona de saltos a la izquierda y la zona de hermanos a la
derecha.
Página 35
Capítulo 3. Estado del arte
Los pensamientos están relacionados de manera directa o indirecta en virtud de que
pertenecen al mismo cerebro, donde el cerebro es el conjunto que contiene a los pensamientos
y sus enlaces. No hay reglas que gobiernen la creación de relaciones entre pensamientos.
3.9. OntoWebber
Esta herramienta [Jin 2001] adopta el modelo-dirigido de aproximación basado en ontologías
para el manejo de sitios Web declarativos e integración de datos. Al mismo tiempo ofrece
soporte a través del ciclo de vida del sitio Web, que incluye diseño, generación,
personalización y mantenimiento. La idea fundamental detrás de OntoWebber es el uso de
ontologías como la base de construcción de diferentes modelos necesarios para la creación de
un sitio Web.
Su arquitectura se descompone en cuatro capas:
Capa de integración: resuelve las diferencias sintácticas entre datos heterogéneos
distribuidos en varias fuentes.
Capa de articulación: resuelve las diferencias semánticas entre las fuentes de datos.
Capa de composición: las ontologías para un modelo de un sitio son un conjunto de
esquemas predefinidos, disponibles en un repositorio central. Una vista del sitio
particular consiste en un conjunto de páginas Web que pueden ser creadas a partir de
datos señalados. La especificación de una vista del sitio es un conjunto de modelos de
sitios encargados de describir distintos aspectos de una vista del sitio basada en las
ontologías de modelado del sitio. Esta vista se exporta al motor de solicitudes.
Capa de generación: un sitio navegable puede generarse instanciando la vista del sitio
correspondiente, con datos en el repositorio. Esto se lleva a cabo con el motor de
solicitud.
Página 36
Capítulo 3. Estado del arte
Tabla 3.1. Comparación de herramientas del estado del arte
Característica
Representar la
estructura del
sitio Web
Permitir creación
o edición de
representaciones
gráficas del sitio
Relacionar
semánticamente
el grafo del sitio
Web
Establecer
reglas en el
formato para
los elementos
de la
representación
gráfica
Proporcionar
restricciones de
construcción del
sitio Web
Generar archivo
XML u otro
formato de
estructura
validada del
grafo
Generar las
páginas de la
estructura del
sitio Web de
forma
automática
Disponibilidad de la
herramienta
WebTOC
Si
No
No
Si
No
No
No
Dreamweaver
Si
Si
No
Si
No
No
No
SGMapper
UriGraph
CmapTools
Si
Si
Si
Si
No
Si
No
No
Si
No
No
No
No
No
No
Si
Si
No
No
Si
No
gOOWS
Si
No
No
No
No
No
Si
TouchGraph
Si
Si
No
No
No
Si
No
Personal Brain
Si
Si
No
No
No
No
No
OntoWebber
Si
No
No
No
No
Si
Si
Herramienta
propuesta
Si
Si
Si
Si
Si
Si
Si
Software de código
abierto
Software
propietario
No disponible
No disponible
Software de
distribución
gratuita con código
cerrado
Software de código
cerrado
Software con
versiones de código
abierto y cerrado
Software de
distribución
gratuita con código
cerrado
Software de código
abierto
Software de código
abierto
Herramienta
Página 37
Capítulo 4. Análisis y diseño de la solución
El presente capítulo describe la solución propuesta a la problemática estudiada en este
trabajo. Se detalla la investigación realizada para encontrar los patrones, conceptos y
relaciones que conforman la ontología del dominio de educación que se utiliza en la
metodología para la construcción de sitios Web.
Capítulo 4. Análisis y diseño de la solución
4.1. Descripción general de la solución propuesta
La solución que se plantea para la presente investigación se describe a continuación.
Se propone como hipótesis que a través de una metodología de construcción de sitios
Web basada en principios de ontologías, se pueda agregar semántica a la estructura del sitio
para que éste sea más fácil de comprender. El proceso de solución se compone de tres fases:
a) El análisis de un caso de estudio (una muestra de sitios Web de escuelas y centros de
investigación)
b) La definición y formalización de la metodología de construcción del sitio Web,
c) La implementación de un editor de estructuras de sitios Web, basado en la
metodología propuesta. El editor debe permitir al arquitecto establecer los tipos de
relaciones entre los elementos que constituyen el sitio, de tal manera que se asegure el
cumplimiento de las pautas de construcción proporcionadas por la metodología.
Dichas pautas dependen del tipo de relación establecida inicialmente.
4.2. Desarrollo de una metodología para definir estructuras de sitios Web
basada en diseño de ontologías
La metodología de solución propuesta requirió de un trabajo de investigación con un análisis
de sitios Web del dominio de educación. Aunque se trabajó sobre un dominio específico, se
espera que esta propuesta sea adaptable y pueda aplicarse a otros dominios de sitios Web.
Los pasos a seguir que conforman dicha metodología se listan a continuación y se
explica la manera en que se realizaron.
4.2.1. Estudio de los dominios de trabajo
4.2.1.1. Análisis de sitios Web de dominio educación (edu)
Para llevar a cabo el análisis de dominio del tipo académico se seleccionó una muestra de
sitios en base a un valor de agrupación. Originalmente se deseaba tomar como valor el
tamaño de la población estudiantil, sin embargo, no fue posible utilizar este dato ya que no es
público.
Como una segunda opción se eligió el tipo de institución educativa, tomando en
consideración dos tipos: institutos tecnológicos y centros de investigación. A pesar del factor
de selección anterior, se limitó la muestra a veinte sitios de este tipo, por la amplitud del
dominio de trabajo.
Página 39
Capítulo 4. Análisis y diseño de la solución
A partir del análisis anterior se obtuvieron los modelos de organización, tipos de
enlaces y patrones que sigue la estructura de los sitios Web, para utilizarlos en la
formalización de una ontología, como base para la definición de la metodología, y el diseño
del editor que la implemente.
A continuación se muestra cada paso del análisis realizado.

Conjunto de instituciones analizadas
La siguiente tabla muestra el conjunto de sitios Web que se estudiaron dentro del
dominio de educación.
No.
1
2
3
4
5
6
7
8
9
10
11
12
13
Tabla 4.1. Conjunto de sitios Web analizados
Nombre de la institución
Página
Centro de Investigación
Científica y de Educación
Superior de Ensenada
(CICESE)
Centro de Investigación en
Computación, IPN
Centro de Investigación en
Matemáticas, A. C.
Centro de Investigación y
Asistencia en Tecnología y
Diseño del estado de Jalisco
(CIATEJ)
Centro de Investigaciones
Biológicas del Noroeste, S. C.
(CIBNOR)
Centro de Investigación y de
Estudios Avanzados del
Instituto Politécnico Nacional
(CINVESTAV)
Centro de Investigación y
Docencia Económicas (CIDE)
Centro Nacional de
Investigación y Desarrollo
Tecnológico (CENIDET)
División Académica de
Economía, Derecho y Ciencias
Sociales, ITAM
Instituto Nacional de
Astrofísica, Óptica y
Electrónica (INAOE)
Instituto Tecnológico de
Acapulco (ITA)
Instituto Tecnológico de
Apizaco
Instituto Tecnológico del
Altiplano de Tlaxcala
Tipo de sitio
http://www.cicese.mx/
Centro de
Investigación
http://www.cic.ipn.mx/
Centro de
Investigación
http://www.cimat.mx/
http://www.ciatej.net.mx/
Centro de
Investigación
http://www.cibnor.mx/ecibnor.php
Centro de
Investigación
http://www.cinvestav.mx/
Centro de
investigación
http://www.cide.edu/
Centro de
investigación
Centro de
investigación
http://www.cenidet.edu.mx
http://daedcs.itam.mx/
Centro de
Investigación
http://www.inaoep.mx
Centro de
investigación
http://www.it-acapulco.edu.mx
Instituto
Tecnológico
Instituto
Tecnológico
Instituto
Tecnológico
http://www.itapizaco.edu.mx
http://italtiplanotlaxcala.edu.mx
Página 40
Capítulo 4. Análisis y diseño de la solución
14
15
16
17
18
19
20
Instituto Tecnológico de
Celaya (ITC)
Instituto Tecnológico de
Chihuahua
Instituto Tecnológico de
Chilpancingo
(ITCHILPANCINGO)
Instituto Tecnológico de
Ciudad Madero
Instituto Tecnológico de
Minatitlán (ITMINA)
Instituto Tecnológico de
Morelia
Laboratorio Nacional de
Informática Avanzada
(LANIA)
http://www.itc.mx/itc/scripts/index.
Php
http://www.itchihuahua.edu.mx/
http://www.itchilpancingo.edu.mx/
principal/servlet/hinicio
http://www. itcd.edu.mx/
http://www.itmina.edu.mx
http://www.itmorelia.edu.mx
http://www.lania.mx
Instituto
Tecnológico
Instituto
Tecnológico
Instituto
Tecnológico
Instituto
Tecnológico
Instituto
Tecnológico
Instituto
Tecnológico
Centro de
Investigación
Tras analizar la muestra de sitios Web se encontró que presentaban semejanzas en el
tipo de conceptos y estructuras, por lo que no se consideró necesario extender el análisis a
más sitios, sobre todo por limitaciones de tiempo.
4.2.1.2. Estructura de páginas
Los sitios Web incluyen varios sistemas de navegación definidos en el capítulo 2. La
identificación de los sistemas de navegación permite conocer la estructura del sitio,
separando los componentes de tipo jerárquico y de hipertexto que se encuentran en las
páginas.
Página 41
Capítulo 4. Análisis y diseño de la solución
Figura 4.1. Página principal del CINVESTAV
Dentro de las páginas principales de la mayoría de los sitios se observaron conjuntos
de enlaces concentrados en tres grupos (figura 4.1).
A) Conjunto primario de navegación:
Este conjunto está conformado por elementos descriptivos y de organización, como:
información sobre la institución, accesos a la oferta educativa (posgrados o carreras) y
líneas de investigación, así como organigramas de los departamentos de la institución.
Página 42
Capítulo 4. Análisis y diseño de la solución
Figura 4.2. Ejemplo de estructura jerárquica entre la página principal del CINVESTAV y elementos del
grupo de navegación primario
B) Conjunto secundario de navegación:
Constituido de enlaces hacia eventos, noticias o cursos. En este conjunto aparecen
las convocatorias para cursar estudios en las instituciones educativas, enlaces a
talleres y congresos, enlaces de interés y otras actividades.
Figura 4.3. Enlaces del conjunto secundario de navegación
Página 43
Capítulo 4. Análisis y diseño de la solución
C) Conjunto terciario de navegación
Conformado por enlaces hacia el correo institucional, mapa del sitio, página principal,
encuestas y buscadores, entre otros.
4.2.2. Construcción de una ontología del dominio de educación
Del análisis anterior se obtuvieron patrones de cómo los elementos se distribuyen en los sitios
Web. Los patrones pueden formalizarse en una ontología que permita catalogar los conceptos
en clases y definir las relaciones entre las clases y las instancias correspondientes a las clases.
Éstas se mapean directamente como las páginas que forman la estructura del sitio Web.
4.2.2.1. Identificación del propósito de la ontología
Los sitios Web poseen un vocabulario específico, de acuerdo al dominio al que pertenecen,
siendo en este caso el dominio de educación (Dominio de nivel superior EDU). Sin embargo
y, a pesar de que existen conceptos comunes entre los sitios analizados, es también frecuente
encontrar sinónimos o términos que varían de acuerdo al tipo de institución educativa,
debido a cuestiones propias del idioma.
Lo anterior deriva en definiciones del vocabulario de la estructura del sitio poco
consistentes y en el establecimiento de nexos existentes entre los conceptos del dominio que
no expresan la naturaleza de la relación. Es por ello que resulta importante reducir los
problemas de comprensión de la estructura del sitio Web.
Para eliminar estas ambigüedades se requiere:
Identificar los conceptos propios del dominio de trabajo que son utilizados por los
usuarios y proporcionar un vocabulario compartido, disminuyendo las diferencias y
confusión de terminología utilizada para denominar a los elementos que conforman el
sitio Web.
Identificar las posibles relaciones entre los conceptos del dominio.
Brindar restricciones que puedan ser aplicadas al contexto que integran los conceptos
y relaciones que los enlazan, así como sus sinónimos correspondientes.
4.2.2.2. Identificación de conceptos del dominio
En este apartado se identifican los conceptos y las relaciones en el dominio de educación.
Posteriormente se producen las definiciones no ambiguas para los conceptos. Una definición
no ambigua permite diferenciar los conceptos, evitando la confusión de términos o
interpretaciones erróneas.
Página 44
Capítulo 4. Análisis y diseño de la solución
4.2.2.3. Creación de la taxonomía de clases
Los conceptos obtenidos del dominio de trabajo pueden organizarse hasta obtener una
taxonomía que los agrupe en clases y subclases, descartando aquellos elementos que son
propiamente las instancias. Finalmente la taxonomía de clases de la ontología se muestra en
la figura 4.4 y se describe posteriormente cada una, listando algunos tipos de instancias.
class Class Model
Documento
+
+
+
Serv icio
Serv icio interno
Conectividad: char
Temporalidad: char
TipoEntidad: char
Información
Producto
Serv icio externo
Unidad
organizacional
Estructura
Descripción
Trámite
Organización
funcionamiento
Descripción
abstracta
Descripción
física
Suceso
Estudiante
Personal
Trabaj ador
Figura 4.4. Diagrama de clases de la ontología
En la tabla 4.2 se definen las clases de la taxonomía generada para el dominio de
educación del caso específico analizado en esta investigación (la identación indica una
relación de clase-subclase). Aunque sólo las clases correspondientes a las hojas de la
taxonomía son tomadas en cuenta para la especificación de relaciones entre conceptos del
dominio.
Página 45
Capítulo 4. Análisis y diseño de la solución
Tabla 4.2. Definición de clases de la taxonomía
Documento: un documento es la clase más genérica, es decir, a partir de ella se desprenden las demás clases de la ontología. El documento
representa cualquier tipo de elemento que pueda conformar un sitio Web, por ejemplo: una página html, una imagen gif o un archivo de texto pdf.
Información: documento para compartir o difundir datos.
Descripción: proporcionan al usuario un panorama general de la institución.
DescripciónAbstracta: un documento de descripción se refiere a elementos de presentación de la institución. Pueden contender
detalles históricos, definición del perfil de la institución, objetivos, etc.
DescripciónFísica: elemento que muestra la disposición de los recursos de una institución.
Estructura: documentos referentes a la manera en que se conforma la institución organizacionalmente.
OrganizaciónFuncionamiento: muestra la administración o coordinación de un proceso de manera formal.
UnidadOrganizacional: espacio de trabajo o unidad administrativa de la institución. Se identifica por las funciones que lleva a cabo,
el conjunto de responsabilidades que asume o por identificar a una agrupación.
Personal: tipo de documento que contiene información sobre una entidad animada.
Estudiante: dentro de la clase Personal, la cual aloja información sobre un estudiante de la institución educativa.
Trabajador: dentro de la clase Personal, la cual aloja información sobre un empleado de la institución educativa.
Trámite: indica la consecución de pasos para desarrollar una tarea de interés para los estudiantes o el personal de la institución. Los
trámites suelen ser actividades obligatorias.
Suceso: documento informativo cuyo tiempo de vida tiene una duración establecida. Se refiere a aquellos componentes que no son
permanentes y viven mientras poseen carácter de importancia en el sitio web o en una temporada específica con respecto a un
acontecimiento relevante.
Producto: representa un objeto que percibe un consumidor o un conjunto de beneficios o satisfacciones. En los centros de investigación, los
productos son el resultado de la investigación científica.
Servicio: describe procesos, algunas veces dinámicos, que requieren introducción de datos por parte del usuario para obtener como resultado
un componente que depende de los datos proporcionados. Estos servicios son regularmente prestaciones que cubren un tipo de necesidad del
usuario.
ServicioInterno: tipo de servicio que se ofrece al personal o estudiantes con respecto a la institución.
ServicioExterno: servicios ofrecidos por la institución a otras organizaciones.
Página 46
Capítulo 4. Análisis y diseño de la solución
4.2.2.4. Atributos de las clases de la ontología
Conectividad: tipo de enlace que se puede establecer a partir de la página que
pertenece a ésta clase. Las variantes de este valor son las siguientes:
o
o
Enlace: la página puede contener un conjunto de enlaces hacia otros elementos
del sitio Web.
 Uniforme: conjunto de enlaces que se refieren a una misma temática.
 Mixto: diversas agrupaciones de enlaces de distinta temática o tipo.
Simple: la página es considerada una hoja del sitio Web, es decir, que no
contiene enlaces que estructuralmente lleven hacia otros elementos.
Existencia: se refiere al periodo de vida estimado para una página que pertenece a
ésta clase y sus valores son los siguientes:
o
o
Temporal: una página con un periodo de vida determinado.
Permanente: aquel elemento que permanece en el tiempo, aun cuando se
realicen cambios sobre él.
Tipo de entidad: tomando en cuenta que existen páginas con niveles compositivos de
tipo concreto; que representan elementos sólidos, compactos o materiales, precisos,
determinados y sin vaguedad; o elementos abstractos que significan alguna cualidad
con exclusión del sujeto. Sus valores son los siguientes:
o
o
Espacio-material: con un nivel compositivo concreto.
Simbólica: con un nivel compositivo abstracto.
4.2.2.5. Definición de clases de la taxonomía
Las clases listadas a continuación son las hojas de la taxonomía de clases. Entre estas clases
existe un conjunto de relaciones que son aplicables a sus ejemplares y que se formalizan en la
sección posterior.
Clase:
Superclase:
Definición:
Instancias:
Atributo:
Tabla 4.3. Definición de la clase Descripción abstracta
Descripción abstracta
Descripción.
Elementos de presentación de la institución. Pueden contender detalles
históricos, definición del perfil de la institución, objetivos, etc. Acción de
representar a alguien o algo por medio del lenguaje, refiriendo o explicando
sus distintas partes, cualidades o circunstancias.
Presentación, misión, visión, objetivo, historia, ubicación, acerca de, servicios.
Tipo de entidad: simbólica.
Conectividad: simple/enlace.
Existencia: permanente.
Página 47
Capítulo 4. Análisis y diseño de la solución
Clase:
Superclase:
Definición:
Instancias:
Atributo:
Clase:
Superclase:
Definición:
Instancias:
Atributo:
Clase:
Superclase:
Definición:
Instancias:
Atributo:
Tabla 4.4. Definición de la clase Descripción física
Descripción física
Descripción.
Elemento que muestra la disposición de los recursos de la institución.
Directorio, infraestructura, organigrama institucional.
Tipo de entidad: espacio-material.
Conectividad: simple/enlace.
Existencia: permanente.
Tabla 4.5. Definición de la clase Estudiante
Estudiante
Personal.
Contiene información sobre la persona que cursa estudios en una institución
educativa.
Estudiante de posgrado, estudiante de licenciatura.
Tipo de entidad: espacio-material.
Conectividad: simple.
Existencia: temporal.
Tabla 4.6. Definición de la clase Organización funcionamiento
Organización funcionamiento
Estructura.
Elemento que muestra la administración o coordinación de un proceso de
manera formal.
Reglamento, plan de estudios.
Tipo de entidad: simbólica.
Conectividad: simple.
Existencia: permanente.
Tabla 4.7. Definición de la clase Producto
Clase:
Producto
Superclase:
Definición:
Documento.
Representa un objeto que percibe un consumidor o un conjunto de beneficios
o satisfacciones. En los centros de investigación, los productos son el resultado
de la investigación científica.
Tesis, publicación.
Tipo de entidad: espacio-material.
Conectividad: simple.
Existencia: permanente.
Instancias:
Atributo:
Clase:
Tabla 4.8. Definición de la clase Servicio externo
Servicio externo
Superclase:
Definición:
Instancias:
Servicio.
Servicios ofrecidos por la institución a otras organizaciones.
Capacitación, consultoría, bolsa de trabajo.
Página 48
Capítulo 4. Análisis y diseño de la solución
Atributo:
Clase:
Superclase:
Definición:
Instancias:
Atributo:
Tipo de entidad: simbólica.
Conectividad: simple.
Existencia: permanente.
Tabla 4.9. Definición de la clase Servicio interno
Servicio interno
Servicio.
Tipo de servicio que se ofrece al personal o estudiantes con respecto a la
institución.
Búsqueda, consulta bibliográfica, correo electrónico, kardex, centro de
idiomas.
Tipo de entidad: simbólica.
Conectividad: simple.
Existencia: permanente.
Tabla 4.10. Definición de la clase Suceso
Clase:
Suceso
Superclase:
Definición:
Información.
Acontecimiento relevante o actividad que posee carácter de importancia en
una temporada específica.
Noticia, evento, curso.
Tipo de entidad: simbólica.
Conectividad: simple.
Existencia: temporal.
Instancias:
Atributo:
Clase:
Superclase:
Definición:
Instancias:
Atributo:
Tabla 4.11. Definición de la clase Trabajador
Trabajador
Personal.
Contiene información sobre la persona que labora en un organismo,
dependencia o institución.
Académico, administrativo.
Tipo de entidad: espacio-material.
Conectividad: simple.
Existencia: temporal.
Tabla 4.12. Definición de la clase Trámite
Clase:
Trámite
Superclase:
Definición:
Información.
Consecución de pasos para desarrollar una tarea de interés para los
estudiantes o el personal de la institución. Los trámites suelen ser actividades
obligatorias.
Admisión, titulación, beca, servicio social, residencia profesional, actividad
extraescolar.
Tipo de entidad: simbólica.
Conectividad: simple.
Existencia: permanente.
Instancias:
Atributo:
Página 49
Capítulo 4. Análisis y diseño de la solución
Clase:
Superclase:
Definición:
Instancias:
Atributo:
Tabla 4.13. Definición de la clase Unidad organizacional
Unidad organizacional
Estructura.
Espacio de trabajo o unidad administrativa de la institución. Se identifica por
las funciones que lleva a cabo, el conjunto de responsabilidades que asume o
por identificar a una agrupación.
Departamento, línea de investigación, posgrado, principal, personas, bienes.
Tipo de entidad: simbólica.
Conectividad: enlace.
Existencia: permanente.
4.2.2.6. Establecimiento de relaciones de la ontología
class System
Léxica
Topológica
Léxica
paradigmática
Léxica
sintagmática
Meronimia
Produce
Hiperonimia
Registra
Meronimia
CanónicaCanónica
Meronimia E
Meronimia F
Meronimia
CanónicaFacultativ a
Meronimia G
Meronimia
Facultativ aCanónica
Meronimia
Facultativ aFacultativ a
Meronimia N
Meronimia A
Meronimia
ColecciónMiembro
Meronimia GrupoMiembro
Meronimia D
Meronimia C
Meronimia H
Meronimia I
Meronimia K
Meronimia L
Meronimia B
Meronimia M
Figura 4.5. Conjunto de relaciones
La identificación de relaciones para la creación de la ontología no es una tarea sencilla, ya
que un sitio Web utiliza entidades abstractas, que resultan difíciles de relacionar. Una página
Web es capaz de conceptualizar un objeto que no posee representación física en el mundo
real, ejemplo de ello son conceptos como: acerca de o enlace de interés.
Estos conceptos no tienen propiedades físicas que ayuden a identificarlos como
partes, todos, generalizaciones o especializaciones de otros elementos o la manera en que
interactúan entre ellos mismos. Dichos elementos le permiten a la lingüística o a enfoques
como UML definir relaciones.
Es por ello que las relaciones entre los conceptos del dominio de educación, aplicadas
en esta investigación, conjuntan propiedades y tipos encontrados en la literatura. Primero se
Página 50
Capítulo 4. Análisis y diseño de la solución
tomó como base las relaciones léxicas (sintagmáticas y paradigmáticas), así como las
propuestas por Cruse [CRUSE 1986] aplicando propiedades de la mereología y UML.
Las relaciones resultantes se describen a continuación y se resumen en la figura 4.5.
(A) Meronimia Facultativa-Facultativa: esta meronimia se aplica a todos y partes que
están unidos de manera opcional, pues en muchos casos el concepto que representa a la parte
está compartido, es decir que puede aparecer en varias secciones del sitio Web. Para la
existencia de la relación es necesario unir como máximo un todo con una única parte del
conjunto de posibles partes.
El todo puede tener a la parte de manera opcional.
La parte puede pertenecer al todo de manera opcional.
La parte es un concepto que puede ser compartido, apareciendo en diversas partes del
sitio Web.
De existir una parte dentro del todo, no puede existir otro elemento de la misma clase
como parte del todo.
Al eliminar el todo se elimina siempre la parte.
Al eliminar la parte no se elimina el todo.
No es posible crear un enlace desde la parte hacia el todo de manera dinámica.
El dominio y rango de esta relación están dados por las siguientes clases que se
muestran en la tabla 4.14 (definidas en 4.2.2.5):
Tabla 4.14. Dominio y rango para la relación (A) Meronimia Facultativa-Facultativa
Dominio
Rango
Unidad organizacional
Unidad organizacional
Unidad organizacional
Unidad organizacional
Organización funcionamiento
Descripción abstracta
Descripción física
Unidad organizacional
(B) Meronimia Facultativa-Facultativa: esta meronimia se aplica a todos y partes que
están unidos de manera opcional, pues en muchos casos el concepto que representa a la parte
está compartido, es decir que puede aparecer en varias secciones del sitio Web. Para la
existencia de la relación es posible unir un todo con una infinidad de partes de la misma
clase.
El todo puede tener a la parte de manera opcional.
La parte puede pertenecer al todo de manera opcional.
La parte es un concepto que puede ser compartido, apareciendo en diversas partes del
sitio Web.
De existir una parte dentro del todo, es posible que existan n número de elementos de
la misma clase como parte del todo.
Al eliminar el todo se elimina siempre la parte.
Al eliminar la parte no se elimina el todo.
Es posible crear enlace dinámicamente hacia nuevas partes.
Página 51
Capítulo 4. Análisis y diseño de la solución
El dominio y rango de esta relación están dados por las siguientes clases que se
muestran en la tabla 4.15 (definidas en 4.2.2.5):
Tabla 4.15. Dominio y rango para la relación (B) Meronimia Facultativa-Facultativa
Dominio
Rango
Descripción abstracta
Organización funcionamiento
(C) Meronimia Grupo-Miembro: esta meronimia es aplicable a documentos que
representan seres vivos que conforman organizaciones o grupos.
El todo es un grupo u organización.
La parte es un individuo que pasa a formar parte de un grupo.
Un individuo es exclusivo de un grupo, es decir, que no puede pertenecer a diversos
grupos al mismo tiempo.
Un grupo puede conformarse de n número de elementos de la misma clase.
Un grupo no puede eliminarse mientras existan miembros dentro de él.
Al eliminar un miembro, el grupo permanece.
Es posible crear enlaces a nuevos miembros del grupo.
El dominio y rango de esta relación están dados por las siguientes clases que se
muestran en la tabla 4.16 (definidas en 4.2.2.5):
Tabla 4.16. Dominio y rango para la relación (C) Meronimia Grupo-Miembro:
Dominio
Rango
Unidad organizacional
Unidad organizacional
Estudiante
Trabajador
(D) Meronimia Colección-Miembro: esta meronimia es aplicable a documentos que
representan elementos inanimados que conforman colecciones de objetos de cierto tipo.
El todo es una colección.
La parte es un objeto que pasa a formar parte de la colección.
Un objeto pertenece de manera obligatoria a una colección, es decir, la colección debe
tener como parte a un elemento de la clase miembro.
Una colección puede conformarse de n número de miembros de la misma clase,
teniendo por lo menos uno.
Una colección no puede eliminarse mientras existan miembros dentro de ella.
Al eliminar un miembro, la colección permanece.
Es posible crear enlaces a nuevos miembros de la colección.
El dominio y rango de esta relación están dados por las siguientes clases que se
muestran en la tabla 4.17 (definidas en 4.2.2.5):
Página 52
Capítulo 4. Análisis y diseño de la solución
Tabla 4.17. Dominio y rango para la relación (D) Meronimia Colección-Miembro
Dominio
Rango
Unidad organizacional
Producto
(E) Meronimia Canónica-Canónica: esta meronimia se aplica a todos y partes que
están unidos de manera obligatoria, pues la existencia de la relación implica que la parte debe
encontrarse en el todo y que el todo necesita de la parte.
El todo tiene a la parte de manera obligatoria.
La parte puede pertenecer al todo de manera obligatoria.
La parte existe si existe el todo, es decir, hay una dependencia existencial entre los dos
elementos.
Es necesario que existan la parte en el todo y no es posible que exista otro elemento de
la misma clase como parte del todo.
Al eliminar el todo se elimina siempre la parte.
Al eliminar la parte se elimina siempre el todo.
No es posible crear enlaces dinámicamente hacia nuevas partes.
El dominio y rango de esta relación están dados por las siguientes clases que se
muestran en la tabla 4.18 (definidas en 4.2.2.5):
Tabla 4.18. Dominio y rango para la relación (E) Meronimia Canónica-Canónica
Dominio
Rango
Unidad organizacional
Organización funcionamiento
(F) Meronimia Canónica-Canónica: esta meronimia se aplica a todos y partes que
están unidos de manera obligatoria, pues la existencia de la relación implica que la parte debe
encontrarse en el todo y que el todo necesita de la parte.
El todo tiene a la parte de manera obligatoria.
La parte puede pertenecer al todo de manera obligatoria.
La parte pertenece de manera obligatoria al todo, es decir, el todo debe tener como
parte a un elemento de la clase.
Al eliminar el todo se elimina siempre la parte.
Al eliminar la parte no se elimina el todo.
Debe existir un elemento de la clase como parte del todo y pueden existir n número de
elementos de esta clase como partes del todo.
Es posible crear enlaces dinámicamente hacia nuevas partes.
El dominio y rango de esta relación están dados por las siguientes clases que se
muestran en la tabla 4.19 (definidas en 4.2.2.5):
Página 53
Capítulo 4. Análisis y diseño de la solución
Tabla 4.19. Dominio y rango para la relación (F) Meronimia Canónica-Canónica
Dominio
Rango
Unidad organizacional
Unidad organizacional
(G) Meronimia Canónica-Canónica: esta meronimia se aplica a todos y partes que
están unidos de manera obligatoria, pues la existencia de la relación implica que la parte debe
encontrarse en el todo y que el todo necesita de la parte.
El todo contiene a la parte de manera obligatoria.
La parte puede pertenecer al todo de manera obligatoria.
La parte debe tener como todo a un elemento de la clase, de manera obligatoria y no
puede pertenecer a otro tipo de elementos de otras clases.
Debe existir un elemento de la clase como parte del todo y pueden existir n número de
elementos de esta clase como partes del todo.
No es posible eliminar un todo sin antes eliminar las partes que lo conforman.
Al eliminar la parte no se elimina el todo.
Es posible crear enlaces dinámicamente hacia nuevas partes.
El dominio y rango de esta relación están dados por las siguientes clases que se
muestran en la tabla 4.20 (definidas en 4.2.2.5):
Tabla 4.20. Dominio y rango para la relación (G) Meronimia Canónica-Canónica
Dominio
Rango
Unidad organizacional
Descripción física
(H) Meronimia Canónica-Canónica: esta meronimia se aplica a todos y partes que
están unidos de manera obligatoria, pues la existencia de la relación implica que la parte debe
encontrarse en el todo y que el todo necesita de la parte.
El todo tiene a la parte de manera obligatoria.
La parte puede pertenecer al todo de manera obligatoria.
La parte pertenece de manera obligatoria al todo, es decir, el todo debe tener como parte
a un elemento de la clase.
Debe existir un elemento de la clase como parte del todo y pueden existir sólo un
elemento de esta clase como partes del todo.
Al eliminar el todo se elimina la parte.
Al eliminar la parte no se elimina el todo.
No es posible crear enlaces dinámicamente hacia nuevas partes.
El dominio y rango de esta relación están dados por las siguientes clases que se
muestran en la tabla 4.21 (definidas en 4.2.2.5):
Página 54
Capítulo 4. Análisis y diseño de la solución
Tabla 4.21. Dominio y rango para la relación (H) Meronimia Canónica-Canónica
Dominio
Rango
Unidad organizacional
Descripción abstracta
(I) Meronimia Canónica-Canónica: esta meronimia se aplica a todos y partes que
están unidos de manera obligatoria, pues la existencia de la relación implica que la parte debe
encontrarse en el todo y que el todo necesita de la parte.
El todo tiene a la parte de manera obligatoria.
La parte pertenece al todo de manera obligatoria.
La parte p
ertenece de manera exclusiva al todo, es decir, el todo debe ser el único en tener como
parte a un elemento de la clase.
Si existe un elemento de la clase como parte del todo, pueden existir n número de
elementos de esta clase como partes del todo.
Al eliminar el todo se elimina la parte.
Al eliminar la parte no se elimina el todo.
Es posible crear enlaces dinámicamente hacia nuevas partes.
El dominio y rango de esta relación están dados por las siguientes clases que se
muestran en la tabla 4.22 (definidas en 4.2.2.5):
Tabla 4.22. Dominio y rango de la relación (I) Meronimia Canónica-Canónica
Dominio
Rango
Unidad organizacional
Unidad organizacional
(J) Meronimia Canónica-Canónica: esta meronimia se aplica a todos y partes que
están unidos de manera obligatoria, pues la existencia de la relación implica que la parte debe
encontrarse en el todo y que el todo necesita de la parte.
El todo tiene a la parte de manera obligatoria.
La parte puede pertenecer al todo de manera obligatoria.
La parte pertenece de manera obligatoria al todo, es decir, el todo debe tener como parte
a un elemento de la clase.
Debe existir un elemento de la clase como parte del todo y puede existir sólo un
elemento de esta clase como partes del todo.
Al eliminar el todo se elimina la parte.
Al eliminar la parte no se elimina el todo.
Es posible crear enlaces dinámicamente hacia nuevas partes.
El dominio y rango de esta relación están dados por las siguientes clases que se
muestran en la tabla 4.23 (definidas en 4.2.2.5):
Página 55
Capítulo 4. Análisis y diseño de la solución
Tabla 4.23. Dominio y rango para la relación (J) Meronimia Canónica-Canónica
Dominio
Rango
Unidad organizacional
Descripción abstracta
(K) Meronimia Canónica-Facultativa: esta meronimia se aplica a todos obligatorios
con partes opcionales, pues la existencia de la relación implica que la parte podría
encontrarse en el todo y que el todo necesita de la parte.
El todo tiene a la parte de manera obligatoria.
La parte puede pertenecer al todo de manera opcional.
Si existe, la parte pertenece de manera obligatoria al todo, es decir, el todo debe tener
como parte a un elemento de la clase.
Debe existir un elemento de la clase como parte del todo y puede existir n número de
elementos de esta clase como partes del todo.
Al eliminar el todo se elimina la parte.
Al eliminar la parte no se elimina el todo.
No es posible crear enlaces dinámicamente hacia nuevas partes.
El dominio y rango de esta relación están dados por las siguientes clases que se
muestran en la tabla 4.24 (definidas en 4.2.2.5):
Tabla 4.24. Dominio y rango para la relación (K) Meronimia Canónica-Facultativa
Dominio
Rango
Descripción abstracta
Descripción abstracta
(L) Meronimia Canónica-Facultativa: esta meronimia se aplica a todos obligatorios
con partes opcionales, pues la existencia de la relación implica que la parte podría
encontrarse en el todo y que el todo necesita de la parte.
El todo tiene a la parte de manera obligatoria.
La parte puede pertenecer al todo de manera opcional.
Si existe, la parte pertenece de manera obligatoria al todo, es decir, el todo debe tener
como parte a un elemento de la clase.
Debe existir un elemento de la clase como parte del todo y puede existir sólo un
elemento de esta clase como parte del todo.
Al eliminar el todo se elimina la parte.
Al eliminar la parte no se elimina el todo.
No es posible crear enlaces dinámicamente hacia nuevas partes.
El dominio y rango de esta relación están dados por las siguientes clases que se
muestran en la tabla 4.25 (definidas en 4.2.2.5):
Página 56
Capítulo 4. Análisis y diseño de la solución
Tabla 4.25. Dominio y rango para la relación (L) Meronimia Canónica-Facultativa
Dominio
Rango
Descripción abstracta
Descripción física
(M) Meronimia Canónica-Facultativa: esta meronimia se aplica a todos obligatorios
con partes opcionales, pues la existencia de la relación implica que la parte podría
encontrarse en el todo y que el todo necesita de la parte.
El todo tiene a la parte de manera obligatoria.
La parte puede pertenecer al todo de manera opcional.
Si existe, la parte pertenece de manera obligatoria al todo, es decir, el todo debe tener
como parte a un elemento de la clase.
Debe existir un elemento de la clase como parte del todo y puede existir n número de
elementos de esta clase como partes del todo.
Al eliminar el todo se elimina la parte.
Al eliminar la parte no se elimina el todo.
Es posible crear enlaces dinámicamente hacia nuevas partes.
El dominio y rango de esta relación están dados por las siguientes clases que se
muestran en la tabla 4.26 (definidas en 4.2.2.5):
Tabla 4.26. Dominio y rango para la relación (M) Meronimia Canónica-Facultativa
Dominio
Rango
Unidad organizacional
Descripción física
(N) Meronimia Facultativa -Canónica: esta meronimia se aplica a todos opcionales
con partes obligatorias, pues la existencia de la relación implica que la parte podría
encontrarse en el todo y que el todo necesita de la parte.
El todo tiene a la parte de manera opcional.
La parte pertenece al todo de manera obligatoria.
La parte pertenece de manera exclusiva al todo, es decir, el todo debe ser el único en
tener como parte a un elemento de la clase.
Si existe una parte de la clase para el todo, pueden existir n número de partes de la
misma clase para el todo.
Al eliminar el todo se elimina la parte.
Al eliminar la parte no se elimina el todo.
Es posible crear enlaces dinámicamente hacia nuevas partes.
El dominio y rango de esta relación están dados por las siguientes clases que se
muestran en la tabla 4.27 (definidas en 4.2.2.5):
Página 57
Capítulo 4. Análisis y diseño de la solución
Tabla 4.27. Dominio y rango para la relación (N) Meronimia Facultativa -Canónica
Dominio
Rango
Unidad organizacional
Trámite
Topológica: esta relación aplica entre sustantivos que permanecen unidos por un
tiempo determinado.
El elemento del rango puede enlazarse dinámicamente hacia el dominio.
Al desaparecer el elemento del rango no se elimina el elemento del dominio.
Pueden existir diferentes elementos de la clase del rango en el elemento de la clase del
dominio.
El dominio y rango de esta relación están dados por las siguientes clases que se
muestran en la tabla 4.28 (definidas en 4.2.2.5):
Dominio
Tabla 4.28. Dominio y rango para la relación Topológica
Rango
UnidadOrganizacional
Suceso
Produce: indica que existen dos entidades donde una lleva a cabo la acción de
producir y la otra es el resultado de la acción.
El elemento del dominio puede enlazarse dinámicamente hacia el elemento del rango
y viceversa.
Al desaparecer el elemento del dominio no es necesario que el elemento del rango
desaparezca.
Al desaparecer el elemento del rango no es necesario que el elemento del dominio
desaparezca.
Un elemento del dominio puede relacionarse con varios elementos del rango y
viceversa.
El dominio y rango de esta relación están dados por las siguientes clases que se
muestran en la tabla 4.29 (definidas en 4.2.2.5):
Dominio
Trabajador
Tabla 4.29. Dominio y rango para la relación Produce
Rango
Producto
Registra: indica que existen dos entidades donde una lleva a cabo la acción de
registrar y la otra es el elemento que se registra.
Página 58
Capítulo 4. Análisis y diseño de la solución
El elemento del dominio puede enlazarse dinámicamente hacia el elemento del rango
y viceversa.
Al desaparecer el elemento del dominio no es necesario que el elemento del rango
desaparezca.
Al desaparecer el elemento del rango no es necesario que el elemento del dominio
desaparezca.
Si desaparecen todos los elementos del rango, no es lógico que exista en elemento del
dominio.
Un elemento del dominio puede relacionarse con diferentes elementos del rango.
Un elemento del rango puede relacionarse con diferentes elementos del dominio.
El dominio y rango de esta relación están dados por las siguientes clases que se
muestran en la tabla 4.30 (definidas en 4.2.2.5):
Dominio
Tabla 4.30. Dominio y rango para la relación Registra
Rango
DescripciónFísica
Trabajador
Página 59
Capítulo 4. Análisis y diseño de la solución
Tabla 4.31. Conjunto de propiedades para relaciones meronímicas
Tipo de relación
Multiplicidad
Propagación
de borrado
Comportamiento
temporal
Dominio y rango
Propiedad secundaria
(A) Meronimia
facultativafacultativa
0..1, 0..1
CascadaEnlace
Dinámico-Estático
Concepto compartido
(B) Meronimia
facultativafacultativa
(C) Meronimia
grupo-miembro
(D)Meronimia
colección-miembro
(E) Meronimia
canónica-canónica
(F) Meronimia
canónica-canónica
0..1, 0..*
CascadaEnlace
DinámicoDinámico
UnidadOrganizacionalOrganizaciónFuncionamiento
UnidadOrganizacionalDescripciónAbstracta
UnidadOrganizacionalDescripciónFísica
UnidadOrganizacionalUnidadOrganizacional
DescripciónAbstractaOrganizaciónFuncionamiento
1,*
RestringidoEnlace
RestringidoEnlace
CascadaCascada
CascadaEnlace
Dinámico-Estático
UnidadOrganizacional-Estudiante
UnidadOrganizacional-Trabajador
UnidadOrganizacional-Producto
Parte exclusiva
Dependencia existencial
(G) Meronimia
canónica-canónica
(H) Meronimia
canónica-canónica
(I) Meronimia
canónica-canónica
(J) Meronimia
canónica-canónica
1, 1..*
RestringidoEnlace
CascadaEnlace
CascadaEnlace
CascadaEnlace
DinámicoDinámico
Estático-Estático
UnidadOrganizacionalOrganizaciónFuncionamieto
UnidadOrganizacionalUnidadOrganizacional
DescripciónAbstractaServicioInterno
DescripciónAbstractaServicioExterno
UnidadOrganizacionalDescripciónFísica
UnidadOrganizacionalDescripciónAbstracta
UnidadOrganizacionalUnidadOrganizacional
UnidadOrganizacionalDescripciónAbstracta
1, 1..*
1,1
1, 1..*
1,1
1, 0..*
1,1
Dinámico-Estático
Estático-Estático
Dinámico-Estático
Dinámico-Estático
Estático-Estático
Concepto compartido
Parte obligatoria
Parte obligatoria
Todo obligatorio
Parte obligatoria
Parte exclusiva
Parte obligatoria
Página 60
Capítulo 4. Análisis y diseño de la solución
(K) Meronimia
canónicafacultativa
(L) Meronimia
canónicafacultativa
(M)Meronimia
canónicafacultativa
(N) Meronimia
facultativacanónica
Topológica
0..1, 1..*
CascadaEnlace
Estático-Estático
DescripciónAbstractaDescripciónAbstracta
Parte obligatoria
0..1, 1
CascadaEnlace
Estático-Estático
DescripciónAbstractaDescripciónFísica
Parte obligatoria
0..1, 1..*
CascadaEnlace
Dinámico-Estático
DescripciónFísicaUnidadOrganizacional
Parte obligatoria
1, 0..*
CascadaEnlace
Dinámico-Estático
UnidadOrganizacional-Trámite
Parte exclusiva
1, 0..*
Ninguna
1, 0..*
DinámicoDinámico
Dinámico-Estático
UnidadOrganizacional-Suceso
Registra
Trabajador-DescripciónFísica
Ninguna
Produce
1..*, 1..*
CascadaEnlace
EnlaceEnlace
EnlaceEnlace
Dinámico-Estático
Estudiante-Producto
Trabajador-Producto
Ninguna
Página 61
Capítulo 4. Análisis y diseño de la solución
4.3. Editor de estructuras de sitios Web
Para construir el editor se realizó un análisis de requerimientos previo, que refleja los
problemas y necesidades del usuario.
4.3.1. Análisis de requerimientos del usuario
Se identificaron dos posibles situaciones que pueden darse entre el usuario y la herramienta:
Crear un sitio Web nuevo: implica la construcción total de la estructura del sitio.
Editar un sitio Web construido previamente con la herramienta propuesta: se refiere a
un sitio Web cuya estructura fue construida utilizando el editor propuesto.
4.3.2. Arquitectura general de la herramienta y descripción de las funciones
En esta sección se muestra la arquitectura general del software y se describen los módulos
que se consideran necesarios para el desarrollo de la herramienta. Las funciones obtenidas
son resultado del análisis de requerimientos.
class Domain Obj ects
Usuario
Salida
Entrada
Buscar XML
Archiv os
Retorna XML
XML a verificar
Editor manual de
grafos
XML a interpretar
XML verificado
Verificador
XML para creación de estructura
Grafo del XML
Panel de
v isualización de
grafos
Generador de
estructura
Archivos para almacenamiento
Figura 4.6. Arquitectura general del editor EDWEB
Página 62
Capítulo 4. Análisis y diseño de la solución
Crear grafo del sitio Web: esta tarea está soportada por la aplicación LinkBrowser de
Touchgraph, sin embargo se realizaron modificaciones al código para crear grafos con
nodos etiquetados a partir de un árbol de conceptos que deberá ser formado
automáticamente a partir de un archivo OWL de la ontología. De la misma manera se
realizaron las modificaciones pertinentes para obtener aristas etiquetadas con las
relaciones establecidas en la ontología.
Crear archivo XML a partir de un grafo: con LinkBrowser es posible crear archivos
descriptivos, por lo que se ha hecho una modificación para almacenar los nombres en
las aristas del grafo al archivo XML de la estructura.
Generar grafo a partir de un archivo XML: se realizaron pequeñas modificaciones
para crear el grafo con aristas etiquetadas.
Generar estructura del sitio Web: la herramienta LinkBrowser no es capaz de crear
páginas en blanco del sitio Web, por lo que esta funcionalidad fue añadida en el editor
de sitios.
Crear reporte de errores: se agregó un módulo de análisis del grafo dibujado,
incluyendo los errores existentes al momento de crearlo, como la falta de relaciones
entre los conceptos.
Validar estructura del sitio Web: el editor debe proporcionar una manera de
identificar que los elementos de un grafo, que conforman el archivo XML del sitio
Web, están debidamente etiquetados.
4.3.3. Usuarios de la herramienta
1) Administrador del sitio Web
El administrador del sitio Web es conocido también como Webmaster. Se encarga de
administrar el sitio Web, tal como su nombre lo indica. Entre sus tareas se encuentran la de
crear y manejar la información y la organización de un sitio Web, de acuerdo al tamaño del
mismo.
En sitios grandes se encarga de la supervisión del diseño del sitio, mientras que en
sitios pequeños lleva a cabo la creación y el mantenimiento.
2) Arquitecto de la información
Integra los componentes del sitio Web y la manera en que el usuario navegará de una
página a otra.
Una de sus tareas es la de diseñar un mapa de sitio que muestre las secciones principales
del sitio. Posteriormente, el IA17, se dedica a los detalles a nivel página y crea una serie de
17
Arquitecto de la Información, por sus siglas en inglés.
Página 63
Capítulo 4. Análisis y diseño de la solución
maquetas de la arquitectura de las páginas y esbozos de diseño18 que muestran el contenido y
los elementos de navegación que componen cada página del sitio.
4.3.4. Limitaciones de la herramienta
El editor no tiene limitantes en cuanto al lenguaje de desarrollo o la plataforma, sin embargo,
se debe establecer un ambiente adecuado de acuerdo al tipo de herramienta a desarrollar.
El producto se cataloga como un software de aplicación monopuesto, porque ayuda al
usuario con un solo rol de interacción a desarrollar tareas específicas.
La aplicación se ejecutará sobre un equipo local, sin el uso de servidores o conexiones
a red.
En cuanto a la aplicación del análisis, se utilizan relaciones estáticas. No es posible
definir nuevos tipos de relaciones, para llevar un control en las restricciones y la
manera en que se enlazan los nodos de los grafos.
Las validaciones son exclusivas a las relaciones definidas en el grafo, ya que no se
contempla contenido.
4.4. Diseño
Esta sección muestra los casos de uso de la herramienta y sus especificaciones.
4.4.1. Diagramas de casos de uso
Se muestran a continuación los diagramas de caso de uso del editor contemplados para este
trabajo.
Las maquetas son borradores que muestran contenido y vínculos entre las páginas. Los esbozos se basan en las
maquetas y son un primer intento por diseñar la interfaz de las páginas de nivel superior del sitio.
18
Página 64
Capítulo 4. Análisis y diseño de la solución
Figura 4.7. Casos de uso
Se observa como primer caso de uso la creación manual de un grafo que corresponde
al caso en el que no existe un sitio previo y debe generarse desde el principio. Existe la
posibilidad de que la creación del grafo incluya la visualización de una estructura
previamente construida que se toma como base para el diseño.
La creación de un reporte de errores de una estructura implica que se creará primero
un grafo. Lo mismo ocurre en el caso de la generación de la estructura del sitio Web, que
requiere a su vez de la creación de un reporte de errores.
ID:
Actores:
Descripción:
Precondiciones:
Poscondiciones:
Escenario de éxito 1:
Tabla 4.32. Propiedades de CU-1 Crear grafo del sitio Web
CU-1
Crear grafo del sitio Web
Constructor del sitio Web.
Permite al usuario crear un nuevo grafo en el panel de edición.
1. Debe cargarse la ontología requerida en la aplicación
1. Se obtiene un grafo con nodos y aristas etiquetadas
1. Se abre la aplicación
2. Se carga la ontología requerida
Página 65
Capítulo 4. Análisis y diseño de la solución
3. El usuario toma un concepto de la lista de clases generada
4. El usuario selecciona una relación
5. Se genera una tripleta válida
6. Se repiten las acciones 3, 4 y 5 hasta que el usuario completa el grafo
Supone que la ontología para esta aplicación ha sido creada.
Suposición:
ID:
Tabla 4.33. Propiedades de CU-2 Crear archivo XML a partir de un grafo
CU-2
Crear archivo XML a partir de un grafo
Actores:
Descripción:
Precondiciones:
Poscondiciones:
Escenario de éxito 1:
Escenario de éxito 2:
Suposición:
ID:
Constructor del sitio Web.
Permite al usuario generar el archivo descriptivo de la estructura de un
sitio Web a partir de un grafo.
1. Debe existir un grafo creado previamente
2. Todos los nodos y aristas del grafo deben estar etiquetados
1. Se almacena un archivo XML con una sección descriptiva para nodos y
otra para aristas
1. Se crea un grafo previamente
2. Se selecciona del menú la opción de guardar un archivo como
3. El archivo es nombrado y almacenado
1. Se abre un archivo XML previamente creado
2. Se realizan modificaciones al grafo visualizado
3. Se selecciona del menú la opción de guardar un archivo como
4. El archivo es nombrado y almacenado
Supone que cada nodo y arista han sido nombrados y que el grafo es
coherente.
Tabla 4.34. Propiedades de CU-3 Generar grafo a partir de un archivo XML
CU-3
Generar grafo a partir de un archivo XML
Actores:
Descripción:
Precondiciones:
Poscondiciones:
Escenario de éxito 1:
Suposición:
ID:
Actores:
Descripción:
Precondiciones:
Poscondiciones:
Constructor del sitio Web.
Permite al usuario visualizar un grafo a partir de un archivo XML que se
ha creado con anterioridad.
1. Debe existir un archivo XML guardado
2. El grafo creado en el panel debe mostrar los nodos y aristas que no están
etiquetados.
1. Se abre un archivo XML existente
2. Se muestra en el panel el grafo descrito por el archivo XML
3. Los nodos y aristas indefinidos se muestran en un color distinto al resto
del grafo.
El archivo XML utilizado mantiene la estructura del DTD.
Tabla 4.35. Propiedades de CU-4 Generar estructura del sitio Web
CU-4
Generar estructura del sitio Web
Constructor del sitio Web.
Permite al usuario crear un conjunto de páginas basadas en un grafo
diseñado en la herramienta editor.
1. Debe crearse y guardarse un archivo XML previamente
2. El archivo XML debe ser verificado para validar sus consistencia
1. Las páginas creadas deben contener los enlaces correspondientes hacia
Página 66
Capítulo 4. Análisis y diseño de la solución
Escenario de éxito 1:
Escenario de éxito 2:
Escenario de fracaso
1:
Suposición:
Tabla 4.36. Propiedades de CU-5 Crear reporte de errores
CU-5
Crear reporte de errores
ID:
Actores:
Descripción:
Precondiciones:
Poscondiciones:
Escenario de éxito 1:
Escenario de éxito 2:
Suposición:
ID:
Actores:
Descripción:
Precondiciones:
Poscondiciones:
otras páginas
1. Se crea un archivo XML y se almacena
2. Se verifica la consistencia del grafo
3. Se selecciona del menú la opción de generar estructura y se crea una
carpeta con un conjunto de paginas enlazadas
1. Se crea un archivo XML y se almacena
2. Se verifica la consistencia del grafo
3. Se selecciona del menú la opción de generar estructura y la carpeta ya
existe
4. Se solicita la reescritura de la carpeta o el almacenamiento del archivo
XML con otro nombre
5. Se almacena el archivo y se selecciona nuevamente la opción de generar
estructura
6. La carpeta se crea exitosamente
1. Se crea un archivo XML y se almacena
2. Se verifica la consistencia del grafo
3. Se selecciona del menú la opción de generar estructura y la carpeta ya
existe
4. Se solicita la reescritura de la carpeta o el almacenamiento del archivo
XML con otro nombre
5. La carpeta no se sobreescribe y por tanto no se almacena
La carpeta no existe o si existe se desea realizar cambios en ella y es posible
sobreescribirla.
Constructor del sitio Web.
Proporcionar al usuario un elemento que le permita listar la serie de
errores encontrados en el grafo.
1. Debe existir un grafo creado previamente
1. El reporte generado indica los nodos origen y destino de la arista
indefinida
1. Se abre un archivo XML existente
2. Se selecciona del menú la opción de verificar grafo
3. En el panel del reporte se listan los nodos origen y destino de los enlaces
con etiqueta indefinida
1. Se abre un archivo XML existente
2. Se selecciona del menú la opción de verificar grafo
3. En el panel del reporte aparece un mensaje que indica que el grafo está
correctamente enlazado
El archivo XML existe.
Tabla 4.37. Propiedades de CU-6 Validar estructura del sitio Web
CU-6
Validar estructura del sitio Web
Constructor del sitio Web.
La validación ayuda al usuario a detectar posibles inconsistencias en el
grafo creado.
1. El grafo está siendo modificado
2. El grafo ha sido previamente guardado
1. Se indica en el grafo, con un cambio de color, las aristas o nodos
etiquetados incorrectamente
Página 67
Capítulo 4. Análisis y diseño de la solución
Escenario de éxito 1:
Escenario de éxito 2:
Suposición:
2. Se indica la falta de etiquetas en los nodos
1. Se abre un archivo XML existente
2. El grafo se visualiza en el panel de edición de grafos
3. Las aristas y nodos no etiquetados o etiquetados como indefinidos se
observan en un tono de color distinto a los demás elementos del grafo
1. Se crea o se abre un archivo XML
2. Se desea realizar una modificación a una arista
3.La arista se etiqueta como indefinida
4. La arista indefinida se observa en un color diferente al resto del grafo
El usuario, premeditadamente, nombra una arista como indefinida pues no
conoce, por el momento, el tipo de relación existente entre dos elementos.
El usuario elimina el nombre de un nodo en el archivo XML.
Página 68
Capítulo 5. Implementación
El presente capítulo muestra la implementación de la ontología diseñada y describe la
herramienta desarrollada para el trabajo de investigación. Dentro de este capítulo se observan
los flujos de actividades de las tareas desarrolladas con el editor de sitios Web, así como las
clases que se involucran en ellas.
Capítulo 5. Implementación
5.1. Creación de la ontología con la herramienta Protégé
Para la implementación se tomó en cuenta la creación de la ontología para sitios Web del
dominio de educación por medio de la herramienta Protégé.
Protégé permite describir una jerarquía de clases de la ontología, sus atributos (slots) y
las instancias de la base de conocimiento.
El primer paso consiste en la creación de la jerarquía de clases, mostrada en la figura
siguiente. Las clases se listan iniciando con la clase Documento y a partir de ella se crean
elementos más particulares hasta llegar a las hojas de la jerarquía.
Figura 5.1. Jerarquía de clases
Para enlazar a dos individuos se crean relaciones binarias llamadas propiedades. Estas
propiedades son el equivalente a las relaciones encontradas en la etapa de desarrollo de la
metodología.
Página 70
Capítulo 5. Implementación
Figura 5.2. Conjunto de propiedades
Existen dos tipos de propiedades principales: propiedades de objetos y propiedades
de tipo de dato. Las propiedades mostradas en la figura 5.1 son propiedades de objeto, pues
enlazan a un individuo con otro, a diferencia de las de dato que enlazan un individuo con un
símbolo o dato.
5.2. Desarrollo de la aplicación
5.2.1. Características generales de implementación
Para llevar a cabo la implementación se utilizaron las siguientes herramientas:
Para la el desarrollo de la aplicación se utilizará Java J2SE Development Kit en su
versión 1.6.0, soportado sobre Microsoft Windows. Esta versión proporciona un
compilador y un conjunto de herramientas para crear programas independientes y
java applets.
Página 71
Capítulo 5. Implementación
Para la creación de la ontología del dominio de educación se utilizó el editor de
ontologías Protégé en su versión 3.4 Beta.
La explotación de la ontología para la herramienta fue llevada a cabo por medio de la
API Jena en su versión 2.5.5.
5.2.2. Implementación de módulos
Los detalles mostrados a continuación se refieren a cada módulo implementado de la
herramienta de software EDWEB.
Los módulos implementados tienen su equivalente con un caso de uso de la fase de
análisis.
5.2.2.1. Carga de la ontología
La figura 5.3 muestra las clases necesarias para obtener acceso a la ontología del dominio de
educación creada con la herramienta Protégé. Para ello se importa la API Jena, que permite la
explotación de datos de la ontología en formato OWL. Las librerías Individual, OntClass y
Resource, ayudan a manejo de nodos, descripciones de clases y manejo de recursos RDF.
La clase JenaParser se utiliza para mostrar las clases, instancias y las clases inferidas
con el modelo de inferencia.
Las clases e instancias obtenidas de la ontología en OWL se listan en una instancia de
la clase JTree, aunque se listan únicamente las hojas de la ontología pues son éstas las
utilizadas en la creación de grafos.
Página 72
Capítulo 5. Implementación
class client
JPanel
TGLinkBrow ser
+
+
+
~
~
~
+
~
#
#
+
+
+
~
~
~
+
~
~
~
~
~
~
~
~
+
arbolNodos: JTree
band: int = 0
bar: JScrollPane
completeEltSet: GraphEltSet = null
documentBase: URL
enclosingApplet: JApplet = null
enclosingFrame: JFrame = null
externalFrame: String
graphsVisited: Stack = new Stack() {readOnly}
hvScroll: HVScroll
initialNodeName: String
lbEdgeDialog: LBEdgeDialog
lbNodeDialog: LBNodeDialog
lbPopup: JPopupMenu
listReport: JList
localityScroll: LocalityScroll
modeSelectPanel: JPanel
openFile: JButton = new JButton()
parser: JenaParser = null
proxyServlet: String
rotateScroll: RotateScroll
scrollBarHash: Hashtable = new Hashtable() {readOnly}
targetFrame: String
textOntology: JTextField = new JTextField()
tgLensSet: TGLensSet
tgPanel: TGPanel
tgUIManager: TGUIManager
xmlFileName: String
xmlio: XMLio
zoomScroll: ZoomScroll
+
+
+
+
~
~
~
+
+
+
~
+
addElement(Vector) : void
addUIs() : void
buildLens() : void
buildPanel() : void
createParameterHash() : Hashtable
getDocumentBase() : URL
getTGPanel() : TGPanel
jbInit() : void
lblMenuBarPrincipal() : JMenuBar
main(String[]) : void
processNodeUrl(LBNode) : void
restoreSavedParameters(Hashtable) : void
salir_ActionPerformed(ActionEvent) : void
scrollSelectPanel(String[]) : JPanel
setLocale(String, int) : void
TGLinkBrowser()
TGLinkBrowser(JApplet)
TGLinkBrowser(JFrame)
titles(String, int, int, int, int) : JLabel
JenaParser
-parser
-
file: File = null
model: OntModel = null
+
+
+
+
getIndividuals() : List<Individual>
getInfModel() : InfModel
getOntClass() : List<OntClass>
JenaParser(File)
Figura 5.3. Clases para explotación de la ontología
5.2.2.2. Creación de grafos con la herramienta
Este módulo es equivalente al CU-1 Crear grafo del sitio Web. Para la creación de un nuevo
grafo con el editor de sitios Web se usan las clases Node y LBNode con el argumento que
corresponde al nombre del nodo principal por defecto.
Esta acción creará un nuevo panel de trabajo con un nodo inicial llamado
“UnidadOrganizacional:Principal”.
Un grafo se conforma de un número de nodos, tomados de la lista de clases de la
ontología, y aristas proporcionadas por el usuario. Los nodos poseen propiedades por defecto
como nombre, tipo de clase a la que pertenece e incluso un campo descriptivo.
Las aristas se crean por medio de las clases Edge y LBEdge. Requieren como
parámetros de entrada, un nodo origen, un nodo destino y una longitud de arista. Este último
valor es tomado de los datos por defecto.
Al completar una tripleta existe un proceso de validación de la misma, asegurándose
de que dichos nodos pueden enlazarse por medio de la relación seleccionada. La clase
Validator contiene el método validate, encargado de la verificación de la tripleta generada.
Para realizar la validación se envían los datos de la tripleta (objetos LBNode y LBEdge) a la
clase Validator desde el método mouseReleased de la clase LBDragAddNodeUI.
Página 73
Capítulo 5. Implementación
Finalmente, al crear la tripleta se despliega una ventana de edición del nodo donde el
usuario puede modificar las características del nodo destino. Para ello, la clase LBNodeDialog
cuenta con el método saveChangesAndHideDialog.
Figura 5.4. Diagrama de actividades para la creación de grafos
La figura 5.4 muestra el diagrama de las actividades llevadas a cabo para crear un
grafo de sitio nuevo. Las clases que intervienen en esta tarea pueden observarse en la figura
5.5.
Página 74
Capítulo 5. Implementación
class client
+from
~dragNode
+
+
+
+
+
#
+
+
+
+
+
+
#
#
#
#
#
+
#
+
+
#
#
+
+
+
#
#
+
+
+
#
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
JPanel
Runnable
GraphEltSet
Node
LBEdge
Edge
TGLayout
+tgLayout
~
# col: Color
- damper: double
+ BIDIRECTIONAL_EDGE: int = 0 {readOnly}
+
AUTO_ID_STRING: String = "AutoID " {readOnly}
+ DEFAULT_COLOR: Color = Color.decode("#...
- damping: boolean
+ DEFAULT_TYPE: int = 1
#
BACK_DEFAULT_COLOR: Color = new Color(208, ...
+ DEFAULT_LENGTH: int = 350
~ dragNode: Node
+ edgeType: int
~
BACK_FIXED_COLOR: Color
+ from: Node
- lastMaxMotion: double
+ HIERARCHICAL_EDGE: int = 1 {readOnly}
BACK_HILIGHT_COLOR: Color = Color.decode("#...
# length: int
- maxMotion: double
label:
String
~
+ addEdge(Edge) : void
BACK_SELECT_COLOR: Color = new Color(255, ...
+ MOUSE_OVER_COLOR: Color
- motionRatio: double
+
LABEL_BACK_COLOR:
Color
=
new
Color(255,
...
+ addEdge(Node, Node, int) : Edge
-tgPanel backColor: Color
+ to: Node
- newRigidity: double
+ LABEL_FONT: Font = new Font("Couri...
+ addNode(Node) : void
BORDER_DRAG_COLOR: Color
~completeEltSet
# visible: boolean
- relaxer: Thread
+ LABEL_TEXT_COLOR: Color
#
+ calculateDistances(Node, int) : Hashtable
BORDER_INACTIVE_COLOR: Color
- rigidity: double
#
+ clearAll() : void
BORDER_MOUSE_OVER_COLOR: Color = new Color(160, ...
+ containsPoint(double, double) : boolean
- tgPanel: TGPanel
+ getLabel() : String
#
+ contains(Node) : boolean
DEFAULT_TYPE: int = 1
+ distFromPoint(double, double) : double
+ getType() : int
#
+ contains(Edge) : boolean
drawx: double
+ Edge(Node, Node, int)
- avoidLabels() : void
+ LBEdge(LBNode, LBNode)
+ deleteEdge(Edge) : boolean
drawy: double
+ Edge(Node, Node)
+ damp() : void
+ LBEdge(LBNode, LBNode, int)
~
+ deleteEdge(Node, Node) : boolean
dx: double
+ getColor() : Color
- moveNodes() : void
+ paint(Graphics, int, int, int, int, Color, int) : void
~
+
deleteEdges(Vector)
:
void
dy: double
+ getFrom() : Node
- myWait() : void
+
paint(Graphics,
TGPanel)
:
void
~
+ deleteNode(Node) : boolean
edges: Vector
+ getLength() : int
- relax() : void
+
paintEdgeBody(Graphics,
TGPanel)
:
void
+ deleteNodes(Vector) : void
fixed: boolean
+ getOtherEndpt(Node) : Node
- relaxEdges() : void
+
paintFatLine(Graphics,
int,
int,
int,
int,
Color)
:
void
#
# edgeAt(int) : Edge
font: Font
+ getTo() : Node
+ resetDamper() : void
+ setEdgeDafaultType(int) : void
~
+ edgeNum() : int
fontMetrics: FontMetrics
+ intersects(Dimension) : boolean
+ run() : void
+ setLabel(String) : void
+
+ findEdge(Node, Node) : Edge
id: String
+ isVisible() : boolean
~ setDragNode(Node) : void
+ setType(int) : void
~
+ findNode(String) : Node
justMadeLocal: boolean
+ paint(Graphics, TGPanel) : void
~ setRigidity(double) : void
~
+ findNodesByLabel(String) : Collection
lbl: String
+ paintArrow(Graphics, int, int, int, int, Color) : void
+ start() : void
+ forAllEdges(TGForEachEdge) : void
localEdgeCount: int
+ reverse() : void
+ startDamper() : void
+ forAllNodePairs(TGForEachNodePair) : void
markedForRemoval: boolean
+ setColor(Color) : void
+ stop() : void
+
+ forAllNodes(TGForEachNode) : void
nm: String
+ setEdgeDefaultColor(Color) : void
+ stopDamper() : void
+
+
getFirstNode()
:
Node
repulsion: int
+ setEdgeDefaultLength(int) : void
+ TGLayout(TGPanel)
+
+ getRandomNode() : Node
SMALL_TAG_FONT: Font = new Font("Couri... {readOnly}
+ setEdgeMouseOverColor(Color) : void
+
+ GraphEltSet()
TEXT_COLOR: Color
+ setLength(int) : void
#mouseOverE
+
# nodeAt(int) : Node
TEXT_FONT: Font = new Font("Couri...
+ setVisible(boolean) : void
-completeEltSet
+
+ nodeNum() : int
textColor: Color
+
typ: int
+
TYPE_ELLIPSE: int = 3 {readOnly}
+
TYPE_RECTANGLE: int = 1 {readOnly}
#select
+
TYPE_ROUNDRECT: int = 2 {readOnly}
~dragNode
+
visible: boolean
#mouseOverN
+
x: double
~tgPanel
+
y: double
JInternalFrame
+
LBNodeDialog
+
addEdge(Edge) : void
+to
+
containsPoint(double, double) : boolean
- cbHintIsHTML: JCheckBox
+
containsPoint(Point) : boolean
- cbLocal: JCheckBox
JPanel
#
edgeAt(int) : Edge
- cboFontSize: JComboBox
+
TGLinkBrow ser
edgeNum() : int
- cboNodeType: JComboBox
~
getBackColor() : Color
- cbXML: JCheckBox
+ arbolNodos: JTree
+
getFixed() : boolean
- cmdCancel: JButton
+ band: int = 0
+
getFont() : Font
- cmdOK: JButton
+ bar: JScrollPane
+
getHeight() : int
- lastBackColorButton: JButton
~ completeEltSet: GraphEltSet = null
+
getID() : String
- lastTextColorButton: JButton
- documentBase: URL
+
getLabel() : String
- lblBackColor: JLabel
~tgPanel +
- enclosingApplet: JApplet = null
LBNode
getLocation() : Point
- lblTextColor: JLabel
- enclosingFrame: JFrame = null
+
getName() : String
~ hint: String
~ lbNode: LBNode
~ externalFrame: String
+
getPaintBackColor(TGPanel) : Color
+ HINT_BACK_COLOR: Color
- taHint: JTextArea
~ graphsVisited: Stack = new Stack() {readOnly}
+
getPaintBorderColor(TGPanel) : Color
+ HINT_FONT: Font = new Font("Couri...
- tfBackColor: JTextField
+ hvScroll: HVScroll
+
getPaintTextColor(TGPanel) : Color
+ HINT_TEXT_COLOR: Color
- tfHintHeight: JTextField
~ initialNodeName: String
+
getTextColor() : Color
~ hintFont: Font
- tfHintWidth: JTextField
# lbEdgeDialog: LBEdgeDialog
+
getType() : int
~ hintHeight: int
- tfLabel: JTextField
# lbNodeDialog: LBNodeDialog
+
getWidth() : int
~ hintIsHTML: boolean
- tfTextColor: JTextField
+ lbPopup: JPopupMenu
+
initialize(String) : void
~ hintWidth: int
- tfURL: JTextField
+ listReport: JList
+
intersects(Dimension) : boolean
+ MINIMUM_HINT_HEIGHT: int = 20
~ tgPanel: TGPanel
+ localityScroll: LocalityScroll
+
isVisible() : boolean
~ url: String
~ modeSelectPanel: JPanel
+
localEdgeNum() : int
~ urlIsLocal: boolean
- encodeColor(Color) : String
~
openFile:
JButton
=
new
JButton()
+
~lbNode
Node()
~ urlIsXML: boolean
- initColorSelectors() : void
- parser: JenaParser = null
+
Node(String)
- initComponents() : void
~ proxyServlet: String
~
Node(String, String)
+ getHeight() : int
+ LBNodeDialog(TGPanel)
+ rotateScroll: RotateScroll
+
Node(String, int, Color, String)
+ getHint() : String
+ main(String[]) : void
~ scrollBarHash: Hashtable = new Hashtable() {readOnly}
+
paint(Graphics, TGPanel) : void
+ getHintHeight() : int
+ saveChangesAndHideDialog() : void #lbNodeDialog
~ targetFrame: String
+
paintNodeBody(Graphics, TGPanel) : void
+ getHintIsHTML() : boolean
- setBackColor(Color) : void
~ textOntology: JTextField = new JTextField()
paintSmallTag(Graphics, TGPanel, int, int, Color, Color, char) : void
+ getHintWidth() : int
+ setLBNode(LBNode) : void
~ tgLensSet: TGLensSet
+
removeEdge(Edge) : void
+ getPaintBackColor(TGPanel) : Color
- setTextColor(Color) : void
~
tgPanel:
TGPanel
+
setBackColor(Color) : void
+ getPaintBorderColor(TGPanel) : Color
+ showDialog() : void
~ tgUIManager: TGUIManager
+
setFixed(boolean) : void
+ getPaintTextColor(TGPanel) : Color
~ xmlFileName: String
+
setFont(Font) : void
+ getPaintUnselectedBackColor() : Color
~ xmlio: XMLio
+
setID(String) : void
+ getURL() : String
+ zoomScroll: ZoomScroll
+
setLabel(String) : void
TGAbstractDragUI
+ getURLIsLocal() : boolean
+
setLocation(Point) : void
LBDragAddNodeUI
+ getURLIsXML() : boolean
+ addElement(Vector) : void
+
setName(String) : void
+ getWidth() : int
- addUIs() : void
+
setNodeBackDefaultColor(Color) : void
~ cboParRel: JComboBox
+ LBNode()
- buildLens() : void
+
setNodeBackFixedColor(Color) : void
~ dragAddNode: LBNode
+ LBNode(String)
- buildPanel() : void
+
setNodeBackHilightColor(Color) : void
~
mousePos:
Point
+ LBNode(String, String, String)
- createParameterHash() : Hashtable
+
setNodeBackSelectColor(Color) : void
~ newNode: String = "UnidadOrganiza...
~ myBrighter(Color) : Color
+ getDocumentBase() : URL
+
setNodeBorderDragColor(Color) : void
~ result: Boolean
+ paint(Graphics, TGPanel) : void
+ getTGPanel() : TGPanel
~
setNodeBorderInactiveColor(Color) : void
~ tgLinkBrowser: TGLinkBrowser
+ separatorString(String) : String
jbInit()
:
void
+
~tgLinkBrowser
setNodeBorderMouseOverColor(Color) : void
+ setHint(String) : void
~dragAddNode
- lblMenuBarPrincipal() : JMenuBar
+
setNodeTextColor(Color) : void
+ LBDragAddNodeUI(TGLinkBrowser)
+ setHintHeight(int) : void
+ main(String[]) : void
+
setNodeTextFont(Font) : void
+ mouseDragged(MouseEvent) : void
+ setHintIsHTML(boolean) : void
~ processNodeUrl(LBNode) : void
+
setNodeType(int) : void
+ mousePressed(MouseEvent) : void
+ setHintWidth(int) : void
- restoreSavedParameters(Hashtable) : void
+
setTextColor(Color) : void
+ mouseReleased(MouseEvent) : void
+ setNodeHintBackColor(Color) : void
~ salir_ActionPerformed(ActionEvent) : void
+
setType(int) : void
+ paintAfterEdges(Graphics) : void
+ setNodeHintFont(Font) : void
~ scrollSelectPanel(String[]) : JPanel
+
setVisible(boolean) : void
+ paintFirst(Graphics) : void
+ setNodeHintTextColor(Color) : void
+ setLocale(String, int) : void
+
+ paintLast(Graphics) : void
+ setURL(String) : void
+ TGLinkBrowser()
+
+ preActivate() : void
+ setURLIsLocal(boolean) : void
+ TGLinkBrowser(JApplet)
+
+ preDeactivate() : void
+ setURLIsXML(boolean) : void
~ TGLinkBrowser(JFrame)
+
+ returnData() : String
+ titles(String, int, int, int, int) : JLabel
+
#
+
#
#
edges: Vector
nodeCount: int
nodeIDRegistry: Hashtable = null
nodes: Vector
TGPanel
adjustOriginLens: AdjustOriginLens
BACK_COLOR: Color = Color.white
basicMML: BasicMouseMotionListener
bottomRightDraw: TGPoint2D = null
completeEltSet: GraphEltSet
dragNode: Node
graphListeners: Vector
localityUtils: LocalityUtils
maintainMouseOver: boolean = false
mouseOverE: Edge
mouseOverN: Node
mousePos: Point
nombreNodo: String
offgraphics: Graphics
offscreen: Image
offscreensize: Dimension
paintListeners: Vector
select: Node
switchSelectUI: SwitchSelectUI
tgLayout: TGLayout
tgLensSet: TGLensSet
topLeftDraw: TGPoint2D = null
visibleLocality: VisibleLocality
addEdge(Edge) : void
addEdge(Node, Node, int) : Edge
addGraphListener(GraphListener) : void
addNode() : Node
addNode(String) : Node
addNode(String, String) : Node
addNode(Node) : void
addPaintListener(TGPaintListener) : void
clearAll() : void
clearSelect() : void
deleteEdge(Edge) : void
deleteEdge(Node, Node) : void
deleteNode(Node) : boolean
deleteNodeById(String) : boolean
edgeNum() : int
expandNode(Node) : void
findEdge(Node, Node) : Edge
findMouseOver() : void
findNode(String) : Node
fireMovedEvent() : void
fireResetEvent() : void
getAdjustOriginLens() : AdjustOriginLens
getBottomRightDraw() : TGPoint2D
getCenter() : TGPoint2D
getDragNode() : Node
getDrawCenter() : TGPoint2D
getGES() : InmutableGraphEltSet
getMouseOverE() : Edge
getMouseOverN() : Node
getMousePos() : Point
getNodeCount() : int
getNombreNodo(String) : String
getSelect() : Node
getSwitchSelectUI() : SwitchSelectUI
getTopLeftDraw() : TGPoint2D
hideEdge(Edge) : void
hideNode(Node, Node) : void
main(String[]) : void
multiSelect(TGPoint2D, TGPoint2D) : void
myBrihgter(Color) : Color
nodeNum() : int
paint(Graphics) : void
processGraphMove() : void
redraw() : void
removeGraphListener(GraphListener) : void
removePaintListener(TGPaintListener) : void
repaintAfterMove() : void
resetDamper() : void
selectFirstNode() : void
setBackColor(Color) : void
setDragNode(Node) : void
setGraphEltSet(GraphEltSet) : void
setLensSet(TGLensSet) : void
setLocale(Node, int) : void
setMaintainMouseOver(boolean) : void
setMouseOverE(Edge) : void
setMouseOverN(Node) : void
setMousePos(Point) : void
setNombreNodo(String) : void
setSelect(Node) : void
setTGLayout(TGLayout) : void
startDamper() : void
stopDamper() : void
TGPanel()
update(Graphics) : void
updateDrawPos(Node) : void
updateDrawPositions() : void
updateGraphSize() : void
updateLocalityFromVisibility() : void
updatePosFromDraw(Node) : void
Figura 5.5. Clases para la creación de grafos
Página 75
Capítulo 5. Implementación
5.2.2.3. Crear archivo XML a partir de un grafo
El módulo descrito es equivalente al CU-2 Crear archivo XML a partir de un grafo .Al momento de
almacenar el archivo XML se llama a la clase XMLio que contiene un conjunto de métodos
que permiten la lectura y escritura de nodos y aristas en un archivo que toma como base una
DTD.
El archivo de la DTD se divide en dos secciones:
NODESET: contiene los datos del nodo como identificador, etiqueta, localización,
color, fuente y tipo de clase a la que pertenece.
EDGESET: contiene los datos de la arista como la etiqueta, color, nodo origen, nodo
destino y longitud.
Para la creación del XML (figura 5.6) se utiliza un buffer que guarda línea por línea el
contenido de la DTD TG_Prepend_DTD.xml y el contenido del grafo, agrupando cada
elemento en su sección correspondiente.
La creación del archivo inicia con la clase TGLinkBrowser (figura 5.7), desde la cual el
usuario solicita guardar el archivo XML del grafo creado en el panel. TGLinkBrowser llama al
método write de la clase XMLio con el parámetro saveFileStream que contiene la ruta en la que
se almacenará el archivo XML.
XMLio crea el archivo XML y copia en los bloques NODESET y EDGESET los datos de
los nodos y aristas.
Figura 5.6. Diagrama de actividades para la creación de un archivo XML
Página 76
Capítulo 5. Implementación
class client
~tgPanel
JPanel
JPanel
~
~
graphEltSet: GraphEltSet
parameterHash: Hashtable
+
+
+
+
+
+
+
+
+
+
~
buildGraphEltSet(IXMLElement, Thread) : void
encodeColor(Color) : String
getBooleanAttr(IXMLElement, String, boolean) : boolean
getClassName() : String
getLocalDirName() : String
getParameterHash() : Hashtable
read(String) : void
read(URL) : void
read(String, Thread) : void
read(URL, Thread) : void
read(String, InputStream, Thread) : void
setParameterHash(Hashtable) : void
write(OutputStream) : void
XMLio(GraphEltSet)
~graphEltSet
GraphEltSet
#
+
#
#
edges: Vector
nodeCount: int
nodeIDRegistry: Hashtable = null
nodes: Vector
+
+
+
+
+
+
+
+
+
+
+
+
#
+
+
+
+
+
+
+
+
+
+
#
+
addEdge(Edge) : void
addEdge(Node, Node, int) : Edge
addNode(Node) : void
calculateDistances(Node, int) : Hashtable
clearAll() : void
contains(Node) : boolean
contains(Edge) : boolean
deleteEdge(Edge) : boolean
deleteEdge(Node, Node) : boolean
deleteEdges(Vector) : void
deleteNode(Node) : boolean
deleteNodes(Vector) : void
edgeAt(int) : Edge
edgeNum() : int
findEdge(Node, Node) : Edge
findNode(String) : Node
findNodesByLabel(String) : Collection
forAllEdges(TGForEachEdge) : void
forAllNodePairs(TGForEachNodePair) : void -completeEltSet
forAllNodes(TGForEachNode) : void
getFirstNode() : Node
getRandomNode() : Node
GraphEltSet()
nodeAt(int) : Node
nodeNum() : int
~completeEltSet
TGPanel
TGLinkBrow ser
~xmlio
XMLio
+
+
+
~
~
~
+
~
#
#
+
+
+
~
~
~
+
~
~
~
~
~
~
~
~
+
arbolNodos: JTree
band: int = 0
bar: JScrollPane
completeEltSet: GraphEltSet = null
documentBase: URL
enclosingApplet: JApplet = null
enclosingFrame: JFrame = null
externalFrame: String
graphsVisited: Stack = new Stack() {readOnly}
hvScroll: HVScroll
initialNodeName: String
lbEdgeDialog: LBEdgeDialog
lbNodeDialog: LBNodeDialog
lbPopup: JPopupMenu
listReport: JList
localityScroll: LocalityScroll
modeSelectPanel: JPanel
openFile: JButton = new JButton()
parser: JenaParser = null
proxyServlet: String
rotateScroll: RotateScroll
scrollBarHash: Hashtable = new Hashtable() {readOnly}
targetFrame: String
textOntology: JTextField = new JTextField()
tgLensSet: TGLensSet
tgPanel: TGPanel
tgUIManager: TGUIManager
xmlFileName: String
xmlio: XMLio
zoomScroll: ZoomScroll
+
+
+
+
~
~
~
+
+
+
~
+
addElement(Vector) : void
addUIs() : void
buildLens() : void
buildPanel() : void
createParameterHash() : Hashtable
getDocumentBase() : URL
getTGPanel() : TGPanel
jbInit() : void
lblMenuBarPrincipal() : JMenuBar
main(String[]) : void
processNodeUrl(LBNode) : void
restoreSavedParameters(Hashtable) : void
salir_ActionPerformed(ActionEvent) : void
scrollSelectPanel(String[]) : JPanel
setLocale(String, int) : void
TGLinkBrowser()
TGLinkBrowser(JApplet)
TGLinkBrowser(JFrame)
titles(String, int, int, int, int) : JLabel
~
+
#
~
~
#
#
#
#
~
~
~
#
~
+
~
~
-
adjustOriginLens: AdjustOriginLens
BACK_COLOR: Color = Color.white
basicMML: BasicMouseMotionListener
bottomRightDraw: TGPoint2D = null
completeEltSet: GraphEltSet
dragNode: Node
graphListeners: Vector
localityUtils: LocalityUtils
maintainMouseOver: boolean = false
mouseOverE: Edge
mouseOverN: Node
mousePos: Point
nombreNodo: String
offgraphics: Graphics
offscreen: Image
offscreensize: Dimension
paintListeners: Vector
select: Node
switchSelectUI: SwitchSelectUI
tgLayout: TGLayout
tgLensSet: TGLensSet
topLeftDraw: TGPoint2D = null
visibleLocality: VisibleLocality
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#
+
~
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
~
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
~
+
+
+
+
+
+
+
+
+
+
+
+
addEdge(Edge) : void
addEdge(Node, Node, int) : Edge
addGraphListener(GraphListener) : void
addNode() : Node
addNode(String) : Node
addNode(String, String) : Node
addNode(Node) : void
addPaintListener(TGPaintListener) : void
clearAll() : void
clearSelect() : void
deleteEdge(Edge) : void
deleteEdge(Node, Node) : void
deleteNode(Node) : boolean
deleteNodeById(String) : boolean
edgeNum() : int
expandNode(Node) : void
findEdge(Node, Node) : Edge
findMouseOver() : void
findNode(String) : Node
fireMovedEvent() : void
fireResetEvent() : void
getAdjustOriginLens() : AdjustOriginLens
getBottomRightDraw() : TGPoint2D
getCenter() : TGPoint2D
getDragNode() : Node
getDrawCenter() : TGPoint2D
getGES() : InmutableGraphEltSet
getMouseOverE() : Edge
getMouseOverN() : Node
getMousePos() : Point
getNodeCount() : int
getNombreNodo(String) : String
getSelect() : Node
getSwitchSelectUI() : SwitchSelectUI
getTopLeftDraw() : TGPoint2D
hideEdge(Edge) : void
hideNode(Node, Node) : void
main(String[]) : void
multiSelect(TGPoint2D, TGPoint2D) : void
myBrihgter(Color) : Color
nodeNum() : int
paint(Graphics) : void
processGraphMove() : void
redraw() : void
removeGraphListener(GraphListener) : void
removePaintListener(TGPaintListener) : void
repaintAfterMove() : void
resetDamper() : void
selectFirstNode() : void
setBackColor(Color) : void
setDragNode(Node) : void
setGraphEltSet(GraphEltSet) : void
setLensSet(TGLensSet) : void
setLocale(Node, int) : void
setMaintainMouseOver(boolean) : void
setMouseOverE(Edge) : void
setMouseOverN(Node) : void
setMousePos(Point) : void
setNombreNodo(String) : void
setSelect(Node) : void
setTGLayout(TGLayout) : void
startDamper() : void
stopDamper() : void
TGPanel()
update(Graphics) : void
updateDrawPos(Node) : void
updateDrawPositions() : void
updateGraphSize() : void
updateLocalityFromVisibility() : void
updatePosFromDraw(Node) : void
Node
#select
+
#mouseOverN +
+
~dragNode +
+
#
+
+
+
+
+from +
+
#
#
#
#
#
+to +
#
+
+
#
#
+
+
+
#
#
+
+
+
#
+
+
Edge
#
+
+
+
#
+
+
#
+
+
+
#mouseOverE +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
col: Color
DEFAULT_COLOR: Color = Color.decode("#...
DEFAULT_LENGTH: int = 350
from: Node
length: int
MOUSE_OVER_COLOR: Color
to: Node
visible: boolean
containsPoint(double, double) : boolean
distFromPoint(double, double) : double
Edge(Node, Node, int)
Edge(Node, Node)
getColor() : Color
getFrom() : Node
getLength() : int
getOtherEndpt(Node) : Node
getTo() : Node
intersects(Dimension) : boolean
isVisible() : boolean
paint(Graphics, TGPanel) : void
paintArrow(Graphics, int, int, int, int, Color) : void
reverse() : void
setColor(Color) : void
setEdgeDefaultColor(Color) : void
setEdgeDefaultLength(int) : void
setEdgeMouseOverColor(Color) : void
setLength(int) : void
setVisible(boolean) : void
LBEdge
+
+
+
+
+
+
+
BIDIRECTIONAL_EDGE: int = 0 {readOnly}
DEFAULT_TYPE: int = 1
edgeType: int
HIERARCHICAL_EDGE: int = 1 {readOnly}
label: String
LABEL_BACK_COLOR: Color = new Color(255, ...
LABEL_FONT: Font = new Font("Couri...
LABEL_TEXT_COLOR: Color
+
+
+
+
+
+
+
+
+
+
+
getLabel() : String
getType() : int
LBEdge(LBNode, LBNode)
LBEdge(LBNode, LBNode, int)
paint(Graphics, int, int, int, int, Color, int) : void
paint(Graphics, TGPanel) : void
paintEdgeBody(Graphics, TGPanel) : void
paintFatLine(Graphics, int, int, int, int, Color) : void
setEdgeDafaultType(int) : void
setLabel(String) : void
setType(int) : void
LBNode
~
+
+
+
~
~
~
~
+
~
~
~
hint: String
HINT_BACK_COLOR: Color
HINT_FONT: Font = new Font("Couri...
HINT_TEXT_COLOR: Color
hintFont: Font
hintHeight: int
hintIsHTML: boolean
hintWidth: int
MINIMUM_HINT_HEIGHT: int = 20
url: String
urlIsLocal: boolean
urlIsXML: boolean
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
~
+
+
+
+
+
+
+
+
+
+
+
+
getHeight() : int
getHint() : String
getHintHeight() : int
getHintIsHTML() : boolean
getHintWidth() : int
getPaintBackColor(TGPanel) : Color
getPaintBorderColor(TGPanel) : Color
getPaintTextColor(TGPanel) : Color
getPaintUnselectedBackColor() : Color
getURL() : String
getURLIsLocal() : boolean
getURLIsXML() : boolean
getWidth() : int
LBNode()
LBNode(String)
LBNode(String, String, String)
myBrighter(Color) : Color
paint(Graphics, TGPanel) : void
separatorString(String) : String
setHint(String) : void
setHintHeight(int) : void
setHintIsHTML(boolean) : void
setHintWidth(int) : void
setNodeHintBackColor(Color) : void
setNodeHintFont(Font) : void
setNodeHintTextColor(Color) : void
setURL(String) : void
setURLIsLocal(boolean) : void
setURLIsXML(boolean) : void
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
AUTO_ID_STRING: String = "AutoID " {readOnly}
BACK_DEFAULT_COLOR: Color = new Color(208, ...
BACK_FIXED_COLOR: Color
BACK_HILIGHT_COLOR: Color = Color.decode("#...
BACK_SELECT_COLOR: Color = new Color(255, ...
backColor: Color
BORDER_DRAG_COLOR: Color
BORDER_INACTIVE_COLOR: Color
BORDER_MOUSE_OVER_COLOR: Color = new Color(160, ...
DEFAULT_TYPE: int = 1
drawx: double
drawy: double
dx: double
dy: double
edges: Vector
fixed: boolean
font: Font
fontMetrics: FontMetrics
id: String
justMadeLocal: boolean
lbl: String
localEdgeCount: int
markedForRemoval: boolean
nm: String
repulsion: int
SMALL_TAG_FONT: Font = new Font("Couri... {readOnly}
TEXT_COLOR: Color
TEXT_FONT: Font = new Font("Couri...
textColor: Color
typ: int
TYPE_ELLIPSE: int = 3 {readOnly}
TYPE_RECTANGLE: int = 1 {readOnly}
TYPE_ROUNDRECT: int = 2 {readOnly}
visible: boolean
x: double
y: double
addEdge(Edge) : void
containsPoint(double, double) : boolean
containsPoint(Point) : boolean
edgeAt(int) : Edge
edgeNum() : int
getBackColor() : Color
getFixed() : boolean
getFont() : Font
getHeight() : int
getID() : String
getLabel() : String
getLocation() : Point
getName() : String
getPaintBackColor(TGPanel) : Color
getPaintBorderColor(TGPanel) : Color
getPaintTextColor(TGPanel) : Color
getTextColor() : Color
getType() : int
getWidth() : int
initialize(String) : void
intersects(Dimension) : boolean
isVisible() : boolean
localEdgeNum() : int
Node()
Node(String)
Node(String, String)
Node(String, int, Color, String)
paint(Graphics, TGPanel) : void
paintNodeBody(Graphics, TGPanel) : void
paintSmallTag(Graphics, TGPanel, int, int, Color, Color, char) : void
removeEdge(Edge) : void
setBackColor(Color) : void
setFixed(boolean) : void
setFont(Font) : void
setID(String) : void
setLabel(String) : void
setLocation(Point) : void
setName(String) : void
setNodeBackDefaultColor(Color) : void
setNodeBackFixedColor(Color) : void
setNodeBackHilightColor(Color) : void
setNodeBackSelectColor(Color) : void
setNodeBorderDragColor(Color) : void
setNodeBorderInactiveColor(Color) : void
setNodeBorderMouseOverColor(Color) : void
setNodeTextColor(Color) : void
setNodeTextFont(Font) : void
setNodeType(int) : void
setTextColor(Color) : void
setType(int) : void
setVisible(boolean) : void
Figura 5.7. Diagrama de clases para la creación de un archivo XML
Página 77
Capítulo 5. Implementación
5.2.2.4. Generar grafo a partir de un archivo XML
Este módulo es equivalente al CU-3 Generar grafo a partir de un archivo XML. Al generar un grafo a
partir de un archivo XML existente, la clase TGLinkBrowser manda al método read de la clase
XMLio el parámetro la ruta del archivo almacenada en la variable loadFile. Posteriormente se
extrae de la ruta el nombre del archivo.
XMLio verifica el tipo de archivo de entrada y llama al método buildGraphEltSet.
class client
JPanel
TGLinkBrow ser
+
+
+
~
~
~
+
~
#
#
+
+
+
~
~
~
+
~
~
~
~
~
~
~
~
+
arbolNodos: JTree
band: int = 0
bar: JScrollPane
completeEltSet: GraphEltSet = null
documentBase: URL
enclosingApplet: JApplet = null
enclosingFrame: JFrame = null
externalFrame: String
graphsVisited: Stack = new Stack() {readOnly}
hvScroll: HVScroll
initialNodeName: String
lbEdgeDialog: LBEdgeDialog
lbNodeDialog: LBNodeDialog
lbPopup: JPopupMenu
listReport: JList
localityScroll: LocalityScroll
modeSelectPanel: JPanel
openFile: JButton = new JButton()
parser: JenaParser = null
proxyServlet: String
rotateScroll: RotateScroll
scrollBarHash: Hashtable = new Hashtable() {readOnly}
targetFrame: String
textOntology: JTextField = new JTextField()
tgLensSet: TGLensSet
tgPanel: TGPanel
tgUIManager: TGUIManager
xmlFileName: String
xmlio: XMLio
zoomScroll: ZoomScroll
+
+
+
+
~
~
~
+
+
+
~
+
addElement(Vector) : void
addUIs() : void
buildLens() : void
buildPanel() : void
createParameterHash() : Hashtable
getDocumentBase() : URL
getTGPanel() : TGPanel
jbInit() : void
lblMenuBarPrincipal() : JMenuBar
main(String[]) : void
processNodeUrl(LBNode) : void
restoreSavedParameters(Hashtable) : void
salir_ActionPerformed(ActionEvent) : void
scrollSelectPanel(String[]) : JPanel
setLocale(String, int) : void
TGLinkBrowser()
TGLinkBrowser(JApplet)
TGLinkBrowser(JFrame)
titles(String, int, int, int, int) : JLabel
XMLio
~
~
+
~xmlio +
+
+
+
+
+
+
+
+
~
graphEltSet: GraphEltSet
parameterHash: Hashtable
buildGraphEltSet(IXMLElement, Thread) : void
encodeColor(Color) : String
getBooleanAttr(IXMLElement, String, boolean) : boolean
getClassName() : String
getLocalDirName() : String
getParameterHash() : Hashtable
read(String) : void
read(URL) : void
read(String, Thread) : void
read(URL, Thread) : void
read(String, InputStream, Thread) : void
setParameterHash(Hashtable) : void
write(OutputStream) : void
XMLio(GraphEltSet)
Figura 5.8. Diagrama de clases para la generación de un grafo
a partir de un archivo XML
Las clases que intervienen en esa tarea se muestran en la figura 5.8 y las actividades
necesarias para llevarla a cabo se observan en la figura 5.9.
Página 78
Capítulo 5. Implementación
Figura 5.9. Diagrama de actividades para la generación de un grafo
a partir de un archivo XML
5.2.2.5. Generar estructura del sitio Web
El módulo descrito tiene su equivalente en el CU-4 Generar estructura del sitio Web. Una
estructura de sitio Web se compone de un conjunto de páginas en blanco que se encuentran
etiquetadas en el archivo XML correspondiente. Cada página contiene los enlaces que la
relacionan con otras páginas dentro del sitio Web.
Para la generación de la estructura se ha implementado la clase ParserHTML que
contiene métodos para la lectura de archivos XML y la creación de elemento HTML.
La clase ParserHTML contiene al método buildPages que se encarga de la creación del
directorio. Para esto es necesario obtener el nombre del archivo XML con el que se está
trabajando. El nombre se almacena en la variable Global.openedFile, que es una variable de tipo
Global proveniente de la clase TGLinkBrowser.
Se crea una carpeta con el nombre contenido en dicha variable y en ella se almacenan
las páginas del sitio. Esta tarea implica el recorrido del archivo XML que se hace con
elementos de la clase IXMLElement.
Los elementos IXMLElement permiten el acceso a los elementos contenidos en el
archivo XML por separado, es decir a las secciones NODESET y EDGESET, de modo que
puedan usarse individualmente.
Dentro de buildPages se realizan tres ciclos: el primer ciclo se encarga de dar lectura a
cada nodo almacenado en el archivo XML, dentro de la sección NODESET. Para cada nodo
encontrado se crean las cabeceras de la página HTML correspondiente. Un segundo ciclo
ayuda a encontrar el nombre de las aristas asociadas al identificador de cada nodo en la
Página 79
Capítulo 5. Implementación
sección EDGESET. Por último, el tercer ciclo se encarga de recorrer nuevamente la sección
EDGESET para encontrar los nodos destinos con los que cada nodo se relaciona.
Figura 5.10. Diagrama de actividades para la generación de estructuras de sitios Web
De esta manera se insertan los enlaces en cada página (figura 5.10). El diagrama de
clases de esta tarea se muestra en la figura 5.11.
Página 80
Capítulo 5. Implementación
class client
#mouseOverN
JPanel
TGPanel
ParserHTML
~
~
~
graphEltSet: GraphEltSet
parameterHash: Hashtable
v: Vector
+
+
buildPages(IXMLElement) : void
ParserHTML()
read(String, InputStream) : void
+from
~
+
#
~
~
#
#
#
#
~
~
~
#
~
+
~
~
-
adjustOriginLens: AdjustOriginLens
BACK_COLOR: Color = Color.white
basicMML: BasicMouseMotionListener
bottomRightDraw: TGPoint2D = null
completeEltSet: GraphEltSet
dragNode: Node
graphListeners: Vector
localityUtils: LocalityUtils
maintainMouseOver: boolean = false
mouseOverE: Edge
mouseOverN: Node
mousePos: Point
nombreNodo: String
offgraphics: Graphics
offscreen: Image
offscreensize: Dimension
paintListeners: Vector
select: Node
switchSelectUI: SwitchSelectUI
tgLayout: TGLayout
tgLensSet: TGLensSet
topLeftDraw: TGPoint2D = null
visibleLocality: VisibleLocality
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#
+
~
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
~
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
~
+
+
+
+
+
+
+
+
+
+
+
+
addEdge(Edge) : void
addEdge(Node, Node, int) : Edge
addGraphListener(GraphListener) : void
addNode() : Node
addNode(String) : Node
addNode(String, String) : Node
addNode(Node) : void
addPaintListener(TGPaintListener) : void
clearAll() : void
clearSelect() : void
deleteEdge(Edge) : void
- encodeColor(Color) : String
deleteEdge(Node, Node) : void
- initColorSelectors() : void
deleteNode(Node) : boolean
- initComponents() : void
deleteNodeById(String) : boolean
+ LBNodeDialog(TGPanel)
edgeNum() : int
+ main(String[]) : void
expandNode(Node) : void
+ saveChangesAndHideDialog() : void
findEdge(Node, Node) : Edge
- setBackColor(Color) : void
findMouseOver() : void
+ setLBNode(LBNode) : void
findNode(String) : Node
- setTextColor(Color) : void
fireMovedEvent() : void
+
+ showDialog() : void
fireResetEvent() : void
+
#lbNodeDialog
getAdjustOriginLens() : AdjustOriginLens
+
getBottomRightDraw() : TGPoint2D
~
getCenter() : TGPoint2D
getDragNode() : Node
getDrawCenter() : TGPoint2D
getGES() : InmutableGraphEltSet
~
getMouseOverE() : Edge
~
getMouseOverN() : Node
+
getMousePos() : Point
~
getNodeCount() : int
#
getNombreNodo(String) : String
#
getSelect() : Node
+
getSwitchSelectUI() : SwitchSelectUI
+
~tgPanel
getTopLeftDraw() : TGPoint2D
+
~graphEltSet
hideEdge(Edge) : void
~
hideNode(Node, Node) : void
~
main(String[]) : void
GraphEltSet
multiSelect(TGPoint2D, TGPoint2D) : void
~
# edges: Vector
myBrihgter(Color) : Color
+
+ nodeCount: int
nodeNum() : int
~
# nodeIDRegistry: Hashtable = null
paint(Graphics) : void
~
# nodes: Vector
processGraphMove() : void
~
redraw() : void
~
+
addEdge(Edge)
:
void
removeGraphListener(GraphListener) : void
~
+
addEdge(Node,
Node,
int)
:
Edge
removePaintListener(TGPaintListener) : void
~
+ addNode(Node) : void
repaintAfterMove() : void
~
+ calculateDistances(Node, int) : Hashtable
resetDamper() : void
~
+ clearAll() : void
selectFirstNode() : void
+
+ contains(Node) : boolean
setBackColor(Color) : void
+
contains(Edge)
:
boolean
setDragNode(Node) : void
+
+
deleteEdge(Edge)
:
boolean
setGraphEltSet(GraphEltSet) : void
~completeEltSet
-completeEltSet + deleteEdge(Node, Node) : boolean
setLensSet(TGLensSet) : void
+ deleteEdges(Vector) : void
setLocale(Node, int) : void
+ deleteNode(Node) : boolean
setMaintainMouseOver(boolean) : void
+ deleteNodes(Vector) : void
setMouseOverE(Edge) : void
+
# edgeAt(int) : Edge
setMouseOverN(Node) : void
+
+
edgeNum()
:
int
setMousePos(Point) : void
+
findEdge(Node,
Node)
:
Edge
setNombreNodo(String) : void
+
findNode(String)
:
Node
setSelect(Node) : void
+
+ findNodesByLabel(String) : Collection
setTGLayout(TGLayout) : void
~
+ forAllEdges(TGForEachEdge) : void
startDamper() : void
+ forAllNodePairs(TGForEachNodePair) : void
stopDamper() : void
~
+ forAllNodes(TGForEachNode) : void
TGPanel()
~
+
getFirstNode()
:
Node
update(Graphics) : void
+
+
getRandomNode()
:
Node
updateDrawPos(Node) : void
+
+
GraphEltSet()
updateDrawPositions() : void
+
# nodeAt(int) : Node
updateGraphSize() : void
~
+ nodeNum() : int
updateLocalityFromVisibility() : void
+
Edge
#
+
+
+
#
#mouseOverE
+
+
#
JInternalFrame
LBNodeDialog
~tgPanel
~
~
cbHintIsHTML: JCheckBox
cbLocal: JCheckBox
cboFontSize: JComboBox
cboNodeType: JComboBox
cbXML: JCheckBox
cmdCancel: JButton
cmdOK: JButton
lastBackColorButton: JButton
lastTextColorButton: JButton
lblBackColor: JLabel
lblTextColor: JLabel
lbNode: LBNode
taHint: JTextArea
tfBackColor: JTextField
tfHintHeight: JTextField
tfHintWidth: JTextField
tfLabel: JTextField
tfTextColor: JTextField
tfURL: JTextField
tgPanel: TGPanel
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
col: Color
DEFAULT_COLOR: Color = Color.decode("#...
DEFAULT_LENGTH: int = 350
from: Node
length: int
MOUSE_OVER_COLOR: Color
to: Node
visible: boolean
LBNode
~
+
+
+
~
~
~
~
+
~
~
~
containsPoint(double, double) : boolean
distFromPoint(double, double) : double
Edge(Node, Node, int)
Edge(Node, Node)
getColor() : Color
getFrom() : Node
getLength() : int
getOtherEndpt(Node) : Node
getTo() : Node
intersects(Dimension) : boolean
isVisible() : boolean
paint(Graphics, TGPanel) : void
paintArrow(Graphics, int, int, int, int, Color) : void
reverse() : void
setColor(Color) : void
setEdgeDefaultColor(Color) : void
setEdgeDefaultLength(int) : void
setEdgeMouseOverColor(Color) : void
setLength(int) : void
setVisible(boolean) : void
JPanel
TGLinkBrow ser
arbolNodos: JTree
band: int = 0
bar: JScrollPane
completeEltSet: GraphEltSet = null
documentBase: URL
enclosingApplet: JApplet = null
enclosingFrame: JFrame = null
externalFrame: String
graphsVisited: Stack = new Stack() {readOnly}
hvScroll: HVScroll
initialNodeName: String
lbEdgeDialog: LBEdgeDialog
lbNodeDialog: LBNodeDialog
lbPopup: JPopupMenu
listReport: JList
localityScroll: LocalityScroll
modeSelectPanel: JPanel
openFile: JButton = new JButton()
parser: JenaParser = null
proxyServlet: String
rotateScroll: RotateScroll
scrollBarHash: Hashtable = new Hashtable() {readOnly}
targetFrame: String
textOntology: JTextField = new JTextField()
tgLensSet: TGLensSet
tgPanel: TGPanel
tgUIManager: TGUIManager
xmlFileName: String
xmlio: XMLio
zoomScroll: ZoomScroll
addElement(Vector) : void
addUIs() : void
buildLens() : void
buildPanel() : void
createParameterHash() : Hashtable
getDocumentBase() : URL
getTGPanel() : TGPanel
jbInit() : void
lblMenuBarPrincipal() : JMenuBar
main(String[]) : void
processNodeUrl(LBNode) : void
restoreSavedParameters(Hashtable) : void
salir_ActionPerformed(ActionEvent) : void
scrollSelectPanel(String[]) : JPanel
setLocale(String, int) : void
TGLinkBrowser()
TGLinkBrowser(JApplet)
TGLinkBrowser(JFrame)
titles(String, int, int, int, int) : JLabel
hint: String
HINT_BACK_COLOR: Color
HINT_FONT: Font = new Font("Couri...
HINT_TEXT_COLOR: Color
hintFont: Font
hintHeight: int
hintIsHTML: boolean
hintWidth: int
MINIMUM_HINT_HEIGHT: int = 20
url: String
urlIsLocal: boolean
urlIsXML: boolean
+
+
+
+
+
+
+
+
+
+
~lbNode
+
+
+
+
+
+
~
+
+
+
+
+
+
+
+
+
+
+
+
getHeight() : int
getHint() : String
getHintHeight() : int
getHintIsHTML() : boolean
getHintWidth() : int
getPaintBackColor(TGPanel) : Color
getPaintBorderColor(TGPanel) : Color
getPaintTextColor(TGPanel) : Color
getPaintUnselectedBackColor() : Color
getURL() : String
getURLIsLocal() : boolean
getURLIsXML() : boolean
getWidth() : int
LBNode()
LBNode(String)
LBNode(String, String, String)
myBrighter(Color) : Color
paint(Graphics, TGPanel) : void
separatorString(String) : String
setHint(String) : void
setHintHeight(int) : void
setHintIsHTML(boolean) : void
setHintWidth(int) : void
setNodeHintBackColor(Color) : void
setNodeHintFont(Font) : void
setNodeHintTextColor(Color) : void
setURL(String) : void
setURLIsLocal(boolean) : void
setURLIsXML(boolean) : void
LBEdge
+
+
+
+
+
+
+
BIDIRECTIONAL_EDGE: int = 0 {readOnly}
DEFAULT_TYPE: int = 1
edgeType: int
HIERARCHICAL_EDGE: int = 1 {readOnly}
label: String
LABEL_BACK_COLOR: Color = new Color(255, ...
LABEL_FONT: Font = new Font("Couri...
LABEL_TEXT_COLOR: Color
+
+
+
+
+
+
+
+
+
+
+
getLabel() : String
getType() : int
LBEdge(LBNode, LBNode)
LBEdge(LBNode, LBNode, int)
paint(Graphics, int, int, int, int, Color, int) : void
paint(Graphics, TGPanel) : void
paintEdgeBody(Graphics, TGPanel) : void
paintFatLine(Graphics, int, int, int, int, Color) : void
setEdgeDafaultType(int) : void
setLabel(String) : void
setType(int) : void
TGForEachNode
+
+
forEachNode(Node) : void
TGForEachNode()
TGForEachEdge
+
+
Node
+
+
+to +
+
+
#
+
+
+
+
+
+
#
#
#
#
#
+
#
+
+
#
#
+
+
+
#
#
+
+
+
#
+
+
forEachEdge(Edge) : void
TGForEachEdge()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
AUTO_ID_STRING: String = "AutoID " {readOnly}
BACK_DEFAULT_COLOR: Color = new Color(208, ...
BACK_FIXED_COLOR: Color
BACK_HILIGHT_COLOR: Color = Color.decode("#...
BACK_SELECT_COLOR: Color = new Color(255, ...
backColor: Color
BORDER_DRAG_COLOR: Color
BORDER_INACTIVE_COLOR: Color
BORDER_MOUSE_OVER_COLOR: Color = new Color(160, ...
DEFAULT_TYPE: int = 1
drawx: double
drawy: double
dx: double
dy: double
edges: Vector
fixed: boolean
font: Font
fontMetrics: FontMetrics
id: String
justMadeLocal: boolean
lbl: String
localEdgeCount: int
markedForRemoval: boolean
nm: String
repulsion: int
SMALL_TAG_FONT: Font = new Font("Couri... {readOnly}
TEXT_COLOR: Color
TEXT_FONT: Font = new Font("Couri...
textColor: Color
typ: int
TYPE_ELLIPSE: int = 3 {readOnly}
TYPE_RECTANGLE: int = 1 {readOnly}
TYPE_ROUNDRECT: int = 2 {readOnly}
visible: boolean
x: double
y: double
addEdge(Edge) : void
containsPoint(double, double) : boolean
containsPoint(Point) : boolean
edgeAt(int) : Edge
edgeNum() : int
getBackColor() : Color
getFixed() : boolean
getFont() : Font
getHeight() : int
getID() : String
getLabel() : String
getLocation() : Point
getName() : String
getPaintBackColor(TGPanel) : Color
getPaintBorderColor(TGPanel) : Color
getPaintTextColor(TGPanel) : Color
getTextColor() : Color
getType() : int
getWidth() : int
initialize(String) : void
intersects(Dimension) : boolean
isVisible() : boolean
localEdgeNum() : int
Node()
Node(String)
Node(String, String)
Node(String, int, Color, String)
paint(Graphics, TGPanel) : void
paintNodeBody(Graphics, TGPanel) : void
paintSmallTag(Graphics, TGPanel, int, int, Color, Color, char) : void
removeEdge(Edge) : void
setBackColor(Color) : void
setFixed(boolean) : void
setFont(Font) : void
setID(String) : void
setLabel(String) : void
setLocation(Point) : void
setName(String) : void
setNodeBackDefaultColor(Color) : void
setNodeBackFixedColor(Color) : void
setNodeBackHilightColor(Color) : void
setNodeBackSelectColor(Color) : void
setNodeBorderDragColor(Color) : void
setNodeBorderInactiveColor(Color) : void
setNodeBorderMouseOverColor(Color) : void
setNodeTextColor(Color) : void
setNodeTextFont(Font) : void
setNodeType(int) : void
setTextColor(Color) : void
setType(int) : void
setVisible(boolean) : void
~dragNode
#select
updatePosFromDraw(Node) : void
Figura 5.11. Diagrama de clases para la generación de estructuras de sitios Web
Página 81
Capítulo 5. Implementación
5.2.2.6. Generar reporte de errores
El caso de uso equivalente a este módulo es CU-5 Crear reporte de errores. Para generar el reporte
de errores de la estructura se creó la clase Report (figura 5.12), que contiene al método
checkNodes, encargado de revisar el archivo XML, haciendo una enumeración de los
elementos del EDGESET.
TGLinkBrowser se encarga de enviar a la clase Report el nombre del archivo que desea
verificar, el cual se encuentra almacenado en la variable Global.openedFile.
Por medio de ciclos, el mpetodo checkNodes, revisa primero el nodo origen de una
tripleta y después el nodo destino, hasta recorrer el grafo completo. Como resultado se
obtiene un vector con las tripletas incorrectas que es enviado de vuelta a TGLinkBrowser.
class client
Edge
JPanel
+
+
+
~
~
~
+
~
#
#
+
+
+
~
~
~
+
~
~
~
~
~
~
~
~
+
arbolNodos: JTree
band: int = 0
bar: JScrollPane
completeEltSet: GraphEltSet = null
documentBase: URL
enclosingApplet: JApplet = null
enclosingFrame: JFrame = null
externalFrame: String
graphsVisited: Stack = new Stack() {readOnly}
hvScroll: HVScroll
initialNodeName: String
lbEdgeDialog: LBEdgeDialog
lbNodeDialog: LBNodeDialog
lbPopup: JPopupMenu
listReport: JList
localityScroll: LocalityScroll
modeSelectPanel: JPanel
openFile: JButton = new JButton()
parser: JenaParser = null
proxyServlet: String
rotateScroll: RotateScroll
scrollBarHash: Hashtable = new Hashtable() {readOnly}
targetFrame: String
textOntology: JTextField = new JTextField()
tgLensSet: TGLensSet
tgPanel: TGPanel
tgUIManager: TGUIManager
xmlFileName: String
xmlio: XMLio
zoomScroll: ZoomScroll
+
+
+
+
~
~
~
+
+
+
~
+
addElement(Vector) : void
addUIs() : void
buildLens() : void
buildPanel() : void
createParameterHash() : Hashtable
getDocumentBase() : URL
getTGPanel() : TGPanel
jbInit() : void
lblMenuBarPrincipal() : JMenuBar
main(String[]) : void
processNodeUrl(LBNode) : void
restoreSavedParameters(Hashtable) : void
salir_ActionPerformed(ActionEvent) : void
scrollSelectPanel(String[]) : JPanel
setLocale(String, int) : void
TGLinkBrowser()
TGLinkBrowser(JApplet)
TGLinkBrowser(JFrame)
titles(String, int, int, int, int) : JLabel
Node
LBEdge
TGLinkBrow ser
+
+
+
+
+
+
+
BIDIRECTIONAL_EDGE: int = 0 {readOnly}
DEFAULT_TYPE: int = 1
edgeType: int
HIERARCHICAL_EDGE: int = 1 {readOnly}
label: String
LABEL_BACK_COLOR: Color = new Color(255, ...
LABEL_FONT: Font = new Font("Couri...
LABEL_TEXT_COLOR: Color
+
+
+
+
+
+
+
+
+
+
+
getLabel() : String
getType() : int
LBEdge(LBNode, LBNode)
LBEdge(LBNode, LBNode, int)
paint(Graphics, int, int, int, int, Color, int) : void
paint(Graphics, TGPanel) : void
paintEdgeBody(Graphics, TGPanel) : void
paintFatLine(Graphics, int, int, int, int, Color) : void
setEdgeDafaultType(int) : void
setLabel(String) : void
setType(int) : void
~newEdge
Report
~
~
~
~
~
~
contEdge: int = 0
graphEltSet: GraphEltSet
newEdge: LBEdge
parameterHash: Hashtable
tgPanel: TGPanel
v: Vector
+
+
checkNodes(IXMLElement) : Vector
getBooleanAttr(IXMLElement, String, boolean) : boolean
read(String, InputStream) : Vector
Report(GraphEltSet, TGPanel)
LBNode
~
+
+
+
~
~
~
~
+
~
~
~
hint: String
HINT_BACK_COLOR: Color
HINT_FONT: Font = new Font("Couri...
HINT_TEXT_COLOR: Color
hintFont: Font
hintHeight: int
hintIsHTML: boolean
hintWidth: int
MINIMUM_HINT_HEIGHT: int = 20
url: String
urlIsLocal: boolean
urlIsXML: boolean
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
~
+
+
+
+
+
+
+
+
+
+
+
+
getHeight() : int
getHint() : String
getHintHeight() : int
getHintIsHTML() : boolean
getHintWidth() : int
getPaintBackColor(TGPanel) : Color
getPaintBorderColor(TGPanel) : Color
getPaintTextColor(TGPanel) : Color
getPaintUnselectedBackColor() : Color
getURL() : String
getURLIsLocal() : boolean
getURLIsXML() : boolean
getWidth() : int
LBNode()
LBNode(String)
LBNode(String, String, String)
myBrighter(Color) : Color
paint(Graphics, TGPanel) : void
separatorString(String) : String
setHint(String) : void
setHintHeight(int) : void
setHintIsHTML(boolean) : void
setHintWidth(int) : void
setNodeHintBackColor(Color) : void
setNodeHintFont(Font) : void
setNodeHintTextColor(Color) : void
setURL(String) : void
setURLIsLocal(boolean) : void
setURLIsXML(boolean) : void
Figura 5.12. Diagrama de clases para la generación de reporte de errores
La figura 5.13 muestra el diagrama de actividades para la generación del reporte de
errores.
Página 82
Capítulo 5. Implementación
Figura 5.13. Diagrama de actividades para la generación de reporte de errores
5.2.2.7. Validar la estructura de sitio Web
Este módulo tiene su equivalente en el CU-6 Validar estructura del sitio Web. La validación se
realiza de modo que el usuario pueda percibir visualmente que existen inconsistencias en el
grafo creado.
Las inconsistencias pueden ser de dos tipos:


Nodos creados sin etiqueta: al crear un nodo se omite la asignación de un nombre, por
lo que en el grafo se observa únicamente el nombre de la clase a la que pertenece el
ejemplar.
Aristas creadas o modificadas con etiqueta indefinida: al crear una relación entre
nodos se establece como indefinida o se modifica su valor si no se sabe con exactitud
el tipo de relación existente entre los ejemplares.
Esta validación se lleva a cabo al momento de abrir un archivo XML cuando la clase
TGLinkBrowser se encarga de llamar al método read de la clase XMLio. Otro modo de hacerlo
es a través de la edición de los elementos del grafo, con la LBEdgeDialog.
La clase LBEdgeDialog en el método saveChangesAndHideDialog permite realizar
cambios en el color de las aristas si éstas no están definidas. Esto se debe a que el método
asigna los datos proporcionados en la ventana por el usuario a las propiedades de la arista en
las clases Edge y LBEdge. Al cambiar el valor de la etiqueta label de la arista al valor de
Indefinida, ocurre un cambio en la apariencia de la misma.
Página 83
Capítulo 5. Implementación
Figura 5.14. Diagrama de actividades para la validación de estructuras de sitios Web
Otro modo de validar ocurre en la clase LBNodeDialog, cuando, al agregar un nuevo
nodo se omite la inserción de una etiqueta con el nombre del nodo que debe almacenarse
junto con las otras propiedades.
class client
JPanel
JInternalFrame
TGLinkBrow ser
LBEdgeDialog
+
+
+
~
~
~
+
~
#
#
+
+
+
~
~
~
+
~
~
~
~
~
~
~
~
+
arbolNodos: JTree
band: int = 0
bar: JScrollPane
completeEltSet: GraphEltSet = null
documentBase: URL
enclosingApplet: JApplet = null
enclosingFrame: JFrame = null
externalFrame: String
#lbEdgeDialog
graphsVisited: Stack = new Stack() {readOnly}
hvScroll: HVScroll
initialNodeName: String
lbEdgeDialog: LBEdgeDialog
lbNodeDialog: LBNodeDialog
lbPopup: JPopupMenu
listReport: JList
localityScroll: LocalityScroll
modeSelectPanel: JPanel
openFile: JButton = new JButton()
parser: JenaParser = null
proxyServlet: String
rotateScroll: RotateScroll
scrollBarHash: Hashtable = new Hashtable() {readOnly}
~tgLinkBrowser
targetFrame: String
textOntology: JTextField = new JTextField()
tgLensSet: TGLensSet
tgPanel: TGPanel
tgUIManager: TGUIManager
xmlFileName: String
xmlio: XMLio
zoomScroll: ZoomScroll
+
+
+
+
~
~
~
+
+
+
~
+
addElement(Vector) : void
addUIs() : void
buildLens() : void
buildPanel() : void
createParameterHash() : Hashtable
getDocumentBase() : URL
getTGPanel() : TGPanel
jbInit() : void
lblMenuBarPrincipal() : JMenuBar
main(String[]) : void
processNodeUrl(LBNode) : void
restoreSavedParameters(Hashtable) : void
salir_ActionPerformed(ActionEvent) : void
scrollSelectPanel(String[]) : JPanel
setLocale(String, int) : void
TGLinkBrowser()
TGLinkBrowser(JApplet)
TGLinkBrowser(JFrame)
titles(String, int, int, int, int) : JLabel
~
~
cboEdgeLabel: JComboBox
cboEdgeType: JComboBox
cmdCancel: JButton
cmdOK: JButton
lastEdgeColorButton: JButton
lbEdge: LBEdge
lblEdgeColor: JLabel
tfEdgeColor: JTextField
tfEdgeLength: JTextField
tgPanel: TGPanel
+
+
+
+
+
encodeColor(Color) : String
initColorSelectors() : void
initComponents() : void
LBEdgeDialog(TGPanel)
main(String[]) : void
saveChangesAndHideDialog() : void
setEdgeColor(Color) : void
setLBEdge(LBEdge) : void
showDialog() : void
MouseMotionAdapter
LBEditUI::LBEditMouseMotionListener
~
+
LBEditMouseMotionListener()
mouseMoved(MouseEvent) : void
~mml
TGUserInterface
LBEditUI
~
~
~
~
~
~
~
~
~
~
~
~
dragAddNodeUI: LBDragAddNodeUI
dragNodeUI: DragNodeUI
edgePopup: JPopupMenu
hvDragUI: TGAbstractDragUI
ml: LBEditMouseListener
mml: LBEditMouseMotionListener
nodePopup: JPopupMenu
popupEdge: LBEdge
popupNode: LBNode
switchSelectUI: TGAbstractClickUI
tgLinkBrowser: TGLinkBrowser
tgPanel: TGPanel
+
+
+
-
activate() : void
deactivate() : void
LBEditUI(TGLinkBrowser)
setUpEdgePopup() : void
setUpNodePopup() : void
XMLio
~
~
~xmlio +
+
+
+
+
+
+
+
+
+
~
graphEltSet: GraphEltSet
parameterHash: Hashtable
buildGraphEltSet(IXMLElement, Thread) : void
encodeColor(Color) : String
getBooleanAttr(IXMLElement, String, boolean) : boolean
getClassName() : String
getLocalDirName() : String
getParameterHash() : Hashtable
read(String) : void
read(URL) : void
read(String, Thread) : void
read(URL, Thread) : void
read(String, InputStream, Thread) : void
setParameterHash(Hashtable) : void
write(OutputStream) : void
XMLio(GraphEltSet)
~ml
MouseAdapter
LBEditUI::LBEditMouseListener
~
+
+
+
LBEditMouseListener()
mouseClicked(MouseEvent) : void
mousePressed(MouseEvent) : void
mouseReleased(MouseEvent) : void
Figura 5.15. Diagrama de clases para la validación de estructuras de sitios Web
Página 84
Capítulo 6. Pruebas
El presente capítulo describe el plan de pruebas y su seguimiento para verificar la usabilidad
de la metodología en la definición de estructuras de sitios Web basada en diseño de
ontologías.
Capítulo 6. Pruebas
6.1. Introducción
Este trabajo está enfocado al desarrollo de una metodología. Se presentarán únicamente las
pruebas al editor que sirve para implementar la metodología propuesta y una pequeña
prueba de usabilidad, utilizada más con propósitos de exploración que de validación
6.2. Hipótesis
Hipótesis nula a comprobar: se propone como hipótesis que a través de una metodología de
construcción de sitios Web basada en principios de ontologías, se pueda agregar semántica a
la estructura del sitio para que éste sea más fácil de comprender.
6.3. Prueba de usabilidad
6.3.1. Descripción de las pruebas
Para llevar a cabo las pruebas de usabilidad se tomarán en cuenta los siguientes pasos,
basados en el test de guerrilla [Hassan 2003]:
Desarrollo de la prueba:
Para llevar a cabo las pruebas se proporcionó, a cada participante, un documento donde se
describe la ontología, sus conceptos y relaciones, así como ejemplos del uso de los mismos.
Esto se hizo con la finalidad de entrenar previamente al usuario antes del desarrollo de la
prueba.
Posteriormente se procedió a realizar una serie de preguntas en base a las
características a probar, con lo que se obtuvieron datos sobre el desempeño de los
participantes al momento de desarrollar sus tareas.
Rango de éxito
Para la evaluación del rango de éxito obtenido se tomaron en cuenta las siguientes
actividades:
Comprensión de la información sobre las clases: indica si el usuario tiene un
entendimiento de la taxonomía propuesta en la ontología. Las clases y subclases, así
como la manera en que un ejemplar puede catalogarse dentro de una clase definida.
Clasificación de ejemplares en las clases proporcionadas: se refiere a si el usuario es
capaz o no de clasificar un elemento de sitio Web (tipos de página) dentro de alguna
clase de las propuestas en la taxonomía.
Comprensión de la información de las relaciones: esta actividad reporta si el usuario
es capaz de entender el significado de las relaciones, así como la manera en que puede
Página 86
Capítulo 6. Pruebas
aplicarlas. Las restricciones que se presentan para cada relación y el modo en que las
características le ayudan a la construcción del sitio Web.
Etiquetado de enlaces con las relaciones propuestas: esta actividad reporta si el
usuario tiene la capacidad de elegir, de entre las múltiples relaciones, aquella que es
útil para enlazar dos nodos con características determinadas o si existen enlaces que
son imposibles de etiquetar pues no existe un modo de clasificarlas dentro de las
relaciones propuestas.
Facilidad de estructuración: se refiere a la facilidad que muestra el usuario al
momento de construir una estructura de sitio Web con los elementos proporcionados.
Comprensión de la estructura etiquetada: indica si el usuario es capaz de entender
mejor la estructura etiquetada con relaciones.
Actividad
A
B
C
D
E
F
G
Comprensión de la información sobre las clases
Clasificación de ejemplares con las clases proporcionadas
Compresión de la información sobre las relaciones
Etiquetado de enlaces con las relaciones propuestas
Facilidad de estructuración
Comprensión de la estructura etiquetada
P
P
P
E
E
E
P
P
P
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
P
P
E
E
E
E
E
P
E
E
E
E
E
E
E
E
E
E
Éxito parcial
Éxito completo
Rango de éxito (RE)
Número de intentos para lograr las tareas (NI): 42
Número de éxitos parciales (NEP): 9
Número de éxitos completos (NEC): 33
6.3.2. Problemas encontrados
A partir de la prueba realizada se encontró una serie de inconsistencias en la ontología
creada, lo que favoreció a su reestructuración y formalización.
Los detalles encontrados se listan a continuación:
Página 87
Capítulo 6. Pruebas



Los usuarios tenían dificultades para clasificar algunos ejemplares dentro de alguna
de las clases proporcionadas en la ontología, por lo que se dieron a la tarea de realizar
modificaciones a las mismas, de manera que se adecuaran a sus necesidades.
La mayoría de los usuarios pudo emplear las relaciones proporcionadas, aunque
algunos debieron leer varias veces la información de manera que quedara claro su
uso.
Algunos usuarios consideraron ambiguas las clases, lo cual generaba confusión al
momento de clasificar.
Para corregir las deficiencias presentadas se hizo la nueva clasificación, que se
muestra en esta tesis, la cual incluyen ejemplos de instancias para las clases .Se agregó una
descripción, características y restricciones para su aplicación, de modo que su uso fuera más
claro.
6.4. Plan de pruebas
Los distintos casos de prueba para validar el funcionamiento del editor de sitios Web EDWEB
se basan en el estándar IEEE 829 [Std829 07].
6.4.1. Características a probar
A continuación se listan las actividades desarrolladas durante la prueba:
Pruebas de creación y edición de grafos: se creará un grafo manual con componentes
de la ontología o automáticamente, indicando el archivo XML a partir del cual se
genera. Se verificará la correcta creación del grafo. Debe generarse un reporte de
enlaces no definidos, en caso de que existan.
Pruebas de creación de estructuras de sitios: se creará una estructura de un sitio Web
basada en un grafo creado previamente. La estructura contará con páginas enlazadas.
6.4.1.1. Pruebas de creación y edición de grafos
EDWEB-101 Pruebas de creación y edición de grafos.
 EDWEB-101-001 Carga de la ontología.
 EDWEB-101-002 Crear grafo del sitio Web.
 EDWEB-101-003 Crear archivo XML a partir de un grafo.
 EDWEB-101-004 Generar grafo a partir de un archivo XML.
 EDWEB-101-005 Crear reporte de enlaces.
 EDWEB-101-006 Validar estructura del sitio Web.
Página 88
Capítulo 6. Pruebas
6.4.1.2. Pruebas de creación de estructuras de sitios Web
EDWEB-102 Pruebas de creación de estructuras de sitios Web.
 EDWEB-102-001 Generar estructura del sitio Web.
6.4.2. Procedimiento de las pruebas
Este apartado contiene la descripción de los procedimientos correspondientes a cada caso de
prueba propuesto en el plan de pruebas. Los casos se organizan en grupos para validar y
verificar una determinada funcionalidad.
Los grupos de pruebas contienen tareas que se encargan de la validación y
verificación de aspectos funcionales de la herramienta de software EDWEB. Para cada grupo
de pruebas se describe el propósito del caso, el entorno de desarrollo del mismo, el
procedimiento para llevar a cabo la prueba y los resultados que se obtienen a partir de ella.
6.4.2.1. EDWEB-101 Pruebas de creación y edición de grafos
Propósito
Verificar la creación y modificaciones sobre grafos, así como el almacenamiento de datos y la
visualización que se pueden realizar sobre ellos.
Entorno de prueba
PC o laptop
EDWEB-101-001 Carga de la ontología
Propósito
Tener disponibles los componentes para la creación de grafos manuales (clases de la
ontología).
Entorno de prueba
PC o laptop
Proceso
 Abrir el editor de estructuras de sitios Web,
 Seleccionar el archivo OWL de la ontología,
 Cargar las clases de la ontología contenidas en el archivo OWL.
Resultado esperado
Las clases hoja de la taxonomía de clases que conforma la ontología se listan en un
árbol que el usuario puede utilizar para la creación del grafo.
Página 89
Capítulo 6. Pruebas
EDWEB-101-002 Crear grafo del sitio Web
Propósito
Crear un nuevo archivo descriptivo de un sitio Web que se visualiza como un grafo
compuesto por clases y relaciones tomadas del conjunto de elementos propuestos.
Entorno de prueba
PC o laptop.
Proceso
 Cargar la ontología.
 Seleccionar una clase de la lista y una relación del menú de relaciones.
 Elaborar una tripleta.
 Repetir el proceso de generación de tripletas hasta completar el grafo.
Resultado esperado
 Es posible generar tripletas válidas de acuerdo a las restricciones dadas por la
ontología.
 Es posible visualizar el grafo cuando se genera.
EDWEB-101-003 Crear archivo XML a partir de un grafo
Propósito
Guardar la estructura de datos XML del grafo creado manualmente para su posterior
uso en la generación de la estructura de sitios Web.
Entorno de prueba
PC o laptop
Proceso
 Tras haber creado un grafo, seleccionar la opción de guardar el grafo.
 El archivo de la estructura del grafo se almacena en la carpeta de datos.
Resultado esperado
 La estructura de datos XML se crea basándose en el archivo DTD.
 La estructura de datos XML se almacena correctamente en la ubicación
deseada.
EDWEB-101-004 Generar grafo a partir de un archivo XML
Propósito
Generar un grafo de sitio Web automáticamente a partir del archivo de datos XML
que lo describe.
Página 90
Capítulo 6. Pruebas
Entorno de prueba
PC o laptop
Proceso
 El usuario abrirá la aplicación.
 Elegirá una opción para abrir grafo existente.
 Seleccionará la carpeta que contiene el archivo deseado.
 La aplicación interpreta el archivo descriptivo.
 Se generará el grafo.
Resultado esperado
Se genera un grafo etiquetado con relaciones definidas por el archivo XML o con
relaciones indefinidas, donde los nodos representan a las páginas HTML y las aristas
a los enlaces entre ellas.
EDWEB-101-005 Crear reporte de errores
Propósito
Verificar que los enlaces entre los nodos del grafo tengan relaciones definidas.
Entorno de prueba
PC o laptop
Proceso
 Ejecutar la aplicación.
 Tras haber creado un nuevo grafo o seleccionar uno existente, seleccionar del
menú la opción para verificar grafo.
 Reportar tripletas inconsistentes en el grafo.
Resultado esperado
 Se despliega el mensaje de grafo relacionado correctamente.
 Se genera el reporte que indica inconsistencias en ciertas tripletas del grafo.
EDWEB-101-006 Validar estructura del sitio Web
Propósito
Mostrar al usuario de manera visual que el grafo es inconsistente en algunos de sus
elementos.
Entorno de prueba
PC o laptop
Proceso
 Ejecutar la aplicación.
 Crear un nuevo grafo o abrir un grafo existente.
Página 91
Capítulo 6. Pruebas

Los elementos inconsistentes como aristas indefinidas o nodos sin etiquetas se
visualizan de un tono magenta.
Resultado esperado

Los conceptos y relaciones indefinidos se visualizan de color magenta.
6.4.2.2. EDWEB-102 Pruebas de creación de estructuras de sitios Web
Propósito
Revisar que sea posible generar un conjunto de páginas basadas en un grafo del sitio Web.
Entorno de prueba
PC o laptop.
EDWEB-102-001 Generar estructura del sitio Web
Propósito
Verifica que después de revisar la estructura, sea posible crearla correctamente. La
estructura debe contener un conjunto de páginas.
Entorno de prueba
PC o laptop.
Proceso
Abrir el editor de estructuras de sitios Web.
Crear un nuevo grafo o abrir uno existente.
Ejecutar el caso EDWEB-101-005 Reportar enlaces indefinidos para revisar los enlaces en
el grafo del sitio.
Seleccionar del menú la opción para generar HTML y crear la estructura.
Resultado esperado
Se creará una estructura del sitio Web, con un conjunto de páginas enlazadas entre sí.
6.4.3. Resultados de las pruebas
En este apartado se muestran algunos ejemplos de aplicación de la metodología a través de la
herramienta EDWEB. Se presentan los resultados de cada caso de prueba con un escenario de
éxito en las pruebas desarrolladas.
Página 92
Capítulo 6. Pruebas
Tabla 6.1. Caso de prueba EDWEB-101-001 Carga de la ontología
Caso de prueba: EDWEB-101-001 Carga de la ontología
Resultado: OK
Archivo OWL seleccionado
Conjunto de clases listadas:
Observaciones: es posible cargar cualquier ontología almacenada en un archivo OWL, lo que
permite observar las clases hijas de dicha ontología en forma de lista.
Responsable de la prueba: Matilde Baños Nolasco
Cargo: autora.
Página 93
Capítulo 6. Pruebas
Tabla 6.2. Caso de prueba EDWEB-101-002 Crear un grafo manual
Caso de prueba: EDWEB-101-002 Crear un grafo manual
Resultado: OK
Formación de tripleta
Clase
Ejemplar
Relación
Observaciones:
Responsable de la prueba: Matilde Baños Nolasco
Cargo: autora.
Tabla 6.3. Caso de prueba EDWEB-101-003 Generar un archivo XML
Caso de prueba: EDWEB-101-003 Generar un archivo XML
Resultado: OK
Selección de menú
Guardar grafo
Página 94
Capítulo 6. Pruebas
Archivo a guardar
Nombre del archivo
Archivo XML generado
Página 95
Capítulo 6. Pruebas
Observaciones: los conceptos deben tener un nombre al momento de ser guardados, ya que esto
repercute en el momento de la creación de una estructura basada en el grafo.
Responsable de la prueba: Matilde Baños Nolasco
Cargo: autora.
Tabla 6.4. Caso de prueba EDWEB-101-004 Generar un grafo automáticamente
Caso de prueba: EDWEB-101-004 Generar un grafo automáticamente
Resultado: OK
Selección de menú
Abrir grafo existente
Archivo a graficar
Archivo
Grafo generado a partir del archivo
Grafo
Página 96
Capítulo 6. Pruebas
Observaciones:
Responsable de la prueba: Matilde Baños Nolasco
Cargo: autora.
Tabla 6.5. Caso de prueba EDWEB-101-005 Reportar enlaces indefinidos
Caso de prueba: EDWEB-101-005 Reportar enlaces indefinidos
Resultado: OK
Grafo con etiquetas indefinidas en las aristas
Grafo
Reporte de tripletas indefinidas
Tripletas
indefinidas
Observaciones: se valida únicamente el uso de relaciones válidas, aunque pudieran considerarse
algunas otras características definidas en la metodología.
Responsable de la prueba: Matilde Baños Nolasco
Cargo: autora.
Página 97
Capítulo 6. Pruebas
Tabla 6.6. Caso de prueba EDWEB-101-006 Validar el grafo
Caso de prueba: EDWEB-101-006 Validar el grafo
Resultado: OK
Grafo correctamente etiquetado
Edición de una arista para mostrar la etiqueta indefinida
Valor
indefinido
para la arista
Arista
resultante
Página 98
Capítulo 6. Pruebas
Nodo con etiqueta
Valor
indefinido
para el nodo
Observaciones:
Responsable de la prueba: Matilde Baños Nolasco
Cargo: autora.
Tabla 6.7. Caso de prueba EDWEB-102-001 Generar estructura del sitio Web
Caso de prueba: EDWEB-102-001 Generar estructura del sitio Web
Resultado: OK
Grafo etiquetado
Página 99
Capítulo 6. Pruebas
Carpeta creada para el grafo etiquetado
Ejemplo de página con enlaces
Observaciones: una relación indefinida no afecta en la creación de la estructura, pero sí la falta de
definición de los ejemplares.
Responsable de la prueba: Matilde Baños Nolasco
Cargo: autora.
Página 100
Capítulo 6. Pruebas
La tabla 6.8 muestra una descripción de los grafos para los casos de prueba de la
herramienta EDWEB.
Tabla 6.8. Descripción de grafos de los casos de prueba de la herramienta EDWEB
Caso de prueba
Nodo origen
Nodo destino
Relación
EDWEB-101-002
UnidadOrganizacional: *
UnidadOrganizacional: Principal
EDWEB-101-004
UnidadOrganizacional:
Departamento CC
DescripciónAbstracta:
Presentación
UnidadOrganizacional:
Departamento CC
UnidadOrganizacional:
Departamento CC
UnidadOrganizacional:
Departamento CC
UnidadOrganizacional: Principal
UnidadOrganizacional: Sistemas
Distribuidos
DescripciónFísica: Infraestructura
(F) Meronimia
canónica-canónica
(A) Meronimia
facultativafacultativa
(I) Meronimia
canónica-canónica
(G) Meronimia
canónica-canónica
(I) Meronimia
canónica-canónica
Indefinida
EDWEB-101-005
EDWEB-101-006
EDWEB-102-001
OrganizaciónFuncionamiento:
Departamento de CC
OrganizaciónFuncionamiento:
Departamento de CC
UnidadOrganizacional:
SistemasDistribuidos
UnidadOrganizacional:
SistemasDistribuidos
UnidadOrganizacional: Posgrado
UnidadOrganizacional:
PersonalAcadémico
OrganizaciónFuncionamiento:
Departamento de CC
Trabajador: Dr. Juan Gabriel
Indefinida
Trabajador: Dr. José Antonio
Indefinida
UnidadOrganizacional: Posgrado
(F) Meronimia
canónica-canónica
(I) Meronimia
canónica-canónica
(E) Meronimia
canónica-canónica
(D) Meronimia
colección-miembro
Indefinida
UnidadOrganizacional:
Publicaciones
OrganizaciónFuncionamiento:
Plan de estudios
Producto: Artículo
UnidadOrganizacional:
Publicaciones
UnidadOrganizacional: Sistemas UnidadOrganizacional: Posgrado
Distribuidos
UnidadOrganizacional: Sistemas Servicio: *
Distribuidos
Grafo del caso EDWEB-101-004
Indefinida
Nota: * denomina un nodo sin nombre de ejemplar definido.
Página 101
Capítulo 7. Conclusiones
Este capítulo resume las conclusiones obtenidas como resultado de la investigación, las
aportaciones y propuestas de trabajos que podrían derivarse en el futuro a partir de de la
metodología desarrollada.
Capítulo 6. Conclusiones
7.1. Conclusiones
A continuación se listan las conclusiones obtenidas a partir de la investigación
realizada:
1. No se encontraron otras herramientas o metodologías que permitan establecer
semántica a la estructura de un sitio Web, por lo cual este trabajo es pionero en su
campo. Las herramientas analizadas proveen patrones de diseño referentes a la
estética del sitio, otras herramientas se basan en el contenido de las páginas para
generar aplicaciones Web, mejorando la explotación de la información.
2. Se encontraron trabajos donde se expresa que existen relaciones implícitas en la
estructura de un sitio Web, siendo éstas de asociación y de agregación. Sin embargo,
no se define claramente ni se fundamenta su uso, ni los casos en que es posible
utilizarlas, ya que no se aplican de manera práctica.
3. Es posible relacionar conceptos en sitios Web del dominio de educación con relaciones
léxicas, entre ellas una de interés particular fue la meronimia. Algunos problemas
presentados con los tipos de meronimias encontrados se refieren al hecho de que es
posible aplicarlos en entidades tangibles, siendo difícil relacionar objetos abstractos
como los que representan algunas páginas, por lo que fue necesario integrar ciertas
propiedades que permitieran una adaptación de los tipos encontrados.
4. Los metadatos que se propone se agreguen a las páginas HTML (por ejemplo, autor,
tema, entre otras), no son suficientes para describir la estructura de un sitio Web.
7.2. Aportaciones
El trabajo que se presenta en esta tesis ofrece dos aportaciones: a) una definición de conceptos
acerca de la arquitectura de sitios Web que se encuentran en el dominio de educación; b)
proporciona un enfoque del uso del diseño de ontologías dentro de esta área.
7.3. Trabajos futuros
El trabajo de investigación presentado comprende el desarrollo de una metodología genérica
que permite la creación de estructuras de sitios Web, así como su implementación en una
herramienta de edición de sitios Web a través del uso de grafos. Algunas propuestas de
trabajos que podrían desprenderse de esta tesis se listan a continuación:
Encontrar nuevos patrones de diseño, conceptos y relaciones que ayuden en el
enriquecimiento de la ontología propuesta, de manera que su uso pueda compartirse
a otros dominios de sitios Web o aplicaciones.
Automatizar el proceso de creación de la ontología, ya que la obtención de los
conceptos y relaciones fue un proceso manual que comprendió un periodo de cuatro
Página 103
Capítulo 6. Conclusiones
meses aproximadamente. Es posible obtener una automatización de una buena parte
de la creación de la ontología que aminore el tiempo de análisis y proporcione un
mayor contenido de información a través del estudio del contenido de sitios Web.
Realizar un estudio semántico que permita nombrar las relaciones y conceptos de
manera que brinden al usuario un mayor grado de comprensión.
Automatizar la generación de grafos de sitios Web, a través del análisis del contenido
de los documentos que lo componen, de manera que el etiquetado no se realice de
forma manual, cuando se necesite representar sitios con un gran número de páginas.
De esta manera se disminuye el tiempo y esfuerzo de operación de la herramienta.
7.4. Publicaciones
“Adapting Meronymy Relation to Define Properties among Web Site Objects”,
presentado en The Fifteenth International Multi-Conference on Advanced Computer
Systems (ACS 2008), a publicarse en Polish Journal of Environmental Studies, en
Polonia.
Indexado
por
el
Science
Citation
Index
SCI.
Página 104
Anexo A:
Ejemplos de etiquetado
Los ejemplos de etiquetado mostrados a continuación fueron creados en base sitios de
educación. Para una mejor comprensión de la estructura de los sitios Web se ha realizado el
etiquetado por secciones.
A.1 Fragmento de grafo de la página principal del cenidet
Dominio
Nodo del
dominio
Rango
Nodo del rango
Relación
Unidad
organizacional
Unidad
organizacional
Unidad
organizacional
Unidad
organizacional
Descripción
abstracta
Ingeniería
Mecánica
Ingeniería
Mecatrónica
Ingeniería
Electrónica
Ciencias
Computacionales
Presentación
(F) Meronimia
canónica-canónica
(F) Meronimia
canónica-canónica
(F) Meronimia
canónica-canónica
(F) Meronimia
canónica-canónica
(K) Meronimia
canónicafacultativa
(A) Meronimia
facultativafacultativa
(A) Meronimia
facultativafacultativa
Topológica
Unidad
organizacional
Unidad
organizacional
Unidad
organizacional
Unidad
organizacional
Unidad
organizacional
Cenidet
Unidad
organizacional
Cenidet
Descripción
física
Directorio
Unidad
organizacional
Cenidet
Descripción
física
Localización y
traslado
Unidad
organizacional
Cenidet
Suceso
Curso de
actualización
Cenidet
Cenidet
Cenidet
Cenidet
Página 105
A.2 Fragmento de grafo del departamento de Física del CINVESTAV
Dominio
Nodo del
dominio
Rango
Nodo del rango
Unidad
organizacional
Departamento
de Física
Unidad
organizacional
Programa de
maestría en
ciencias (Física)
Principal
Unidad
organizacional
Departamento
de Física
Descripción
abstracta
Unidad
organizacional
Departamento
de Física
Descripción
física
Directorio
Unidad
organizacional
Departamento
de Física
Descripción
física
Ubicación
Unidad
organizacional
Unidad
organizacional
Unidad
organizacional
Departamento
de Física
Investigadores
Unidad
organizacional
Trabajador
Investigadores
Investigadores
Trabajador
Baquero Parra,
Rafael
Bretón Báez, Nora
Eva
Relación
(A) Meronimia
facultativafacultativa
A) Meronimia
facultativafacultativa
A) Meronimia
facultativafacultativa
A) Meronimia
facultativafacultativa
(I) Meronimia
canónica-canónica
(C) Meronimia
grupo-miembro
(C) Meronimia
grupo-miembro
Página 106
Anexo B:
Implementación
Código de carga de la ontología
import com.hp.hpl.jena.ontology.Individual;
import com.hp.hpl.jena.ontology.OntClass;
import com.hp.hpl.jena.rdf.model.Resource;
TGLinkBrowser(JFrame f){
...
JScrollPane panelTree;
panelTree= new JScrollPane();
List<OntClass> listClass=null;
List<Individual> listIndividuals=null;
JFileChooser fileChooser = new JFileChooser();
fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("owl","OWL"));
int value = fileChooser.showOpenDialog(this);
Iterator<OntClass> itClass;
if ( value == JFileChooser.APPROVE_OPTION ){
File file = fileChooser.getSelectedFile();
textOntology.setText(file.getAbsolutePath());
parser = new JenaParser(file);
listClass = parser.getOntClass();
listIndividuals = parser.getIndividuals();
}
if ( parser != null ){
DefaultMutableTreeNode nodeRoot = new DefaultMutableTreeNode( );
nodeRoot.setUserObject("Class");
itClass= listClass.iterator();
while ( itClass.hasNext()){
Resource resource = itClass.next();
DefaultMutableTreeNode node = new DefaultMutableTreeNode( );
node.setUserObject(resource.getLocalName());
if ((resource.getLocalName())!=null)
{
nodeRoot.add(node);}
}
DefaultTreeModel modelTree = new DefaultTreeModel( nodeRoot );
JTree JTreeReasoner = new JTree(modelTree);
JTreeReasoner.getSelectionModel().setSelectionMode
TreeSelectionModel.SINGLE_TREE_SELECTION);
TreeSelectionListener selTree= new TreeSelectionListener(){
public void valueChanged(TreeSelectionEvent e){
DefaultMutableTreeNode nodeSelected = (DefaultMutableTreeNode)
e.getPath().getLastPathComponent();
Global.newNode1=nodeSelected.toString();
}
...
}
enclosingFrame= f;
xmlFileName=null;
...
}
Página 107
Creación de un nodo
TGPanel tgPanel;
/**
* @Method:
TGLinkBrowser
* @Description:
constructor con frame
* @Param:
f
* @Return:
*/
TGLinkBrowser(JFrame f){
this();
...
try
{
tgPanel.addNode(new LBNode("UnidadOrganizacional:Principal"));
}
catch (TGException e)
{e.printStackTrace();}
}
Propiedades del nodo
public LBNode(String s, String s1, String s2)
{
super(s, s1);
urlIsLocal = false;
urlIsXML = false;
hintIsHTML = false;
hintWidth = 300;
hintHeight = -1;
url = s2;
hint = "";
hintFont = HINT_FONT;
}
Creación de una relación
public class Edge {
public Edge(Node node, Node node1, int i)
{
from = node;
to = node1;
length = i;
col = DEFAULT_COLOR;
}
}
Método validate de la clase Validator
/**
* @Method:
validate
* @Description:
valida que la tripleta formada sea correcta
* @Param:
lNode, nNode, rel
* @Return:
boolean (true/false)
* */
public boolean validate(String lNode, String nNode, String rel)
{
LBNode lNodeTemp=new LBNode(lNode);
LBNode nNodeTemp=new LBNode(nNode);
lNode= lNodeTemp.separatorString(lNode);
nNode= nNodeTemp.separatorString(nNode);
Página 108
if (rel.equals("Indefinida"))
{return true;}
else
{
if (lNode.equals("UnidadOrganizacional"))
{
if (nNode.equals("OrganizacionFuncionamiento"))
{
if ((rel.equals("Meronimia A"))||(rel.equals("Meronimia E")))
{return true;}
if (rel.equals("Meronimia E"))
{return true;}
}
...
}
...
return false;
}//Fin de la función validate
Método saveChangesAndHideDialog de la clase LBNodeDialog
/***
* @Method:
saveChangesAndHideDialog
* @Description:
guarda los cambios al nodo una vez que la ventana
*
se ha cerrado
* @Param:
* @Return:
* */
public void saveChangesAndHideDialog()
{
String receivedCad;
if(lbNode == null)
{
setVisible(false);
return;
}
String value=tfURL.getText();
if((value.trim().equals("")==false)&&(value.trim()!=null))
{
lbNode.setURL(tfURL.getText());
receivedCad=lbNode.separatorString(Global.global2+":"+tfURL.getText());
lbNode.setLabel(receivedCad+":"+tfURL.getText());
lbNode.setURLIsXML(cbXML.isSelected());
lbNode.setURLIsLocal(cbLocal.isSelected());
lbNode.setTextColor(lblTextColor.getBackground());
Node.setNodeTextColor(lblTextColor.getBackground());
if ((lblBackColor.getBackground())==(Color.magenta))
{
lbNode.setBackColor(Color.BLACK);
Node.setNodeBackDefaultColor(Color.BLACK);
}
else
{
lbNode.setBackColor(lblBackColor.getBackground());
Node.setNodeBackDefaultColor(lblBackColor.getBackground());
}
lbNode.setHint(taHint.getText());
lbNode.setHintIsHTML(cbHintIsHTML.isSelected());
lbNode.setType(cboNodeType.getSelectedIndex() + 1);
Node.setNodeType(cboNodeType.getSelectedIndex() + 1);
try
{
lbNode.setHintWidth(Integer.parseInt(tfHintWidth.getText()));
}
catch(NumberFormatException
numberformatexception)
{
Página 109
System.out.println("Error");}
try
{
lbNode.setHintHeight(Integer.parseInt(tfHintHeight.getText()));
}
catch(NumberFormatException numberformatexception1) {
System.out.println("Error");}
try
{
lbNode.setFont(new
Font(Node.TEXT_FONT.getFamily(),
0,
Integer.parseInt((String)cboFontSize.getSelectedItem())));
}
catch(NumberFormatException
numberformatexception2)
{System.out.println("Error"); }
setVisible(false);
if(tgPanel != null)
tgPanel.repaint();
Global.newNode1=null;
}
else
{
JOptionPane.showMessageDialog(null, "Escriba un nombre para el nodo", "Error",
JOptionPane.WARNING_MESSAGE);
}
}
Método write de XMLio
public void write(OutputStream out) throws Exception
{
XMLElement tglbXML = new XMLElement("TOUCHGRAPH_LB");
tglbXML.setAttribute("version", "1.20");
final XMLElement nodeSet = new XMLElement("NODESET");
tglbXML.addChild(nodeSet);
…
TGForEachNode fen = new TGForEachNode() {
public void forEachNode(Node node)
{
…
}
};
graphEltSet.forAllNodes(fen);
final XMLElement edgeSet = new XMLElement("EDGESET");
tglbXML.addChild(edgeSet);
TGForEachEdge fee = new TGForEachEdge() {
public void forEachEdge(Edge edge)
{
…
}
};
…
graphEltSet.forAllEdges(fee);
XMLElement parameters = new XMLElement("PARAMETERS");
tglbXML.addChild(parameters);
XMLElement param;
for(Enumeration paramNames = parameterHash.keys();
paramNames.hasMoreElements(); parameters.addChild(param))
{
String name = (String)paramNames.nextElement();
String value = (String)parameterHash.get(name);
param = new XMLElement("PARAM");
param.setAttribute("name", name);
param.setAttribute("value", value);
}
BufferedReader bReader = new BufferedReader(new FileReader(getLocalDirName() +
File.separatorChar + "TG_Prepend_DTD.xml"));
String thisLine;
Página 110
while ((thisLine = bReader.readLine()) != null)
{
out.write(thisLine.getBytes());
out.write((System.getProperty("line.separator")).getBytes());
}
XMLWriter writer = new XMLWriter(out);
writer.write(tglbXML, true);
out.close();
bReader.close();
}
Método read del archivo XMLio
public void read(String fileName, InputStream in, Thread afterReading)throws Exception{
InputStream xmlStream;
if(fileName.toLowerCase().endsWith(".zip")){
xmlStream = new ZipInputStream(in);
((ZipInputStream)xmlStream).getNextEntry();
}
else
if(fileName.toLowerCase().endsWith(".gz"))
xmlStream = new GZIPInputStream(in);
else
xmlStream = in;
IXMLParser parser = new StdXMLParser();
parser.setBuilder(new StdXMLBuilder());
parser.setValidator(new NonValidator());
StdXMLReader reader = new StdXMLReader(xmlStream);
parser.setReader(reader);
IXMLElement tglbXML = null;
try{
tglbXML = (IXMLElement)parser.parse();
}
catch(Exception e){
e.printStackTrace();
}
xmlStream.close();
buildGraphEltSet(tglbXML, afterReading);
}
Método buildGraphEltSet de la clase XMLio
private void buildGraphEltSet(IXMLElement tglbXML,Thread afterReading) throws TGException{
IXMLElement nodeSet = (IXMLElement)tglbXML.getChildrenNamed("NODESET").firstElement();
LBNode newNode;
for(Enumeration nodeEnum=nodeSet.enumerateChildren();
nodeEnum.hasMoreElements(); graphEltSet.addNode(newNode)){
IXMLElement node = (IXMLElement)nodeEnum.nextElement();
String nodeID = node.getAttribute("nodeID", null);
...
Vector v = node.getChildrenNamed("NODE_LOCATION");
if(!v.isEmpty()){
IXMLElement nodeLocation = (IXMLElement)v.firstElement();
int x = nodeLocation.getAttribute("x", 0);
int y = nodeLocation.getAttribute("y", 0);
newNode.setLocation(new Point(x, y));
newNode.setVisible(getBooleanAttr(nodeLocation, "visible", false));
}
...
IXMLElement edgeSet=(IXMLElement)tglbXML.getChildrenNamed("EDGESET").firstElement();
LBEdge newEdge;
for(Enumeration edgeEnum=edgeSet.enumerateChildren();
edgeEnum.hasMoreElements(); graphEltSet.addEdge(newEdge))
{
IXMLElement edge = (IXMLElement)edgeEnum.nextElement();
String fromID = edge.getAttribute("fromID", null);
String toID = edge.getAttribute("toID", null);
Página 111
int length = edge.getAttribute("length", 4000);
String label = edge.getAttribute("label", null);
LBNode fromNode = (LBNode)graphEltSet.findNode(fromID);
LBNode toNode = (LBNode)graphEltSet.findNode(toID);
newEdge = new LBEdge(fromNode, toNode, length);
Color color = LBEdge.DEFAULT_COLOR;
...
for(Enumeration paramEnum=parameters.enumerateChildren();
paramEnum.hasMoreElements();)
{
IXMLElement param = (IXMLElement)paramEnum.nextElement();
String name = param.getAttribute("name", null);
String value = param.getAttribute("value", null);
if(name != null)
parameterHash.put(name, value);
}
}
if(afterReading != null)
afterReading.start();
}
Método buildPages de la clase ParserHTML.
private void buildPages(IXMLElement tglbXML)throws TGException
{
IXMLElement nodeSet = (IXMLElement)tglbXML.
getChildrenNamed("NODESET").firstElement()
IXMLElement nodeSet1 = (IXMLElement)tglbXML.getChildrenNamed
("NODESET").firstElement();
IXMLElement edgeSet = (IXMLElement)tglbXML.getChildrenNamed
("EDGESET").firstElement();
LBNode newNode;
if (Global.openedFile!=null){
File directed= new
File("/C:/jdevjava10133/jdev/mywork/EDWEB/"+ (Global.openedFile).getName());
if (directed.exists()==false){
directed= new File
("/C:/jdevjava10133/jdev/mywork/EDWEB/"+ (Global.openedFile).getName());
directed.mkdir();
...
}
Método buildPages de la clase ParserHTML.
private void buildPages(IXMLElement tglbXML)throws TGException
{
...
for(Enumeration nodeEnum = nodeSet.enumerateChildren();
nodeEnum.hasMoreElements();){
IXMLElement node = (IXMLElement)nodeEnum.nextElement();
String nodeID = node.getAttribute("nodeID", null);
if(nodeID == null)
throw new TGException(3, "node has no ID");
newNode = new LBNode(nodeID, "", "");
Vector v = node.getChildrenNamed("NODE_URL");
if(!v.isEmpty()){
IXMLElement nodeLabel = (IXMLElement)v.firstElement();
newNode.setLabel(nodeLabel.getAttribute("url", ""));
try{
String fullFileName = directed.toString() + File.separatorChar
+(nodeLabel.getAttribute("url", "")) + ".html";
BufferedWriter bWriter = new
BufferedWriter(new FileWriter(fullFileName));
String label=nodeLabel.getAttribute("url", "");
String cad="<html><head><title>"+label+"</title></head><body>";
String cad1="</html>";
bWriter.write(cad);
Página 112
for (Enumeration edgeEnum = edgeSet.enumerateChildren();
edgeEnum.hasMoreElements();){
IXMLElement edge = (IXMLElement)edgeEnum.nextElement();
String fromID = edge.getAttribute("fromID", null);
if(fromID.equals(nodeID)){
String toID=edge.getAttribute("toID",null);
for(Enumeration nodeEnum1 = nodeSet1.
enumerateChildren(); nodeEnum1.hasMoreElements();){
IXMLElement node1 =IXMLElement)nodeEnum1.nextElement();
String nodeID1 = node1.getAttribute("nodeID", null);
if(toID.equals(nodeID1)){
Vector vec = node1.getChildrenNamed("NODE_URL");
if(!vec.isEmpty()){
IXMLElement nodeLabelTo=(IXMLElement)vec.firstElement();
String labelTo = nodeLabelTo.getAttribute("url","");
String fullFileName1 = directed.toString() +
File.separatorChar +labelTo+ ".html";
bWriter.write("<p><a href=file:///"+fullFileName1+" title="+
labelTo +" >"+ labelTo +"</a></p>");
}
}
}
}
}
bWriter.write(cad1);
bWriter.close();
BufferedReader bReader = new BufferedReader(new
FileReader("/C:/jdevjava10133/jdev/mywork/EDWEB/Client/"+
Global.openedFile.getName()));
String thisLine;
String copiedXML = directed.toString() + File.separatorChar +
Global.openedFile.getName();
BufferedWriter writerXML = new BufferedWriter(new FileWriter(copiedXML));
while ((thisLine = bReader.readLine()) != null){
writerXML.write(thisLine);
writerXML.write((System.getProperty("line.separator")));
}
XMLWriter writer = new XMLWriter(writerXML);
writer.write(tglbXML, true);
writerXML.close();
}
catch(IOException e) {System.out.println("Error 1");}
}
}
}
Método checkNodes de la clase Report.
private Vector checkNodes(IXMLElement tglbXML)throws TGException{
...
if (Global.openedFile!=null){
for(Enumeration nodeEnum = nodeSet.enumerateChildren();nodeEnum.hasMoreElements();){
IXMLElement node = (IXMLElement)nodeEnum.nextElement();
String nodeID = node.getAttribute("nodeID", null);
...
}
v = node.getChildrenNamed("NODE_URL");
if(!v.isEmpty()){
IXMLElement nodeURL = (IXMLElement)v.firstElement();
newNode.setURL(nodeURL.getAttribute("url", ""));
if ((nodeURL.getAttribute("url", "")).equals("")){
contNodes=contNodes+1;
}
newNode.setURLIsLocal(getBooleanAttr(nodeURL, "urlIsLocal", false));
newNode.setURLIsXML(getBooleanAttr(nodeURL, "urlIsXML", false));
}
}
if (contNodes>=1){
JOptionPane.showMessageDialog(null, "Existen "+contNodes+ " nodos sin etiquetar",
Página 113
"Error", JOptionPane.WARNING_MESSAGE);
Global.globalCont=contNodes;
}
for (Enumeration edgeEnum = edgeSet.enumerateChildren(); edgeEnum.hasMoreElements();){
IXMLElement edge = (IXMLElement)edgeEnum.nextElement();
String edgeLabel= edge.getAttribute("label","");
if (edgeLabel.equals("Indefinida")){
String fromID = edge.getAttribute("fromID", null);
String toID = edge.getAttribute("toID", null);
int length = edge.getAttribute("length", 4000);
for(Enumeration nodeEnum1 = nodeSetFrom.enumerateChildren();
nodeEnum1.hasMoreElements();){
IXMLElement node = (IXMLElement)nodeEnum1.nextElement();
String newNodeFrom = node.getAttribute("nodeID", null);
if(newNodeFrom == null)
throw new TGException(3, "node has no ID");
Vector v;
v = node.getChildrenNamed("NODE_LABEL");
if(!v.isEmpty()){
IXMLElement nodeLabelFrom = (IXMLElement)v.firstElement();
if (newNodeFrom.equals(fromID)){
classFrom = nodeLabelFrom.getAttribute("label","");
}
}
}
for(Enumeration nodeEnum2 = nodeSetTo.enumerateChildren();
nodeEnum2.hasMoreElements();){
...
IXMLElement nodeLabelTo = (IXMLElement)v.firstElement();
if (newNodeTo.equals(toID)){
classTo = nodeLabelTo.getAttribute("label","");
}
}
}
returnedCad=("Arista con etiqueta indefinida del nodo"+classFrom+"al nodo"+classTo);
returnEdge.add(returnedCad);
contEdges= contEdges+1;
...
}
...
if (contEdges==0){
returnedCad =("El grafo está relacionado correctamente");
returnEdge.add(returnedCad);
}
...
}
Método saveChangesAndHideDialog de la clase LBNodeDialog.
public void saveChangesAndHideDialog()
{
if(lbEdge == null){
setVisible(false);
return;
}
Node nodeTo=new LBNode();
nodeTo=lbEdge.getTo();
Node nodeFrom=new LBNode();
nodeFrom=lbEdge.getFrom();
Validator validateTripleta= new Validator();
Boolean result= (validateTripleta.validate(nodeFrom.getLabel(),
nodeTo.getLabel(),(String)cboEdgeLabel.getSelectedItem()));
if (result==true){
lbEdge.setLabel((String)(cboEdgeLabel.getSelectedItem()));
if ((cboEdgeLabel.getSelectedItem().equals("Indefinida"))&&
(lblEdgeColor.getBackground()==(Color.magenta))){
lbEdge.setColor(Color.magenta);
Edge.setEdgeDefaultColor(Color.magenta);
}
Página 114
else{
if(((cboEdgeLabel.getSelectedItem().equals("Indefinida"))==false)&&
(lblEdgeColor.getBackground()==(Color.magenta))){
lbEdge.setColor(Color.decode("#0000B0"));
Edge.setEdgeDefaultColor(Color.decode("#0000B0"));
}
else{
if(((cboEdgeLabel.getSelectedItem().equals("Indefinida")))&&
(lblEdgeColor.getBackground()!=(Color.magenta))){
lbEdge.setColor(Color.magenta);
Edge.setEdgeDefaultColor(Color.magenta);
}
else{
if(((cboEdgeLabel.getSelectedItem().equals("Indefinida"))==false)&&
(lblEdgeColor.getBackground()!=(Color.magenta))){
lbEdge.setColor(lblEdgeColor.getBackground());
Edge.setEdgeDefaultColor(lblEdgeColor.getBackground());
...
}
...
}
Página 115
Referencias
[ADOBE 07]
[BRAIN 04]
[BRAIN 07]
[CAÑAS 03]
[COOLEY 00]
[CRUSE 86]
[DÍEZ 99]
[FONS 02]
[GUIZZARDI 05]
[GREENWICH 07]
[GRUBER 93]
[HASSAN 03]
[IHCM 07]
[INSFRÁN 98]
[JIN 01]
Adobe; [En línea]; [Accedido el 21 de septiembre de 2007]; Disponible en:
“http://livedocs.adobe.com/dreamweaver/8_es/using/wwhelp/wwhimpl/
common/html/wwhelp.htm?context=LiveDocs_Parts&file=05_sit27.htm”.
TheBrain Technologies Corporation; The Brain, Personal Brain. User guide;
2004; [En línea]; [Accedido el 21 de septiembre del 2007]; Disponible en:
“http://www.thebrain.com/site/personalbrain/support/PersonalBrain_3_02
_User_Guide.pdf”.
The Brain. Visual Information Management; [En línea]; [Accedido el 17 de
junio del 2007]; Disponible en línea en el World Wide Web en:
“http://www.thebrain.com/#-42”.
Cañas A. J., Coffey J. W., Carnot M. J., Feltovich P. J., Hoffman R. R, Novak J.
D.; “A Summary of Literature Pertaining to the Use of Concept Mapping
Techniques and Technologies for Education and Performance Support”;
Technical Report submitted to the US Navy Chief of Naval Education and
Training; Institute for Human and Machine Cognition (IHCM); Pensacola,
Florida; july 2003.
Cooley R., Tan P., Srivastava J.; “Discovery of interesting usage patterns from
Web data”; Lecture notes in computer science: Web usage analysis and user
profiling 1836/2000; ISSN 0302-9743 (Print) 1611-3349 (Online), pp. 163-182;
2000.
Cruse D. A; “Lexical Semantics”; Cambridge University Press; 1986.
Díez P.L.; “La relación de meronimia en los sustantivos del léxico español:
contribución a la semántica computacional”, Estudios de lingüística española,
2; ISSN 1139-8736; 1999.
Fons J. J., Pastor O., Valderas P., Ruiz M.; 2002; “OOWS: un Método de
Producción de Software en Ambientes Web”; Avances en Comercio
Electrónico 9; ISBN 84-607-5827-3; pp. 119-136.
Guizzardi G; Ontological foundations for structural conceptual models;
Telematica Instituut Fundamental Research Series No. 15; ISBN 90-75176-81-3
ISSN 1388-1795, No. 015. CTIT PhD-thesis; ISSN 1381-3617, No. 05-74; 2005.
University of Greenwich; Website Arquitecture, Masters Programme at the
University of Greenwich, [En línea]; [Accedido el 15 de abril de 2007];
Disponible en: http://www.Websitearchitecture.co.uk/define/index.php.
Gruber T.; “A Translation Approach to Portable Ontology Specifications”;
Knowledge Acquisition 5(2); ISSN: 1042-8143; pp. 199-220, 1993.
Hassan M., Martín F., Método de test con usuarios, 2003; [En línea]; [Accedido
el
05
de
agosto
de
2008];
Disponible
en:
“http://www.nosolousabilidad.com/articulos/test_usuarios.htm”.
Institute for human and machine cognition (IHCM) CmapTools; [En línea];
[Accedido el 15 de abril de 2007]; Disponible en: “http://cmap.ihmc.us/”.
Insfrán E., Pelechano V., Gómez J., Pastor O.; “Un estudio comparativo de la
expresividad de relaciones entre clases en OO-Method y UML”, III Jornadas de
Trabajo de MENHIR; Murcia, España; noviembre, 1998.
Jin Y., Decker S., Wiederhold G.; “OntoWebber: Model-Driven Ontology-Based
Web Site Management”; The 1st International Semantic Web Working
Symposium (SWWS'01); Universidad de Stanford, Palo Alto, California; julio
29-agosto 1, 2001.
Página 116
[LEE 06]
Lee W.; “Hierarchical Web Structuring from the Web as a Graph Approach
with Repetitive Cycle Proof”; Lecture notes in computer science: Advanced
Web and network technologies, and applications 3842/2006; ISSN 0302-9743
(Print) 1611-3349 (Online); pp. 1004-1011; 2006.
[LIECHTI 98]
Liechti, O., Sifer M. J., Ichikawa T.; 1998; “Structured graph format: XML
metadata for describing Web site structure”; Computer Networks and ISDN
Systems 30; No. 1 (1998): pp. 11-21.
[Mc GUINESS 04]
Deborah L. McGuinness, Frank van Harmelen. OWL Web Ontology Language
Overview. W3C Recommendation 10 febrero 2004. En línea.
http://www.w3.org/TR/2004/REC-owl-features-20040210/. Accedido el 23
de junio del 2008.
[MORVILLE 07]
Morville P.; Semantic studios; [En línea]; [Accedido el 30 de junio del 2007];
Disponible en: http://semanticstudios.com/publications/semantics/
000149.php.
[NETCRAFT 08]
Netcraft; [En línea]; [Accedido el 27 de marzo del 2008]; Disponible en:
“http://news.netcraft.com/archives/2008/03/26/march_2008_web_server_
survey.html”
[NIELSEN 03]
Nielsen J.; Usability 101: Introduction to Usability. Jakob Nielsen´s Alertbox, 25
de agosto del 2003, [En línea] [Accedido el 02 de marzo del 2007; Disponible
en: http://www.useit.com/alertbox/20030825.html
[NOVAK 84]
Novak J. D., Gowin D. B.; “Learning How to Learn”; ISBN-10: 0521319269,
ISBN-13: 978-0521319263; Cambridge University Press; september 28, 1984.
[OWL 08]
W3C. OWL Web Ontology Languaje; [En línea]; [Accedido el 27 de marzo del
2007]; Disponible en: “http://www.w3.org/TR/owl-features/”.
[PLAISANT 97]
Plaisant C., Marchionini G., Komlodi A.; 1997; “Visualizing websites using a
hierarchical table of contents browser: WebTOC”; Third Conference on
Human Factors and the Web.
[POWELL 02]
Powell T. A.; “Web design. The complete reference”; 2nd edition; Mc Graw
Hill/ Osborne; 2002.
[ROSENFELD 06]
Rosenfeld L., Morville P.; “Information Architecture for the World Wide Web:
Designing Large-Scale Web Sites”; ISBN 10: 0-596-52734-9; 3th. Edition; O’
Reilly Inc.; 2006.
[SAGER 90]
Sager, J. C. “Practical Course in Terminology Processing”; Amsterdam; John
Benjamins; Trad. Esp; 1990.
[SAUSSURE 83]
Saussure F. de; “Curso de Lingüística General”; Alianza editorial; Madrid;
1983.
[SIDAR 08]
Sidar Traducciones; [En línea]; [Accedido el 1 de Abril de 2008]; Disponible en:
“http://www.sidar.org/recur/desdi/traduc/es/rdf/rdfesp.htm”.
[SIL 08]
SIL. Paterns in language development; [En línea]; [Accedido el 29 de
noviembre de 2007]; Disponible en: “http://www.sil.org/”.
[SIMIC 02]
Simic H.; “Application of UriGraph to Uniform Resource Identifier design”;
4th CARNet Users Conference; Zagreb, Croatia; septiembre 25-27 2002.
[SIMIC 03]
Simic H.; “Patterns of Web Site Structure in UriGraph”; 7th International
Conference on Telecommunications; Zagreb, Croatia; junio 11-13 2003.
[TOUCHGRAPH 07a] TouchGraph; [En línea]; [Accedido el 20 de septiembre del 2007]; Disponible
en línea en el World Wide Web en: “http://www.touchgraph.com/”.
[TOUCHGRAPH 07b] TouchGraph; [En línea]; [Accedido el 20 de septiembre del 2007]; Disponible
en línea en el World Wide Web en: “http://touchgraph.cvs.
sourceforge.net/touchgraph/src/com/touchgraph/wikibrowser”.
[UML 05]
Unified Modeling Language Specification version 1.4.2. Disponible en línea
http://www.omg.org/docs/formal/05-04-01.pdf. Enero 2005.
Página 117
[USCHOLD 96]
[W3C 08]
[W3C 08b]
Uschold M., Gruninger M.; 1996; “Ontologies: principles, methods and
applications”; Knowledge Engineering Review 11; No. 2; pp 320-321.
W3C. Semantic Web; [En línea]; [Accedido el 27 de marzo de 2008]; Disponible
en: “http://www.w3.org/2001/sw/”.
Extensible Markup Language; [En línea]; [Accedido el 27 de junio del 2008];
Disponible en: “http://www.w3.org/XML/”.
Página 118
Descargar