Herramienta para construir bases de conocimiento a partir ... · Internet y leer los ficheros RDF...

155
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 UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO INFORMÁTICO

Transcript of Herramienta para construir bases de conocimiento a partir ... · Internet y leer los ficheros RDF...

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

UNIVERSIDAD PONTIFICIA COMILLAS

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

INGENIERO INFORMÁTICO

Jorge Gil Peña

Dr. David Contreras Bárcena

Dr. Miguel Ángel Sanz

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

UNIVERSIDAD PONTIFICIA COMILLAS

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

INGENIERO INFORMÁTICO

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.

Herramienta para construir bases de conocimiento a partir de información en la web

9

MEMORIA

PROYECTO FIN DE CARRERA

Herramienta para

construir bases de conocimiento

a partir de información en la web

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

10

I N D I CE

1.1.1.1. Introducción _________________________________________________ 12

1.1. Justificación _______________________________________________ 13

1.2. Motivación del proyecto ________________________________ 14

2.2.2.2. Objetivos. _____________________________________________________ 16

3.3.3.3. Revisión de técnicas y tecnologías ______________________ 18

3.1. Conceptos y definiciones básicas ______________________ 18

3.1.1. 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. Descripción funcionamiento de Tecnologías

empleadas 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 Sistema Gestor de base de datos _____________________________ 64

4.4.4.4. Análisis de la aplicación ___________________________________ 66

4.1. Introducción ______________________________________________ 66

4.2. Análisis de alternativas _________________________________ 66

5.5.5.5. 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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

11

5.3. 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

Jorge Gil Peña

Herramienta para construir bases de conocimiento a partir de información en la web

través de información disponible en

poder ofertar

gustos se realiza una

en el servicio

contenidos recomendados

trata de un servicio web

acceder a través de internet.

El nombre de este servicio

pretende realizar

interés del usuario

En este punto de acceso a él

recomendaciones

videos de YouTube

ver los más

perfil.

E

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

1.1.1.1. Introducción

ste proyecto está orientado a adquirir los

gustos de la música, películas, libros,

intereses y forma de ser de los usuar

información disponible en la web semántica.

poder ofertar de forma ontológica contenidos acordes a sus

se realiza una encuesta al comienzo, al darse de alta

en el servicio, y un algoritmo se encarga de buscar

recomendados más acordes con el perfil

trata de un servicio web llamado myWeb, al cual se puede

acceder a través de internet.

Ilustración 3.1.1

El nombre de este servicio viene dado porque

realizar una selección de contenidos acordes a

del usuario siendo su punto de acceso a Internet.

este punto de acceso a él puede

recomendaciones, acceder a fotos, links interesantes o

YouTube, pero también modificar sus favoritos,

votados, y realizar búsquedas asociadas a

E

Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

12

Introducción

orientado a adquirir los

gustos de la música, películas, libros,

forma de ser de los usuarios a

la web semántica. Para

contenidos acordes a sus

al darse de alta

se encarga de buscar los

más acordes con el perfil. Se

, al cual se puede

viene dado porque

ción de contenidos acordes al

u punto de acceso a Internet.

ver sus

otos, links interesantes o

us favoritos,

asociadas a su

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

13

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

14

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

15

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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

16

2.2.2.2. Objetivos.

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:

E

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

17

• 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 en un entorno

multiagente capaz de realizar una 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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

18

3.3.3.3. Revisión de técnicas y

tecnologías

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

E

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

19

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

20

estética visual 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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

21

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, pueden llevar a cabo

razonamientos lógicos utilizando reglas que 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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

22

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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

23

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.

Ilustración 3.3

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

24

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

25

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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

26

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

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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

27

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

28

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

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

29

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.

3.2. Arquitectura

3.2.1. Introducción

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.

L

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

30

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

31

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

32

estar todos los datos centralizados como puede

comprobarse en la imagen siguiente hay un único servidor:

Ilustración 3.6

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,

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

33

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

34

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:

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

35

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 y el respeto a los principios de

encapsulación de información y distribución de

responsabilidad (que cada objeto haga solo aquello que le

ha sido asignado) es la mejor manera de conseguir un

diseño apropiado.

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

36

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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

37

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

Jorge Gil Peña

Herramienta para construir bases de conocimiento a partir de información en la web

incluso para distintos tipos de dispositivos además del

ordenador como

para cualquier

Arquitectura

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

y sus librerías para los accesos a ficheros en la web con el

formato XML

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

