Bienvenidos al Conversor de ficheros en formato RDF a OWL (también válido para convertir a otros formatos).
La interfaz de búsqueda está realizada con los lenguajes de programación PHP, HTML5, CSS3, JAVASCRIPT y AJAX (realizando consultas de forma directa a nuestro servidor de Apache Solr recibiendo los datos con la estructura JSON para poder trabajar con los datos en JavaScript).
Los directorios y ficheros de los que se compone nuestra interfaz son los siguientes:
+ css
- estilo.css : este fichero es la hoja de estilos del sitio web, en el cual hemos definido la estructura de cada elemento de nuestra web, las fuentes, los colores, los fondos y los efectos del sitio.
include
js
index.php
USO DE COMPONENTE 2: BÚSQUEDAS SEMÁNTICAS Y TEXTUALES
La interfaz de búsqueda está realizada con los lenguajes de programación PHP, HTML5, CSS3, JAVASCRIPT y AJAX (realizando consultas de forma directa a nuestro servidor de Apache Solr recibiendo los datos con la estructura JSON para poder trabajar con los datos en JavaScript).
En el ANEXO 4 se encuentra los detalles de la implementación.
Han sido creados dos tipos de buscador: un buscador textual, en el cual, se recogen los datos introducidos por el usuario en el cuadro de búsqueda y se realiza una consulta a nuestra base de datos almacenada en Solr sin facetar ; y un buscador semántico, mediante el cual, con un parser realizado en JavaScript, PHP y AJAX, se recibe la cadena de texto introducida por el usuario en el campo de texto y se interpreta mediante una serie de funciones la semántica de la frase, pudiendo así responder de forma natural a las necesidades que realmente tiene el usuario.
El buscador textual tiene un funcionamiento sencillo, el proceso que se sigue para realizar la consulta es el siguiente:
En primer lugar creamos un objeto de tipo Ajax mediante el cual realizaremos una consulta a nuestro Solr, recibiendo la respuesta de Solr en formato JSON para poder mostrarlo en pantalla desde nuestro script realizado en JavaScript.
Una vez hemos creado el objeto, recibimos y almacenamos en una variable llamada datos_formulario la cadena de texto insertada por el usuario en el cuadro de búsqueda.
Obtenida la cadena, asignamos a la propiedad url de nuestro objeto en AJAX, el siguiente valor:
http://buscadorags.jabenitez.com/solr/fichas/select?indent=on&version=2.2&q='+datos_formulario+'&fq=&start=0&rows=7500&fl=id%2Cscore&wt=json&explainOther=&hl=on&hl.fl=titulo
Esta cadena realiza la consulta de forma directa a nuestra base de datos almacenada en Solr, enviándole como consulta la cadena de texto insertada por el usuario, buscando así, la cadena de texto introducida en toda nuestra base de datos del AGS.
De esta manera, recibiremos una respuesta de las fichas que contienen el texto insertado el usuario.
Al ser una búsqueda de tipo textual, este buscador no cumple con los requisitos de búsqueda semántica, lo que dificulta su uso para una persona que desconoce el verdadero contenido de la base de datos.
Un ejemplo práctico: Supongamos que el usuario desea tener la siguiente información: ¿Qué mapas fueron realizados en el año 1950 por el autor Juan Baptista?
En el caso de nuestro buscador semántico, recogerá la cadena de texto introducida por el usuario y nos devolverá los resultados de buscar esa cadena completa en nuestra base de datos, no sabiendo interpretar qué datos realmente necesita conocer el usuario ni de dónde debe obtenerlos.
En oposición a nuestro buscadorTextual.js, con el buscador semántico pretendemos facilitar al usuario de a pie la realización de búsquedas, realizando una evaluación semántica de la frase que recibamos del cuadro de búsqueda.
El funcionamiento de este buscador tiene distintas fases, posee una complejidad bastante más elevada que el buscadorTextual.
Su funcionamiento se divide en las siguientes fases:
Teniendo en cuenta el sistema QA descrito en el punto 5.1. de este trabajo, tenemos constancia de que el usuario puede realizar 5 tipos de consulta diferenciadas por la pregunta que realice: qué, quién, cómo, dónde y cuándo. Cada pregunta va a devolver un tipo de dato distinto almacenado en nuestra base de datos, con lo cual, sabemos lo siguiente:
Para conseguir esto, en primer lugar hemos creado una constante que almacena estos 5 tipos de pregunta con sus posibles variantes, de manera que, una vez recibida la cadena de texto insertada por el usuario, en una primera evaluación de la frase, buscaremos estos términos para poder generar una consulta que nos devuelva los campos que realmente necesitamos. De esta forma, si el usuario inserta una consulta como la siguiente: ¿Qué mapas se realizaron en el año 1950?, nuestro parser en una primera fase leerá la cadena de texto, detectará la palabra “Qué” y almacenará en otra variable los posibles valores a mostrar (en este caso, título, autor o año).
En una segunda fase, una vez hemos evaluado el tipo de pregunta que realiza el usuario nuestro parser realiza un análisis del objeto al que hace referencia nuestra pregunta, detectando si se trata de un autor, un mapa, una obra, un dibujo.
Una vez se ha detectado cualquiera de estas palabras, nuestro parser sabra de qué tipo es objeto que debe devolver. En el caso del ejemplo propuesto, nuestro parser ya ha podido descartar un gran número de elementos en su búsqueda, limitando la consulta a devolver resultados que pertenecen al tipo mapas de nuestra base de datos solar y además ha podido concluir que el dato principal solicitado, es el título en este caso.
En una tercera fase de la consulta, nuestro parser detecta el verbo de la frase y el sujeto al que se hace referencia, pudiendo así detectar nuevos campos en los que deberá realizar su consulta. En el caso de nuestro ejemplo particular, analizaría la cadena de texto “se realizaron en el año 1950”, siendo capaz de detectar que la consulta debe realizarla en el campo fecha de nuestra base de datos Solr, con el dato 1950.
Este proceso funciona de la siguiente manera:
Finalmente, habiendo realizado las fases anteriores, el objeto que habíamos creado en AJAX, el cual realiza las distintas consultas a nuestra base de datos Solr mediante JSON, muestra los datos almacenados en el array de resultados, con una apariencia específica y amigable para el usuario.
Esta aplicación ha sido realizada por: