+ All Categories
Home > Documents > Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de ....

Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de ....

Date post: 17-May-2018
Category:
Upload: ngoxuyen
View: 212 times
Download: 0 times
Share this document with a friend
33
Eduardo Benito Díez Julio Rubio García Máster universitario en Tecnologías Informáticas 2015-2016 Título Director/es Facultad Titulación Departamento TRABAJO FIN DE ESTUDIOS Curso Académico Aplicaciones de web semántica en la Biblioteca de la Universidad de La Rioja Autor/es
Transcript
Page 1: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

Eduardo Benito Díez

Julio Rubio García

Máster universitario en Tecnologías Informáticas

2015-2016

Título

Director/es

Facultad

Titulación

Departamento

TRABAJO FIN DE ESTUDIOS

Curso Académico

Aplicaciones de web semántica en la Biblioteca de laUniversidad de La Rioja

Autor/es

Page 2: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

© El autor© Universidad de La Rioja, Servicio de Publicaciones,

publicaciones.unirioja.esE-mail: [email protected]

Aplicaciones de web semántica en la Biblioteca de la Universidad de La Rioja,trabajo fin de estudios

de Eduardo Benito Díez, dirigido por Julio Rubio García (publicado por la Universidad deLa Rioja), se difunde bajo una Licencia

Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported. Permisos que vayan más allá de lo cubierto por esta licencia pueden solicitarse a los

titulares del copyright.

Page 3: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

Trabajo de Fin de Máster

Aplicaciones de web semántica en la Biblioteca de la

Universidad de La Rioja

Autor:

Eduardo Benito Díez

Tutor/es: Julio Jesús Rubio García

MÁSTER:

Máster en Tecnologías Informáticas (853M)

Escuela de Máster y Doctorado

AÑO ACADÉMICO: 2015/2016

Page 4: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

1

1. Resumen ..................................................................................................... 2

2. Objetivos y plan de trabajo .......................................................................... 3

2.1 Descripción ........................................................................................... 3

2.2 Antecedentes y justificación del proyecto .............................................. 3

2.3 Alcance del proyecto ............................................................................. 3

2.4 Recursos humanos y personal .............................................................. 3

2.5 Plan de comunicaciones ....................................................................... 4

2.6 Arquitectura y tecnología ....................................................................... 4

2.7 Metodología .......................................................................................... 6

3. Análisis ........................................................................................................ 8

3.1 Identificación del entorno tecnológico ................................................... 8

3.2 Estudio de alternativas .......................................................................... 8

3.3 Establecimiento de requisitos ................................................................ 8

4. Diseño ....................................................................................................... 10

4.1 Arquitectura del sistema ...................................................................... 10

4.2 Diseño de casos de uso ...................................................................... 11

4.3 Diseño de la interfaz............................................................................ 12

4.4 Mapeado de la base de datos ............................................................. 14

5. Desarrollo .................................................................................................. 21

5.1 Implementación ................................................................................... 21

5.2 Configuración de D2R server .............................................................. 22

5.3 Personalización del explorador D2RQ ................................................ 22

5.4 Testing ................................................................................................ 24

5.5 Problemas encontrados ...................................................................... 26

6. Conclusiones ............................................................................................. 29

6.1 Mejoras ............................................................................................... 29

7. Bibliografía y referencias ........................................................................... 30

Page 5: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

2

1. Resumen

Este trabajo fin de máster consistirá en el análisis y la implementación de un buscador semántico para la Biblioteca de la Universidad de La Rioja.

Se realizará un estudio previo de las aplicaciones y el buscador actual para

ver cómo se podría mejorar la formar de almacenar y representar los datos

para realizar un buscador facetado.

Abstract

This work will consist in the analysis and implementation of a semantic

search engine for the La Rioja University Library.

The current systems and search application will be studied in order to find

better way to storage and represents the data to develop a faceted search

engine.

Page 6: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

3

2. Objetivos y plan de trabajo

2.1 Descripción

La idea es que toda la información disponible en la biblioteca de la

Universidad de La Rioja sobre labores de investigación se pueda publicar

como Linked data, es decir que los datos estén correctamente

estructurados y puedan ser consultados mediante consultas semánticas.

Intentaremos desarrollar dos aplicaciones, por una parte, un explorador de

los datos disponibles y por la otra un buscador facetado.

Herramientas como D2RQ nos pueden proporcionar este tipo de

exploradores, aunque será necesario personalizarla e integrarla con el

buscador.

2.2 Antecedentes y justificación del proyecto

Este trabajo se basará y compartirá la misma base de datos que la actual

aplicación de investigadores de la Biblioteca de la Universidad de La Rioja.

Se quiere analizar la viabilidad y posibles ventajas de utilizar tecnologías

semánticas sobre todo para mejorar la experiencia y los resultados del

buscador.

2.3 Alcance del proyecto

2.3.1 Estado del arte

Estudio de aplicaciones similares.

Estudio de las herramientas y lenguajes disponibles para reutilizar bases

de datos relacionales a documentos RDF como D2RQ y R2RML.

Estudio de frameworks para el desarrollo de aplicaciones semánticas como

Apache Jena o Drupal OSF.

2.3.2 Documentación necesaria

Será necesario recopilar información sobre la web semántica, Linked data,

RDF, OWL y D2RQ.

2.4 Recursos humanos y personal

Eduardo Benito: realizador del proyecto.

Decisiones a tomar: todas las decisiones, algunas de ellas discutidas

previamente con el director del proyecto.

Dedicación: completa.

Page 7: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

4

Julio Rubio: tutor académico.

Decisiones a tomar: todas las relacionadas con la metodología a seguir,

los documentos a redactar y la forma de presentarlos.

Revisará periódicamente las entregas y se preocupará de que se cumplan

los plazos previstos.

Dedicación: esporádica.

Joaquín León: subdirector de la biblioteca de la Universidad de la Rioja.

Decisiones a tomar: las relacionadas con la especificación de requisitos y el

correcto funcionamiento de la aplicación.

Dedicación: esporádica

2.5 Plan de comunicaciones

Correo electrónico

Posiblemente será el medio más utilizado por la comodidad que supone

para los implicados en este proyecto.

Reuniones

En las primeras fases del proyecto se realizarán algunas reuniones para

establecer los requisitos iniciales y poner en común los objetivos de este

proyecto, más adelante quizás sea necesario celebrar alguna para realizar

labores de seguimiento.

2.6 Arquitectura y tecnología

2.6.1 Tecnologías disponibles

SPARQL

Es el acrónimo de Protocolo Simple y Lenguaje de Consulta de RDF.

Permite hacer consultas sobre información almacenada en formato RDF,

usando distintas fuentes de datos y permite obtener también los resultados

en formato RDF para poder reutilizarlos en las aplicaciones.

Se trata de una recomendación oficial del W3C y es una tecnología clave

en el desarrollo de la Web Semántica

Page 8: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

5

HTML5

Es un lenguaje de marcado para crear páginas web. La versión 5 incorpora

etiquetas como header, article, section, nav o footer que nos permiten

definir mejor las partes de una web.

CSS3

Es un lenguaje para definir la apariencia de las páginas web.

Bootstrap3

Es un framework de desarrollo HTML, CSS y JavaScript para crear sitios

web con un aspecto visual correcto sin necesidad de invertir demasiado

tiempo en ello. También es muy útil para que las webs se visualicen

correctamente en todos los dispositivos.

PHP

Es acrónimo recursivo de PHP: Hypertext Preprocessor, es un lenguaje de

código abierto muy popular especialmente adecuado para el desarrollo

web. Actualmente es utilizado por muchos de los sitios de internet, gracias

a que herramientas populares como Wordpress están desarrolladas en

este lenguaje.

Silex

Es un microframework PHP, desarrollado en su mayoría con componentes

de Symfony, otro framework PHP.

Está pensado especialmente para aplicaciones sencillas y SPA (de una

sólo página). En caso de necesitar opciones más avanzadas cuenta con

varias extensiones.

Guzzle

Un cliente HTTP para PHP, facilita el trabajo de enviar y recibir peticiones

HTTP y permite integrar fácilmente servicios web.

Twig

Un motor de plantillas para PHP rápido, flexible y seguro. Está pensado

para ser usado tanto por desarrolladores como por programadores.

Page 9: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

6

2.6.2 Tecnologías utilizadas

GIT

Un sistema de control de versiones distribuido para poder controlar los

cambios realizados. Es fundamental su uso sobre todo para trabajar

equipo, o como en este caso para trabajar en varios equipos distintos

teniendo todos los cambios sincronizados.

Vagrant