Para ello se está trabajando principalmente con

DbPedia (proyecto para la extracción de datos de

para proponer una versión

(proyecto que mantiene servidores con acceso a info

estructurada en relación con la música) y

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

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

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

y sus librerías para los accesos a ficheros en la web con el

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

(proyecto para la extracción de datos de

para proponer una versión Web semántica

(proyecto que mantiene servidores con acceso a info

estructurada en relación con la música) y MusicBrainz

Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

38

incluso para distintos tipos de dispositivos además del

móviles, agendas y en general

El programa Java será el que implemente toda la

lógica de negocio y procese y almacene el algoritmo de

framework de Jena

y sus librerías para los accesos a ficheros en la web con el

, 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

ra ello se está trabajando principalmente con

(proyecto para la extracción de datos de Wikipedia

Web semántica), DbTune

(proyecto que mantiene servidores con acceso a información

MusicBrainz

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

39

(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

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

40

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

.

Ilustración 3.9

El Marco de Jena incluye:

• Un API RDF de

• Lectura y escritura de RDF en RDF / XML, N3 y N-

Triples

• Una API de OWL

• En la memoria de almacenamiento y persistente

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

41

• 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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

42

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

43

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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

44

<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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

45

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/> ] .

Jorge Gil Peña

Herramienta para construir bases de conocimiento a partir de información en la web

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

básico de conocimiento se r

también conocida como

Aquí puede verse un ejemplo en la

ve como Perú tiene la propiedad capital y se conecta con el

recurso Lima. Por lo tanto

Exactamente lo m

propiedad IS FROM (es de) Perú.

Funcionamiento de OWL

inglés Ontology Web Language

para publicar y compartir datos usan

web 3.0. OWL

marcado construido sobre

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

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

de conocimiento se representa con una tripleta,

también conocida como statement en Jena.

Aquí puede verse un ejemplo en la Ilustración

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 ocurre con el Machu Pichu, y la

propiedad IS FROM (es de) Perú.

Funcionamiento de OWL: OWL es el acrónimo

Ontology Web Language, un lenguaje de marcado

para publicar y compartir datos usando ontologías

OWL tiene como objetivo facilitar un modelo de

marcado construido sobre RDF y codificado en XML

Ilustración 3.11

Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

46

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

epresenta con una tripleta,

Ilustración 3.11. Se

ve como Perú tiene la propiedad capital y se conecta con el

se lee "Perú capital Lima".

ismo ocurre con el Machu Pichu, y la

acrónimo del

lenguaje de marcado

ontologías en la

tiene como objetivo facilitar un modelo de

XML.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

47

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-syntax-ns#" 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/">

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

48

<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> <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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

49

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.

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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

50

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)

Jorge Gil Peña

Herramienta para construir bases de conocimiento a partir de información en la web

En el siguiente gráfico

observar cómo

Se trata de una web estándar, no de una web semántica.

Aunque no se lea el texto de esta imagen s

puede ver las

superior en grande y debajo sus conexiones, que se

en la imagen

Ilustración 0.1 Ilustración 0.2 Ilustración 0.3

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

Ilustración 3.12

En el siguiente gráfico Ilustración 3.12

cómo se almacena esta info en la web de

Se trata de una web estándar, no de una web semántica.

Aunque no se lea el texto de esta imagen sin embargo se

puede ver las conexiones del recurso Maná, que es el texto

superior en grande y debajo sus conexiones, que se

en la imagen Ilustración 3.13.

Ilustración 3.13

Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

51

se puede

en la web de DbPedia.

Se trata de una web estándar, no de una web semántica.

in embargo se

, que es el texto

superior en grande y debajo sus conexiones, que se verán

Jorge Gil Peña

Herramienta para construir bases de conocimiento a partir de información en la web

A la izquierda del

como: el abstract

empezaron o el

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.

ver como continúan las relacione

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

A la izquierda del gráfico 3.14 quedan las propiedades

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 de Maná:

Ilustración 3.14

Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

52

quedan las propiedades

de la banda Maná, el género, el año que

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

Aquí se puede

Jorge Gil Peña

Herramienta para construir bases de conocimiento a partir de información en la web

No obstante este mismo fichero si se intenta leer de la

manera RDF/Turtle

nada. Y es que estos formatos están pensados para que los

lea otra máquina, no los humanos.

Funcionamiento de YAGO

Es una ontología ligera y extensible con alta

cobertura y calidad incorporada en la base de

conocimientos de

durante este proyecto como fuente de conocimiento.

se basa en la

actualmente más de 1 millón

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

WordNet, utilizando una combinación cuidadosamente

diseñada basada en reglas y métodos de heurística

descritos en este documento.

El conocimiento resultante

más allá de

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

No obstante este mismo fichero si se intenta leer de la

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.

Funcionamiento de YAGO

Es una ontología ligera y extensible con alta

cobertura y calidad incorporada en la base de

conocimientos de DbPedia, así que ha sido empleada

durante este proyecto como fuente de conocimiento.

se basa en las entidades y las relaciones y contiene

actualmente más de 1 millón entidades y 5 millones de

. 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

, 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

Ilustración 3.15

Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

53

No obstante este mismo fichero si se intenta leer de la

, no se entiende

nada. Y es que estos formatos están pensados para que los

Es una ontología ligera y extensible con alta

cobertura y calidad incorporada en la base de

, así que ha sido empleada

durante este proyecto como fuente de conocimiento. YAGO

s entidades y las relaciones y contiene

entidades y 5 millones de

. Esto incluye la jerarquía así como las relaciones

no taxonómicas entre las entidades. Los datos han sido

unificado con

, utilizando una combinación cuidadosamente

diseñada basada en reglas y métodos de heurística

es un paso importante

: agregando el conocimiento acerca de

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

54

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

Jorge Gil Peña

Herramienta para construir bases de conocimiento a partir de información en la web

una oferta de programas que rellenan las etiquetas de las

canciones mediante ID3, y sus libre

información se encargan de

formato semántico de manera que

para comprobar su base de datos de artistas.

Los usuarios finales pueden utilizar

comunican con

audio. Desde la propia página

pueden crear y mantener la

los discos de forma que, muy al estilo de la

de datos va mejorando de forma colaborativa.

Muy interesante

innovación

MusicBrainz

recursivo que significa: TRM Reconoce Música) para la

búsqueda de coincidencias mediante el uso de una

digital acústica; un código único generado que permite

identificar cada una de las pistas.

atrajo muchos usuarios y permitió que la base de datos

creciera de forma muy rápida

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

una oferta de programas que rellenan las etiquetas de las

mediante ID3, y sus librerías. Además esta

información se encargan de presentar la información

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

comunican con MusicBrainz para etiquetar su ficheros de

. 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

de datos va mejorando de forma colaborativa.

Muy interesante a tener en cuenta en este proyecto l

que propusieron inicialmente, y es que

utilizó el algoritmo TRM (un acrónimo

recursivo que significa: TRM Reconoce Música) para la

búsqueda de coincidencias mediante el uso de una

acústica; un código único generado que permite

identificar cada una de las pistas.[4] Esta característica,

chos usuarios y permitió que la base de datos

creciera de forma muy rápida.

Ilustración 3.16

Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

55

una oferta de programas que rellenan las etiquetas de las

rías. Además esta

r la información con

acceder a él,

programas que se

para etiquetar su ficheros de

los usuarios registrados

información disponible sobre

web 2.0, la base

este proyecto la

y es que

utilizó el algoritmo TRM (un acrónimo

recursivo que significa: TRM Reconoce Música) para la

búsqueda de coincidencias mediante el uso de una huella

acústica; un código único generado que permite

Esta característica,

chos usuarios y permitió que la base de datos

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

56

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

57

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.

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 ejemplo-

en 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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

58

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.

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 de determinadas tareas tediosas e

irremediables como pueden ser 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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

59

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:

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

60

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.

El motor de las páginas JSP está basado en los

Servlets de Java -programas en Java destinados a

ejecutarse en el servidor-, aunque el 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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

61

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 en este

caso Tomcat y extienden su funcionalidad de

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

62

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 Servlets implementa 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 de interpretar los objetos de tipo

HttpServletRequest y HttpServletResponse 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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

63

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,

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

64

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

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

65

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

66

4.4.4.4. Análisis de la aplicación

4.1. Introducción

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.

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

E

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

67

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

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

68

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

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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

69

• 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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

70

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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

71

Se emplea también contenidos en YAGO, que es una

librería almacenada por DbPedia pero clasifica los

conceptos de la Wikipedia usando el 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 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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

72

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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

73

5.5.5.5. Diseño y desarrollo de la

aplicación myWeb

5.1. Introducción

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.

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.

A

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

74

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.

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.

Jorge Gil Peña

Herramienta para construir bases de conocimiento a partir de información en la web

A partir de ahí tiene las distintas opciones, que

serán, además de los anteriores, los casos de uso del

sistema:

• Ver recomendaciones

• Buscar recurso

• Seleccionar recurso

• Cambiar favoritos

• Salir

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

A partir de ahí tiene las distintas opciones, que

demás de los anteriores, los casos de uso del

Ver recomendaciones

Buscar recurso

Seleccionar recurso

Cambiar favoritos

Salir

Ilustración 5.1

Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

75

A partir de ahí tiene las distintas opciones, que

demás de los anteriores, los casos de uso del

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

76

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

77

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:

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

78

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:

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

79

-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:

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

80

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.

Ilustración 5.2

Se puede observar el siguiente diagrama para

representar la estructura de algunos elementos con

herencia en esta aplicación dentro de los paquetes

representados con anterioridad.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

81

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.

Jorge Gil Peña

Herramienta para construir bases de conocimiento a partir de información en la web

Aquí en la figura 5.3. vemos

de clases de la aplicación

Diagramas de Interacción

diagramas de

fijan en la iteración de las clases,

de control y de datos entre los elementos del sistema

modelado

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

Aquí en la figura 5.3. vemos como queda el diagrama

de clases de la aplicación:

Ilustración 5.4

Diagramas de Interacción son un subtipo de

diagramas 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

Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

82

el diagrama

son un subtipo de

l lenguaje UML. Estos como dice su nombre se

sobre el flujo

de control y de datos entre los elementos del sistema

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

83

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.

Jorge Gil Peña

Herramienta para construir bases de conocimiento a partir de información en la web

En el

envío a la base de datos,

representa y

sale la flecha y que pertenece a la clase destino, que será la

encargada de ejecutarla. No se

recibidos ni los devueltos

legibilidad.

Ilustración 5.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

En el diagrama se ve como realiza desde

a la base de datos, MySQL..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

gada de ejecutarla. No se transcriben los tipos

recibidos ni los devueltos para obtener una mejor

Ilustración 5.5 Ilustración 5.6

Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

84

se ve como realiza desde Jenate el

Y en los arcos se

la función que se llama desde la que

sale la flecha y que pertenece a la clase destino, que será la

transcriben los tipos

para obtener una mejor

.6

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

85

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

propiedades.

Ilustración5.7

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

86

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

87

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

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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

88

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.

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

Jorge Gil Peña

Herramienta para construir bases de conocimiento a partir de información en la web

parte gráfica de la

este caso. Sin embargo se realizó

luego se pasó

tratándose de una página web

El diseño del logotipo es el

se ve tanto un

logotipo lleva la M y la W, jugando con las dos primeras

palabras del servicio. Se ha empleado el n

de un servicio dinámico y de entretenimiento como color

que trasmite viveza y

El diseño de

Y ha ido variando y evolucionando con el tiempo. Se

dispone de un

parecido a la Ilustración 5.

variaciones con el desarrollo de la aplicación.

En esta imagen se

usuario, y puede ver su

películas, libros,...

Existe una idea reflejada en este mapa web, todavía no

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

parte gráfica de la parte de estructura definida en el JSP, en

ste caso. Sin embargo se realizó originalmente en HTML y

ó a JSP con el fin de poder usar ese diseño pero

de una página web dinámica.

El diseño del logotipo es el de la Ilustración 5.

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 al tratarse

de un servicio dinámico y de entretenimiento como color

que trasmite viveza y alegría.

Ilustración 5.8

El diseño de la 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

la Ilustración 5.9. aunque ha sufirdo algunas

variaciones con el desarrollo de la aplicación.

esta imagen se ve como a la web se accede por el

usuario, y puede ver sus recursos recomendados:

, libros,...y llegar a ver los recursos seleccionados.

una idea reflejada en este mapa web, todavía no

Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

89

parte de estructura definida en el JSP, en

originalmente en HTML y

con el fin de poder usar ese diseño pero

de la Ilustración 5.8, en el

como el nombre del servicio. El

logotipo lleva la M y la W, jugando con las dos primeras

ranja al tratarse

de un servicio dinámico y de entretenimiento como color

a web ha sido un proceso muy evolutivo.

Y ha ido variando y evolucionando con el tiempo. Se

que quedaría algo

aunque ha sufirdo algunas

ve como a la web se accede por el

: música,

a ver los recursos seleccionados.

una idea reflejada en este mapa web, todavía no

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

90

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, ...

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.

Ilustración 5..9

Jorge Gil Peña

Herramienta para construir bases de conocimiento a partir de información en la web

El diseño

queda como se puede observar en l

Con un fondo gris oscuro y

una capa na

recurso.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

Ilustración 5.10

El diseño de la página principal de recomendaciones,

queda como se puede observar en la figura Ilustración 5.

Con un fondo gris oscuro y los recursos se diferencian en

aranja sobre una capa gris según el tipo de

Ilustración 5.11

Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

91

de recomendaciones,

figura Ilustración 5.11.

los recursos se diferencian en

ranja sobre una capa gris según el tipo de

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

92

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.

Ilustración 5.12

Jorge Gil Peña

Herramienta para construir bases de conocimiento a partir de información en la web

Inicialmente

de manera automática sin que el usuari

escribirla a mano

de manera que el usuario pudiese definir sus intereses de

manera completa

ilustración 5.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

5.3.3. Diseño entradas al

Inicialmente se pensó que se recibiese la información

de manera automática sin que el usuario tuviese que

escribirla a mano. Finalmente se desarrolló una encue

de manera que el usuario pudiese definir sus intereses de

completa y segura. Esto se muestra en la

ilustración 5.13.

Ilustración 5.13

Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

93

Diseño entradas al

programa

recibiese la información

o tuviese que

una encuesta,

de manera que el usuario pudiese definir sus intereses de

Esto se muestra en la

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

94

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

95

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

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

96

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

97

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

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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

98

Ilustración 5.14

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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

99

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.

Jorge Gil Peña

Herramienta para construir bases de conocimiento a partir de información en la web

Introducción

Es la parte más abstracta y creativa de todo este

proceso pero tamb

la parte donde el desarrollador tiene mayor libertad para

tomar decisiones

pueden tomar decisiones en tor

• Profundidad de la adquisición de conocimiento

• Valor inicial asignado

• Valor a los hijos en función del padre

• Valor a los recursos hijos de los dominios que

interesan al usuario

• Namespaces

• Filtrados de información

• Operación

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

este proyecto,

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

5.3.5. Realización del algoritmo con

Introducción

Es la parte más abstracta y creativa de todo este

proceso pero también una de las más costosas, dado que es

e donde el desarrollador tiene mayor libertad para

decisiones en torno a cómo realizarlo. Por ejemplo se

pueden tomar decisiones en torno a una serie de factores

rofundidad de la adquisición de conocimiento

alor inicial asignado

alor a los hijos en función del padre

Valor a los recursos hijos de los dominios que

interesan al usuario

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

algoritmo es uno de los valores añadidos

este proyecto, dado que ya existen programas que recorren

Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

100

Realización del algoritmo con

Java.

Es la parte más abstracta y creativa de todo este

dado que es

e donde el desarrollador tiene mayor libertad para

realizarlo. Por ejemplo se

no a una serie de factores:

rofundidad de la adquisición de conocimiento

Valor a los recursos hijos de los dominios que

a llevar a cabo con valores de distintos

Valor a asignar a un recurso que el usuario accede

es uno de los valores añadidos en

que recorren

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

101

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.

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

102

• 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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

103

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 o

conceptos), a no ser que interese

