UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO INFORMÁTICO PROYECTO FIN DE CARRERA Herramienta para construir bases de conocimiento a partir de información en la web JORGE GIL PEÑA Madrid, Septiembre 2010 Jorge Gil Peña Dr. Miguel Ángel Sanz Dr. David Contreras Bárcena UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO INFORMÁTICO PROYECTO FIN DE CARRERA Herramienta para construir bases de conocimiento a partir de información en la web AUTOR: Gil Peña, Jorge DIRECTOR: Dr. Miguel Ángel Sanz Bobi MADRID, Septiembre 2010 HERRAMIENTA PARA CONSTRUIR BASES DE CONOCIMIENTO A PARTIR DE INFORMACIÓN EN LA WEB RESUMEN DEL PROYECTO En una época en la que los contenidos de Internet tienen cada día un nivel de disponibilidad mayor y uno de los principales problemas del internauta empieza a ser cómo decidir entre unos y otros. La recomendación de contenidos personalizados es, cada vez más, un fenómeno de importancia crucial: una necesidad cada vez más apremiante para los usuarios que quieren acceder a los contenidos que suscitan un verdadero interés para ellos de manera rápida. Con el objetivo de satisfacer esta necesidad de recomendación de contenidos, nace el servicio desarrollado por este Proyecto Fin de Carrera, el servicio web llamado “my Web”, que será accesible a través de Internet y que pretende ofrecer al usuario una selección de contenidos acordes a sus intereses y gustos. El nombre de este servicio hace alusión a la pretensión de ser un portal de personalización de contenidos de Internet. El objetivo del proyecto será pues el de crear una web personal en la cual, a partir de un test inicial que todo usuario deberá completar, aparezcan una serie de recomendaciones en lo que a posibles intereses musicales, de cine y literatura se refiere. Para poder ofertarles contenidos acordes a sus gustos, será condición sine quanon darse de alta y rellenar un test personal, con la finalidad de recabar información del usuario. En "myWeb", el usuario podrá ver las recomendaciones hechas por el sistema, acceder a fotos, links o videos de YouTube, así como modificar sus enlaces favoritos y realizar búsquedas asociadas a su perfil. El desarrollo de este proyecto supone un gran alivio de tiempo para los usuarios de Internet, ya que filtra los contenidos más interesantes para cada usuario. Pero es que, además del ahorro de tiempo, este servicio puede suponer adicionalmente una herramienta de ocio, posibilitando el acceso del internauta a contenidos de la web de manera personalizada. El proceso hacia el desarrollo de “my Web” implica todo un compromiso por la investigación y la innovación, así como una apuesta por las nuevas tecnologías de la web 3.0., la web semántica y, sobretodo, por la aplicación de la inteligencia artificial y sus tecnologías a las páginas web que se usan a diario. Este servicio web se ha realizado como aplicación web programada en Java. Este programa, emplea técnicas de Inteligencia Artificial tales como la adquisición automática de conocimiento, la representación de conocimiento por medio de las ontologías y el incremento de éstas mediante un algoritmo de incremento del conocimiento. Se trata de un sistema basado en conocimiento que tiene un claro enfoque hacia las nuevas tecnologías semánticas. La aplicación comienza leyendo una ontología completa basada en la Wikipedia y una vez el usuario completa la encuesta, esta es enviada al servidor. A partir de los intereses del usuario se accede a webs 3.0 como DbPedia y MusicBrainz, con el fin de recabar información semántica asociada a dichos intereses. Esta información servirá para que la ontología continúe incrementándose. Para la recomendación de contenidos se ha implementado un algoritmo que se encargará de controlar el crecimiento de la ontología y asignara un peso a los recursos más interesantes. Este algoritmo parte de la base teórica de que nuestros intereses están relacionados a nuestra forma de ser, por lo que nuestros intereses están conectados en distintos dominios. Esto hace que el algoritmo busque relaciones entre nuestros intereses. Asigna pesos, a los recursos asociados al usuario, y a los datos relacionados con estos. En función del número y del tipo de conexiones entre estos se considerará un recurso como más interesante. Para tratar con las ontologías se emplea una herramienta también desarrollada en Java, conocida como Jena, que facilitara dicha tarea. Permitiendo la unión, la lectura y la modificación de ontologías y de sus entidades y relaciones. Además esta biblioteca se usara para conectarse a Internet y leer los ficheros RDF mediante un motor de consulta SPARQL. La implementación de la aplicación a servicio web ha sido llevada cabo en paralelo. Se han desarrollado con una arquitectura de tres niveles, siguiendo el esquema MVC. Del interfaz gráfico ha sido desarrollado en JSP , empleando JSTL para recibir objetos Java. El código Java, que se encarga de ejecutar la lógica del programa y los Servlets que se encargan de generar páginas web de forma dinámica. Y se dispone de una base de datos en MySQL que se encarga de la administración de datos, dándole permeabilidad a la ontología. Los objetivos han sido cumplidos al desarrollar una herramienta completa con la que se ha podido cerrar el ciclo completo, construyendo bases de conocimiento a partir de información en la web, disponiendo además de un algoritmo de recomendación de contenidos y de una aplicación web para mostrar los resultados. El aprendizaje que se ha llevado a cabo en la realización e investigación para este proyecto de “my Web” ha sido voluminoso y variado desde técnicos a conceptuales. Este proyecto va a significar, de cara al futuro, el comienzo de una nueva etapa en la que este servicio de personalización de contenidos pueda seguir desarrollándose de forma muy prometedora. TOOL FOR BUILDING FOUNDATIONS OF KNOWLEDGE IN INFORMATION FROM THE WEB ABSTRACT At a time that Internet content every day has a greater level of availability and one of the main problems of the Internet begins to be how to decide between them. The personalized content recommendation is, increasingly, a critical phenomenon: an increasingly urgent need for users who want to access to genuine and interesting content quickly. In order to satisfy this need for content recommendation, was born on service developed by this thesis, the web service called "my Web", which is accessible through the Internet and aims to offer users a consistent selection of content their interests and tastes. The name of this service refers to the claim of being a portal of Internet content personalization. The aim of the project is therefore to create a personal website in which, after an initial test that all users must complete and appear a number of recommendations as to any interest in music, film and literature are concerned. To be able to offer content tailored to their tastes, be a condition sine quanon register and fill out a personal test, in order to collect user information. In "myWeb", the user can view the recommendations made by the system, accessing photos, links or videos to YouTube and edit your favorite links and search associated with your profile. The development of this project is a great relief from time to Internet users, since most interesting content filters for each user. But is that, in addition to saving time, this service may involve additional entertainment tool, enabling internet access to web content in a personalized way. The process towards the development of "my Web" implies considerable commitment to research and innovation and a commitment to new web 3.0 technologies., Semantic web and, above all, by the application of artificial intelligence and their technologies to web pages that are used daily. This web service has been done as a Web application programmed in Java. This program uses Artificial Intelligence techniques such as the automatic acquisition of knowledge, knowledge representation through ontologies and increasing them by an algorithm for knowledge enhancement. It is a knowledge based system that has a clear focus on semantic technologies. The application begins reading a complete ontology based on Wikipedia and once the user completes the survey, this is sent to the server. From a user's interests can be accessed as web 3.0 DBpedia and MusicBrainz in order to obtain semantic information associated with those interests. This information will help the ontology continue to rise. For content recommendation has been implemented an algorithm that will control the growth of ontology and assign a weight to the most interesting resources. This algorithm theory assumes that our interests are linked to our way of being, so that our interests are connected in different domains. This makes the algorithm look for relations between our interests. Weights assigned to the resources associated with the user, and data related to these. Depending on the number and type of connections between these are considered a resource as more interesting. To deal with ontologies also used a tool developed in Java, known as Jena, to facilitate this task. Allowing the union, reading and modification of ontologies and its entities and relationships. In addition this library will be used to connect to the Internet and read RDF files using a SPARQL query engine. Implementing the Web service application has been carried out in parallel. Have developed a three-tier architecture following the MVC pattern. The graphic interface has been developed in JSP, JSTL to receive objects using Java. Java code, which is responsible for implementing the program logic and Servlets which are responsible for geerating web pages dynamically. And you have a MySQL database that handles data management, giving patency to the ontology. Targets have been met to develop a comprehensive tool with which he was unable to close the whole period, building knowledge bases from information in the web, besides providing a recommendation algorithm and content of a web application to display results. The learning that has taken place for the practice and research for this project "my Web" has been voluminous and varied from technical to conceptual. This project will mean, for the future, the beginning of a new era in which this content personalization service can continue to develop very promising. . Jorge Gil Peña Ingeniería Superior Informática. ICAI. MEMORIA PROYECTO FIN DE CARRERA 9 Herramienta para construir bases de conocimiento a partir de información en la web Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. I N D I CE 1. Introducción _________________________________________________ 12 1.1. Justificación _______________________________________________ 13 1.2. Motivación del proyecto ________________________________ 14 2. Objetivos. _____________________________________________________ 16 3. Revisión de técnicas y tecnologías ______________________ 18 3.1. 3.1.1. Conceptos y definiciones básicas ______________________ 18 Web2.0. ________________________________________________________ 19 3.1.2. Web3.0. ___________________________________________________________ 21 3.1.3. Técnicas de Inteligencia Artificial _______________________________ 26 3.2. Arquitectura ______________________________________________ 29 3.2.1. Introducción ___________________________________________________ 29 3.2.2. Arquitectura Cliente Servidor ________________________________ 30 3.2.3 Arquitectura de tres niveles __________________________________ 33 3.3. empleadas Descripción funcionamiento de Tecnologías 36 3.3.1 Java _____________________________________________________________ 37 3.3.2 Funcionamiento de Jena _____________________________________ 39 3.3.3 Servidor web __________________________________________________ 56 3.3.4. Páginas dinámicas________________________________________________ 57 3.3.5 4. 5. Sistema Gestor de base de datos _____________________________ 64 Análisis de la aplicación___________________________________ 66 4.1. Introducción ______________________________________________ 66 4.2. Análisis de alternativas _________________________________ 66 Diseño y desarrollo de la aplicación myWeb __________ 73 5.1. Introducción ______________________________________________ 73 5.2. Diseño ______________________________________________________ 73 5.2.1. Modelo de Casos de Uso ______________________________________ 74 5.2.1. Modelo de Dominio ___________________________________________ 80 Herramienta para construir bases de conocimiento a partir de información en la web 10 Jorge Gil Peña 5.3. Ingeniería Superior Informática. ICAI. Tareas desarrolladas en el proyecto __________________ 86 5.3.1. Estudio psicológico de conexiones musicales _______________ 87 5.3.2. Diseño de myWeb _____________________________________________ 88 5.3.3. Diseño entradas al programa ________________________________ 93 5.3.4. Utilización de la herramienta JENA __________________________ 95 5.3.5. Realización del algoritmo con Java. ________________________ 100 5.3.6.Crear y preparación del proyecto web ________________________ 108 6. Desarrollo de la aplicación myWeb ____________________ 113 6.1. Modulo Java _________________________________________________ 113 6.1.1. Introducción ____________________________________________________ 113 6.1.2. Parte Jena _______________________________________________________ 115 6.1.3.Parte Algoritmo _________________________________________________ 117 6.2. Módulo Servlets ____________________________________________ 125 6.3. Módulo JSP __________________________________________________ 129 6.4. Modulo base de datos _____________________________________ 133 7. Caso ejemplo___________________________________________________ 136 8 Especificaciones Tecnológicas ______________________________ 140 8.1. Proyecto en desarrollo ____________________________________ 140 8.2. Proyecto en explotación __________________________________ 142 9. Presupuesto ___________________________________________________ 145 10. Planificación _________________________________________________ 147 11. Conclusiones _________________________________________________ 148 12. Tabla de ilustraciones _____________________________________ 151 13. Bibliografía __________________________________________________ 153 Herramienta para construir bases de conocimiento a partir de información en la web 11 Jorge Gil Peña Ingeniería Superior Informática. ICAI. 1. Introducción E ste proyecto está orientado a adquirir los gustos de la música, películas, libros, intereses y forma de ser de los usuarios usuar a través de información disponible en la web semántica. Para poder ofertar de forma ontológica contenidos acordes a sus gustos se realiza una encuesta al comienzo, al darse de alta en el servicio, servicio y un algoritmo se encarga de buscar los contenidos recomendados más acordes con el perfil. perfil Se trata de un servicio web llamado myWeb,, al cual se puede acceder a través de internet. 12 Ilustración 3.1.1 El nombre de este servicio viene dado porque pretende realizar una selección ción de contenidos acordes al a interés del usuario siendo su u punto de acceso a Internet. En este punto de acceso a él puede ver sus recomendaciones acceder a fotos, recomendaciones, otos, links interesantes o videos de YouTube, YouTube pero también modificar sus us favoritos, ver los más votados, y realizar búsquedas asociadas a su perfil. erramienta para construir bases de conocimiento a partir de información en la web Herramienta Jorge Gil Peña Ingeniería Superior Informática. ICAI. El camino para el desarrollo ha sido toda una apuesta por la investigación y la innovación. Una apuesta por las nuevas tecnologías de la web 3.0., la web semántica y una apuesta, sobretodo, por aplicar técnicas de inteligencia artificial y a las páginas web que se usan a diario. 1.1. Justificación Este proyecto viene motivado por intentar proponer una Internet sencilla y entretenida para la gente con ganas de conocer cosas nuevas y de sacarle el mejor partido a esta gran fuente de conocimientos. Este enfoque está plenamente justificado porque no existe una página web unificada, estandarizada y completa, que aporte contenidos de la web o simplemente conceptos que puedan entretener, interesar, divertir o simplemente llamar la atención en función de nuestro perfil. Considerándose que esto podría ser muy útil en el mundo de Internet, el proyecto se ha orientado hacia una interfaz web, con objeto de hacerlo mucho más accesible para todo el mundo y de una manera mucho más dinámica. Además trata de evitar los temidos tiempos de descargas y posibles desconfianzas en la descarga del programa desde Internet. Pero aun así es muy importante tener en cuenta que esta página web cuenta con un gran proyecto Java en Herramienta para construir bases de conocimiento a partir de información en la web 13 Jorge Gil Peña Ingeniería Superior Informática. ICAI. el backend (servidor), y que será el encargado de llevar la lógica de negocio. 1.2. Motivación del proyecto Como suele suceder las justificaciones y las motivaciones suelen ir de la mano, y en este proyecto no ha sido una excepción. La principal motivación del proyecto es proponer una manera de entretenimiento y de ofrecer contenidos interesantes adaptados al perfil de cada usuario concreto usando técnicas elaboradas y automatizadas de tratamiento del conocimiento. Sin embargo ha habido otras motivaciones técnicas importantes como el hecho de trabajar con conceptos de Inteligencia Artificial. Para tratar de mejorar lo que ofrecen los programas actuales, y de simular inteligencia humana para lograr los propósitos de búsqueda de información interésate. Por ejemplo en este caso se ha trabajado con técnicas de incremento del conocimiento, en los que partiendo de conceptos básicamente descritos por el usuario acerca de su perfil extrayendo de la web más conocimientos interesantes basados en los originales, dando resultados interesantes. A nivel técnico una de las mayores motivaciones y complicaciones ha sido el hecho de trabajar con tecnologías en vías de continuo desarrollo. Éstas están abriendo Herramienta para construir bases de conocimiento a partir de información en la web 14 Jorge Gil Peña Ingeniería Superior Informática. ICAI. muchas puertas a desarrolladores y usuarios, como pueden ser la web 3.0. o la web semántica, motores de procesamiento como Lucene o de búsqueda como SPARQL, tecnologías como los RDF , o los OWL y conceptos como ontología y clasificación de perfiles. Todos estos conceptos serán debidamente comentados más adelante. También ha sido muy ilusionante el hecho de montar un servidor desde cero, este concepto hasta ahora prácticamente abstracto para los estudiantes de informática y en cambio tan importante. Pudiendo ofrecer a unos clientes una conexión con un servidor para acceder desde cualquier lugar del mundo en apenas unas centésimas de segundo a una base de datos, a unos contenidos, a un programa trabajando en local. 15 Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. 2. Objetivos. E l motivo del proyecto es desarrollar una herramienta para construir bases de conocimiento a partir de información en la web. El proyecto ha de desarrollar una herramienta en JAVA capaz de elaborar de forma automática los contenidos de una base de conocimientos. Para ello, por un lado, usará conjuntos de ejemplos de los que se extraerán conceptos básicos y sus relaciones, por otro lado se generará de forma automática una ontología sobre el dominio de conocimiento a través de búsquedas inteligentes en documentos web. Finalmente la información se mostrará en una página web que será un sistema de recomendación de contenidos de la web, según el perfil del usuario. El proyecto hará elaboración automática de una ontología y su correspondiente base de conocimientos creada a partir de ejemplos y contenidos informativos asociados a los mismos en la web 2.0. Para alcanzar el objetivo del proyecto se han de conseguir los siguientes objetivos parciales que a su vez son objeto de las tareas de que consta el proyecto: Herramienta para construir bases de conocimiento a partir de información en la web 16 Jorge Gil Peña • Ingeniería Superior Informática. ICAI. Desarrollar una herramienta de búsqueda en la web 2.0 sobre términos introducidos bien por un usuario, bien recibidos de otra aplicación. El resultado de esta búsqueda será un listado de contenidos que posteriormente hay que procesar. Los contenidos serán casos ejemplo que hay que procesar posteriormente. • Desarrollar un algoritmo que clasifique y filtre jerárquicamente los conceptos y términos más relevantes obtenidos en los contenidos de la búsqueda inicial. • Desarrollar una aplicación que organice en una jerarquía los conceptos y términos obtenidos. • Adaptación de la ontología al perfil del usuario. • Desarrollo de una aplicación capaz de hacer crecer los términos de la ontología de manera automática. • Elaboración de una base de conocimientos asociada a la ontología. Integración en un sistema experto. • Integración de aplicaciones multiagente capaz de realizar en un una entorno búsqueda guiada por el conocimiento extraído y el perfil del usuario reflejado en la ontología. • Desarrollo de un servicio web y puesta a punto en un servidor web particular. Herramienta para construir bases de conocimiento a partir de información en la web 17 Jorge Gil Peña Ingeniería Superior Informática. ICAI. 3. Revisión de técnicas y tecnologías E sta parte de la memoria es la encargada de introducir al lector en las tecnologías que se van a emplear durante el desarrollo de esta memoria. De manera que cuando se expliquen cómo usarlas se pueda dar por conocidos un conocimiento básico de estas. El capitulo está dividido en tres sub apartados, que son conceptos y definiciones básicos, arquitectura y por último descripción del funcionamiento de tecnologías empleadas. Los dos primeros apartados se refieren más a conceptos y técnicas, mientras que el tercero en cambio se centra en las tecnologías, es decir en cómo son las herramientas empleadas que implementan estas técnicas o conceptos. 3.1. Conceptos y definiciones básicas Los conceptos básicos que se van a explicar aquí, son conceptos que seguramente se tenga una vaga idea de ellos o por lo menos se hayan oído alguna vez, pero no se tenga Herramienta para construir bases de conocimiento a partir de información en la web 18 Jorge Gil Peña Ingeniería Superior Informática. ICAI. muy claro a que se refieren con exactitud. Así que se comenzara explicando que es y a que se refiere la web 2.0,la web semántica, la inteligencia artificial y alguna de sus técnicas que se emplearan en este proyecto. 3.1.1. Web2.0. (1)El término Web 2.0 se estableció como tal entorno al año 2004, aunque hoy en día se sigue dudando de que estas webs sean cualitativamente diferentes de las tecnologías web anteriores. Sin embargo sí que es cierto que estas webs están asociadas con un fenómeno social, basado en la interacción que se logra a partir de diferentes aplicaciones web, que facilitan el compartir información. Además de la interoperabilidad y el diseño centrado en el usuario (D.C.U.). Algunos ejemplos de la Web 2.0 serian las comunidades web en torno a una temática, las wikis, blogs, los servicios web, las aplicaciones Web, los servicios de alojamiento de videos, mashups (aplicación web hibrida) y folksonomías. El concepto original del contexto, llamado Web 1.0 se basaba en páginas estáticas programadas en HTML (Hyper Text Mark Language) que no eran actualizadas frecuentemente. El éxito de las .com dependía de webs más dinámicas, a veces llamadas Web 1.5, donde los CMS (Content Management System en inglés, abreviado CMS) Sistema de gestión de contenidos servían páginas HTML dinámicas creadas al vuelo desde una actualizada base de datos. En ambos sentidos, el conseguir hits (visitas) y la Herramienta para construir bases de conocimiento a partir de información en la web 19 Jorge Gil Peña estética visual Ingeniería Superior Informática. ICAI. eran considerados como factores importantes. Los teóricos de la aproximación a la Web 2.0 creen que el uso de la web está orientado a la interacción y redes sociales, que pueden servir contenidos y explotar los efectos de las redes, creando o no webs interactivas y visuales. Es decir, los sitios Web 2.0 actúan más como puntos de encuentro, o webs dependientes de usuarios, que como webs tradicionales. Resumiendo se puede decir que un sitio Web 2.0 permite a sus usuarios interactuar con otros usuarios o cambiar contenidos del sitio web, esto en contraste a sitios web no-interactivos donde los usuarios se limitan a la visualización pasiva de información que se les proporciona, por lo que este tipo de web aumentan y su información crece de manera descentralizada. Sin que la responsabilidad de todos los contenidos recaiga sobre un administrador. En la ilustración 3.1, se resaltan algunos de los ejemplos más representativos que la Web 2.0 representa. Ilustración 3.1. Herramienta para construir bases de conocimiento a partir de información en la web 20 Jorge Gil Peña Ingeniería Superior Informática. ICAI. 3.1.2. Web3.0. (2)La tecnología de la Web 3.0, se basa originalmente en programas inteligentes que utilizan datos semánticos; se han ido implementado y usando a pequeña escala en compañías para conseguir una manipulación de datos más eficiente. Se considera la realización y extensión del concepto de la “Web semántica”, apoyándose en la Inteligencia artificial. Las investigaciones académicas están dirigidas a desarrollar programas que puedan razonar, basados en descripciones lógicas y agentes inteligentes. Dichas aplicaciones, razonamientos lógicos pueden utilizando llevar reglas a que cabo expresan relaciones lógicas entre conceptos y datos en la red. La "Data Web" es el primer paso hacia la completa “Web Semántica”. En la fase “Data Web”, el objetivo es principalmente, hacer que los datos estructurados sean accesibles utilizando un formato de texto conocido como RDF, que se explicara más detenidamente a continuación. El escenario de la "Web Semántica" ampliará su alcance en tanto que los datos estructurados e incluso, lo que tradicionalmente se ha denominado contenido semi- estructurado (como páginas web, documentos, etc.), esté disponible en los formatos semánticos de RDF y OWL. Muy importante para este proceso de evolución es el proceso de estandarización que desde el consorcio de la World Wide Web, se intenta liderar, ya que los formatos en Herramienta para construir bases de conocimiento a partir de información en la web 21 Jorge Gil Peña Ingeniería Superior Informática. ICAI. que se publica la información en Internet son dispares, como XML, RDF, OWL y otros micro formatos. No obstante la apuesta del grupo de la World Wide Web con la creación y estandarización de la tecnología SPARQL, y su reciente crecimiento permite un lenguaje estandarizado de acceso a estos datos. Así el desarrollo de las APIs para la búsqueda a través de bases de datos en la red también está siendo muy bien recibido. Es curioso que se intentaba desde el nacimiento de Internet incluir información semántica en todas las webs, la World Wide Web, pero debido a la rápida expansión de Internet, no se pudo realizar su implementación, ya que las prisas por tener una web iban contra esta idea. Sin embargo con el paso de los años y el crecimiento de la web, se ha hecho necesario volver a pensar en la web semántica con el fin de poner un poco de control y mejor manejo de la información. La Web semántica, como se ha comentado se basa en la idea de añadir metadatos semánticos y ontológicos a la World Wide Web para que los programas y sus empresas puedan compartir información estandarizada. Ilustración 3.2. Herramienta para construir bases de conocimiento a partir de información en la web 22 Jorge Gil Peña Ingeniería Superior Informática. ICAI. Esas informaciones adicionales —que describen el contenido, el significado y la relación de los datos— se deben proporcionar de manera formal, para que así sea posible evaluarlas automáticamente por máquinas de procesamiento. El objetivo es mejorar Internet ampliando la interoperabilidad entre los sistemas informáticos usando "agentes inteligentes". Se puede ver en la Ilustración 3.3 la conexión entre las distintas web semánticas a fecha de Julio del 2009. En este gráfico se puede observar como las distintas webs trabajan de la mano para ofrecer contenidos de distintos dominios de manera actualizada. 23 Ilustración 3.3 Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. El lenguaje HTML es válido para adecuar el aspecto visual de un documento e incluir objetos multimedia en el texto (imágenes, esquemas de diálogo, etc.). Pero ofrece pocas posibilidades para categorizar los elementos que configuran el texto más allá de las típicas funciones estructurales. Para ello la web semántica dispone de tecnologías de descripción de contenidos, como RDF y OWL, además de XML, el lenguaje de marcas diseñado para describir los datos. -RDF: es un modelo de datos para los recursos y las relaciones que se puedan establecer entre ellos. Aporta una semántica básica para ese modelo de datos que puede representarse mediante XML. -RDF Schema: es un vocabulario para describir las propiedades y las clases de los recursos RDF, con una semántica para establecer jerarquías de generalización entre dichas propiedades y clases. -OWL: añade más vocabulario para describir propiedades y clases: tales como relaciones entre clases (p.ej. disyunción), cardinalidad (por ejemplo "únicamente uno"), igualdad, tipologías de propiedades más complejas, caracterización de propiedades (por ejemplo simetría) o clases enumeradas. Estas tecnologías se combinan para aportar descripciones explícitas de los recursos de la Web (ya sean estos catálogos, formularios, mapas u otro tipo de objeto documental). Esas etiquetas permiten que los gestores de contenidos o los lenguajes de consulta interpreten los Herramienta para construir bases de conocimiento a partir de información en la web 24 Jorge Gil Peña Ingeniería Superior Informática. ICAI. documentos y realicen procesos inteligentes de captura y tratamiento de información. SPARQL es el lenguaje de consulta más empleado. -SPARQL: es un acrónimo recursivo del inglés SPARQL Protocol y RDF Query Language. Se trata de un lenguaje estandarizado para la consulta de grafos RDF. Únicamente incorpora funciones para la recuperación sentencias RDF. Es necesario distinguir entre el lenguaje de consulta y el motor para el almacenamiento y recuperación de los datos. Por este motivo, existen múltiples implementaciones de SPARQL, generalmente ligados a entornos de desarrollo y plataforma tecnológicas. El desarrollo y difusión masivos de la web semántica tiene algunas dificultades que no se han podido superar todavía, una de ellas es tecnológica y la otra está relacionada con la falta de interés de los propietarios de las páginas web. Ilustración 3.4. Herramienta para construir bases de conocimiento a partir de información en la web 25 Jorge Gil Peña Ingeniería Superior Informática. ICAI. La Ilustración 3.4 en la que se observa un gráfico sencillo e intuitivo puede ayudar a resumir lo citado hasta ahora. En el primer nivel la web 1.0 donde la máquina hace de servidor de páginas web estática, en la Web 2.0 los usuarios tienen iteración entre ellos y con las páginas web, de manera que estas se rellenan de contenidos dinámicamente. En la web 3.0 son directamente las máquinas las que leen estas páginas y en muchos casos son estas máquinas las que directamente generan otras páginas. 3.1.3. Técnicas de Inteligencia Artificial 26 Con objeto de extraer conocimiento de forma automática, su posterior representación y su incremento se van a usar técnicas de Inteligencia Artificial en este proyecto. Con objeto de tener claros algunos conceptos se va a proceder a su definición. -Incremento del conocimiento: Consiste en desarrollar técnicas que permitan a las computadoras aprender. De forma más concreta, se trata de crear programas capaces de generalizar comportamientos. Es, por lo tanto, un proceso de inducción del conocimiento. En este caso consistiría básicamente en primer lugar en usar palabras clave del resultado de una búsqueda para lanzar otras búsquedas y completar la información de manera automática, y así sucesivamente. Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. Agentes inteligentes: Son programas que buscan información como los trataría una persona. Gozan de propiedades muy características como la autonomía en la toma de decisiones, en la relación con otros agentes para cooperar aun fin común. -Ontologías: En el área de la inteligencia artificial, la resolución de problemas puede ser simplificada con la elección apropiada de una representación del conocimiento. La ontología se utiliza para la clasificación en bibliotecas y para procesar conceptos en un sistema de información. El término ontología en informática hace referencia a la formulación de un exhaustivo y riguroso esquema conceptual dentro de uno o varios dominios dados; con la finalidad de facilitar la comunicación y el intercambio de información entre diferentes sistemas y entidades (esta es la diferencia con la ontología filosófica, que solo tiene un punto de referencia). En algunas aplicaciones, se combinan varios esquemas en una estructura de facto completa de datos, que contiene todas las entidades relevantes y sus relaciones dentro del dominio. Los programas informáticos pueden utilizar así este punto de vista de la ontología para una variedad de propósitos, incluyendo el razonamiento Herramienta para construir bases de conocimiento a partir de información en la web 27 Jorge Gil Peña Ingeniería Superior Informática. ICAI. inductivo, la clasificación, y una variedad de técnicas de resolución de problemas. El desarrollo de una ontología facilitará que el conocimiento sea incremental, pero para esto se necesitan usar nuevos conceptos y tecnologías, como el concepto de ontología. Concepto históricamente reconocido y empleado desde los griegos hasta nuestros ordenadores más modernos. Aristóteles ya pensó en la necesidad de crear una ontología en su época, y la definió como enciclopedia de las palabras. Y este concepto permite unir las palabras y el conocimiento, que va encontrando por la web anexándolo a la ontología, así la ontología va creciendo con todo la información recogida por las webs con información 28 semántica. -Tripletas de conocimiento: Es un modelo de metadatos basado en el concepto de sentencias de la forma “sujeto-predicado-objeto”, denominadas tripletas RDF. Este modelo ofrece una adecuación mayor para la representación del conocimiento que el modelo relacional de las bases de datos tradicionales. Se pueden almacenar de diversas formas, aunque la serialización (marshalling) más habitual se basa en la utilización de archivos XML. -Modelo ontológico: Es una representación de la realidad ontológica de un sistema. En este modelo, basado en la lógica descriptiva, se definen los conceptos, términos y Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. secuencias, así como la relación que existe entre los distintos términos. La creación de terminología se llevará a cabo directamente en un sistema basado en un modelo. Es utilizado para el manejo y representación de ontologías. Ilustración 3.5. 29 3.2. Arquitectura 3.2.1. Introducción L a manera de acceder a la información inicial relativa al usuario era partiendo de las canciones en local del usuario y obtener sus artistas favoritos para que sirviese de manera automática para obtener un perfil de intereses. Como se ha comentado, poco a poco esta idea fue disolviéndose debido a complejidad a la hora de procesar datos locales en un servidor, esto hizo que se planteasen alternativas como que el usuario rellenase información relativa a su personalidad y gustos en un cuestionario inicial. Esto condicionó la arquitectura del proyecto. Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. Para la arquitectura de esta aplicación se va a usar el Modelo Vista Controlador (MVC) es un estilo que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos. El patrón MVC se ve frecuentemente en aplicaciones web, donde la vista es la página HTML y el código provee de datos dinámicos a la página. El modelo es el Sistema de Gestión de Base de Datos y la Lógica de negocio, y el controlador es el responsable de recibir los eventos de entrada desde la vista. Será revisado a continuación de manera rápida y útil las diferencias entre las arquitecturas más básicas. Se va a proceder a explicar la arquitectura de dos niveles, existente antes del MVC, de manera que sea más fácil la comprensión de la arquitectura de tres niveles. 3.2.2. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en que un programa, el cliente, realiza peticiones a otro programa, el servidor que les da respuesta. Esto resulta muy ventajoso en un sistema operativo multiusuario distribuido a través de una red de computadoras. En esta arquitectura la capacidad de proceso está repartida entre los clientes y los servidores, aunque son más importantes las ventajas de tipo organizativo debidas a la centralización de la gestión de la información y la Herramienta para construir bases de conocimiento a partir de información en la web 30 Jorge Gil Peña Ingeniería Superior Informática. ICAI. separación de responsabilidades, lo que facilita y clarifica el diseño del sistema. La separación entre cliente y servidor es una separación de tipo lógico, donde el servidor no se ejecuta necesariamente sobre una sola máquina ni es necesariamente un sólo programa. La arquitectura cliente-servidor sustituye a la arquitectura monolítica en la que no hay distribución, tanto a nivel físico como a nivel lógico. Ventajas de la arquitectura cliente-servidor a.) Centralización del control: los accesos, recursos y la integridad de los datos son controlados por el servidor de forma que un programa cliente defectuoso o no autorizado no pueda dañar el sistema. b.) Escalabilidad: se puede aumentar la capacidad de clientes y servidores por separado. Desventajas de esta arquitectura a.) La congestión del tráfico: cuando una gran cantidad de clientes envían peticiones al mismo servidor al mismo tiempo. b.) Robustez: Cliente/Servidor no tiene la buena robustez como red del P2P. Cuando el servidor está caído, las peticiones de los clientes no pueden ser satisfechas al Herramienta para construir bases de conocimiento a partir de información en la web 31 Jorge Gil Peña estar todos los Ingeniería Superior Informática. ICAI. datos centralizados como puede comprobarse en la imagen siguiente hay un único servidor: Ilustración 3.6 32 El servidor de cliente es la arquitectura de red que separa al cliente (a menudo un uso que utiliza un interfaz utilizador gráfico) de un servidor. Cada caso del software del cliente puede enviar peticiones a un servidor a través de la red como se puede observar en el gráfico Ilustración 3.6 . Los tipos específicos de servidores incluyen los servidores Web, los servidores del uso, los servidores de archivo, los servidores terminales, y los servidores del correo. Mientras que sus propósitos varían algo, la arquitectura básica sigue siendo igual. Aunque esta idea se aplica en una variedad de maneras, en muchas diversas clases de usos, el ejemplo más fácil de visualizar es el uso actual de las páginas Web en Internet. Por ejemplo, si se está leyendo una página Web, Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. la computadora y Web browser serían considerados un cliente, y las computadoras, las bases de datos, y los usos que componen la página Web serían considerados el servidor. 3.2.3 Arquitectura de tres niveles Una vez introducida la arquitectura Cliente/Servidor, hay que añadir una parte de almacenamiento y gestión de datos a este modelo y llevarlo al caso que nos atañe, el modelo Web, En la mayoría de los casos, el navegador suele ser un mero presentador de información (modelo de cliente delgado), y no lleva a cabo ningún procesamiento relacionado con la lógica de negocio. No obstante, con la utilización de applets, código de JavaScript y DHTML la mayoría de los sistemas se sitúa en un punto intermedio entre un modelo de cliente delgado y un modelo de cliente grueso (donde el cliente realiza el procesamiento de la información y el servidor solo es responsable de la administración de datos). Por este motivo el desarrollo de la capa de cliente se ha concentrado en un simple visualizador con apenas alguna validación de datos. Con lo que se ha conseguido un proceso de cliente ligero y sencillo. El procesamiento realizado en el cliente está relacionado con aspectos de la interfaz (como ocultar o mostrar secciones de la página en función de determinados Herramienta para construir bases de conocimiento a partir de información en la web 33 Jorge Gil Peña Ingeniería Superior Informática. ICAI. eventos) y nunca con la lógica de negocio. En todos los sistemas de este tipo y ortogonalmente a cada una de las capas de despliegue comentadas, se puede dividir la aplicación en tres áreas o niveles: -Nivel de presentación: Es el encargado de generar la interfaz de usuario en función de las acciones llevadas a cabo por el mismo. (Páginas JSP) -Nivel de negocio: Contiene toda la lógica que modela los procesos de negocio y es donde se realiza todo el procesamiento necesario para atender a las peticiones del usuario. (Programa JAVA) -Nivel de administración de datos: Encargado de hacer persistente toda la información, además suministra y almacena información para el nivel de negocio. (MySQL) Los dos primeros y una parte del tercero (el código encargado de las actualizaciones y consultas) suelen estar en el servidor mientras que la parte restante del tercer nivel se sitúa en la base de datos, que aunque es posible que la base de datos resida en el servidor, se separe en otra capa lógica. En la figura Ilustración 3.7 puede verse una representación aproximada de un sistema en el que la base de datos se encuentra fuera del servidor: Herramienta para construir bases de conocimiento a partir de información en la web 34 Jorge Gil Peña Ingeniería Superior Informática. ICAI. Ilustración 3.7. Respecto al nivel de negocio no hay ninguna “receta” para asegurar un buen diseño. La aplicación de patrones de diseño conocidos encapsulación y de el respeto información a y los principios distribución de de responsabilidad (que cada objeto haga solo aquello que le ha sido asignado) es la mejor manera de conseguir un diseño apropiado. 35 Un principio que suele resultar de bastante utilidad es agrupar en servicios las operaciones de negocio relacionadas. Por ejemplo, en una aplicación de comercio virtual, se podría tener un servicio para la gestión de usuarios, otro para la tramitación de pedidos, etc. De esta manera, si se aplica la estrategia vista anteriormente, los comandos invocarán uno o más métodos de estos servicios, que serían los que accederían a los objetos que constituyen el modelo. Por último se comentará brevemente el nivel de administración de datos. Este último nivel es proporcionado por el framework de persistencia utilizado junto con la base de datos propiamente dicha. Cada uno tiene unas características y funcionalidad concretas que obligarán a Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. adaptar el diseño de manera apropiada. Solo apuntar que normalmente, en una aplicación Web una petición http equivale a una transacción. Es decir, si mientras se sirve la petición ocurre un error todo lo hecho a raíz de la petición debe deshacerse. Por tanto, en función del modelo de persistencia, habrá que actuar de manera que los cambios en la base de datos no se hagan definitivos hasta que la petición se haya completado. La mejor forma de gestionar esto es en el Servlet controlador, pues al ser el que finaliza la petición enviando la respuesta al cliente, es el mejor lugar para asegurar de que todo ha ido bien y hacer definitivos los cambios en la base de datos. Con esto se completa el breve análisis de la arquitectura de los sistemas Web modernos, donde se han comentado ideas básicas para un diseño lo más correcto posible de los mismos sobre todo en el nivel o capa de presentación, que es con el que más se ha trabajado en este proyecto. 3.3. Descripción funcionamiento de Tecnologías empleadas Antes de proceder a explicar cómo se ha realizado esta implementación, se va a realizar una introducción a las tecnologías empleadas en el proyecto. Herramienta para construir bases de conocimiento a partir de información en la web 36 Jorge Gil Peña Ingeniería Superior Informática. ICAI. Se comienza con una breve introducción al entorno de desarrollo Java. Dando por conocidos unos mínimos básicos de este. 3.3.1 Java Java es un lenguaje de programación con el que se puede realizar cualquier tipo de programa. En la actualidad es un lenguaje muy extendido y cada vez cobra más importancia tanto en el ámbito de Internet como en la informática en general. Está desarrollado por la compañía Sun Microsystems con gran dedicación y siempre enfocado a cubrir las necesidades tecnológicas más punteras. (5) Una de las principales características por las que Java se ha hecho muy famoso es que es un lenguaje independiente de la plataforma. Eso quiere decir que si se hace un programa en Java, esté podrá funcionar en cualquier ordenador del mercado. Es una ventaja significativa para los desarrolladores de software, pues antes tenían que hacer un programa para cada sistema operativo, por ejemplo Windows, Linux, Apple, etc. Esto lo consigue porque se ha creado una Máquina de Java para cada sistema que hace de puente entre el sistema operativo y el programa de Java y posibilita que éste último se entienda perfectamente. La independencia de plataforma es una de las razones por las que Java es interesante para Internet, ya que muchas personas deben tener acceso con ordenadores distintos. Pero no se queda ahí, Java está desarrollándose Herramienta para construir bases de conocimiento a partir de información en la web 37 Jorge Gil Peña Ingeniería Superior Informática. ICAI. incluso para distintos tipos de dispositivos además del ordenador como teléfonos móviles, agendas y en general para cualquier dispositivo de información. Ilustración 3.8 Arquitectura Java 38 El programa Java será el que implemente toda la lógica de negocio y procese y almacene el algoritmo de recomendación de contenidos. Usará el framework de Jena y sus librerías para los accesos a ficheros en la web con el formato XML, XML bien RDF, OWL, N3,, o formatos similares, en los cuales la información está asociada a un concepto. Se trata de información semántica con herencia, y donde la gran parte de los conceptos están definidos. Para ello hay que localizar los puntos de información fiables, que se actualicen fácilmente y que sean accesibles. ra ello se está trabajando principalmente con Para DbPedia (proyecto para la extracción de datos de Wikipedia para proponer una versión Web semántica semántica), DbTune (proyecto que mantiene servidores con acceso a información info estructurada en relación con la música) y MusicBrainz erramienta para construir bases de conocimiento a partir de información en la web Herramienta Jorge Gil Peña Ingeniería Superior Informática. ICAI. (proyecto de la fundación estadounidense sin ánimo de lucro MetaBrainz, que pretende crear una base de datos musical de contenido abierto). Pero hay muchos otros interesantes como se puede observar en el gráfico: La base de datos esta almacenada y gestionada por MySql que es un sistema de gestión de bases de datos relacional, multihilo y multiusuario. Será accedida desde el código Java gracias al conector especifico (driver o conector de la JVM para MySql). 3.3.2 Funcionamiento de Jena 39 Jena es una librería para Java que se encarga de la gestión de contenidos de la web semántica. Esta librería se encarga de conectarse a la web, y leer los ficheros de RDF que se encuentran en Internet. La información leída con SPARQL, se puede almacenar en memoria o en disco duro. Igualmente la información leída se almacena o bien en un modelo, o en una lista, o en un ResultSet (estructura de Java) para poder leerlos y tratarlos. En un modelo la información se almacena en tripletas (o Statements), Esto permite ir incorporando el conocimiento a un modelo general de conocimiento, uniendo modelos, incluso los generados por otras personas o ya establecidos. (4) Esta herramienta, es muy cómoda a la hora de tratar con esta información, poder manejarla y filtrarla. Además Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. de ser la más completa para usarla con Java, como se ha analizado anteriormente en el momento en que se seleccionó. Jena es un framework Java para la creación de aplicaciones de la Web Semántica. Proporciona de un entorno de programación para RDF , RDFS and OWL , SPARQL. Proporciona un entorno de programación para RDF , RDFS y OWL , SPARQL e incluye un motor de inferencia basado en regla. Jena es de código abierto y desarrollado a partir del trabajo con los laboratorios de HP Web Semántica Programa . 40 Ilustración 3.9 El Marco de Jena incluye: • Un API RDF de • Lectura y escritura de RDF en RDF / XML, N3 y NTriples • Una API de OWL • En la memoria de almacenamiento y persistente Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña • Ingeniería Superior Informática. ICAI. Motor de consulta SPARQL (5)Funcionamiento de RDF: El Resource Description Framework (RDF) es un estándar (técnicamente una recomendación del W3C) para describir los recursos. ¿Qué es un recurso? Se puede pensar que es algo que se puede identificar. Usted es un recurso, como es su página de inicio, este documento, el número uno y la gran ballena blanca en Moby Dick. La forma de representar un nodo es con diagramas de arco para sus propiedades. Un vcard suele ser usado como la clase que engloba propiedades (prefijo de espacio) y que une dos recursos. Tómese como ejemplo las personas. Podría ser así en RDF como se observa en la Ilustración 3.10, donde ser ve como el recurso, John Smith, se muestra dentro de una elipse y se identifica por un Uniform Resource Identifier (URI), en este caso "http://.../JohnSmith". Ilustración 3.10 Herramienta para construir bases de conocimiento a partir de información en la web 41 Jorge Gil Peña Ingeniería Superior Informática. ICAI. Los recursos tienen propiedades. En estos ejemplos se está interesado en el tipo de propiedades que podrían aparecer en tarjeta de visita de John Smith. La figura de la Ilustración 3.10 muestra sólo una propiedad, el nombre completo de John Smith. Una propiedad es representada por un arco, etiquetado junto a esta el nombre de la propiedad. El nombre de una propiedad también es una URI. (14) La parte que precede al ':' se llama un prefijo de espacio y representa un espacio de nombres. La parte que sigue al ':' se llama un nombre local y representa un nombre en ese espacio de nombres. Las propiedades son por lo general referenciadas a un prefijo de espacio (namespace). En sentido estricto, sin embargo, las propiedades se identifican mediante una URI completa. El nsprefix: nombre_local forma es un atajo para el URI del espacio de nombres concatenados con el nombre_local. No hay requisito de que la URI de una propiedad se deba resolver mediante un navegador. Cada propiedad tiene un valor. En este caso el valor es un literal. Los literales se muestran en rectángulos. Jena es una API Java que se puede utilizar para crear y manipular gráficos RDF. Jena tiene clases de objetos para representar gráficos, recursos, propiedades y literales. Las interfaces que representan los recursos, propiedades y literales son llamados de recursos y literal, respectivamente. En Jena, una gráfica de una ontología o una parte de ella se Herramienta para construir bases de conocimiento a partir de información en la web 42 Jorge Gil Peña Ingeniería Superior Informática. ICAI. llama un modelo y está representado por la interfaz de Model. El código para crear este gráfico, o modelo, es simple. Primero se definen las variables, y luego con el método createDefaultModel (), se genera un modelo vacio. Con la función createResource genera un recurso incluyéndolo en la ontología actual, lo mismo seria para generar una propiedad con la función addProperty. / / Algunas definiciones estática personURI String = "http://somewhere/JohnSmith"; estática FullName String = "John Smith"; / Crea un vacío Modelo Modelo = modelo ModelFactory.createDefaultModel (); / / Crear el recurso Recursos JohnSmith = model.createResource (personURI); / / Añade la propiedad johnSmith.addProperty (VCARD.FN, nombre completo); Es muy importante tener en cuenta antes de continuar que hay distintas maneras de representar este conocimiento y esto es debido a la complejidad en poner a todo el mundo de acuerdo a la hora de serializar. (6) a) RDF / XML: es una sintaxis, definida por el W3C, para expresar un grafo RDF como un documento XML. Es uno de las serializaciones más empleadas. Herramienta para construir bases de conocimiento a partir de información en la web 43 Jorge Gil Peña Ingeniería Superior Informática. ICAI. <rdf:RDF> <rdf:Description rdf:about="http://dbpedia.org/resource/Mana_%28musical_group %29"> <dbpprop:redirect rdf:resource="http://dbpedia.org/resource/Man%C3%A1"/> </rdf:Description> − <rdf:Description rdf:about="http://dbpedia.org/resource/Falta_Amor"> <dbpedia-owl:artist rdf:resource="http://dbpedia.org/resource/Man%C3%A1"/> </rdf:Description> b) Notation3, N3: es una serialización no XML. Se basa en la descripción de los recursos de un modelos de Marco. Diseñado para que los humanos puedan leerlo. N3 es mucho más compacto y fácil de leer que la notación XML/RDF. Ejemplo: <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> <rdf:Description rdf:about="http://en.wikipedia.org/wiki/Tony_Benn"> <dc:title>Tony Benn</dc:title> <dc:publisher>Wikipedia</dc:publisher> </rdf:Description> </rdf:RDF> c) N-Triples: es una línea basada en texto sin formato para la codificación de un grafo RDF. Fue diseñado para ser un subconjunto fijo de N3 y por lo tanto las herramientas Herramienta para construir bases de conocimiento a partir de información en la web 44 Jorge Gil Peña Ingeniería Superior Informática. ICAI. como cwm N3, n-triples2kif.pl y Euler se puede utilizar para leer y procesar la misma. cwm puede dar salida a este formato cuando se invoca como "cwm-ntriples". Ejemplo: <http://www.w3.org/2001/sw/RDFCore/ntriples/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ↵ <http://xmlns.com/foaf/0.1/Document> . <http://www.w3.org/2001/sw/RDFCore/ntriples/> <http://purl.org/dc/terms/title> "N-Triples" . <http://www.w3.org/2001/sw/RDFCore/ntriples/> <http://xmlns.com/foaf/0.1/maker> _:art . <http://www.w3.org/2001/sw/RDFCore/ntriples/> <http://xmlns.com/foaf/0.1/maker> _:dave . d) Turtle/RDF: es un formato de serialización de RDF (Resource Description Framework) gráficos. Un subconjunto del formato mínimo de N-Triples. A diferencia de N3 completo, la sintaxis Turtle no va más allá del modelo gráfico de RDF. El Protocolo SPARQL y RDF Query Language utiliza un subconjunto N3 similar a el sistema Turtle para pintar los patrones de su gráfica, pero el uso de llaves N3 es una sintaxis para delimitar subgrafos. Es uno de los formatos complejos de leer por un humano. Ejemplo: @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix dc: <http://purl.org/dc/elements/1.1/> . @prefix ex: <http://example.org/stuff/1.0/> . <http://www.w3.org/TR/rdf-syntax-grammar> dc:title "RDF/XML Syntax Specification (Revised)" ; ex:editor [ ex:fullname "Dave Beckett"; ex:homePage <http://purl.org/net/dajobe/> ]. Herramienta para construir bases de conocimiento a partir de información en la web 45 Jorge Gil Peña Ingeniería Superior Informática. ICAI. Como se puede confirmar a pesar de las variantes que existen con respecto a la notación más específica y más rápida a la hora de procesarse, hay una idea clara en torno a todas las posibles notaciones, y esa es que cada elemento básico de conocimiento se representa representa con una tripleta, también conocida como statement en Jena. Aquí puede verse un ejemplo en la Ilustración 3.11. Se ve como Perú tiene la propiedad capital y se conecta con el recurso Lima. Por lo tanto se lee "Perú capital Lima". Exactamente lo mismo mismo ocurre con el Machu Pichu, y la propiedad IS FROM (es de) Perú. 46 Ilustración 3.11 Funcionamiento de OWL: OWL OWL es el acrónimo del inglés Ontology Web Language, Language un lenguaje de marcado para publicar y compartir datos usando usan ontologías en la web 3.0. OWL tiene como objetivo facilitar un modelo de marcado construido sobre RDF y codificado en XML. XML erramienta para construir bases de conocimiento a partir de información en la web Herramienta Jorge Gil Peña Ingeniería Superior Informática. ICAI. Tiene como antecedente DAML+OIL, en los cuales se inspiraron los creadores de OWL para crear el lenguaje. Junto al entorno RDF y otros componentes, estas herramientas hacen posible el proyecto de web semántica. OWL ayuda de manera sencilla a interpretar a una máquina el contenido Web, con el apoyo de XML, RDF y RDF Schema (RDF-S). Proporciona un vocabulario adicional junto con una semántica formal. OWL tiene tres sublenguajes en función de su nivel de expresividad: OWL Lite, OWL DL y OWL Full. (4) Se presenta como alternativa al RDF Schema (RDF-S), como . lenguaje primitivo de ontologías y proporciona los elementos básicos para la descripción completa de vocabularios no solo de los recursos. Diferencia importante. Ejemplo de dominio las cámaras de fotos, en el que se puede observar primero las etiquetas establecidas para que el ordenador reconozca que se trata de una ontología con formato RDFS. Usa las propiedades de namespace OWL como se puede observar todas las clases definidas pertenecen a la ontología de OWL. <?xml version="1.0" encoding="UTF-8"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntaxns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns="http://www.xfront.com/owl/ontologies/camera/#" xmlns:camera="http://www.xfront.com/owl/ontologies/camera/# " xml:base="http://www.xfront.com/owl/ontologies/camera/"> Herramienta para construir bases de conocimiento a partir de información en la web 47 Jorge Gil Peña Ingeniería Superior Informática. ICAI. <owl:Ontology rdf:about=""> <rdfs:comment> Camera OWL Ontology Author: Roger L. Costello </rdfs:comment> </owl:Ontology> <owl:Class rdf:ID="Money"> <rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> </owl:Class> <owl:DatatypeProperty rdf:ID="currency"> <rdfs:domain rdf:resource="#Money"/> <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/> </owl:DatatypeProperty> <owl:Class rdf:ID="Range"> <rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> </owl:Class> <owl:DatatypeProperty rdf:ID="min"> <rdfs:domain rdf:resource="#Range"/> <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#float"/> </owl:DatatypeProperty> 48 <owl:DatatypeProperty rdf:ID="max"> <rdfs:domain rdf:resource="#Range"/> <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#float"/> </owl:DatatypeProperty> Funcionamiento de SPARQL: SPARQL es un lenguaje de consulta y un protocolo de acceso a RDF diseñado por el W3C. Como un lenguaje de consulta, SPARQL es "orientado a datos" en el que sólo se consulta la información contenida en los modelos, no hay inferencia en el lenguaje de consulta Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. en sí. SPARQL no hace otra cosa que tomar la descripción de lo que la aplicación desea, realiza una consulta y devuelve esa información, en forma de un conjunto de enlaces o un gráfico de RDF. Al igual que sucede con SQL, es necesario distinguir entre el lenguaje de consulta y el motor para el almacenamiento y recuperación de los datos. Por este motivo, existen múltiples implementaciones de esta tecnología, generalmente ligados a entornos de desarrollo y plataforma tecnológicas. Un ejemplo de consulta SPARQL sería, donde de una ontología que se encuentra en la dirección http://wwww.owl-ontologies.com/unnamed.owl, se seleccionan las empresas que venden madera. 49 PREFIX po: <http://wwww.owl-ontologies.com/unnamed.owl> select empresa where { ?empresa po:vende po:madera . } Como se ha podido observar todas estas tecnologías tratan con URIs, a las que se accede a recoger información. Estas son webs semánticas ya que si no, no lee nada la aplicación. A continuación se va a proceder a la explicación e introducción a las web semánticas mas empleadas con el framework de Jena en esta aplicación. Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. Funcionamiento DbPedia: es una web orientada hacia las nuevas tecnologías, es un proyecto de las universidades más innovadoras de Alemania y la compañía OpenLink Software. El proyecto DbPedia trata de la extracción automática de datos de Wikipedia para proponer una versión semántica de está. Surgió ante la necesidad de ofrecer los contenidos cada vez mayores, auto crecientes y precisos de la wiki. Se trata de un proyecto bastante complejo e interesante. (7) En la base de datos se describen 3.380.000 entidades, entre ellas al menos 312.000 personas, 413.000 lugares, 94.000 álbumes de música y 49.000 películas y contiene 1.460.000 enlaces a imágenes, 5.543.000 enlaces a páginas externas, 4.878.000 enlaces a datasets externos y 415.000 categorías Wikipedia. Se ha seleccionado DbPedia como fuente más fiable y completa para el desarrollo de este programa, ya que ofrece, gracias a su apoyo en Wikipedia, una fuente muy amplia y completa de datos, y un acceso a estos de manera estandarizada y rápida. Es interesante que su fuente de acceso información sea de un dominio tan amplio, como el de la Wikipedia. Ya que la wiki es una de las web 2.0. de mayor éxito en todo Internet. Su información pese a su manera de adquirir conocimiento es completos, e interesante, ya que en ella se apoya gran parte de nuestra sociedad y el resto del mundo, y la gran mayoría confía o se apoya para ampliar su conocimiento o simplemente para saciar su curiosidad. (3) Herramienta para construir bases de conocimiento a partir de información en la web 50 Jorge Gil Peña Ingeniería Superior Informática. ICAI. Ilustración 3.12 En el siguiente gráfico Ilustración 3.12 se puede observar cómo se almacena esta info en la web de DbPedia. Se trata de una web estándar, no de una web semántica. Aunque no se lea el texto de esta imagen sin sin embargo se puede ver las conexiones del recurso Maná,, que es el texto superior en grande y debajo sus conexiones, que se verán en la imagen Ilustración 3.13. Ilustración 0.3 0.1 0.2 Ilustración 3.13 erramienta para construir bases de conocimiento a partir de información en la web Herramienta 51 Jorge Gil Peña Ingeniería Superior Informática. ICAI. A la izquierda del gráfico 3.14 quedan las propiedades como: el abstract de la banda Maná, el género, el año que empezaron o el lugar de nacimiento. Lo que queda más a la derecha cuando es un link se trata de otro recurso (del que se podría repetir el mismo proceso) y si no de un objeto que nos aporta una información de esta relación. Aquí se puede ver como continúan las relaciones relacione de Maná: 52 Ilustración 3.14 erramienta para construir bases de conocimiento a partir de información en la web Herramienta Jorge Gil Peña Ingeniería Superior Informática. ICAI. No obstante este mismo fichero si se intenta leer de la manera RDF/Turtle, RDF/Turtle en la Ilustración 3.15,, no se entiende nada. Y es que estos formatos están pensados para que los lea otra máquina, no los humanos. Ilustración 3.15 Funcionamiento de YAGO Es una cobertura y ontología calidad ligera 53 y extensible con incorporada en la base alta de conocimientos de DbPedia,, así que ha sido empleada durante este proyecto como fuente de conocimiento. YAGO se basa en las las entidades y las relaciones y contiene actualmente más de 1 millón entidades y 5 millones de statements.. Esto incluye la jerarquía así como las relaciones no taxonómicas entre las entidades. Los datos han sido extraídos de forma automática de Wikipedia y unificado con WordNet,, utilizando una combinación cuidadosamente diseñada basada en reglas y métodos de heurística descritos en este documento. (9) El conocimiento resultante es un paso importante más allá de WordNet:: agregando el conocimiento acerca de erramienta para construir bases de conocimiento a partir de información en la web Herramienta Jorge Gil Peña Ingeniería Superior Informática. ICAI. los individuos como personas, organizaciones, productos, etc con sus relaciones semánticas - y en cantidad, aumentando el número de hechos por más de un orden de magnitud. YAGO se basa en un modelo limpio, que es extensible y compatible con RDFS. Es una parte de conocimiento semántico dentro del proyecto DbPedia muy importante. Funcionamiento de MusicBrainz Es una web social de la web 2.0. en la que se almacena la información relativa a gran parte de los artistas medianamente conocidos. Esta web es empleada en la aplicación para confirmar la existencia de los artistas introducidos por el usuario. (10) MusicBrainz almacena información sobre artistas, sus grabaciones, y la relación entre ellos. Los registros sobre las grabaciones contienen, al menos, el título del álbum, los nombres de las pistas, y la longitud de cada una de ellas. La información es mantenida de acuerdo a una guía de estilo común. Adicionalmente, las grabaciones almacenadas pueden incorporar información sobre la fecha y país de lanzamiento, el ID del CD, una huella acústica de cada pista y un campo de texto libre o de anotaciones. A día 2 de julio de 2007 MusicBrainz tenía información sobre 315.366 artistas, 494.248 álbumes, y 5,8 millones de pistas. En esta web la gente va rellenando información de sobre los artistas de manera altruista. Esta web contiene Herramienta para construir bases de conocimiento a partir de información en la web 54 Jorge Gil Peña Ingeniería Superior Informática. ICAI. una oferta de programas que rellenan las etiquetas de las canciones mediante ID3, y sus librerías. librerías. Además esta información se encargan de presentarr la información con formato semántico de manera que se puede acceder a él, para comprobar su base de datos de artistas. Los usuarios finales pueden utilizar programas que se comunican con MusicBrainz para etiquetar su ficheros de audio.. Desde la propia página los usuarios registrados pueden crear y mantener la información disponible sobre los discos de forma que, muy al estilo de la web 2.0, 2.0 la base de datos va mejorando de forma colaborativa. Muy interesante a tener en cuenta en este proyecto la l innovación MusicBrainz que propusieron utilizó el inicialmente, algoritmo TRM (un y es que acrónimo recursivo que significa: TRM Reconoce Música) para la búsqueda de coincidencias mediante el uso de una huella digital acústica; un código único generado que permite identificar cada una de las pistas.[4] pistas. Esta característica, atrajo muchos chos usuarios y permitió que la base de datos creciera de forma muy rápida. rápida Ilustración 3.16 erramienta para construir bases de conocimiento a partir de información en la web Herramienta 55 Jorge Gil Peña Ingeniería Superior Informática. ICAI. 3.3.3 Servidor web En las arquitecturas explicadas con anterioridad se ha definido que un servidor es un ordenador al que se conecta un cliente. Pero ahora la descripción tecnológica se centrara en la parte Software de un servidor. Un servidor web es un programa que está diseñado para transferir hipertextos, páginas web o páginas HTML (HyperText Markup Language): textos complejos con enlaces, figuras, formularios, botones y objetos incrustados como animaciones o reproductores de música. El programa implementa el protocolo HTTP (HyperText Transfer Protocol) que pertenece a la capa de aplicación del modelo OSI. El término también se emplea para referirse al ordenador que ejecuta el programa. Estructura de un documento HTML: En un documento HTML se puede incluir texto, imagen, sonido y referencias a otros documentos. Para diferenciar las directivas de HTML (instrucciones) del texto normal, dichas directivas se encuentran encerradas entre los signos < y >. Determinadas directivas tienen un inicio y un final. La directiva final se acompaña del símbolo /. La estructura básica de un documento HTML tendría las siguientes directivas: <HTML> inicio del documento <HEAD> inicio de la cabecera <TITLE> inicio del título Herramienta para construir bases de conocimiento a partir de información en la web 56 Jorge Gil Peña Ingeniería Superior Informática. ICAI. Titulo de la pagina </TITLE> final del título </HEAD> final de la cabecera <BODY> inicio del cuerpo de la página Texto, gráficos y demás componentes de la página </BODY> final del cuerpo de la página </HTML> final del documento El título de la página será el texto que identificará a la página, la hoja en sí la se escribirá entre las directivas <BODY> y </BODY>. Muchas de las directivas de HTML pueden incluir parámetros. Estos parámetros añaden opciones especiales a la directiva. 57 3.3.4. Páginas dinámicas Las páginas dinámicas son páginas HTML generadas a partir de lenguajes de programación (scripts) que son ejecutados en el propio servidor web. A diferencia de otros scripts, como el JavaScript, que se ejecutan en el propio navegador del usuario, los 'Server Side' scripts generan un código HTML desde el propio servidor web. Este código HTML puede ser modificado -por ejemploen función de una petición realizada por el usuario en una Base de Datos. Dependiendo de los resultados de la consulta en la Base de Datos, se generará un código HTML u otro, mostrando diferentes contenidos. Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. En la actualidad la mayoría de las páginas Web se desarrollan mediante la utilización de HTML. Este lenguaje no es de programación si no, más bien se trata de un lenguaje descriptivo que tiene como objeto dar formato al texto y las imágenes que pretenden visualizar en el navegador. A partir de este leguaje se puede de introducir enlaces, seleccionar el tamaño de las fuentes o intercambiar imágenes, todo esto de una manera prefijada y en ningún caso inteligente. En efecto, HTML no permite realizar un simple cálculo matemático o crear una página de la nada de una base de datos. A decir verdad HTML, aunque muy útil a pequeña escala, resulta muy limitado a la hora de concebir grandes sitios o portales. 58 Es esta deficiencia de HTML la que ha hecho necesario el empleo de otros lenguajes accesorios mucho más versátiles y de un aprendizaje relativamente más complicado, ya que son capaces de responder de manera inteligente a las demandas del navegador y que permiten automatización irremediables de como determinadas pueden ser tareas tediosas e actualizaciones, el tratamiento de pedidos de una tienda virtual… Estos leguajes capaces de recrear a partir de ciertos “scripts” un sinfín de páginas automatizadas son los protagonistas de este concepto de páginas dinámicas. Las páginas dinámicas proporcionan beneficios en muchos aspectos, como por ejemplo en el acceso a datos, ya que permiten interactuar con la información y mostrarla al usuario o bien para actualizar su contenido. Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. Son muchas las aplicaciones de este concepto en los sistemas de información actuales, por ejemplo, una empresa que vende sus artículos por Internet debe disponer de páginas en las que se visualicen los datos de sus productos, disponibilidad, precio, color, etc. Y almacenar los pedidos de sus clientes. Al tratarse de información en continua actualización, es necesaria la presencia de una base de datos y su consulta y actualización inmediata, ya que si no podría crear un gran caos. Las páginas dinámicas pueden ayudar a gestionar más fácilmente los contenidos de nuestro sitio Web y también, a interactuar con bases de datos. Dichas páginas, también proporcionan ayuda en la administración y captación de personal para actualizar las páginas Web. Al tener una base de datos, la actualización de la base de datos requiere de muy poco tiempo ya que la manipulación de código HTML es mínima. Mediante un gestor de base de datos se pueden actualizar múltiples páginas y si se necesita modificar una mayor cantidad de contenido se puede realizar desde la página del administrador de la base de datos. Para poder implantar páginas Web dinámicas, se requiere poseer distintos elementos. A la hora de trabajar con páginas Web dinámicas en conjunto con Bases de Datos, hay que conocer el funcionamiento de los componentes del sistema. Las tecnologías web con las que se ha trabajado en el desarrollo de este proyecto para la implantación de páginas web dinámicas se indican a continuación: Herramienta para construir bases de conocimiento a partir de información en la web 59 Jorge Gil Peña Ingeniería Superior Informática. ICAI. JSP: es un acrónimo de Java Server Pages, que en castellano vendría a decir algo como Páginas de Servidor Java. Es, pues, una tecnología orientada a crear páginas web con programación en Java. Con JSP se pueden crear aplicaciones web que se ejecuten en variados servidores web, de múltiples plataformas, ya que Java es en esencia un lenguaje multiplataforma. Las páginas JSP están compuestas de código HTML/XML mezclado con etiquetas especiales para programar scripts de servidor en sintaxis Java. Por tanto, las JSP se pueden escribir con un editor HTML/XML habitual. 60 El motor de las páginas JSP está basado en los Servlets de ejecutarse Java en el -programas servidor-, en Java aunque el destinados a número de desarrolladores que pueden afrontar la programación de JSP es mucho mayor, dado que resulta mucho más sencillo aprender que los Servlets. En JSP se crean páginas de manera parecida a como se crean en ASP o PHP -otras dos tecnologías de servidor-. Se generan archivos con extensión .JSP que incluyen, dentro de la estructura de etiquetas HTML, las sentencias Java a ejecutar en el servidor. Antes de que sean funcionales los archivos, el motor JSP lleva a cabo una fase de traducción de esa página en un Servlet, implementado en un archivo class (Byte codes de Java). Esta fase de traducción se lleva a cabo habitualmente cuando se recibe Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. la primera solicitud de la página .JSP, aunque existe la opción de precompilar en código para evitar ese tiempo de espera la primera vez que un cliente solicita la página. Las JSP's permiten la utilización de código Java mediante scripts. Además, es posible utilizar algunas acciones JSP predefinidas mediante etiquetas. Estas etiquetas pueden ser enriquecidas mediante la utilización de Bibliotecas de Etiquetas (TagLibs o Tag Libraries) externas e incluso personalizadas. Como ha sido el caso al emplear la librería JSTL, y la de EL con el JSF implementado. JSTL y JSF: La librería JSTL es un componente dentro de la especificación del Java 2 Enterprise Edition (J2EE) y es controlada por Sun MicroSystems. JSTL no es más que un conjunto de librerías de etiquetas simples y estándares que encapsulan la funcionalidad principal que es usada comúnmente para escribir páginas JSP. Las etiquetas JSTL están organizadas en 4 librerías: • core: Comprende las funciones script básicas como loops, condicionales, y entrada/salida. • xml: Comprende el procesamiento de xml • fmt: Comprende la internacionalización y formato de valores como de moneda y fechas. • sql: Comprende el acceso a base de datos. • Los Servlets, son objetos que corren dentro del contexto de un contenedor de Servlets caso Tomcat en este y extienden su funcionalidad de Herramienta para construir bases de conocimiento a partir de información en la web 61 Jorge Gil Peña Ingeniería Superior Informática. ICAI. manera que conectan el código Java con los servicios web. (11) Servlets: es un objeto que se ejecuta en un servidor o contenedor JEE, especialmente diseñado para ofrecer contenido dinámico desde un servidor web, generalmente HTML. Otras opciones que permiten generar contenido dinámico son los lenguajes ASP, PHP, JSP (un caso especial de Servlet), Ruby y Python. Forman parte de JEE (Java Enterprise Edition), que es una ampliación de JSE (Java Standard Edition). Un implementa Servlets la interfaz javax.servlet.Servlet o hereda alguna de las clases más convenientes para un protocolo específico (ej: javax.servlet.HttpServlet). Al implementar esta interfaz el servlet es capaz HttpServletRequest de y interpretar los objetos HttpServletResponse de tipo quienes contienen la información de la página que invocó al Servlet. JavaScript: La diferencia de esta tecnología con el HTML o el JSP estriba en que en el JavaScript el servidor proporciona el código de las aplicaciones al cliente y éste, mediante el navegador las ejecuta en local. Es necesario, por tanto, que el cliente disponga de un navegador con capacidad para ejecutar aplicaciones (también llamadas scripts). Comúnmente, los navegadores permiten ejecutar aplicaciones escritas en lenguaje JavaScript y java, aunque pueden añadirse más lenguajes mediante el uso de Plugins. Herramienta para construir bases de conocimiento a partir de información en la web 62 Jorge Gil Peña Ingeniería Superior Informática. ICAI. JavaScript es un lenguaje de programación utilizado para crear pequeños programas encargados de realizar acciones dentro del ámbito de una página Web. Con JavaScript se pueden crear efectos especiales en las páginas y definir interactividades con el usuario. El navegador del cliente es el encargado de interpretar las instrucciones Java Script y ejecutarlas para realizar estos efectos e interactividades, de modo que el mayor recurso, y tal vez el único, con que cuenta este lenguaje es el propio navegador en el que se ejecuta. JavaScript es el siguiente paso, después del HTML, que puede dar un programador de la Web que decida mejorar sus páginas y la potencia de sus proyectos. Es un lenguaje de programación bastante sencillo y pensado para hacer las cosas con rapidez, a veces con ligereza. Incluso las personas que no tengan una experiencia previa en la programación podrán aprender este lenguaje con facilidad y utilizarlo en toda su potencia con sólo un poco de práctica. Entre las acciones típicas que se pueden realizar en JavaScript hay dos vertientes. Por un lado los efectos especiales sobre páginas Web, para crear contenidos dinámicos y elementos de la página que tengan movimiento, cambien de color o cualquier otro dinamismo. Por el otro, nos permite ejecutar instrucciones como respuesta a las acciones del usuario, con lo que se pueden crear páginas interactivas con programas como calculadoras, agendas, o tablas de cálculo. JavaScript es un lenguaje con muchas posibilidades, permite la programación de pequeños scripts, Herramienta para construir bases de conocimiento a partir de información en la web 63 Jorge Gil Peña Ingeniería Superior Informática. ICAI. pero también de programas más grandes, orientados a objetos, con funciones, estructuras de datos complejas, etc. Toda esta potencia de JavaScript se pone a disposición del programador, que se convierte en el verdadero dueño y controlador de cada cosa que ocurre en la página. Ilustración 3.17 64 3.3.5 Sistema Gestor de base de datos Los sistemas de gestión de base de datos son un tipo de software muy específico, dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan. En este caso se ha empleado MySQL, como opción más rentable y fiable para la gestión de base de datos. MySQL: es un sistema de gestión de base de datos relacional, multihilo y multiusuario, de código libre. De hecho MySQL es la base de datos open source más popular y, posiblemente, mejor del mundo. Su continuo desarrollo y su creciente popularidad está haciendo de MySQL un Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. competidor cada vez más directo de gigantes en la materia de las bases de datos como Oracle. (12) Ilustración 3.18 Es un sistema de administración de bases de datos (Database Management System, DBMS) para bases de datos relacionales. Así, no es más que una aplicación que permite gestionar archivos llamados de bases de datos. Su popularidad como aplicación web está muy ligada a PHP, que a menudo aparece en combinación con MySQL. En aplicaciones web ofrece un entorno de intensiva lectura de datos, lo que hace a MySQL ideal para este tipo de aplicaciones Herramienta para construir bases de conocimiento a partir de información en la web 65 Jorge Gil Peña Ingeniería Superior Informática. ICAI. 4. Análisis de la aplicación 4.1. Introducción E sta parte de la memoria se encarga de comentar el análisis realizado para llevar a cabo la aplicación. Como se ha comentado anteriormente esta fase fue corta ya que había una necesidad de elegir rápido las tecnología con el fin de empezar a probarlas y ponerse en sintonía con el desarrollo que ellas implicaban. Además algunas características eran requisitos del sistema. 66 4.2. Análisis de alternativas Desde el comienzo de este proyecto se ha tenido muy en cuenta el reto tecnológico que conlleva. Así que se sabía que para el desarrollo de este software era muy importante la fase de aprendizaje de las tecnologías empleadas. Como ya se ha comentado anteriormente ha sido una de las mayores motivaciones, ya que estas tecnologías al encontrarse en continuo desarrollo no se encontraban del todo bien documentadas y se tenían muchas dudas en torno a ellas. Esta circunstancia ha hecho que una de las etapas más importantes de este proyecto haya sido el Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. conocimiento y aprendizaje de estas tecnologías, y no solo de ellas si no de los conceptos que implementan, como los que se han introducido ya de web 2.0., web 3.0. u ontología. La curva de aprendizaje ha sido algo larga, pero ha permitido ir asentando esos conocimientos que se han nombrado. Este temor y respeto hizo acelerar la fase de análisis deseando pasar rápidamente al aprendizaje de las cuestiones en materia. Tras un pequeño análisis, que no se quiso alargar mucho, se llego a una serie de propuestas de desarrollo. Entorno de trabajo 67 La mejor solución que se concluyó fue basar todo el desarrollo en la plataforma Java. Este lenguaje de programación ofrecía la independencia de la plataforma en la que fuese a ser desarrollo, su amplio reconocimiento y su gratuicidad ya que es una fuente abierta. Una vez tomada esta decisión. Se seleccionó como entorno de programación Eclipse, que es uno de los programas más usados junto con NetBeans para el desarrollo de programas en Java, sin embargo se seleccionó Eclipse por su amplitud del numero de plugins, que facilitaban el trabajo. Una vez decidido el entorno de trabajo había que seleccionar qué herramienta emplear para recoger la información de la web y del conjunto de ejemplos, para obtener conocimiento, y por otro que ayudara a generar de forma automática una ontología sobre el dominio de Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. conocimiento a través de búsquedas inteligentes que se realizarían en documentos web. Herramientas ontológicas Existían varias opciones para el manejo de la ontología y su recogida de datos de la web semántica. La opciones más interesantes analizadas fueron: • Jena (http://jena.sourceforge.net/es,) la herramienta más ampliamente utilizada en el momento, y depende en gran medida de las normas de la comunidad (OWL, SPARQL, etc.) Orientada al marco de desarrollo para la Web 68 Semántica. • KOAN (http://kaon.semanticweb.org/), tal vez puede ser utilizado de una forma más reducida de la moda, pero se aparta de las normas con un lenguaje propietario y extensiones. • Sesame (http://www.openrdf.org/), comparable a Jena a menos que se esté interesado en comparar la eficacia a gran escala de recuperación, o si se necesita apoyo OWL. • JRDF (jrdf.sourceforge.net), supuestamente mezcla varios de los marcos de RDF, menos potente y en vías de desarrollo. Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña • Ingeniería Superior Informática. ICAI. Protégé (protege.stanford.edu), para el entorno de desarrollo de ontologías pero no tan orientada a la Web Semántica. Tras este análisis finalmente se decidió por Jena que parecía la más robusta, estable y completa de las herramientas vistas. Definición del proceso principal Inicialmente el código estaba pensado como una aplicación capaz de recibir la información de manera automática sin que el usuario tuviese que escribirla a mano, dando una mayor comodidad al usuario y dotando al programa de mayores automatismos. Se estuvo probando inicialmente la manera en que el usuario introdujese la ruta de sus canciones favoritas en su disco duro y la aplicación recorriese esta ruta en busca de todos sus mp3, y fuese leyendo sus artistas y canciones. Esto se realizaba con la librería de ID3 para Java. La verdad es que el funcionamiento era muy aceptable y las ventajas de no tener que hacer al usuario introducir sus datos a mano parecía bastante ventajoso. Sin embargo según se fue desarrollando el proyecto se cayó en la cuenta de que ante una necesidad imperiosa de que el programa funcionase con internet, era mejor que se tratase de un programa web. Tras varias pruebas del Herramienta para construir bases de conocimiento a partir de información en la web 69 Jorge Gil Peña Ingeniería Superior Informática. ICAI. sistema para incorporar este código en un cliente web con los ya caídos en desuso applets, fue dejado de lado. Los problemas que generaba el entrar en un ordenador en local, y las desconfianzas que generaría al futuro usuario eran desventajas insalvables. Tras estos devaneos con los applets se comenzó a considerar muy interesante el desarrollo de una encuesta o test de favoritos, de manera que el usuario pudiese definir sus intereses de manera rápida y segura, además de disponer la aplicación de una fuente de conocimiento del usuario más completa que tratándose de música simplemente. Análisis de web semánticas Luego hubo que decidir de qué webs se iba tomar la información semántica que rellenaría la ontología. A pesar de haber una gran oferta, ésta era no obstante, bastante dispersa y poco estandarizada (pese al esfuerzo de muchos). Tras diversos estudios de varias, la más completa y accesible resultó ser DbPedia. Una web en la que el contenido de la Wikipedia, era pasado a formato semántico empleando la tecnología RDF. También se emplea actualmente MusicBrainz, con un dominio más reducido, que es el de la música y los artistas que se usa para confirmar el nombre de los artistas introducidos por los usuarios. Herramienta para construir bases de conocimiento a partir de información en la web 70 Jorge Gil Peña Ingeniería Superior Informática. ICAI. Se emplea también contenidos en YAGO, que es una librería almacenada conceptos de la por DbPedia Wikipedia pero usando el clasifica los conocimiento distribuido por WordNet. Freebase es otro proyecto, no lúdico pero similar al de DbPedia, con el cual se estuvo trabajando en este proyecto también, pero presentaba un problema a la hora de mostrar el titulo de sus conceptos y direcciones. Por consiguiente los proyectos que ofrecen contenidos semánticos y que se emplean en este proyecto son: • DbPedia • MusicBrainz • YAGO Las otras 71 web de la "nube semántica", como Jammeddo, BBC Net,... han sido tenidas en cuenta pero debido a distintas circunstancias no se ha llevado a cabo una implementación concreta para el acceso a su información semántica. Tecnologías de desarrollo El resto de las decisiones con respecto a la tecnología web han estado muy condicionadas a la decisión de emplear la tecnología Java. Por lo que el análisis resultó bastante sencillo, ya que eran las soluciones propuestas por Java para ese tipo de situaciones prácticamente la única Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. solución. Estas casi por estándar seria el empleo de los Servlets, los JSP, las librerías JSTL,... Siguiendo con la coherencia de todo el proyecto se buscó tanto soluciones gratuitas como completas y establecidas en el mercado, tal como MySql para Sistema Gestor de Base de Datos y Tomcat como servidor web. Todas estas tecnologías serán explicadas con mayor detenimiento más adelante. 72 Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. 5. Diseño y desarrollo de la aplicación myWeb 5.1. Introducción A ntes de contar como se realizo la implementación es importante conocer el diseño de este servicio web. Además se aprovechar este capítulo para recalcar como se definieron y diseñaron otros aspectos de este proyecto y en que tareas se dividieron. Sin mayor dilatación se va a proceder a explicar el diseño de este complejo servicio. 73 5.2. Diseño Para el proceso de diseño del sistema se han empleado los diagramas de comportamiento ya que enfatizan en lo que debe suceder en el sistema modelado. Y en función de lo que debe hacer la aplicación se desarrolla la estructura y la iteración de datos. Para visualizar, especificar, construir y documentar este sistema se ha empleado el Modelo de Casos de Uso. Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. 5.2.1. Modelo de Casos de Uso Diagrama de Casos de Uso Se usa el caso de uso como técnica para la captura de requisitos potenciales de un nuevo sistema. Cada caso de uso proporciona uno o más escenarios que indican cómo debería interactuar el sistema con el usuario o con otro sistema para conseguir un objetivo específico. Se usa un lenguaje más cercano al usuario final de manera que sea más fácilmente comprensible. 74 Un usuario puede en principio darse de alta o hacer el Login accediendo a sus recomendaciones. Si se está dando de alta rellena un cuestionario, y busca sus recomendaciones. El usuario podrá cambiar sus favoritos, y buscar más recursos. También podrá seleccionar un recurso si le parece interesante En este proyecto tan solo interactúa con un actor, que es el usuario, que es el que genera todos los escenarios posibles. Como se h podido comprobar en l ilustración el usuario comienza o bien dándose de alta o bien registrándose. Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. A partir de ahí tiene las distintas opciones, que serán, además demás de los anteriores, los casos de uso del sistema: • Ver recomendaciones • Buscar recurso • Seleccionar recurso • Cambiar favoritos • Salir 75 Ilustración 5.1 erramienta para construir bases de conocimiento a partir de información en la web Herramienta Jorge Gil Peña Ingeniería Superior Informática. ICAI. Descripción de Casos de Uso a.) Login Nombre: Login Objetivo: El objetivo del Login es que el usuario pueda volver a la aplicación una vez se haya registrado. Permitiéndole volver a ver sus recomendaciones. Actor: Usuario Precondiciones: -El usuario debe estar dado de alto en la base de datos. -El alumno debe autenticarse Trigger: -Desde la web, el botón Login Escenario primario: 1. El usuario introduce contraseña y usuario 2. El usuario pulsa Login 3. El usuario ve sus recomendaciones Extensiones: Descripción de datos: b.) darseAlta Nombre: Darse de alta Objetivo: Cuando el usuario va a darse de alta, registrándose por primera vez, tiene que almacenar el sistema su información y registrarle. Actor: Usuario Precondiciones: -El usuario debe acceder a la web. Trigger: -Desde la web, el botón de darse de alta Herramienta para construir bases de conocimiento a partir de información en la web 76 Jorge Gil Peña Ingeniería Superior Informática. ICAI. Escenario primario: 1. El usuario pulsa darse de alta 2. EL usuario introduce contraseña y usuario 3. El usuario rellena la encuesta con sus favoritos 4. El usuario pulsa recomendar 5. El usuario ve sus recomendaciones Extensiones: Descripción de datos: c.) verRecomendaciones Nombre: verRecomendaciones Objetivo: cuando el usuario quiere ver sus recomendaciones tiene que tener la opción tras registrarse de volver a ver sus recomendaciones. Actor: Usuario Precondiciones: -El usuario debe estar dado de alto en la base de datos. -El alumno debe autenticarse Trigger: -Desde la web, el botón Login o darse de alta Escenario primario: 1. El usuario ve sus recomendaciones 2. El usuario selecciona alguna recomendación 3. El usuario va a cambiar sus favoritos 4. El usuario realiza una búsqueda Extensiones: Descripción de datos: Herramienta para construir bases de conocimiento a partir de información en la web 77 Jorge Gil Peña Ingeniería Superior Informática. ICAI. d.) buscarRecurso Nombre: buscar un nuevo recurso Objetivo: cuando el usuario quiere añadir en sus recomendaciones una nueva búsqueda tiene que poder añadir nuevas búsquedas tras registrase, con el fin de que siga creciendo su ontología. Actor: Usuario Precondiciones: -El usuario debe estar dado de alta en la base de datos. -El alumno debe autenticarse Trigger: -Desde la web en el botón buscar Escenario primario: 1. El usuario ve sus recomendaciones 2. El usuario selecciona buscar alguna nueva recomendación Extensiones: Descripción de datos: e.) seleccionarRecurso Nombre: buscar un nuevo recurso Objetivo: cuando el usuario le interesa una recomendación y accede a ella, y la aplicación debe tener en cuenta que al usuario le interesa. Actor: Usuario Precondiciones: -El usuario debe estar viendo las recomendaciones Trigger: Herramienta para construir bases de conocimiento a partir de información en la web 78 Jorge Gil Peña Ingeniería Superior Informática. ICAI. -Desde la web en el botón del recurso Escenario primario: 1. El usuario ve sus recomendaciones 2. El usuario selecciona una recomendación Extensiones: Descripción de datos: f.) salir Nombre: salir del programa/página Objetivo: cuando el usuario quiere salir del programa se tiene que realizar una desconexión del usuario, eliminando las variables de sesión. Actor: Usuario Precondiciones: -El alumno debe estar autenticado Trigger: -Desde la web en el botón salir o cerrando la ventana Escenario primario: 1. El usuario sale 2. Se almacenan la información del usuario y sus cambios Extensiones: Descripción de datos: Herramienta para construir bases de conocimiento a partir de información en la web 79 Jorge Gil Peña Ingeniería Superior Informática. ICAI. 5.2.1. Modelo de Dominio En el modelo de dominio según la profundidad de este se emplean dos diagramas, el diagrama de paquetes y el de clases. En el diagrama de paquetes se muestra cómo se organiza la estructura del software de la aplicación. Muestra cómo un sistema está dividido en agrupaciones lógicas mostrando las dependencias entre esas agrupaciones. 80 Ilustración 5.2 Se puede representar herencia en la observar estructura esta el de aplicación siguiente diagrama algunos dentro de elementos los para con paquetes representados con anterioridad. Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. Ilustración 5.3 Para representar un poco más a bajo nivel se emplea el diagrama de clases, que muestra la lógica del sistema en su iteración con el usuario., pero no deja de ser un diagrama de estructura. Se puede observar que clases llaman a cuales, como se conectan entre ellas. No se trata de un diagrama completo pero si de uno bastante aproximado. Se pueden observar las flechas que están sueltas que son las llamadas por las que el usuario puede acceder a la aplicación, concretamente Login (cuando ya está dado de alta) y Darse de alta. Estas dos clases se trata de clases que heredan de HTTP Servlet, que significa que son Servlets, por eso se ha representado como clases simples. Herramienta para construir bases de conocimiento a partir de información en la web 81 Jorge Gil Peña Ingeniería Superior Informática. ICAI. Aquí en la figura 5.3. vemos como queda el diagrama de clases de la aplicación: aplicación 82 Ilustración 5.4 Diagramas de Interacción son un subtipo de diagramas del del lenguaje UML. Estos como dice su nombre se fijan en la iteración de las clases, enfatizando sobre el flujo de control y de datos entre los elementos del sistema modelado erramienta para construir bases de conocimiento a partir de información en la web Herramienta Jorge Gil Peña Ingeniería Superior Informática. ICAI. Diagrama de flujo A continuación se muestran una serie de diagramas de flujo, para representar el funcionamiento de la lógica de las clases Java, se centra en el algoritmo, que ha sido el proceso más complejo de desarrollar. Jenate es la clase principal. Desde la que se ejecuta el código del algoritmo y controla la lógica de recomendación de contenidos. Su función main es la que recibe los Strings introducidos por el usuario y acaba generando un objeto Map de claves-valor. en el que se encuentran los recursos ya filtrados que resultaran interesantes. Luego una vez conocidos estos se procede a clasificarlos según el tipo de recurso y a enviarlos en forma de array o almacenarlos, según el caso de uso. En la primera imagen, que es la Ilustración 8.1., se ve cómo funciona la aplicación a la hora de buscar un recurso y como los llega a listar. Jenate le solicita a DbPedia que le de la url del recurso pedido por el usuario y un vez la tiene va a su búsqueda en la web, obteniendo sus objetos hijo de la consulta realizada en DAO_Sparql. Está devuelve un modelo de los objetos hijo y se recorre y trata con listResources, para poder incorporarla a la ontología del usuario. Herramienta para construir bases de conocimiento a partir de información en la web 83 Jorge Gil Peña Ingeniería Superior Informática. ICAI. En el diagrama se ve como realiza desde Jenate el envío a la base de datos, MySQL..Y Y en los arcos se representa y transcribe la función que se llama desde la que sale la flecha y que pertenece a la clase destino, que será la encargada gada de ejecutarla. No se transcriben los tipos recibidos ni los devueltos para obtener una mejor legibilidad. 84 Ilustración 5.6 .6 Ilustración 5.5 5. erramienta para construir bases de conocimiento a partir de información en la web Herramienta Jorge Gil Peña Ingeniería Superior Informática. ICAI. Diseño de la base de datos: Se ha empleado un diseño de base datos sencillo como se puede observar en el esquema Ilustración. El diseño de la base de datos c está formado por tres tablas: • user • user_resources • resource Como se puede observar en la Ilustración 5.7. las tres tablas están conectadas entre si, ya que un usuario tiene unos recursos y estos recursos a su vez tienen unas 85 propiedades. Ilustración5.7 Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. Como se puede observar en user se almacena el nombre tras verificar que no exista con anterioridad, la dirección de coreo electrónico sin verificación y se solicita de manera opcional así que es campo no clave y la password. La de resource almacena la info básica de un recurso para poder mostrarlo sin tener que acceder a Internet. La de user-resource guarda la información básica para poder almacenar y relacionar al usuario con sus recomendaciones, de manera que no se generen campos repetidos. De ahí que se usen los campos clave de user y resource y el valor de esta conexión. Como se ha comentado anteriormente es un diseño muy sencillo, pero eficiente. Permite recuperar la info de la ontología de manera rápida. En casi de que el usuario quiera añadir más favoritos, a la hora de leer de la base de datos se combina con la ontología con la base de datos y se tiene la ontología con los pesos de nuevo. y sin embargo si solo se quieren ver los recursos se recupera muy sencillamente leyendo de la base de datos los recursos asociados al usuario. 5.3. Tareas desarrolladas en el proyecto La formulación del proyecto ha sido el proceso más complejo. No tanto la implementación en sí, la cual se verá en el próximo capítulo con ejemplos de programación. Este Herramienta para construir bases de conocimiento a partir de información en la web 86 Jorge Gil Peña Ingeniería Superior Informática. ICAI. capítulo se centra en las tareas desarrolladas para definir el proyecto que han sido los siguientes: • Estudio psicológico conexiones musicales con forma de ser • Diseño de myWeb • Análisis de posibles entradas al programa • Utilización de la herramienta JENA. • Realización del algoritmo con Java. • Convertir el proyecto en web • Preparación del entorno web 87 5.3.1. Estudio psicológico de conexiones musicales Se ha llevado a cabo una búsqueda e investigación a través de la web, para intentar conocer las relaciones entre los gustos musicales y la forma de ser de la persona de manera que se pueda establecer unas relaciones entre la música que escuchan y su forma de ser. Era una de las ideas principales de este programa, poco a poco, ha ido perdiendo fuerza, según se ha ido desarrollando el test. Sin embargo no deja de ser un factor más, sobre el que se ha estado investigando y sobre el que recae cierto peso en el algoritmo desarrollado. Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. Hay muchos estudios que confirman la estrecha relación entre la música que escucha el usuario y como se relaciona con la gente que le rodea. Estos estudios llegan a decir que se puede saber sus intereses y es que la música que uno escucha dice mucho de sí mismo. (15) Sobre todo ha sido muy útil un estudio de la universidad de Cambridge titulado "You are what you listen to" (13). Los investigadores encontraron que esto existía en el 77% de los casos, y que la gente acordó firmes posiciones respecto de los tipos de personas que les gusta la música clásica, rock y rap. Los perfiles de cada género fueron consistentes y están fuertemente diferenciados entre sí, lo que sugiere que los estereotipos están a la vez clara y firmemente en manos de muchos temas. 88 Los aficionados al jazz, por ejemplo, eran vistos como gente amable y emocionalmente estable, con un sentido limitado de la responsabilidad. Los fans del Rap eran vistos de una manera más hostil, pero también más enérgicos y atléticos. La música clásica estaba vinculada a personas blancas, de clase alta y el rap a la gente negra o mezclado, de orígenes de clase baja. Los seis estilos se consideraron asociables con la gente de clase media. 5.3.2. Diseño de myWeb El diseño de myWeb ha sido realizado utilizando el programa Adobe DreamWeaver para su desarrollo e implementación. Usa la tecnología de CSS para separar la Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. parte gráfica de la parte de estructura definida en el JSP, en este ste caso. Sin embargo se realizó originalmente en HTML y luego se pasó ó a JSP con el fin de poder usar ese diseño pero tratándose de una página web dinámica. El diseño del logotipo es el de la Ilustración 5.8, 5. en el se ve tanto nto un símbolo como el nombre del servicio. El logotipo lleva la M y la W, jugando con las dos primeras palabras del servicio. Se ha empleado el naranja n ranja al tratarse de un servicio dinámico y de entretenimiento como color que trasmite viveza y alegría. 89 Ilustración 5.8 El diseño de la a web ha sido un proceso muy evolutivo. Y ha ido variando y evolucionando con el tiempo. Se dispone de un mapa web del sitio, que quedaría algo parecido a la Ilustración 5.9. 5. aunque ha sufirdo algunas variaciones con el desarrollo de la aplicación. En esta imagen se ve como a la web se accede por el usuario, y puede ver sus su recursos recomendados:: música, películas,, libros,...y libros,... llegar a ver los recursos seleccionados. Existe una idea reflejada en este mapa web, todavía no erramienta para construir bases de conocimiento a partir de información en la web Herramienta Jorge Gil Peña Ingeniería Superior Informática. ICAI. implementada, y es el acceso desde el inicio a los recursos mejor valorados y más recomendados a todos los usuarios, que se podrían ver desde la página principal sin darse de alta, pulsando en los links a música, libros, sitios, películas, ... 90 Ilustración 5..9 Como herramienta de comunicación y discusión del diseño se han empleado los wireframe. El de la página principal seria tal como se puede observar en la Ilustración 5.10 muy sencillo. Se trata de una página en la que se puede dar de alta o acceder a nuestra cuenta en la esquina derecha. Y en la parte inferior los distintos módulos a los que se pueden acceder y el logo en la parte superior. Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. Ilustración 5.10 El diseño de la página principal de recomendaciones, queda como se puede observar en la l figura Ilustración 5.11. 5. Con un fondo gris oscuro y los recursos se diferencian en una capa na aranja ranja sobre una capa gris según el tipo de recurso. 91 Ilustración 5.11 erramienta para construir bases de conocimiento a partir de información en la web Herramienta Jorge Gil Peña Ingeniería Superior Informática. ICAI. El diseño de la pagina de recomendación en la que el usuario accede para ver más información de un recurso que le llame la atención, de un recurso concreto, quedaría como muestra la imagen Ilustración 5.12, con la foto del recurso a la izquierda, el abstract en el centro y un infobox a la derecha. 92 Ilustración 5.12 Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. 5.3.3. Diseño entradas al programa Inicialmente se pensó que se recibiese la información de manera automática sin que el usuario usuario tuviese que escribirla a mano. mano Finalmente se desarrolló una encuesta, encue de manera que el usuario pudiese definir sus intereses de manera completa y segura. Esto se muestra en la ilustración 5.13. 5. 93 Ilustración 5.13 erramienta para construir bases de conocimiento a partir de información en la web Herramienta Jorge Gil Peña Ingeniería Superior Informática. ICAI. Se puede observar en la imagen Ilustración 5.6 como se solicita información relativa al usuario para poder clasificar sus intereses. Se diferencian cuatro apartados en los que en cada uno de ellos se solicitan 4 recursos (ejemplos) Los cuatro apartados son: • Grupos de música • Ciudades/países • Artista/actor/personalidad • Películas/Libros Aparte se le solicita al usuario su email, usuario y contraseña. y se le propone rellenar un cuestionario para completar más su perfil. A la hora de introducir datos a la aplicación se diferencia entre dos posibilidades: o bien introducir grupos de música (o cantantes) o el resto . Los artistas o bandas se corrobora su existencia, tipo y su nombre correcto conectándome a MusicBrainz, usando sus librerías con webServices (abandonaron un desarrollo inicial para la consulta RDF debido a sobrecarga). El resto de igual manera se plantea en un futuro usar otras webs que de igual manera gracias a su concepción de web 2.0 se auto rellenan y actualizan y comparten a formato semántico. Pero por ahora se comprueba en DbPedia directamente si el String que introduce el usuario Herramienta para construir bases de conocimiento a partir de información en la web 94 Jorge Gil Peña Ingeniería Superior Informática. ICAI. tiene un recurso del tipo buscado, consultándose recursos que pueden considerarse películas, ciudades, actores o directores que se buscan directamente en DbPedia. A mayor variedad de información introducida se obtienen recomendaciones más variadas. Se tuvo que poner más tipos de recursos de manera que la información recogida de la web no estuviese tan orientadas a la música. 5.3.4. Utilización de la herramienta JENA 95 Para la ejecución de esta aplicación, desde el momento en que se reciben los intereses del usuario, la herramienta Jena es vital para realizar el proceso de esta aplicación. Más específicamente se ha usado para: • Consultas en la web semántica • Representar y almacenar el conocimiento. • Tratar la ontología, recorrerla, modificar recursos . Al comenzar el programa busca en más de un sitio con contenido semántico las palabras clave del usuario (rellenadas en su test), a través de una consulta SPARQL se recibe el modelo asociado a un recurso. También se carga Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. una ontología de un fichero .owl descargado en local. Se trata de la ontología que se ha ido creando mientras se desarrollaba el proyecto DbPedia y que va por la versión 3.2. Se puede observar un trozo de esta ontología básica que va desde conceptos musicales, pasando por empresas y sus relaciones con los deportes, a la cocina y sus utensilios. Un trozo de esta ontológica escrita en forma de tripletas seria: Sujeto es AmericanFootballLeague El predicado o propiedad es subClassOf El object es http://dbpedia.org/ontology/SportsLeague El Sujeto es AmericanFootballLeague El predicado o propiedad es comment El object es A group of sports teams that compete against each other in american football.@en El Sujeto es AmericanFootballLeague El predicado o propiedad es label El object es american football league@en El Sujeto es AmericanFootballLeague El predicado o propiedad es type El object es http://www.w3.org/2002/07/owl#Class El Sujeto es schoolCode El predicado o propiedad es range El object es http://www.w3.org/2001/XMLSchema#string El Sujeto es schoolCode El predicado o propiedad es domain El object es http://dbpedia.org/ontology/School El Sujeto es schoolCode El predicado o propiedad es label El object es school code@en El Sujeto es schoolCode El predicado o propiedad es type El object es http://www.w3.org/2002/07/owl#DatatypeProperty El Sujeto es maximumBoatBeam Herramienta para construir bases de conocimiento a partir de información en la web 96 Jorge Gil Peña Ingeniería Superior Informática. ICAI. El predicado o propiedad es range El object es http://dbpedia.org/datatype/metre El Sujeto es maximumBoatBeam El predicado o propiedad es domain El object es http://dbpedia.org/ontology/Canal El Sujeto es maximumBoatBeam El predicado o propiedad es label El object es maximum boat beam (m)@en El Sujeto es maximumBoatBeam El predicado o propiedad es type El object es http://www.w3.org/2002/07/owl#DatatypeProperty El Sujeto es numberOfBronzeMedalsWon El predicado o propiedad es range El object es http://www.w3.org/2001/XMLSchema#integer El Sujeto es numberOfBronzeMedalsWon El predicado o propiedad es domain El object es http://dbpedia.org/ontology/OlympicResult 97 En la Ilustración 5.7. se puede ver un ejemplo de una parte de la ontología de DbPedia con respecto a la música más concretamente respecto a un sonido o acorde y su relación con el tiempo y las notas. Se trata de la figura Ilustración 5.7, en la que se ve como de acorde (chord) salen una serie d recursos con los que esta relacionados. Por ejemplo se observa que un acorde tiene su origen en una nota. Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. Ilustración 5.14 98 Aunque en este proyecto no se ha usado se provee de la opción de pintar la ontología, gracias a la clase RDFGraph, de manera muy sencilla. Se va a continuar con el resto de usos dados a la herramienta Jena, y es que el resultado de las búsquedas servirá para lanzar otras búsquedas y para recorrer la ontología generada es necesario Jena. Esa información se procesa en un algoritmo que mientras recorre la ontología busca nuevos términos sobre los que lanzar la búsqueda filtrando los resultados y recorriendo en un principio los recursos que cuelgan del padre y asignándoles una nueva propiedad que sirva al algoritmo para saber que ese recurso ha resultado interesante, o modificando ésta si es que el algoritmo informa que tiene que cambiar su valor. Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. El proceso de adquisición de conocimiento se puede hacer durante tantas veces se desee, de manera que se adquieran los hijos del raíz y así sucesivamente. A mayor profundidad se desvirtúa el caso ejemplo del usuario. Así que se ha buscado un equilibrio entre profundidad y obtener variedad y cantidad de resultados suficientes. Actualmente se accede a los recursos hijos y los hijos de estos, por cada acceso inferior se le da menos peso. Pero estos factores están puestos como variables constantes de la clase Algorithym, de manera que son fácilmente modificables. Y van evolucionando con el desarrollo y pruebas del proyecto. Una vez la adquisición de conocimiento se haya hecho varias veces, para cada búsqueda, lo que hará la aplicación es construir un diccionario de términos básicos alrededor de los términos originales del usuario cuando accedió por primera vez, construyendo así una ontología general gracias a la función proporcionada por Jena que es union(model), y que pertenece a la clase Model. Así que un modelo se une a otro modelo. Una vez generado se accederá a esta ontología simplemente para completarlo y consultarlo. Para este complejo proceso conforme la ontología va creciendo con las palabras introducidas, se aplicaran filtros o complementos de términos por parte del algritmo. De manera que las búsquedas estén guiadas o orientadas por el programa. Creciendo de manera controlada en cierto modo la ontología. Estos filtros serán explicados en la base teórica del algoritmo. Herramienta para construir bases de conocimiento a partir de información en la web 99 Jorge Gil Peña Ingeniería Superior Informática. ICAI. 5.3.5. Realización del algoritmo con Java. Introducción Es la parte más abstracta y creativa de todo este proceso pero también tamb una de las más costosas, dado que es la parte e donde el desarrollador tiene mayor libertad para tomar decisiones en torno a cómo realizarlo. Por ejemplo se pueden tomar decisiones en torno torno a una serie de factores: factores • Profundidad rofundidad de la adquisición de conocimiento • Valor alor inicial asignado • Valor alor a los hijos en función del padre • Valor a los recursos hijos de los dominios que interesan al usuario • Namespaces amespaces a emplear • Filtrados de información • Operación a llevar a cabo con valores de distintos pesos • Conexiones o propiedades importantes • Quien tiene un peso o quien no • Valor a asignar a un recurso que el usuario accede y a sus hijos Este algoritmo es uno de los valores añadidos en este proyecto, dado que ya existen programas que recorren erramienta para construir bases de conocimiento a partir de información en la web Herramienta 100 Jorge Gil Peña Ingeniería Superior Informática. ICAI. la web semántica y manejan ontologías. Sin embargo la diferencia de éste estriba en la manera en que se realiza el crecimiento ontológico ya que se emplea el algoritmo para filtrar los resultados y orientar el crecimiento de la ontología. Para ello se ha introducido un concepto nuevo en el manejo de ontologías, que es la asignación de un peso a cada uno los recursos. Base tecnológica Para la asignación de pesos a los recursos no existe, o no se ha encontrado, ninguna herramienta, ni en Jena ni en otra, además de ninguna ontología con una propiedad estandarizada que permita asignarles un peso a los recursos. 101 Para ello se ha desarrollado una propiedad value, la cual se ha incluido en la ontología generada por la aplicación, que se desarrolla con los recursos interesantes. Para ello ha sido necesario a la hora de leer las tripletas con un valor, convertirlo a texto para poder introducirlo en la ontología como si el valor fuese un String y al leerlo transformarlo a int antes de poder manejar ese valor. El algoritmo ha sido desarrollado a base de pruebas con el fin de que el incremento de conocimientos sea lo más aproximado posible a los resultados esperados. Dichos resultados son: • Un número mínimo de recursos • Variedad de tipos de recursos Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. • Suficientes recomendaciones • Resultados coherentes con lo introducido por el usuario • No se repitan siempre los mismos resultados Base teórica Se ha partido de la base teórica de que las cosas que gustan o interesan a los usuarios tienen relaciones entre ellos aunque sean en dominios distintos. Un ejemplo de esto es si te gusta mucho la música mejicana es posible que te guste la literatura mejicana o simplemente que te interese saber quiénes eran los Zapatistas. Un ejemplo más sencillo podría ser: si te gusta una película es probable te guste su banda sonora, por lo que se le asignara un valor de interés a todo lo asociado a lo que el usuario haya indicado que le interese. Se usa un sistema de pesos, de manera, que estas relaciones comentadas no sean más que un punto a favor de los Zapatistas o de la banda sonora de Titanic. Este proceso de recomendación no es tan sencillo y por eso tendrán que aparecer otras conexiones con estos recursos, de manera que aparezcan como los recursos más interesantes para el usuario. Esta base teórica ha hecho que el filtrado a la hora de leer información asociada a un recurso (al hacer la consulta SPARQL inicial) sea mínima. Herramienta para construir bases de conocimiento a partir de información en la web 102 Jorge Gil Peña Ingeniería Superior Informática. ICAI. El filtrado real se hace después, una vez se han leído todos los datos asociados al recurso original. Estos filtros se clasifican de dos formas : • Filtros crecimiento de la ontología: • Filtrado de resultados a) Filtros crecimiento dela ontología: Para saber si un recurso es válido para incorporarlo a la ontología. Estos filtros previenen que la ontología se desarrolle: • En torno a conceptos de vocabulario si no en torno a recursos • En namespaces distintos a los conocidos. • En trono propiedades • Con recursos que no estén correctamente descritos b)Filtrado de resultados: A la hora de analizar si un resultado obtenido es apto para considerarlo como "interesante" para el usuario y mostrárselo. Estos filtros evitan mostrar contenidos : • Pertenecientes a un vocabulario (palabras conceptos), a no ser que interese • El mismo recurso introducido por el usuario Herramienta para construir bases de conocimiento a partir de información en la web o 103 Jorge Gil Peña • Ingeniería Superior Informática. ICAI. Pertenecientes a webs sin estandarizar la presentación de datos Resumen funcionamiento A la hora de introducir datos se diferencia entre dos posibilidades: bien introducir grupos o cantantes, de los que se corrobora su existencia, tipo y su correcto nombre conectándose a MusicBrainz recursos Wikipedia, (cualquier artistas, cosa libros, o bien si no búsqueda de que se pudiese películas,..) que buscar se en busca directamente con una consulta SPARQL sobre la nube de "Linked Data" de la web 3.0. de DbPedia. 104 Una vez se localiza ese path de cada recurso, se genera un modelo inicial, partiendo de la ontología principal de DbPedia, sobre la que se apoyarán todos los contenidos generados, será la ontología asociada al usuario. Una vez se ha generado este modelo y cada recurso buscado se genera un modelo con su contenido, y entonces se integran, usando la librería Jena. Teniendo con cada recurso un modelo mayor, y así sucesivamente. Para saber qué recursos de los encontrados nuevos puede resultar más interesante al nuevo usuario se genera, por cada recurso, una propiedad value y un peso. El proceso de generación de la propiedad value se realiza generando una tripleta más por cada recurso nuevo encontrado como se ha comentado antes. Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. Para recoger los recursos con propiedad value una vez finalizado el algoritmo se pasara a un Map(Collection), almacenando la URI del recurso y su valor. Éste al finalizar será almacenado en la base de datos con el fin de poder recuperarlo la próxima vez que se conecte el usuario. Tras la generación del usuario y conocidos sus intereses, al volver a logear e interesarse (cliquear para obtener mas info) por un recurso la puntuación de este incrementara, y por consiguiente sus recursos hijos, produciéndose un incremento del conocimiento guiado por el algoritmo. Además se pretende establecer un campo de búsqueda, en el cual al buscar nuevos intereses dándoles un peso nuevo de manera que el modelo del usuario aumente y pueda ofrecer más contenidos asociados a su perfil ya a su nueva búsqueda. Los resultados obtenidos se aproximan bastante a lo esperado, sin embargo ha sido complicado el filtrado de contenidos. Debido a la cantidad de propiedades existentes que impiden clasificar de manera automática. Además aunque la DbPedia esté conectada con otras webs semánticas y esto resulte altamente interesante, al no estar estandarizadas las propiedades ni la serializacion de los datos no se ha podido llevar a cabo el proceso de adquisición de datos de esas webs semánticas. Herramienta para construir bases de conocimiento a partir de información en la web 105 Jorge Gil Peña Ingeniería Superior Informática. ICAI. Desarrollo de la propiedad value Los pesos son la clave de este proceso de reforzamiento del conocimiento y es con lo que se puede jugar dando mayor importancia a unos factores o a otros. Básicamente se toma un valor inicial para los hijos de los recursos principales del usuario y se suman estos valores en caso de que coincidan. Al repetirse el proceso con los hijos, los siguientes tendrán un valor igual al valor del padre dividido entre 2 más un valor fijo. Existe un valor mínimo también. Como se puede ver en el siguiente código se establecen estáticamente estos valores para poder ir cambiándolos de manera cómoda ya que están repartidos a lo largo del algoritmo. Como se comenta el primero es el número mínimo de recursos de cada tipo. La segunda constante hace referencia al valor inicial de los hijos. Y la tercera es el valor límite para darle fiabilidad a un resultado y mostrarlo como recomendación. private static int numRes =6; //Number of reesources private static int valueStart =2; //Start value for the algorithym private static int limit=5; //Number limit for showing the results Como se ha comentado repetidamente es un proceso repetitivo y a base de pruebas se va depurando para aproximarse a los resultados esperados o deseados. Existe Herramienta para construir bases de conocimiento a partir de información en la web 106 Jorge Gil Peña Ingeniería Superior Informática. ICAI. un método con el que se establece con que profundidad se realiza este proceso, este es developModel. //Get more profundity data Integer value=(Integer)Integer.parseInt(obj.toString()); modelNew=DbPedia.getRelatedModelFull(path); int valueForResources=1; (value>1){ valueForResources=value/2; } En este método se ha encontrado con algún problema tecnológico ya que mientras se recorre la ontología para ir añadiendo nuevos se ha de comprobar si el recurso ya existe y en caso afirmativo sumar los valores de su peso, eliminando la sentencia anterior, usando el nuevo peso para calcular el peso de los nuevos hijos y demás sumarle a la ontología la nueva ontología asociada al recurso del que se quiere desarrollar. Este proceso ha sido complicado llevarlo a cabo ya que salía una excepción en Java de concurrent modification y que avis de que mientras se recorre un iterator se está intentando modificar, produciendo un error. Finalmente se ha optado por rellenar un arraylist con lasa tripletas a eliminar y eliminarlas al finalizar el recorrido y antes de unir todas las ontologías. Herramienta para construir bases de conocimiento a partir de información en la web 107 Jorge Gil Peña Ingeniería Superior Informática. ICAI. Evolución de algoritmo El algoritmo es lo que hace que este proyecto tenga o no un valor añadido, de ahí que se haya dedicado este subapartado a una explicación un poco profunda del funcionamiento de este. Hay que recalcar que lo bueno de disponer de un algoritmo es que tiene la ventaja de que siempre se podrán introducir más factores que afecten a éste y siga evolucionando. El algoritmo se encuentra en constante desarrollo y mejora, través de pruebas, filtrados e incorporaciones. Incluyendo reglas de conocimiento, o combinándolo con un algoritmo de aprendizaje automático. 108 Posteriormente el algoritmo se podrá complicar más generando un algoritmo en el que según el usuario y el perfil en el que establezca los dominios que le interesan se le dará más o menos peso a todos los hijos y subhijos de un dominio. Así si un recurso aparece como interesante por varios sitios, tiene mayor peso, y por consiguiente mayor probabilidad de aparecer entre los recomendados. 5.3.6.Crear y preparación del proyecto web Una de las tareas principales realizadas para crear un proyecto web ha sido cambiar las entradas y salidas del código inicial del programa para que pudiesen Herramienta para construir bases de conocimiento a partir de información en la web ser Jorge Gil Peña Ingeniería Superior Informática. ICAI. desarrolladas en modo web. Esto permitía un mayor alcance al proyecto y una mayor proyección hacia el exterior. Aprovechando que Internet es un gran modo de exponerse a todo el mundo, sin necesidad de conocimientos informáticos, ni de Inteligencia Artificial o de las ontologías. Para llevar a cabo este proceso ha sido necesario implementar todos los Servlets y las páginas web en JSP, y las tecnologías correspondientes a JSP que se especificaran en el siguiente capítulo. En este caso se ha usado Tomcat. y Eclipse ha facilitado mucho la tarea de conversión del proyecto ya que rellena los xml correspondientes, donde se describen las relaciones entre los Servlets, los JSP y las clases Java, además de incluir las librerías necesarias e incluso generar la estructura de ficheros y paquetes de un proyecto web y en caso de necesidad genera el paquete web, el WAR. Al tratarse de un proyecto web la aplicación pasó a tener una estructura de carpetas configurada en forma de árbol de directorios. Como se puede ver en la siguiente imagen Ilustración 5.8 con la carpeta Web Content como raíz del proyecto web y que contiene tanto las páginas Web, como dos directorios que son necesarios para definir la configuración de la aplicación. Estos directorios son: META-INF: Contiene el fichero context.xml. WEB-INF: Contiene los ficheros de configuración como: Herramienta para construir bases de conocimiento a partir de información en la web 109 Jorge Gil Peña • config.xml config.xml, Ingeniería Superior Informática. ICAI. que contiene ontiene instrucciones de configuración que atañen a las clases java de respaldo de las páginas Web. Aquí se inicializan variables, se enlaza código Java con páginas Web, se indica cómo se salta de una página Web a otra, etc. • web.xml: Recoge parámetros de configuración generales de la aplicación, tales como cuales son las páginas de inicio y error, qué recursos adicionales usa la aplicación, temas de seguridad, etc. 110 Ilustración 5.15 erramienta para construir bases de conocimiento a partir de información en la web Herramienta Jorge Gil Peña Ingeniería Superior Informática. ICAI. Los ficheros JSP sin embargo se quedan fuera de estos directorios y cuelgan directamente de WebContent. Un nivel por arriba están las carpetas: Source Packages: Contiene nuestro código Java. Que envía los .class ala carpeta classes de WEB-INF. Libraries: Las librerías que necesita nuestro programa. Hay que diferenciar en ese proceso el hecho de crear un proyecto web en un entorno de trabajo o desarrollo como puede ser Eclipse, y en el proceso de llevar el proyecto Web a explotación. Para poner el servidor en explotación, hay que preparar el entorno web con el correspondiente servicio escuchando peticiones y llamando a la JVM para ejecutar el código en Java. Primero, para poder acceder al ordenador desde el exterior ha sido necesario un análisis de conocimiento de la red. Tras concluir que se disponía de un punto de acceso con IP pública dinámica. Este punto de acceso es un Router y genera en el interior una red privada de la que será el Gateway a Internet. Para la instalación y puesta a punto del servidor web, ha sido necesario dar de alta en DynDNS, para redireccionar la web a este Router con IP dinámica. Se desactivo el servicio DHCP y se estableció para el servidor una IP fija. Lo que ha permitido usar reglas Herramienta para construir bases de conocimiento a partir de información en la web 111 Jorge Gil Peña Ingeniería Superior Informática. ICAI. de NAT para redireccionar los paquetes. Abriendo los puertos correspondientes. Posteriormente, en el servidor se ha contado un ordenador Windows 7, con un servidor web y un contenedor de Servlets Tomcat 6 que redirigirá las peticiones al servidor. El servidor web será el encargado de dirigir al Servlet concreto para que se ejecute enviándolo a la máquina virtual de Java. En este servidor se encontrará el código de la aplicación Java y los JSP con JavaScript . Al cliente se le enviarán los response del HTML tras rellenar los JSP, y los objetos EL para rellenar la info recogida del servidor, se enviarán el HTML y el CSS para que el software cliente pinte el interfaz visual. 112 Los objetivos han sido cumplidos con creces con respecto a este desarrollo, ya que se ha conseguido llevar a cabo el desarrollo del servidor web sin grandes contratiempos. Quizás podría mejorarse el tiempo de respuesta, pero un tiempo de respuesta corto no estaba planteado como objetivo del proyecto. Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. 6. Desarrollo de la aplicación myWeb L a implementación de este proyecto como es lógico ha quedado muy condicionada por la estructura general de esté. Y por lo tanto de las tecnologías empleadas. En este proyecto se dividen claramente cuatro módulos lógicos de programación según la manera en la que se ha trabajado con ellos. Por el tipo de desarrollo hay claramente cuatro módulos: • Modulo Java • Módulo Servlets • Módulo JSP • Modulo base de datos 6.1. Modulo Java 6.1.1. Introducción El modulo Java es el módulo de la lógica de negocio, el modulo principal, en el que se desarrolla el programa. Se Herramienta para construir bases de conocimiento a partir de información en la web 113 Jorge Gil Peña Ingeniería Superior Informática. ICAI. va a dividir esta parte del código en dos: una donde se explica la implementación de la parte del código correspondiente a Jena y otra donde se explica cómo se desarrolla el algoritmo. Aunque estas están en n contacto directo. El código realizado en Java se encuentra en la carpeta de Java Resources, Resources, normalmente conocido como "src". Como se puede observar la Ilustración 6.1 este e se encuentra a su vez clasificado en paquetes. paquetes A recalcar de ellos las DAO, el dominio que se refiere a los propios del sistema,, el de Jena donde se encuentran las clases que interactúan con Jena y los de MusicBrainz usicBrainz son los encargados de interactuar con MusicBrainz. 114 Ilustración 6.1 erramienta para construir bases de conocimiento a partir de información en la web Herramienta Jorge Gil Peña Ingeniería Superior Informática. ICAI. 6.1.2. Parte Jena En la parte del código Jena se realiza la obtención de la primera ontología sobre la que se va a trabajar que es un archivo .OWL, una ontología completa descargada de DbPedia y que se lee con las funciones de Jena creadas para ello. La lectura de la OWL genérica que servirá de base para la ontología del usuario y que se encuentra en una carpeta local se realiza creando primero un modelo vacio con createDefaultModel, luego se genera un InputStream con la dirección del fichero y finalmente se lee de ella con la función de model read(). Como se ve en el siguiente código. Lectura de un fichero OWL String inputFileName="C://Users//JORGE//Desktop//Proyecto//dbped ia_3.5.1.owl"; Model model = ModelFactory.createDefaultModel(); // use the FileManager to find the input file InputStream in = FileManager.get().open( inputFileName ); if (in == null) {throw new IllegalArgumentException( "File: " + inputFileName + " not found"); } // read the RDF/XML file model.read(in, null); Herramienta para construir bases de conocimiento a partir de información en la web 115 Jorge Gil Peña Ingeniería Superior Informática. ICAI. Tras generar la URL del recurso que el usuario ha dicho que le gustaba o le interesaba se lee su contenido llamando a la función getRelatedModelFull() de DbPedia, que devuelve un modelo nuevo. Llamada a getRelatedModelFull Model modelNew=DbPedia.getRelatedModelFull(path); Se lee su contenido tras la consulta en SPARQL y se genera la ontología asociada al recurso leído con la función ResultSetFormatter:toModel(), que devuelve un modelo. 116 Función getRelatedModelFull String serviceEndpoint="http://dbpedia.org/sparql"; if (pathResource.startsWith("<")&& pathResource.endsWith(">")){ pathResource.replace("<", ""); pathResource.replace(">", ""); } String qsInfoDbpedia = "SELECT DISTINCT * WHERE {{<"+pathResource+"> ?property ?resource} UNION{?resource ?property <"+pathResource+">}}"; ResultSet rs=DAO_Sparql.selectQuery(pathResource,serviceEndpoint,qsInfoD bpedia); // System.out.print("RS tiene "+rs.getRowNumber()); Model mo= ResultSetFormatter.toModel(rs); Se procede luego a la unión. La unión de la ontología recibida con la ontología general del usuario, de manera Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. que va creciendo con cada nuevo recurso, o en caso de que ya exista le sumará el nuevo peso al peso anterior del recurso. Función DbPedia.union() model=DAO_Model.modelUnion(model,modelNew); int tamaño2=(int) model.size()-tamaño1; System.out.println("\nHa devuelto "+info+"resources modificados de "+name + " añade al model "+modelNew.size()+"="+tamaño2+"\n\n"); 6.1.3.Parte Algoritmo 117 La parte del código Java que se encarga de controlar las clases encargadas del algoritmo de recomendación de contenidos se encuentra en Jenate, las funciones principales que se explicarán a continuación son: • main(listInterestedResources, listInterestedArtists) • fillModel(pathResource, model) • convertMapToArray(mapUrlResources, urlsResources, urlsPlaces, urlsPersons) Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. Map<Integer,Collection<DbPediaResource>>main(L ist<String>listInterestedResources,List<Artist>listIntere stedArtists) En la función main es en la que se ejecuta toda la lógica de recomendación de contenidos. Recibe de los Servlets correspondientes un array de artistas y de recursos con el que comenzar a buscar y ejecutar la lógica de la búsqueda y recomendación de contenidos. A continuación se puede ver cómo va llamando a las distintas clases y recolectando datos para acabar devolviendo el Map de datos asociados al usuario con formato Integer,Collection<DbPediaResource>. 118 Función main while (i<listInterestedResources.size()) { System.out.println(listInterestedResources.get(i).toString()); pathResource=getDbPediaPathResource(listInterestedResources.ge t(i)); model=fillModel(pathResource,model); i+=1; } System.out.println("El modelo tiene "+model.size()+" tuplas"); //get list of ARTIST i=0; while (i<listInterestedArtists.size()) { System.out.println(listInterestedArtists.get(i).getName().toString()); pathResource=getDbPediaPathArtist(listInterestedArtists.get(i)); model=fillModel(pathResource,model); i+=1; } System.out.println("El modelo tiene "+model.size()+" tuplas despues de los artist"); //Where the model is desarrolleted and oriented by me Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. Model model2=Algorithym.developModel(model,listInterestedResources,lis tInterestedArtists); System.out.println("El modelo tiene "+model2.size()+" tuplas despues develop"); //Where I search the most valuables resources Map<Integer, Collection<DbPediaResource>> mapUrlResources=Algorithym.getMostValuableResources(model2); Model fillModel(String pathResource,Model model) La función fillModel se encarga de rellenar el modelo nuevo de la propiedad value asignándole el valor correcto, de ahí que reciba también el model, para comprobar su valor anterior en caso de que exista. En el se realiza un filtrdo como se ha comentado en la explicación del algoritmo de manera que la ontología no crezca de manera descontrolada. A continuación se puede ver un ejemplo de cómo funcionan los filtros que tras el filtrado con el if, son eliminadas las tripletas correspondientes en caso de que sea necesario. Función fillModel for (String pathNotValid : new String[]{ "http://dbpedia.org/ontology/Band", "http://www.w3.org", "http://dbpedia.org/ontology/Organisation"}) { if (path.startsWith(pathNotValid)) { if (!statementsEliminar.contains(st)) { statementsEliminar.add(st); Herramienta para construir bases de conocimiento a partir de información en la web 119 Jorge Gil Peña Ingeniería Superior Informática. ICAI. Model convertMapToArray(mapUrlResources, urlsResources, urlsPlaces, urlsPersons) Y convertMapToArray se encarga como dice su nombre de convertir el Map en los arrays clasificados como se ha mostrado en el filtrado del capítulo anterior, tras un nueva consulta a DbPedia, para enviárselo al JSP. La clase Algorithym es la que básicamente se encarga de todos los aspectos relacionados con el algoritmo, en ella las funciones principales son las siguientes: • int fillPropertyValue(Model modelRelatedTerms, String pathResource, Model model,int z) • Map<Integer,Collection<DbPediaResource>> 120 getMostValuableResources(Model model) { • developModel(Model model,List<String> listInterestedResources,List<Artist> listInterestedArtists) Se asigna dentro de la ontología un valor a cada recurso que podría resultar interesante, diferenciándose de si es la primera vez que se accede a dicho recurso o no. int fillPropertyValue(Model modelRelatedTerms, String pathResource, Model model,int z) Como se puede leer en su nombre en inglés esta función es la encargada de dentro de una ontología y según Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. distintos pesos rellanar la ontología con los atributos o propiedades value. Se ve al final que genera en: modelRelatedTerms.add(r1, fillPropertyValue: modelRelatedTerms .createProperty("vvalue"), String.valueOf(value2)); Generando la tripleta r1>property:value->value2. Función fillProperrtValue Property pvalue =modelRelatedTerms.getProperty("vvalue"); (model.contains(r1, pvalue)){ Statement st=model.getProperty(r1, pvalue); RDFNode object=st.getObject(); int valor=Integer.parseInt(object.toString()); //System.out.println("Entro en fillProp y modifico "+object.toString()+ "de valor"+valor); valor+=2*z; model.remove(st); String s=new String(); modelRelatedTerms.add(r1, modelRelatedTerms.createProperty("vvalue"), String.valueOf(valor)); System.out.print(r1.getLocalName()+ " valor="+valor+","); }else{ int value2=1*z; System.out.print(r1.getLocalName()+ " valor="+value2+","); modelRelatedTerms.add(r1, modelRelatedTerms.createProperty("vvalue"),String.valueOf(value2) ); Se establece un peso distinto, en función del peso del recurso del que provenga el recurso, para cada nuevo recurso. Obsérvese valueForResources=value/2. Herramienta para construir bases de conocimiento a partir de información en la web 121 Jorge Gil Peña Ingeniería Superior Informática. ICAI. Función fillProperrtValue Model modelNew=DbPedia.getRelatedModelFull(path); int tamaño1=(int) model.size(); int valueForResources=1; if(value>1){ valueForResources=value/2; } int info=fillPropertyValue(modelNew,path,model,valueForResources); model=DAO_Model.modelUnion(model,modelNew); int tamaño2=(int) model.size()-tamaño1; getMostValuableResources(Model model) { Luego se lee la ontología entera del usuario en busca de los recursos con un valor mayor, usando el método getMostValuableResources que devuelve una serie de arrays con recursos según el tipo. Se recogen los recursos más valorados del Map del usuario. Función getMostValuableResources Set <Integer> s=mapUrlResources.keySet(); Iterator it =s.iterator(); //Get the bigger value of the keys int mayor=0; while(it.hasNext()){ int valor =(Integer) it.next(); if (valor>mayor){ mayor=valor; } } Hay que tener en cuenta, que una vez cogidos los recursos de mayor valor para poder mostrarlos y enviarlos en un array al JSP, se necesita recoger info para saber de Herramienta para construir bases de conocimiento a partir de información en la web 122 Jorge Gil Peña Ingeniería Superior Informática. ICAI. qué tipo de recurso se trata, para recoger su foto y su nombre o label. Se diferencia entre si los recursos recibidos son artistas u otro tipo de recursos, para luego continuar filtrándolos. Se puede comprobar cómo se filtran los resultados confirmando si el type de recurso acaba con la palabra Band, o si contiene la palabra "artist", teniendo en cuenta que tipo es un array ya que no están estandarizadas las propiedades. Función getMostValuableResources Iterator <String>it=dpr.getType().iterator(); Boolean artist=false; while(it.hasNext() && !artist){ if(type.endsWith("sMusicGroups") || type.endsWith("Band") || type.contains("Artist") || type.contains("Singers")){ artist=true; } } if(artist && urlsArtists.size()<15){ urlsArtists.add(dpr); System.out.println("Es un artista+tamaño="+urlsArtists.size()+"\n"); }else if(!artist && urlsResources.size()<15){ urlsResources.add(dpr); System.out.println("Es un resource+tamaño="+urlsResources.size()+"\n"); } También se filtran los recursos del Map para establecer de qué tipo de recurso se trata. Se realiza comprobando las propiedades o recursos asociados a un Herramienta para construir bases de conocimiento a partir de información en la web 123 Jorge Gil Peña Ingeniería Superior Informática. ICAI. recurso recogidos con una consulta SPARQL sobre el recurso padre recogiendo los hijos con la propiedad rdf:type. Pero al no estar estandarizado como se puede observar se comprueban si los tipos contienen palabras o si pertenecen a un namespace. Este proceso va refinándose a base de pruebas. Y aprovecha el filtrado para clasificar los resultdos. Función getMostValuableResources while(it.hasNext() && !artist){ String type=it.next(); if(type.endsWith("sMusicGroups") || type.endsWith("Band") || type.contains("Artist") || type.contains("Singers")){ artist=true; System.out.println("Es un artista+tamaño="+ urlsArtists.size()+"\n"); }else{ if (type.endsWith("Person")){ person=true; System.out.println("Es una persona+tamaño="+urlsPersons.size()+"\n"); } else{ if( type.contains("Place") || type.equals("Settlement")){ place=true; System.out.println("Es un sitio+tamaño="+urlsPlaces.size()+"\n"); }else{ Herramienta para construir bases de conocimiento a partir de información en la web 124 Jorge Gil Peña Ingeniería Superior Informática. ICAI. Se van filtrando filtrando los contenidos del modelo de manera que si por ejemplo tienen la propiedad value,, entonces es interesante para el usuario. Luego habrá que ver si es suficientemente interesante para este. Eso dependerá de su valor como se verá a continuación en el desarrollo desarrollo del algoritmo. 6.2. Módulo Servlets En este proyecto ha sido necesario implementar bastantes Servlets al tratarse de un servicio web con bastantes funcionalidades, funcio aunque todas muy simples. Se van a ver un par de ejemplos. Como se puede ver en la Ilustración 6.2 la lista de Servlets es muy sencilla. Ilustración 6.2 erramienta para construir bases de conocimiento a partir de información en la web Herramienta 125 Jorge Gil Peña Ingeniería Superior Informática. ICAI. La lista de Servlets contiene básicamente los mismos que los casos de uso analizados al comienzo de la memoria en el capítulo 5, en el apartado 5.2.1. Se van a presentar sólo los más importantes o significativos, que son: • New User • Login • MoreInfo • SeeRecomendations El NewUser es un Servlet de creación de contenidos de usuarios. En él se ve como llaman al código Java, creando primero un usuario y avisando si el usuario ya existe. Servlet NewUser if (!login.equalsIgnoreCase("") && !pass.equalsIgnoreCase("")) { usuario = ServicioUsuarios.getInstancia().generaUsuario(login,pass,email); }else{ System.out.print("Usuario ya existe"); } Y luego generando array de contenidos o recursos interesantes para el usuario nada más recibirlos de la encuesta con el fin de poder pasárselo al código Java. Se Herramienta para construir bases de conocimiento a partir de información en la web 126 Jorge Gil Peña Ingeniería Superior Informática. ICAI. puede ver como se añaden a un array, en este caso los artistas. Servlet NewUser if(!grupo1.equals("")){ listResourcesArtist.add(grupo1);} if(!grupo2.equals("")){ listResourcesArtist.add(grupo2);} if(!grupo3.equals("")){ listResourcesArtist.add(grupo3);} if(!grupo4.equals("")){ Finalmente se ve como envía un Servlet la respuesta a un JSP: 127 Servlet Login request.setAttribute("urls", urls); RequestDispatcher rd = null; try{ rd=request.getRequestDispatcher("recomendaciones.jsp"); rd.forward(request,response); El Servlet Login sirve para acceder al menú de usuario. seeResources para al conectarse a la web una vez dado un usuario de alta que desde el menú de usuario el usuario pueda ver los recursos almacenados para él. El Servlet MoreInfo es el único que no estaba en los caso de uso con ese nombre, sino como seleccionarRecurso y es que este se encarga de mostrar más información de un Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. recurso que el usuario cliquee y por lo tanto significa que le interesa un recurso, dándole más valor a su peso y a los hijos. Es muy interesante este Servlet ya que recibe directamente la llamada desde el JSP con una llamada al Servlet generada de manera dinámica, que luego se mostrará en el JSP. Entonces se conecta a la URL recibida busca información asociada al recurso y la muestra en el JSP, ficha_recurso.jsp. Servlet MoreInfo pathResource=(String) request.getParameter("pathResource"); DbPediaResource dp=DbPedia.getMoreInfo(pathResource); 128 En el siguiente recuadro está dispuesto el fichero xml de configuración del servidor web: Web.xml <servlet-name>Login</servlet-name> <servlet-class>servlets.Login</servlet-class> </servlet> <servlet> <servlet-name>newUser</servlet-name> <servlet-class>servlets.newUser</servlet-class> </servlet> <servlet> <servlet-name> moreInfo</servlet-name> <servlet-class>servlets.moreInfo</servlet-class> </servlet> <servlet-mapping> <servlet-name>Login</servlet-name> Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. <url-pattern>/Login</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>newUser</servlet-name> <url-pattern>/newUser</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>moreInfo</servlet-name> <url-pattern>/moreInfo</url-pattern> </servlet-mapping> 6.3. Módulo JSP El módulo JSP es el que se encuentra dentro de la carpeta WEB-CONTENT del proyecto web. En esta carpeta se encuentran todos los JSP, que son los encargados de la lógica del diseño implementada. Con la librería JSTL se puede invocar a los ficheros Java que se han enviado vía request a la JSP o que se encuentran a la session, un ejemplo seria: ${DbPediaResource.image}, y esto se hace de la forma objeto.atributo, y directamente imprime por pantalla el toString() del objeto que recibe por un get del atributo. La carpeta de ficheros JSP se encuentra como se ha comentado anteriormente en WEB-CONTENT, y queda como se ve en la Ilustración 6.3. Herramienta para construir bases de conocimiento a partir de información en la web 129 Jorge Gil Peña Ingeniería Superior Informática. ICAI. Ilustración 6.3 130 En el ejemplo ej siguiente se e puede observar cómo se añade una librería a un JSP, en este caso la core de JSTL, que es añadida en el index.jsp es: index.jsp <%@page import="java.sql.Time" %> <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> Aquí se puede ver como se emplea la librería JSTL, para realizar el for each, pudiendo realizar un poco de lógica dentro del HTML. Este es el bucle con el que se muestran las recomendaciones, tantos bucles de estos como tipos de erramienta para construir bases de conocimiento a partir de información en la web Herramienta Jorge Gil Peña Ingeniería Superior Informática. ICAI. recursos reciba. Es curioso, como se ha comentado antes, la llamada al Servlet moreInfo, que envía por get la URL del recurso que está siendo generado dinámicamente siempre y cuando se pulse porque está dentro de un link. recomendaciones.jsp <c:forEach items="${urls}" var="DbPediaResource"> <div class="recomendacion"> a href="moreInfo?pathResource=<c:out value="${DbPediaResource.uri}"/>" title="${DbPediaResource.name}"> <img src="${DbPediaResource.image}" align="left" width="50" height="75" alt="Cartel de ${DbPediaResource.name}" /> <h3>${DbPediaResource.name}</h3></a> <a href="${DbPediaResource.uri}" title="${DbPediaResource.name}"> ${DbPediaResource.uri}<br> </p> </a> 131 Los fichero JSP también pueden construir páginas web normales, solo que las ejecutará con el contenedor de Servlets también con su consiguiente pérdida de tiempo. ejemplo.jsp <div id="cabecera"> <a id="logo" href="newUser" title="Página de inicio de My Web"> <h1>My Web</h1> <img src="img/logo.png" /></a> <div class="clear"> </div> <ul id="barra_navegacion"> <li > <a id="libros" href="#"> <span> Libros </span> </a> </li> <li > <a id="peliculas" href="#"> <span> Peliculas </span> </a> </li> <li > <a id="series" href="#"> <span> Series </span> </a> </li> Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. Aquí se puede ver como el JSP hace el envió de formulario a la clase del Login con el método action, desde la página principal en la que el usuario se conecta. index.jsp <div id="contenido"> <h1>Acceso a tus recomendaciones- myWeb</h1> <form action="Login" method="POST"> Login: <input type="text" name="login" value="" /> Password: <input type="password" name="pass" value="" /> <input type="submit" value="Entrar" /> </form><br><br> También se han empleado código JavaScript de manera que no se sobrecargue el servidor y ganando tiempo para el usuario ya que valida el formulario antes de enviarlo: encuesta.jsp function MM_validateForm() { if (document.getElementById){ var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.argum ents; for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]); if (val) { nm=val.name; if ((val=val.value)!="") { if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@'); if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n'; } else if (test!='R') { num = parseFloat(val); if (isNaN(val)) errors+='- '+nm+' must contain a number.\n'; if (test.indexOf('inRange') != -1) { p=test.indexOf(':'); min=test.substring(8,p); max=test.substring(p+1); Herramienta para construir bases de conocimiento a partir de información en la web 132 Jorge Gil Peña Ingeniería Superior Informática. ICAI. if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n'; } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; } } if (errors) alert('The following error(s) occurred:\n'+errors); document.MM_returnValue = (errors == ''); }} 6.4. Modulo base de datos El modulo de base de datos implementado con MySql, está compuesto por tres tablas básicas como se ha visto en el diseño de base de datos. La de usuario o user donde se almacena la info relativa al usuario al darse de alta. La de resources, donde se almacenan los recursos con la información básica para poder acceder a ellos de manera rápida. Almacenando los nombres de estos, su imagen, su URL y sus tipos. Y por último la conexión entre los recursos y los usuarios, con su valor relativo. El lenguaje empleado ha sido el de DTD, para definir las tablas. Para crear la tabla user se utilizó la siguiente sentencia: Creación de tabla user CREATE TABLE USER (name varchar (100), email varchar(150), pass varchar (50)); Aparte para conectar la base de datos con el código Java, se ha usado el conector dado por MySQL y se ha Herramienta para construir bases de conocimiento a partir de información en la web 133 Jorge Gil Peña Ingeniería Superior Informática. ICAI. generado un fichero DAO_MySQL, para acceder de manera segura e independiente a la base de datos. Así se genera una conexión por usuario y se ejecuta las sentencias Aquí hay un ejemplo de escritura cundo se almacenan los datos del usuario recién dado de alta. DAO_MySQL.java public static void storeResource(String resource, String urlResource, String image,String type) throws SQLException { Statement st = conexion.createStatement(); st.executeUpdate("INSERT INTO resources(name,url,image,type) VALUES ('"+resource+"','"+urlResource+"','"+image+"','"+type+"')"); st.executeUpdate("INSERT INTO properties (name,url,value) VALUES ('"+resource+"','"+urlProperty+"','"+value+"')"); /st.executeUpdate("INSERT INTO user_resources (nameUser,nameResources,value) VALUES ('"+user+"','"+resource+"','"+value+"')"); } Aquí se muestra un ejemplo de lectura del fichero usando la clase DAO de acceso al servidor de MySQL, en este se lee de la clase resources para poder pintar en la página recomendaciones de manera rápida sin tener que acceder a Internet a coger la foto y el tipo de recurso. DAO_MySQL.java public static boolean readResource(String urlResource) throws SQLException { Statement st = conexion.createStatement(); st.executeUpdate("SELECT (name,url,relation,resource) FROM resources WHERE url='"+urlResource+"')"); // TODO Auto-generated method stub ResultSet rs=st.getResultSet(); return rs.next(); Herramienta para construir bases de conocimiento a partir de información en la web 134 Jorge Gil Peña Ingeniería Superior Informática. ICAI. Con esta demostración de los accesos a base de datos se finalizan los ejemplos de implementación. La verdad es que no ha habido grandes problemas con el desarrollo de estas tecnologías, en todo caso los Servlets y los JSP que han sido un poco más novedosos. Sin embargo, los Servlets una vez se tiene uno funcionando el resto son iguales, en cambio el tratar con los JSP y sobre todo con la librería de JSTL y El sí que ha sido más costoso en algún momento, pero han resultado muy útiles e interesantes. 135 Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. 7. Caso ejemplo Se va a proceder a ejecutar un ejemplo con el fin de ver los resultados obtenidos en un caso ejemplo. No se aseguran los mismos resultados en todo momento ya que el programa está expuesto a cambios constantes. Acceso a la web 136 Ilustración 7.1 Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. Acceso a encuesta En la Ilustración 7.2. se puede observar el tipo de encuesta que se realiza preguntando por los gustos del usuario e intereses. Entre ellos por sus peliculas, libros, actores y artistas favoritos. 137 Ilustración 7.2 Tras la imagen Ilustración 7.2. al enviar el formulario se comienza a procesar el algoritmo, que lleva un intervalo de tiempo largo al tratarse de la primera vez que se accede. Es importante recalcar que la rapidez de ejecución dependerá de la conexión de la que se dispong, tanto el Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. cliente como el servidor, ya que para recibir los datos que rellenan la ontología se conecta a Internet. Los resultados obtenidos se muestran en la pantalla principal de recomendaciones, como se puede observar en la Ilustración 6.3. Recursos ofrecidos 138 Ilustración 7.3 Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. Posteriormente se accede a un recurso para coger más información y el usuario marcaria ese recurso como me interesa. Al resultar Paula Abdul desconocida se accede a ella. Quedando los resultados como en la Ilustración 5.4. Seleccionar Recurso 139 Ilustración 7.4 Accediendo desde la página principal con el usuario generado [email protected], accedo a su menú principal. Y desde ahí se puede acceder al resto de opciones de la aplicación. Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. 8 Especificaciones Tecnológicas 8.1. Proyecto en desarrollo Tomcat C ontenedor de Servlets desarrollado bajo el proyecto Jakarta en la Apache Software Foundation. Tomcat puede funcionar como servidor web por sí mismo. Implementa las especificaciones de los Servlets y de JavaServer Pages (JSP) de Sun Microsystems. Dado que Tomcat fue escrito en Java, funciona en cualquier sistema operativo que disponga de la máquina virtual Java. Eclipse Helios Este IDE de Java ha sido descargar de la web de Eclipse, la última versión. En este caso se trataba de la versión de Eclipse Helios, y se descargó la que ponía "Eclipse IDE for Java developers". Con un peso de unos 200MB, y la versión de 64 bits, correspondientemente con la arquitectura del ordenador usado. Tras su posterior descarga es necesaria su extracción del zip y su posterior instalación. Al crear el proyecto, se crea un proyecto en la pestaña de web, Dynamic web Project, ya que se va a generar contenido dinámico. Al ir a Herramienta para construir bases de conocimiento a partir de información en la web 140 Jorge Gil Peña Ingeniería Superior Informática. ICAI. ejecutar se indica que se tiene que seleccionar tanto un servidor web, como una JDK para compilar, con su correspondiente JVM(Java Virtual Machine). Tomcatv6 Al seleccionar un servidor web para probar el proyecto por defecto viene el IBM WebSphere v 6.0. sin embargo al no tratarse del servidor que se va a usar para la producción del proyecto se decidió ir a la pestaña de apache en busca de mi querido Apache Tomcat 6.0..El problema es que ya no se encuentra, y se indica donde está instalado para descargarlo. Se buscó en la web y se descargó de tomcat.apache.org, la binary distribution de la versión 6.0. de este reconocido servidor web. Tras descomprimirlo no es necesario instalarlo, se indica su ruta al eclipse y al ir a ejecutar el proyecto avisa de que no arranca correctamente. Se intenta levantar por comandos y entonces un error mucho más claro aparece. Ni la JAVA_HOME ni la JRE_HOME están definidas. Se procede a la búsqueda de dónde se crean estas variables, ya que las variables globales del SO según la versión del Windows se hace de una forma o de otra. Sin embargo normalmente esta en propiedades del sistema en opciones avanzadas, en la parte inferior que pone variables de entorno. Ahí se pasa a definirlas. Herramienta para construir bases de conocimiento a partir de información en la web 141 Jorge Gil Peña Ingeniería Superior Informática. ICAI. JRE Al ir a ejecutar el proyecto aparece un aviso de que la JRE que se va a usar es la jre_1.6.0_03, que es la última versión disponible, o por lo menos la ultima que viene instalada por defecto en esta JDK, por consiguiente en esta versión del compilador Eclipse. Subversion Durante el desarrollo del proyecto se ha ido subiendo el código en un host de SVN, donde se almacena aparte la documentación que se va cogiendo y una wiki en la que se apuntaba alguna cosa. La web del servicio de SVN web es http://www.xp-dev.com/, el nombre de mi proyecto es dentro JenaSourceControl, proyecto jena2. Para ir actualizando el contenido se ha usado un plugin de Eclipse, el conocido subversión, que con un solo clic solicitando el usuario y contraseña, permite actualizar las distintas versiones del código. (17) 8.2. Proyecto en explotación Tomcat v6 Servidor Web Una vez conectados los Servlets correctamente con el código de mi algoritmo se instala una versión de este Herramienta para construir bases de conocimiento a partir de información en la web 142 Jorge Gil Peña Ingeniería Superior Informática. ICAI. contenedor de Servlets de manera que pueda correr como servicio Windows o demonio, y este a la escucha tras arrancarse el ordenador. Todas las peticiones entrantes se encarga el Tomcat v6 de responderlas. Se puede comprobar que si se a accede a generar un usuario, luego te deja logear con ese nombre de usuario y acceder a su menú, mostrándose sus contenidos. Establecido el servidor Tomcat 6.0, corriendo con el contexto del programa a la escucha de las peticiones. Recibe las peticiones del router, gracias a que el router envía los paquetes recibidos del exterior al puerto 80, los re direcciona, a la IP publica de mi servidor web. DynDNS Ahora 143 la web está colgada en: http://myweb.endofinternet.net/. Se puede acceder desde cualquier lugar, gracias a que el router esta dado de alta en DynDNS. Es un servidor de nombres que se encarga de publicar y recibir las IPs de los puertos dinámicos. Se ha planteado en un futuro la compra de un dominio más sencillo. (18) JVM La Java Virtual Machine que usa el apache es el que se encarga de convertir el código bytecode, tanto los .jar como los .class, en código maquina. Una Máquina virtual Java (en inglés Java Virtual Machine, JVM) es un máquina Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. virtual de proceso nativo, es decir, ejecutable en una plataforma específica, capaz de interpretar y ejecutar instrucciones expresadas en un código binario especial (el Java bytecode), el cual es generado por el compilador del lenguaje Java. El código binario de Java no es un lenguaje de alto nivel, sino un verdadero código máquina de bajo nivel, viable incluso como lenguaje de entrada para un microprocesador físico. La JVM es una de las piezas fundamentales de la plataforma Java. Red con router 3com Se trata de una red con un punto de acceso con IP pública dinámica, y en el interior una red privada con IP fija, sin usar DHCP. Lo que ha permitido usar reglas de NAT, que re direccionan los paquetes de TCP que llegan al router por el puerto 80, son redireccionados a una IP privada fija. Además en e router se han abierto una serie de puertos para poder acceder desde el exterior. Herramienta para construir bases de conocimiento a partir de información en la web 144 Jorge Gil Peña Ingeniería Superior Informática. ICAI. 9. Presupuesto S e ha realizado una estimación de presupuesto de implantación de la aplicación. Recursos Humanos Horas €/Hora Total Análisis Aplicación 100 10 1.000 € Desarrollo Aplicación 120 10 1.200 € Análisis Base de Datos 60 10 600 € Desarrollo Base de Datos 40 10 400 € Subtotal 300 3.200 € 145 Recursos Técnicos Hardware Horas €/Hora Total Servidor P-IV, 12028Mb RAM, 550 HDD 700 € Subtotal 700 € Software Horas €/Hora Total Ms Windows 7Home Edition 150 € My SQL Server 5 SE Edition 0€ Java 0€ Subtotal 2.700 € PRESUPUESTO TOTAL 4.800 € Se ha estimado la realización del proyecto en un total de 4.800 euros. Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. Hay que tener muy en cuenta que el proyecto se ha realizado íntegramente usando SW libre, menos el Sistema Operativo, que se selecciono finalmente Windows, por los problemas encontrados en los SO de SW libre, tales como Linux. Recuérdese que estos datos son aproximados ya que este estudio es irreal, no es más que una aproximación, ya que nadie ha cobrado por estos servicios ni por el hardware. 146 Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. 10. Planificación L a planificación de este proyecto como se ha comentado anteriormente ha venido marcado por los hitos del proyecto, y ha venido muy marcada por la necesidad de programar constante, para desenvolverse en los nuevos entornos tecnológicos encontrados, como se puede observar en la Ilustración 9.1. Ha sido uno de los procesos más complejos de este desarrollo ya que el proyecto ha sido realizado compaginándose con otras actividades. Se ha procurado tener una planificación sensiblemente flexible, por lo que la planificación ha sido utilizada para recordar los hitos para la entrega del proyecto de fin de carrera. 147 También ha tenido una labor muy importante de organización, de priorización de objetivos y de organización. A continuación se muestra un esquema de la planificación:. 6. Ilustración 10.1 Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. 11. Conclusiones E l proyecto se ha desarrollado en un entorno de trabajo complicado ya que ha sido un año muy intenso con muchas variables y con mucho aprendizaje constante, ya que ha sido compaginado con una beca en Telefónica I+D. Se considera que ha servido para desarrollar intelectualmente una serie de ideas y conceptos que apenas se conocían y que han resultado ser altamente interesantes. Con los resultados obtenidos y la investigación llevada a cabo se puede afirmar que hay proyectos muy interesantes e innovadores, abarcando diferentes campos de actuación, que los procesos de desarrollo tecnológico son inacabables, y que el verdadero desafío está en saber buscarlos, elegirlos y priorizarlos. Es sorprendente constatar la cantidad de gente que, al calor del software libre, comparte su trabajo y trabaja por vocación, sin los cuales el proyecto no hubiera sido posible. En este sentido, el proyecto de “myWeb" ha servido para llevar a cabo un aprendizaje muy completo tanto a nivel tecnológico, como a nivel conceptual. En muchos momentos los retos de comprensión e interiorización conceptuales han sido más complicados que las propias tecnologías en sí mismas. Ha habido un periodo no esperado, de interiorización de conceptos: como el de la web semántica, el de algunas técnicas de inteligencia artificial o los propios servicios web. Herramienta para construir bases de conocimiento a partir de información en la web 148 Jorge Gil Peña Ingeniería Superior Informática. ICAI. Debido a la curva de aprendizaje tan alta ha sido complicado en algunos momentos separar algunas ideas de otras y visualizarlas como tareas independientes. Ha sido por ejemplo costoso asimilar que se podía llegar a conseguir al obtener ontologías. Otro reto ha sido definir completamente desde cero un servicio como el finalmente generado, aunado grandes esfuerzos para dotar a todos los desarrollos de un hilo común. Todos estos desarrollos hubiesen sido más sencillos con una fase de análisis mayor, pero al no disponer de conocimientos tecnológicos suficientes no se llevo a cabo correctamente, malinterpretándose algunos conceptos inicialmente. Esto ocurrió por ejemplo al intentar acceder a información en un disco duro local a través de un servicio web, fruto de la inexperiencia y desconocimiento, retrasando el desarrollo final. Sin embargo los objetivos han sido satisfechos en su práctica totalidad, con la elaboración automática de una ontología y su correspondiente base de conocimientos asociada a la web semántica, disponiendo además de un algoritmo de recomendación de contenidos y de una aplicación web para mostrar los resultados. Tras esta entrega es más que probable que el proyecto siga creciendo de manera que su ontología siga desarrollándose con el algoritmo y sus recomendaciones sean cada vez más precisas y completas. Se pretende seguir desarrollando “my Web” con el fin de conseguir un interfaz más amigable y dinámica, así como un sistema de caché, Herramienta para construir bases de conocimiento a partir de información en la web 149 Jorge Gil Peña Ingeniería Superior Informática. ICAI. para realizar las peticiones de forma asíncrona a los diferentes servicios, anticipándose a posibles peticiones del usuario para mejorar su usabilidad. Se prevé añadir un algoritmo de aprendizaje automático, echado en falta, que enriquezca el conocimiento adquirido y que permita que el incremento de conocimiento sea controlado estadísticamente a través de un conjunto de ejemplos. Así mismo se va a seguir incorporando mejoras al algoritmo clasificando mejor los contenidos y también se ampliará el número de web semánticas de las que se extrae información con el objetivo de incrementar el conocimiento, mejorando la fiabilidad del sistema. El estado de avance del proyecto “my Web” alcanzado con este trabajo tendrá, pues, una estupenda oportunidad de ser desarrollado y potenciado en futuras fechas. Y la satisfacción profesional que suscita en su autor este desarrollo inicial corre paralela con una confianza plena en que su futura evolución podrá responder a todas las promesas y expectativas que el presente proyecto permite augurar. Herramienta para construir bases de conocimiento a partir de información en la web 150 Jorge Gil Peña Ingeniería Superior Informática. ICAI. 12. Tabla de ilustraciones Ilustración 1.1 ........................................................ 11 Ilustración 3.1 ........................................................ 40 Ilustración 3.2 ........................................................ 21 Ilustración 3.3 ........................................................ 22 Ilustración 3.4 ........................................................ 24 Ilustración 3.5 ........................................................ 28 Ilustración 3.6 ........................................................ 31 Ilustración 3.7 ........................................................ 34 Ilustración 3.8 ........................................................ 36 Ilustración 3.9 ........................................................ 37 Ilustración 3.10 ...................................................... 40 Ilustración 3.11 ...................................................... 45 Ilustración 3.12 ...................................................... 50 Ilustración 3.13 ...................................................... 50 Ilustración 3.14 ...................................................... 51 Ilustración 3.15 ...................................................... 81 Ilustración 3.16 ...................................................... 60 Ilustración 3.17 ...................................................... 63 Ilustración 3.18 ...................................................... 64 Ilustración 5.1 ........................................................ 74 Ilustración 5.2 ........................................................ 75 Ilustración 5.3 ........................................................ 77 Ilustración 5.4 ........................................................ 80 Ilustración 5.5 ........................................................ 91 Herramienta para construir bases de conocimiento a partir de información en la web 151 Jorge Gil Peña Ingeniería Superior Informática. ICAI. Ilustración 5.6 ........................................................ 83 Ilustración 5.7 ........................................................ 84 Ilustración 5.8 ........................................................ 85 Ilustración 5.9 ........................................................ 85 Ilustración 5.10 ...................................................... 88 Ilustración 5.11 ...................................................... 90 Ilustración 5.12 ...................................................... 91 Ilustración 5.13 ...................................................... 94 Ilustración 7.1 ...................................................... 135 Ilustración 7.2 ...................................................... 136 Ilustración 7.3 ...................................................... 137 Ilustración 7.4 ...................................................... 145 Ilustración 10.1 .................................................... 146 152 Herramienta para construir bases de conocimiento a partir de información en la web Jorge Gil Peña Ingeniería Superior Informática. ICAI. 13. Bibliografía [1]. http://www.maestrosdelweb.com/editorial/web2/. [2]. http://www.maestrosdelweb.com/editorial/web2/. [3]. http://www.maestrosdelweb.com/editorial/web2/. [4]. http://www.maestrosdelweb.com/editorial/web2/. [5]. - http://web30websemantica.comuf.com/. [6]. - jena.sourceforge.net/. [7]. - http://jena.sourceforge.net/tutorial/RDF_API/. [8]. - http://es.wikipedia.org. [9]. - http://www.wiwiss.fu- berlin.de/en/institute/pwo/bizer/research/publications/Bi zer-etal-DBpedia-CrystallizationPoint-JWS-Preprint.pdf. [10]. - http://www4.wiwiss.fu- berlin.de/bizer/pub/DBpedia-WWW2007-draft-slides.pdf. [11]. - http://www2007.org/papers/paper391.pdf. [12]. http://musicbrainz.org/doc/FrequentlyAskedQuestions. [13]. http://java.ciberaula.com/articulo/introduccion_jstl/. [14]. - www.superhosting.cl/.../administrar-y- actualizar-una-base-de-datos-mysql-desde-access.html. Herramienta para construir bases de conocimiento a partir de información en la web 153 Jorge Gil Peña Ingeniería Superior Informática. ICAI. [15]. http://www.admin.cam.ac.uk/news/dp/2009082101. [16]. http://www.ibm.com/developerworks/xml/library/j-jena/. [17]. - subclipse.tigris.org. [18]. - https://www.dyndns.com/ . [19]. - http://www.antronio.com/topic/1000995- estilo-musical-favorito-tiene-relacion-con-tu-nivel-deinteligencia/. 154 Herramienta para construir bases de conocimiento a partir de información en la web