Una herramienta que permite crear entornos de desarrollo ligeros y

aislados del sistema operativo instalado en un equipo

2.6.3 Herramientas utilizadas

Codeception

Un framework de testing que permite realizar test unitarios, funcionales o

de integración de manera sencilla para proyectos PHP. Los tests pueden

ser ejecutados en un explorador estándar como chrome o firefox o

navegadores virtuales como selenium o phantomjs.

2.7 Metodología

Se seguirá una metodología adaptada a mi día a día como desarrollador,

se usará una adaptación de la metodología del tablero Kanban en el que

se irán distribuyendo las tareas a realizar o historia de usuario en varias

listas: Backlog, Next, Doing, y Done. Para las listas de Next y Doing,

existe una limitación de 3 tareas como máximo.

Para gestionar el tablero se usará la herramienta Trello.

Page 10: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

7

2.8 Calendario

La realización del proyecto se desarrollará entre abril de 2016 y julio de

2016 (4 meses).

Page 11: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

8

3. Análisis

3.1 Identificación del entorno tecnológico

El único hardware necesario será un ordenador portátil con el sistema

operativo Windows 64, aunque se utilizará Vagrant para trabajar sobre una

máquina virtual con Ubuntu instalado.

Como software se utilizará el IDE NetBeans y el navegador Firefox.

3.2 Estudio de alternativas

Realmente no ha habido un estudio de alternativas exhaustivo para

ninguna de las tecnologías utilizadas y más bien se han realizado la

elección por sentido común o por ser tecnologías ya conocidas.

Como sistema de base de datos se utilizará MySQL porque la aplicación

anterior ya lo usa por lo que no se plantea otra alternativa.

Se utilizará PHP como lenguaje de programación porque es el lenguaje

habitual con el que trabajo y aunque en un principio leyendo sobre la

integración que tiene D2RQ con Apache Jena y otras herramientas escritas

en Java, se planteaba como una buena opción decidí utilizar PHP.

Para el frontend se usará Bootstrap, jQuery y la librería datatables para

filtrar y ordenar los datos representados en tablas, porque también los uso

prácticamente a diario.

3.3 Establecimiento de requisitos

3.3.1 Actores

Usuario

La aplicación dispondrá de un único actor, esta es una aplicación que sólo

muestra información, las labores de administración se hacen desde otra

aplicación. Un usuario podrá navegar por la información del sistema a

través del explorador RDF o usando el buscador.

3.3.2 Casos de uso

CU.1. Explorador

CU.1.1. Listado de clases

CU.1.2. Directorio de una clase

CU.1.3. Detalle de un recurso

CU.1.4. Filtrar

Page 12: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

9

CU.1.5. Ordenar

CU.2. Buscador

CU.2.1. Buscar en el campo de texto.

CU.2.2. Filtrar por tipo de contenido.

CU.2.3. Filtrar por facetas.

CU.2.4. Paginar

CU.2.5. Consultas predefinidas.

Page 13: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

10

4. Diseño

4.1 Arquitectura del sistema

Explorador:

Usaremos D2RQ: la arquitectura de esta aplicación es la siguiente:

Muchos de estos componentes no son necesarios para nuestro trabajo, nos

interesa sobretodo el endpoint SPARQL que proporciona D2R Server y la

parte pública accesible desde un navegador HTML.

Buscador:

Para la aplicación del servidor usaremos solamente dos capas:

Controlador:

Esta capa se encarga de realizar las peticiones al endpoint SPARQL que

nos proporciona D2RQ. Realizará también el enrutamiento, filtrados,

redirecciones y preprocesamiento de las consultas para pasarlas a la capa

Vista con el formato adecuado.

Vista:

Capa de presentación, encargada únicamente de presentar los resultados y

filtros que nos proporciona el controlador.

Page 14: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

11

4.2 Diseño de casos de uso

Los casos de uso del explorador son los que nos proporciona el navegador

D2RQ y no se van a analizarlos en detalle, pero serían los siguientes:

CU.1. Explorador

CU.1.1. Listado de clases

CU.1.2. Directorio de una clase

CU.1.3. Detalle de un recurso

CU.1.4. Filtrar

Esta será una funcionalidad añadida, en las tablas se podrán filtrar los

resultados en tiempo real gracias a un buscador de texto.

CU.1.5. Ordenar

Los recursos listados en la vista del directorio se podrán ordenar por