• El mismo recurso introducido por el usuario

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

104

• 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 o bien si no búsqueda de

recursos (cualquier cosa que se pudiese buscar en

Wikipedia, artistas, libros, películas,..) que se busca

directamente con una consulta SPARQL sobre la nube de

"Linked Data" de la web 3.0. de DbPedia.

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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

105

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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

106

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

107

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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

108

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.

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 ser

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

109

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:

Jorge Gil Peña

Herramienta para construir bases de conocimiento a partir de información en la web

• config.xml

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

etc.

• web.xml:

generales de la aplicación, tales como cuales son

las páginas de inicio y error, qué recursos

adicionales usa la aplicación,

etc.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

config.xml, que contiene 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.

Ilustración 5.15

Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

110

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 salta de una página Web a otra,

Recoge parámetros de configuración

generales de la aplicación, tales como cuales son

las páginas de inicio y error, qué recursos

temas de seguridad,

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

111

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

112

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.

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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

113

6. Desarrollo de la aplicación

myWeb

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

L

Jorge Gil Peña

Herramienta para construir bases de conocimiento a partir de información en la web

va a dividir esta parte del código en dos: una donde se

explica la implementación de

correspondiente a Jena

desarrolla el algoritmo. Aunque estas

directo.

El código realizado en Java se encuentra en la carpeta

de Java Resources

Como se puede observar la Ilustración 6.1 e

encuentra a su vez clasificado en paquetes

ellos las DAO, el dominio que se refiere a los propios del

sistema, el de

interactúan con

encargados de interactuar con

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

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

desarrolla el algoritmo. Aunque estas están en contacto

código realizado en Java se encuentra en la carpeta

Resources, normalmente conocido como

Como se puede observar la Ilustración 6.1 e

encuentra a su vez clasificado en paquetes. A recalcar de

ellos las DAO, el dominio que se refiere a los propios del

, el de Jena donde se encuentran las clases que

interactúan con Jena y los de MusicBrainz

encargados de interactuar con MusicBrainz.

Ilustración 6.1

Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

114

a dividir esta parte del código en dos: una donde se

la parte del código

y otra donde se explica cómo se

n contacto

código realizado en Java se encuentra en la carpeta

, normalmente conocido como "src".

Como se puede observar la Ilustración 6.1 este se

recalcar de

ellos las DAO, el dominio que se refiere a los propios del

las clases que

usicBrainz son los

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

115

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//dbpedia_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);

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

116

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.

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,qsInfoDbpedia); // 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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

117

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

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)

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

118

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>.

Función main

while (i<listInterestedResources.size()) { System.out.println(listInterestedResources.get(i).toString()); pathResource=getDbPediaPathResource(listInterestedResources.get(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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

119

Model model2=Algorithym.developModel(model,listInterestedResources,listInterestedArtists); 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);

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

120

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>>

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

121

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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

122

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

123

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

124

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{

Jorge Gil Peña

Herramienta para construir bases de conocimiento a partir de información en la web

Se van fil

que si por ejemplo tienen la propiedad

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 d

algoritmo.

En este proyecto ha sido necesario implementar

bastantes Servlets

bastantes funcio

van a ver un par de ejemplos.

Ilustración 6.2 la lista de

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

Se van 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 del

6.2. Módulo

En este proyecto ha sido necesario implementar

Servlets al tratarse de un servicio web con

bastantes funcionalidades, aunque todas muy simples.

a ver un par de ejemplos. Como se puede ver

Ilustración 6.2 la lista de Servlets es muy sencilla.

Ilustración 6.2

Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

125

trando los contenidos del modelo de manera

, entonces es

interesante para el usuario. Luego habrá que ver si es

suficientemente interesante para este. Eso dependerá de su

esarrollo del

Módulo Servlets

En este proyecto ha sido necesario implementar

al tratarse de un servicio web con

simples. Se

Como se puede ver en la

es muy sencilla.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

126

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

127

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:

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

128

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);

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>

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

129

<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.

Jorge Gil Peña

Herramienta para construir bases de conocimiento a partir de información en la web

En el ej

añade una librería

que es añadida en el

<%@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

dentro del HTML. Este es el bucle con el que

las recomendaciones, tantos bucles de estos como tipos de

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

Ilustración 6.3

En el ejemplo siguiente se puede observar

librería a un JSP, en este caso la core

que es añadida en el index.jsp es:

<%@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

Ingeniería Superior Informática. ICAI.

erramienta para construir bases de conocimiento a partir de información en la web

130

e puede observar cómo se

core de JSTL,

index.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>

Aquí se puede ver como se emplea la librería JSTL,

poco de lógica

se muestran

las recomendaciones, tantos bucles de estos como tipos de

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

131

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>

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>

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

132

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.arguments; 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);

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

133

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

134

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();

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

135

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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

136

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

Ilustración 7.1

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

137

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.

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

138

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

Ilustración 7.3

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

139

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

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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

140

8 Especificaciones

Tecnológicas

8.1. Proyecto en

desarrollo

Tomcat

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

C

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

141

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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

142

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

143

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 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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

144

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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

145

9. Presupuesto

e ha realizado una estimación de presupuesto

de implantación de la aplicación.

Se ha estimado la realización del proyecto en un total

de 4.800 euros.

SRecursos 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 €

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 €

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

146

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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

147

10. Planificación

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.

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.6.6.6.

L

Ilustración 10.1

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

148

11. Conclusiones

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.

E

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

149

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é,

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

150

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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

151

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

152

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

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

153

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.

Jorge Gil Peña Ingeniería Superior Informática. ICAI.

Herramienta para construir bases de conocimiento a partir de información en la web

154

[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-de-

inteligencia/.