nombre de manera ascendente y descendente.

CU.2. Buscador

CU.2.1. Buscar en el campo de texto.

Se podrá realizar la búsqueda desde la página de inicio o desde propio

buscador, el campo de búsqueda se mantiene siempre visible en la parte

superior de la pantalla.

CU.2.2. Filtrar por tipo de contenido.

Los tipos de contenido de los resultados del buscador se mostrarán en

un lateral y se podrá filtrar por un tipo de contenido concreto.

CU.2.3. Filtrar por facetas.

Una vez seleccionado un tipo de contenido se podrá afinar más la

búsqueda gracias a las facetas propuestas, por ejemplo, una vez

seleccionado el tipo de contenido de trabajo académico se podrá filtrar

por año de publicación.

CU.2.4. Paginar

Sólo se mostrarán una cantidad limitada resultados en pantalla y el resto

de resultados se agruparán en diferentes páginas. Para poder navegar

por todos estará disponible un control con las páginas anterior y

siguiente y algunas de las páginas adyacentes a la actual.

Page 15: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

12

CU.2.5. Consultas predefinidas.

Al lado del buscador se mostrarán también una serie de consultas

predefinidas de interés.

4.3 Diseño de la interfaz

Algunas de las pantallas se tratan simplemente de un rediseño de las

originales del explorador de D2RQ, siguiendo la misma línea se han

desarrollado también las del buscador.

Página de inicio:

Page 16: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

13

Listado:

Detalle:

Page 17: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

14

Buscador:

4.4 Mapeado de la base de datos

D2RQ Es la herramienta que nos proporciona el explorador RDF y el buscador

SPARQL a partir de una base de datos relacional. Para conseguirlo primero

debemos generar un archivo de mapping en el que se indica cómo convertir las

tablas y relaciones de la base de datos en clases y etiquetas interpretables por

el motor de D2RQ.

D2RQ incluye la herramienta generate-mapping http://d2rq.org/generate-mapping

para la generación automática del mapeado a partir de una base de datos

relacional.

Es importante que la base de datos original tenga definidas lo mejor posibles

sus claves foráneas y el tipo de dato de cada campo para que direct mapping

funcione correctamente. No obstante, se puede modificar manualmente este

archivo antes de levantar el servidor.

El proceso automáticod de mapping por defecto asigna a cada clase el nombre

de la tabla y como etiqueta para cada elemento de la clase le asigna una

etiqueta genérica tipo: “asignatura <id_asignatura>”, por lo tanto, uno de los

cambios que he tenido que realizar para cada clase ha sido asignarle un

nombre más descriptivo que comience por mayúscula, y también elegir una

Page 18: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

15

etiqueta con más sentido para cada elemento por ejemplo en el caso anterior el

nombre de la asignatura.

Para cambiar manualmente el archivo mapping.ttl generado utilizar el lenguaje

de mapeado de D2RQ http://d2rq.org/d2rq-language.

Esquema inicial de la base de datos

La base de datos que vamos a utilizar es la que se está utilizando actualmente

en el portal URInvestiga http://investigadoresur.unirioja.es/investigadoresur/. Este

portal se realizó como parte del TFG “Reingeniería de una aplicación web

FileMaker para una biblioteca” por la alumna Nabila Anou y en él se puede

consultar el esquema detallado de esta base de datos

http://biblioteca.unirioja.es/tfe_e/R000001471.pdf (En la página 54).

En un principio partimos de un total de 26 tablas, pero no será necesario

mapear algunas de ellas como por ejemplo ULTIMA_SINCRO, que se usa

como control interno. Otras como ATESIS o INVESTIG_GRUPO_ESPEJO

sólo contienen relaciones entre varias tablas o agregan algún campo que no es

relevante para mostrar en el explorador, todas estas tablas no serán incluidas o

se fusionarán con otras.

Mapping detallado

A continuación, se detalla cuáles son las tablas incluidas en el archivo de

mapping, con los campos representados y las propiedades o relaciones

adicionales. El campo en negrita representa a la que hace las funciones de

rdf:label de esa clase.

Si no se indica nada sobre un campo se entiende que en el archivo de mapping

aparece como una propiedad estándar y se representa del siguiente modo:

map:Actividades_ISBN a d2rq:PropertyBridge; d2rq:belongsToClassMap map:Actividades; d2rq:property vocab:actividades_ISBN; d2rq:propertyDefinitionLabel "actividades_espejo ISBN"; d2rq:column "actividades_espejo.ISBN";

ACTIVIDADES

CODIGOAC DOCUMENTO ANOINICIO TIPO_ACTIVIDAD ISBN REGISTRO_COMPLETO URL_TEXTO_COMPLETO

Page 19: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

16

URL_TEXTO_COMPLETO_TIPO URL_SCOPUS URL_ABSYS TIPO_DOCUMENTO RESUMEN TITULOAC CODIGO_IDIOMA CODIGO_PAIS ESPEJO_AÑO_JCR ESPEJO_AÑO_SJR ANIO_PARA_INRECS FASTCULO_REVISRA CODIGO_EJEMPLAR_REVISTA ISSN_SIN_GUION CODIGO_TIPO DOI VALIDADO CODIGOTESISUR CODIGOLIBROSUR CODIGOLIBROURCAPITULOS URL_IMAGEN_LIBRO REFERENCIAS CONTAR_USUARIOS_UR

INVESTIGADOR:

map:Actividades_investigador a d2rq:PropertyBridge; d2rq:belongsToClassMap map:Actividades; d2rq:property vocab:Actividades_investigador; d2rq:propertyDefinitionLabel "actividad Actividades_investigador"; d2rq:column "investigadoresactividad.nombreInvestigador"; d2rq:join "investigadoresactividad.codActividad => actividades_espejo.CODIGOAC"; d2rq:join "investigadoresactividad.dni => investigadoresactividad.DNI"

ASIGNATURA

CODIGOASIGNATURA NOMBRE_ASIGNATURA URL_ASIGNATURA

CENTRO_INVESTIGADOR

CODIGO_CENTRO NOMBRE_CENTRO NOMBRE_CENTRO_ABREVIADO TIPO_CENTRO WEB_CENTRO CODIGO_DIRECTOR URL_REGLAMENTO

Page 20: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

17

DEPARTAMENTO

CODIGO DEPARTAMENTO NOMBREDEPARTAMENTO NOMBREDIRECTOR WEB - foaf:homepage

ESPECIALIDADES

CODIGO NUMERO NOMBRE_ESPECIALIDAD

ESPECIALIDADES_GRADOS

CDIGO_REGISTRO CODIGO_TIPO NOMBRE_ESPECIALIDAD URL_TFE

FACULTAD

CODIGO_FACULTAD NOMBRE_FACULTAD WEB_FACULTAD – foaf:homepage

GRUPO_INVESTIGACION

IDGRUPOINV DEPARTAMENTO FECHAINICIO FECHAFIN ACRONIMO DESCGRUPOINV - LABEL LINEASINVESTIGACION WEB_GRUPO - foaf:homepage NOVEDADES_BIBLIOGRAFICAS VALIDO

TRABAJOS_ACADEMICOS

CODIGO_REGISTRO FECHA_DEFENSA IDIOMA COD_ESPECIALIDAD TFE_NOMBREFICHERO TIPOTRABAJO

Page 21: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

18

TITULO URL_TRABAJO AUTORES_NOMBRE CURSO ANO_FINALIZACION COD_TIPO_TRABAJO PFC_TITULACION MASTER_PROFESORADO_ESPECIALIDAD ESP_PFG ESPECIALIDAD map:Trabajos_academicos_especialidad a d2rq:PropertyBridge; d2rq:belongsToClassMap map:Trabajos_academicos; d2rq:property vocab:trabajos_academicos_especialidad; d2rq:propertyDefinitionLabel "trabajos_academicos especialidad"; d2rq:column "especialidades.Nombre_especialidad"; d2rq:join "especialidades.numero => trabajos_academicos.cod_especialidad";

DIRECTOR

map:Trabajos_academicos_director a d2rq:PropertyBridge; d2rq:belongsToClassMap map:Trabajos_academicos; d2rq:property vocab:trabajos_academicos_director; d2rq:propertyDefinitionLabel "Trabajos_academicos Director"; d2rq:pattern "@@trabajos_academicos_directores.apellidos@@, @@trabajos_academicos_directores.nombre@@"; d2rq:join "trabajos_academicos_directores.Id_trabajo => trabajos_academicos.codigo_registro";

TRABAJOS_ACADEMICOS_DIRECTORES

Se fusiona con TRABAJOS_ACADEMICOS mediante una propiedad, debemos

usar d2rq:pattern porque nombre y apellidos están en campos diferentes.

map:Trabajos_academicos_director a d2rq:PropertyBridge; d2rq:belongsToClassMap map:Trabajos_academicos; d2rq:property vocab:trabajos_academicos_director; d2rq:propertyDefinitionLabel "Trabajos_academicos Director"; d2rq:pattern "@@trabajos_academicos_directores.apellidos@@, @@trabajos_academicos_directores.nombre@@"; d2rq:join "trabajos_academicos_directores.Id_trabajo => trabajos_academicos.codigo_registro";

INVESTIG_GRUPO_ESPEJO

Sólo la utilizaremos para realizar un JOIN entre personas y grupos de

investigación mediante una propiedad de referencia.

map:investig_grupo_espejo_Grupo__ref a d2rq:PropertyBridge; d2rq:belongsToClassMap map:Personas;

Page 22: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

19

d2rq:property vocab:investig_grupo_espejo_Grupo; d2rq:refersToClassMap map:grupo_investigacion; d2rq:join "investig_grupo_espejo.idGrupo => grup_inv_espejo.IDGRUPOINV"; d2rq:join "investig_grupo_espejo.dni => usuariosbur.DNI";

Vocabularios estándar

En la web semántica existen un conjunto de vocabularios comunes para

etiquetar o hacer referencia a una serie de clases o atributos comunes que

utilizamos en los archivos RDFs.

En el apartado anterior donde se especifica la estrategia de mapeado que se

utilizará en este trabajo ya han aparecido algunos de estos vocabularios y sus

atributos como por ejemplo foaf:homepage.

Estos son unos de los vocabularios estándar más populares que han sido

utilizados en el trabajo:

FOAF

FOAF es un proyecto para relacionar la información personal disponible en la

web.

Integra redes sociales de colaboración, amistad o colaboración.

DC - Dublin Core

Dublin Core es un modelo de metadatos elaborado y auspiciado por la DCMI

(Dublin Core Metadata Initiative).

Es un sistema de 15 definiciones semánticas descriptivas que pretenden

transmitir un significado semántico a las mismas.

Contenido:

DC.Title

DC.Subject

DC.Description

DC.Source

DC.Type

Page 23: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

20

DC.Relation

DC.Coverage

Propiedad Intelectual:

DC.Creator

DC.Publisher

DC.Contributor

DC.Rights

Instanciación:

DC.Date

DC.Format

DC.Identifier

DC.Language

SKOS

Simple Knowledge Organization System (Sistema Simple de Organización del

Conocimiento) proporciona un modelo para la representación de la estructura

básica y el contenido de esquemas de conceptos. Al tratarse de una aplicación

de RDF (Resource Description Framework), SKOS permite la creación y

publicación de conceptos en la Web, así como vincularlos con datos en este

mismo medio e incluso integrarlos en otros esquemas de conceptos.

En el uso básico de SKOS, los recursos conceptuales (conceptos) pueden ser

identificados con URIs, etiquetados con cadenas léxicas en una o más lenguas

naturales, documentados con diversos tipos de nota, relacionarse

semánticamente entre sí mediante estructuras jerárquicas informales y redes

de asociación y agruparse en esquemas de conceptos.

Page 24: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

21

5. Desarrollo

5.1 Implementación

La parte más interesante del desarrollo de la aplicación es saber cómo se

realizan las consultas desde PHP al endpoint SPARQL.

Vamos a analizar el ejemplo para una de las consultas predefinidas, pero sería

similar para la obtención de resultados o el conteo de los filtros, solamente con

cambiar la consulta SPARQL.

1. Generamos o recuperamos la query SPARQL

$query = $app['prefixes'] . 'SELECT ?name (count(distinct ?a) as ?count)' . ' WHERE {' . ' ?a vocab:actividades_anoinicio ?name' . ' }' . 'group by ?name order by DESC(?count)'; break; }

2. Se crea un cliente de Guzzle con el que realizaremos la peticiones

use GuzzleHttp\Client; $client = new Client([ 'base_uri' => 'http://localhost:2020/sparql', 'timeout' => 30.0, // 30 segundos ]);

3. Realizamos la consulta y los resultados los almacenamos en una

variable que pasamos a la plantilla twig para que los muestre.

$consulta['rows'] = doConsulta($client, $query); $params['consulta'] = $consulta; return $app['twig']->render('index.html.twig', $params);

4. Para hacer la consulta mandamos una petición al endpoint y se obtiene

la respuesta en formato json, este json se formatea y se procesa según

el tipo de consulta, en este caso obtenemos para cada resultado las

variables “name” y “count”

Page 25: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

22

function doConsulta($client, $query) { $response = $client->request('POST', 'http://localhost:2020/sparql', [ 'form_params' => [ 'query' => $query, 'output' => 'json' ] ]); $body = (string) $response->getBody(); $json_response = json_decode($body); $rows = array_map(function($binding) { return array( "name" => $binding->name->value, "count" => $binding->count->value); }, $json_response->results->bindings); return $rows; }

5.2 Configuración de D2R server

Por defecto el servidor de d2r está limitado a 50 resultados por clase, para

poder navegar por todas las instancias debemos añadir un bloque de código de

configuración al archivo de mapping:

<> a d2r:Server; d2r:limitPerClassMap false;

También contamos con la limitación por defecto de 50 propiedades para cada

una de las clases, igualmente podemos eliminar esta limitación añadiendo la

línea:

d2r:limitPerPropertyBridge false;

5.3 Personalización del explorador D2RQ

Lamentablemente este explorador a pesar de ser una excelente herramienta,

cuenta con la desventaja de no haber sido actualizado en los últimos años, por

ello su diseño deja bastante que desear respecto a los estándares actuales de

la web.

Sin querer invertir demasiado tiempo en esta tarea, he intentado modificar su

código para contar con un aspecto más adecuado. Esta aplicación utiliza para

su capa de presentación plantillas de Apache Velocity

(http://velocity.apache.org/engine/1.7/webapps.html), y afortunadamente

podemos modificar estas plantillas sin necesidad de recompilar el proyecto y

los cambios se reflejan de inmediato en el navegador.

Estas son algunas capturas con el diseño original:

Page 26: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

23

Directorio:

Detalle:

Y éstas con el diseño final:

Directorio:

Page 27: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

24

Detalle:

5.4 Testing

Con la herramienta codeception y phantomjs se han realizado un conjunto de

test de aceptación para comprobar que el buscador funciona correctamente.

La instalación de esta herramienta es muy sencilla si usamos composer:

"require-dev": { "codeception/codeception": "*" }

Módulos

El módulo Recorder permite hacer una captura de pantalla de cada paso, y

posteriormente en caso de error podemos conocer exactamente el estado de la

aplicación cuando falló:

extensions: enabled: - Codeception\Extension\Recorder config: Codeception\Extension\Recorder: delete_successful: false

El primer paso es generar el archivo codeception.xml y la carpeta de tests se

ejecuta:

./vendor/bin/codecept bootstrap

Se incluye un único archivo de test unitarios:

Page 28: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

25

<?php $I = new AcceptanceTester($scenario); $I->wantTo('Probar el buscador'); $I->amOnPage('http://localhost:80/buscador/web/'); $I->fillField("input[name='q']", 'Rubio García, Julio'); $I->click('#btn-buscar'); // Filtro de tipo de contenido $I->see('TRABAJOS_ACADEMICOS','.filtro'); $I->see('32','.badge'); $I->see('PERSONA','.filtro'); $I->see('1','.badge'); // Total de resultados $I->see('33 resultados'); // Resultados concretos antes y después de páginar $I->see('Lispspaces'); $I->click('Siguiente'); $I->see('Asistente web para consultas SQL'); // Selecciono el filtro de tipo trabajo academico $I->click('a.filtro:nth-child(1)'); $I->see('32 resultados'); $I->see('Instalador configurable a través de ficheros XML'); // Deselecciono el filtro de tipo $I->click('.tipo a'); // Selecciono el filtro de tipo persona $I->click('a.filtro:nth-child(2)'); $I->see('1 resultados'); $I->see('Rubio García, Julio');

Cómo se puede ver el código utilizado en codeception es bastante descriptivo. Para pasar los tests se ejecuta la instrucción:

./vendor/bin/codecept run acceptance

Si todo ha ido bien obtenemos un mensaje de este tipo:

Page 29: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

26

5.5 Problemas encontrados

Un problema Problema SPARQL

Problema con los totales facetados.

La consulta que devuelve los resultados que se muestran en el listados del

buscador:

SELECT (count(distinct ?s) as ?c) WHERE { ?s ?p "1990". ?s rdfs:label ?label. ?s rdf:type ?type}

Nos estaba devolviendo 45 filas, mientras que la consulta para recuperar el

número de recursos con esas condiciones:

SELECT ?value (count(?value) as ?c) WHERE {?s vocab:trabajos_academicos_TipoTrabajo ?value. ?s ?p "1990". ?s rdfs:label ?label. ?s rdf:type ?type. ?s vocab:trabajos_academicos_ano_finalizacion ?trabajos_academicos_ano_finalizacion} group by ?value

Estaba devolviendo 65 filas.

Cuando hay más de una propiedad que cumple la primera condición (?s ?p

"1990") vamos a obtener más resultados de los totales esperados.

Esto se soluciona haciendo dentro del count un distinct ?s, y

afortunadamente con SPARQL no hay ningún problema aunque no

hayamos agrupado por la variable ?s.

SELECT ?value (count(distinct ?s) as ?c) WHERE {?s vocab:trabajos_academicos_TipoTrabajo ?value. ?s ?p "1990". ?s rdfs:label ?label. ?s rdf:type ?type. ?s vocab:trabajos_academicos_ano_finalizacion ?trabajos_academicos_ano_finalizacion} group by ?value

Ahora la consulta sí que devuelve 45 filas, como era la esperado.

Page 30: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

27

Problemas con los filtros:

Un problema que ha sido difícil de solucionar ha sido manejar las

dependencias entre los filtros facetados. En un principio estaba mostrando

los totales de cada valor sin tener en cuentos los filtros que ya habían sido

seleccionados, por lo que los valores mostrados eran mucho más altos. Al

intentar hacer frente a este problema de conteo para los valores facetados

surgió otro que afectaba más todavía al funcionamiento del buscador.

Partiendo de una situación cómo está en el buscador:

Cuando se seleccionaba un filtro afectaba de tal manera a las consultas de

los valores facetados que ya no se podía filtrar por otro valor de la misma

categoría, y resultaba imposible por ejemplo seleccionar los trabajos

académicos de 2005 y 2006.

Page 31: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

28

Finalmente calculando los filtros por separado para la consulta de

resultados y para cada uno de los grupos facetados (no incluyendo los

filtros de su propio grupo) se ha obtenido el comportamiento deseado

Page 32: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

29

6. Conclusiones

Aunque al principio las tecnologías utilizadas con la web semántica me

parecían bastante complicadas en comparación con las tecnologías

habituales en el desarrollo web, sobre todo el lenguaje de consultas

SPARQL. Al final me he encontrado bastante cómodo trabajando con él y

me ha parecido muy potente a la hora de hacer consultas relacionadas y

agrupadas y de una manera más sencilla que con SQL.

6.1 Mejoras

Rendimiento

El reutilizar la base de datos existente tiene su contrapartida en el

rendimiento de la aplicación, y algunas de las búsquedas que recuperan

varias relaciones pueden tardar varios segundos.

Filtros facetados

Para no complicar demasiado la aplicación del buscador se decidió

establecer los filtros facetados directamente en código. Lo ideal será que en

propio archivo de mapping indicásemos cuáles de las propiedades de una

clase son aptas para el filtrado posterior.

Vocabulario común

Cómo ya se ha hablado en la introducción cuando todo el mundo usa los

mismos términos para referirse a los mismos productos o conceptos en

general las posibilidades de interacción entre los sistemas se multiplican.

Por ello hubiese sido ideal en lugar de utilizar nuestro propio vocabulario

condicionado por los campos existentes en la base de datos, haber

utilizado un vocabulario común para investigaciones, tesis, trabajos fin de

carrera, etc.

Page 33: Aplicaciones de web semántica en la Biblioteca de la ... · Codeception . Un . framework. de . testing. que permite realizar test unitarios, funcionales o de integración de manera

30

7. Bibliografía y referencias

[1] The Semantic Web, Linked Data and Drupal, Part 1: Expose your data using

RDF, http://www.ibm.com/developerworks/library/wa-rdf/

[2] A Direct Mapping of Relational Data to RDF, https://www.w3.org/TR/rdb-

direct-mapping/ [3] The D2RQ Platform - Accessing Relational Databases

as Virtual RDF Graphs, http://d2rq.org [4] Linked Data - Connect Distributed Data across the Web,

http://linkeddata.org/


Recommended