Pois Plataform - Repositorio Digital UTPL

Anuncio
UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA
La Universidad Católica De Loja
MODALIDAD PRESENCIAL
ESCUELA DE CIENCIAS DE LA COMPUTACIÓN
Plataforma POIS – Linked Data.
Aplicación a los recorridos de los buses de la UTPL
TRABAJO DE FIN DE CARRERA PREVIO A LA
OBTENCIÓN DEL TÍTULO DE INGENIERO EN
SISTEMAS INFORMÁTICOS Y
COMPUTACIÓN
Autor:
Cueva Tacuri, Cúmar Ramiro
Director:
Ing. López Vargas, Jorge Afranio
LOJA – ECUADOR
2011
1
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
CERTIFICACIÓN
Ingeniero
Jorge A. López V.
DIRECTOR
CERTIFICA:
Haber dirigido y supervisado el desarrollo del presente proyecto de Tesis previo a la
obtención del título de INGENIERO EN SISTEMAS INFORMÁTICOS Y COMPUTACIÓN,
presentado por el alumno Sr. CÚMAR RAMIRO CUEVA TACURI, y una vez que este cumple
con todas las exigencias y requisitos legales establecidos por la Universidad Técnica
Particular de Loja, autorizo su presentación para los fines legales pertinentes.
Loja, Octubre de 2011
F.-----------------------------------Ing. López Vargas, Jorge Afranio
i
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
CERTIFICACIÓN
Ingeniera
Diana Torres
CO-DIRECTORA
CERTIFICA:
Haber dirigido y supervisado el desarrollo del presente proyecto de Tesis previo a la
obtención del título de INGENIERO EN SISTEMAS INFORMÁTICOS Y COMPUTACIÓN,
presentado por el alumno Sr. CÚMAR RAMIRO CUEVA TACURI, y una vez que este cumple
con todas las exigencias y requisitos legales establecidos por la Universidad Técnica
Particular de Loja, autorizo su presentación para los fines legales pertinentes.
Loja, Octubre de 2011
F.-----------------------------------Ing. Torres, Diana
ii
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
AUTORÍA
El presente proyecto de tesis con cada una de las observaciones, análisis, evaluaciones,
conclusiones y recomendaciones emitidas, son de absoluta responsabilidad del autor.
De igual manera, es necesario indicar que la información de otros autores incluida en el presente
trabajo se encuentra debidamente especificada en las fuentes de referencia y apartados
bibliográficos.
F.-----------------------------------CUEVA TACURI, CÚMAR RAMIRO
iii
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
CESIÓN DE DERECHOS
Yo, CÚMAR RAMIRO CUEVA TACURI, declaro ser autor del presente trabajo y eximo expresamente
a la Universidad Técnica Particular de Loja y a sus representantes legales de posibles reclamos o
acciones legales.
Adicionalmente declaro conocer y aceptar la disposición del Art. 67 del Estatuto Orgánico de la
Universidad Técnica Particular de Loja que su parte pertinente textualmente dice: “Forman parte
del patrimonio de la Universidad la propiedad intelectual de investigaciones, trabajos científicos o
técnicos y tesis de grado que se realicen a través, o con el apoyo financiero, académico o
institucional (operativo) de la universidad”.
F.-----------------------------------CUEVA TACURI, CÚMAR RAMIRO
iv
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
AGRADECIMIENTO
A Dios por hacer que un sueño sea convertido en
realidad.
Mi más profundo agradecimiento a mis Padres,
cuya confianza ha sido depositada en mí durante
todo este tiempo, de igual manera a mis
hermanos por permitirme tomar prestado su
tiempo para ser invertido en alcanzar esta meta y
el apoyo brindado de una u otra forma.
A mi director de Tesis Ing. Jorge López, por su
acertada labor de dirección, a la cual ha dedicado
gran parte de su tiempo y sin el cual este trabajo
no podría haber sido culminado.
A mi co-directora Ing. Diana Torres, por la
predisposición demostrada desde el inicio hasta el
final del proyecto y la colaboración brindada.
De igual forma a todas las personas cercanas que
de alguna manera y de forma desinteresada
brindaron su apoyo en el transcurso de esta meta,
cuando más se los necesitaba.
CÚMAR RAMIRO CUEVA TACURI
v
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
DEDICATORIA
Dedicado a Aquel que permitió que esta meta sea
cumplida, Aquel que me brindó su apoyo y
compañía durante todo este tiempo y estoy
seguro que lo seguirá haciendo en adelante, Dios.
A mis padres por ser mi ejemplo a seguir, por ser
este sueño compartido y por no perder su
confianza en mí. A ustedes hermanos que siempre
han estado presentes en cada instante de este
trayecto y me han motivado a seguir hasta el final,
en especial a ti Franklin.
A ti bonita, que has compartido junto a mi todo
este caminar, siendo el mejor soporte para no
desmayar.
Y en especial a todos los amigos y compañeros
que nunca dudaron que llegaría el momento en
que el esfuerzo sería recompensado.
CÚMAR RAMIRO CUEVA TACURI
vi
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
ÍNDICE DE CONTENIDOS
CERTIFICACIÓN
I
CERTIFICACIÓN
II
AUTORÍA
III
CESIÓN DE DERECHOS
IV
AGRADECIMIENTO
DEDICATORIA
V
VI
ÍNDICE DE FIGURAS
1
ÍNDICE DE TABLAS
3
1.
4
ESTADO DEL ARTE
1.1.
Introducción
4
1.2.
Linked Data
5
1.3.
RDFStore
7
1.3.1.
Sparql Update
8
1.3.2.
SPARUL y El Proceso Asistido de Actualización
9
1.4.
Puntos de Interés
11
1.5.
Trabajo Relacionado
13
1.6.
Trabajo futuro
15
2.
VOCABULARIO RDF
2.1.
2.1.1.
Construcción
Selección de Elementos Preliminares y Formulación de Interrogantes
17
17
17
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
2.1.2.
Definición de Elementos Finales y sus Atributos
18
2.1.3.
Estructura de Vocabulario
2.1.3.1. Consideraciones de Nomenclatura
2.1.3.2. Descripción de Conceptos
2.1.3.3. Esquema Preliminar
2.1.3.4. Esquema Final
2.1.3.5. Relaciones Binarias
2.1.3.6. Diagrama RDF
19
20
20
22
23
24
25
2.1.4.
Validación del Vocabulario
2.1.4.1. Instancias de Vocabulario
2.1.4.2. Consultas SPARQL
2.1.4.3. Resultados de Validación
25
26
27
32
2.2.
33
URI’s
2.2.1.
Definición
33
2.2.2.
Uri’s para el Vocabulario
34
Publicación de Vocabulario
35
2.3.
2.3.1.
Generación de la Descripción del Vocabulario
36
2.3.2.
PURL
2.3.2.1. Configuraciones
36
37
2.3.3.
Apache HTTP Server
2.3.3.1. Negociación de Contenido (Content Negotiation)
2.3.3.2. Configuraciones
38
38
38
2.3.4.
Pruebas
39
2.3.4.1.
VAPOUR
40
3.
BACKEND
3.1.
3.1.1.
OpenLink Virtuoso
43
43
Carga de Tripletas al Store
43
3.1.2.
Sparql Endpoint
3.1.2.1. Formatos de Respuesta
3.1.2.2. SPARQL basado en REST
3.1.2.3. Pruebas
45
46
47
48
3.1.3.
Autenticación sobre EndPoint
3.1.3.1. Pruebas
49
53
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
3.2.
Vocabulary of Interlinked Datasets (VoID)
54
3.3.
Servicio REST - CRUD
56
3.3.1.
Framework
3.3.1.1. Funcionamiento del Servidor REST
57
58
3.3.2.
URIs de Recursos
61
3.3.3.
Métodos del API
3.3.3.1. Eliminar una Ruta
3.3.3.2. Agregar una nueva parada
3.3.3.3. Eliminar parada
3.3.3.4. Actualizar Propiedad
3.3.3.5. URL para Imágenes
63
63
64
64
65
66
3.3.4.
67
4.
Pruebas
CLIENTE
68
4.1.
Tecnologías
68
4.2.
Integración
69
4.3.
Funcionalidades
70
4.3.1.
Verificación de Existencia de Estudiante
70
4.3.2.
Visualización de Vivienda
70
4.3.3.
Visualización de Parada Frecuente
70
4.3.4.
Registro de Vivienda
70
4.3.5.
Registro de Parada Frecuente
70
4.4.
Pruebas
71
4.4.1.
CASO 1
71
4.4.2.
CASO 2
71
4.4.3.
CASO 3
72
5.
DISCUSIÓN
73
6.
CONCLUSIONES
74
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
7.
RECOMENDACIONES
75
8.
BIBLIOGRAFÍA
76
9.
ANEXOS
78
9.1.
ANEXO A
79
INSTALACIÓN DE PLUGIN - OWLDoc
80
9.2.
81
ANEXO B
CONFIGURACIONES - PURL
82
9.3.
84
ANEXO C
INSTALACIÓN DE SERVIDOR PURL
85
9.4.
89
ANEXO D
APACHE WEB SERVER: Instalación y Configuración
Instalación
Configuraciones
90
90
90
9.5.
93
ANEXO E
VAPOUR: VALIDACIÓN DE VOCABULARIO
94
9.6.
98
ANEXO F
INSTALACIÓN DE VIRTUOSO SERVER
9.7.
ANEXO G
99
102
VIRTUOSO: CARGA DE DATOS AL STORE
103
9.8.
ANEXO H
105
URIs – POIS REST SERVER
106
9.9.
108
ANEXO I
PRUEBAS SERVICIO REST - POIS
109
9.10.
131
ANEXO J
CASOS DE USO
132
9.10.1.
132
Existencia de Estudiante
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
9.10.2.
Visualizar Vivienda
132
9.10.3.
Visualizar Parada Frecuente
133
9.10.4.
Registro de Vivienda
133
9.10.5.
Registro de Parada Frecuente
134
9.11.
ANEXO K
135
INTERFAZ DE CLIENTE
136
9.11.1.
INGRESO
136
9.11.2.
PRINCIPAL
136
9.11.3.
VIVIENDA
137
9.11.4.
PARADA FRECUENTE
137
9.11.5.
PARADAS EXISTENTES
138
9.12.
ANEXO L
139
5.8.1
CASO 1: Cédula Incorrecta
140
5.8.2
CASO 2: Cédula Correcta NO existente en el Store
140
5.8.3
CASO 3: Cambiar Parada Frecuente y Vivienda
144
9.13.
ANEXO M - PAPER
145
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
ÍNDICE DE FIGURAS
Figura 1: Linked Open Data Cloud
Figura 2: Tabla de la BD Relacional
Figura 3: Extracto de Vocabulario - RDFs
Figura 4: Vocabulario - Esquema Preliminar
Figura 5: Vocabulario – Esquema Final
Figura 6: Relaciones Binarios
Figura 7: Diagrama RDF – Vocabulario: Generado con el plugin OntoGraf de Protégé
Figura 8: Instancias de Prueba
Figura 9: URIs for Vocabularies
Figura 10: Partes de una PURL
Figura 11: Funcionamiento de Server PURL
Figura 12: Content Negotiation - Archivo RDF
Figura 13: Content Negotiation - Archivo HTML
Figura 14: Interfaz del servicio VAPOUR
Figura 15: Resumen de Validación – VAPOUR
Figura 16: Diagrama ER – IRBU
Figura 17: Extracto del archivo OWL de salida
Figura 18: EndPoint generado por Virtuoso
Figura 19: Caracteres codificados
Figura 20: Usuarios Virtuoso Server
Figura 21: Roles Virtuoso Server
Figura 22: Error de Privilegios
Figura 23: Creación de Usuario
Figura 24: Servidor de Autentificación
Figura 25: Editor VoID - DERI
Figura 26: Servidor REST – POIS
Figura 27: Estructura función – Server REST
Figura 28: Correspondencia de Parámetros
Figura 29: Parámetro Opcional
Figura 30: Directorio Servidor Apache
Figura 31: Desplazamiento e inserción de Parada
Figura 32: Desplazamiento y eliminación de Parada
Figura 33: Doble codificación de una URL
Figura 34: Petición HTTP – ExtJs
Figura 35: Documentación Generada con OWLDoc
Figura 36: Registro Server PURL OCLC
Figura 37: Registro de Dominio - PURL
Figura 38: Registro de PURL Individual
Figura 39: Instalación PURL - Wizard
6
9
21
22
23
24
25
27
33
36
37
39
40
41
42
44
45
46
49
50
50
51
52
53
55
59
60
61
61
62
64
65
66
69
80
82
83
83
85
Cúmar Ramiro Cueva Tacuri
1
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Figura 40: Instalación PURL – Especificación de BackEnd
Figura 41: Instalación PURL – Permisos
Figura 42: PURL – Interfaz Principal
Figura 43: PURL – Creación de Dominio Público
Figura 44: PURL – Creación de Dirección
Figura 45: Estructura de Directorios
Figura 46: URI y parámetros – VAPOUR
Figura 47: Petición RDF/XML – VAPOUR
Figura 48: Sin ‘Content Negotiation’ - VAPOUR
Figura 49: Class - Petición RDF/XML – VAPOUR
Figura 50: Class - Sin 'Content Negotiation' - VAPOUR
Figura 51: Property - RDF/XML – VAPOUR
Figura 52: Property - Sin 'Content Negotiation' - VAPOUR
Figura 53: Interfaz Principal
Figura 54: Interfaz de Administración - CONDUCTOR
Figura 55: Carga de Archivo OWL
Figura 56: Grafo Creado
Figura 57: Verificación de Tripletas
Figura 58: Mensaje de Error al ingresar una cédula incorrecta,
Figura 59: Mensaje para ingresar un nuevo individuo.
Figura 60: Mensaje de bienvenida.
Figura 61: Aviso de Selección
Figura 62: Formulario sobre Vivienda
Figura 63: Información sobre Vivienda
Figura 64: Selección de Parada Frecuente
Figura 65: Información sobre Parada
Figura 66: Capas visibles
Figura 67: Peticiones REST
86
86
87
87
88
91
94
95
95
96
96
97
97
100
100
103
103
104
140
140
140
141
141
142
142
143
143
144
Cúmar Ramiro Cueva Tacuri
2
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
ÍNDICE DE TABLAS
Tabla 1: Stores y Métodos de Actualización
Tabla 2: Resultados Benchmarking
Tabla 3: Atributos de un POI de categoría ‘Clínica’ en dos entornos diferentes
Tabla 4: Preguntas Base para Generación de Vocabulario
Tabla 5: Elementos del Vocabulario
Tabla 6: Uri’s de Vocabulario
Tabla 7: Prefijos de Individuos
Tabla 8: Formatos de Respuesta
Tabla 9: Lista de parámetros
Tabla 10: Métodos HTTP - CRUD
Tabla 11: Frameworks REST
8
10
13
18
19
35
44
47
47
57
57
Cúmar Ramiro Cueva Tacuri
3
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
1. ESTADO DEL ARTE
Linked Data y su aplicación en sistemas de puntos de interés
georeferenciados y mecanismos de actualización de información
almacenada en un RDFStore
1.1.Introducción
El crecimiento de Internet en los últimos años, tomando como punto de referencia
América del Sur, demuestra que el índice de penetración es considerablemente mayor al
del resto de los continentes[1] lo que permite tener una perspectiva que apunta a que
Internet es cada vez una red de tal magnitud que se expande a través del globo.
Con este avance considerable de la red, el paradigma de la información y comunicación
se mantienen en igual forma sin alteraciones, donde podemos navegar a través de una
vasta cantidad de información y movilizarlos de una página a otra por medio de
interconexiones también llamadas Hyperlink1, los cuales a medida que avanzamos traen
hacia nosotros gran cantidad de contenido. Esto demuestra que la web se basa en la
visualización de información, puesto que su base es HTTP2, lo cual viene a ser un aspecto
muy útil para que las personas podamos comprender lo que se muestra, pero por otro
lado, solo se tiene enlaces externos o documentos aislados, cuya relación no constituye
mayor información.
La estructura manejada por la información en internet nos lleva a tener un espacio,
donde para llegar a la información que verdaderamente requerimos, sea necesario
recorrer gran cantidad de información poco relevante hasta poder llegar a nuestro
objetivo, esto debido a que los enlaces entre las páginas no son más que eso 'enlaces'
entre documentos estáticos que no aportan más que visualización para su
entendimiento, donde el usuario puede recorrer a través de un navegador web. En
cambio, los buscadores indexan toda la masa de datos analizando su contenido para
brindar al usuario una alternativa rápida a lo que intenta localizar.
El creador del internet, Tim Berners-Lee, sostiene la idea de que la información
contenida en recursos estáticos (documentos HTML) no es suficiente para el objetivo de
internet, lo que hace pensar en una forma en que los contenidos sean quienes se
vinculen a otros para generar solo información valiosa que a su vez pueda llevar a otro
tipo de información que de alguna manera está vinculada. Este concepto es conocido
1
w3schools.com. HTML Links. http://www.w3schools.com/html/html_links.asp
RFC2616
2
Cúmar Ramiro Cueva Tacuri
4
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
como Linked Data [2], el mismo que será tratado en el apartado 1.2.
A medida que los servicios dentro de internet se expanden, aparecen servicios que
escapan del esquema tradicional, uno de ellos es el servicio desarrollado a partir del
posicionamiento global (GPS) también conocidos como Location-BasedService (LBS). La
popularización de dispositivos gps integrados y de la tecnología asistida (a-gps), ha
permitido que la cantidad de usuarios crezca y se convierta en un mercado explotable.
Muestras de esto se pueden apreciar en aplicaciones que intentan aprovechar las
ventajas de estos dispositivos integrados en los teléfonos móviles principalmente, entre
ellas están Pocket Life3, Stuck4 y Waze5.
Las posibilidad que giran en torno a la geolocalización son variadas, estas se basan desde
la visualización en real-time de determinados elementos sobre un mapa georeferenciado
hasta la interacción con otros usuarios. Dentro de estos servicios también se enmarca un
concepto conocido como Puntos de Interés (PoI) [3] que será descrito en el apartado 1.4.
1.2. Linked Data
La web está conformada por información en gran cantidad, la forma tradicional de
publicar datos en la web de forma masiva se basa en formatos como csv, xml y el propio
HTML, esto limita la estructura y semántica de los datos, puesto que estos formatos no
fueron vistos como mecanismos de enlaces entre ellos, sino más bien como formas de
intercambio de información. De tal forma que un enlace dentro de un documento
(hyperlink) no representa suficiente descripción sobre el documento al cual se enlaza, lo
que dificulta de sobre manera el saber si la información contenida en él, es lo
suficientemente relevante como para ser visitado.
Esto ha llevado a tener una visión más amplia de la web, a visualizarla como un espacio
global en donde documentos y datos sean vinculados de tal manera que el acceso a ellos
genere un beneficio adicional, el conocimiento.
Linked Data, se basa en la ideología de conservar un conjunto de mejores prácticas para
hacer que el contenido de la web sea público y mantenga conexión entre sí, para ello sus
lineamientos radican en los siguientes 4 estamentos definidos por Tim Berners-Lee
(2006) los mismos que consisten en:


Usar URIs6 para nombrar las cosas.
Usar URIs HTTP.
3
http://www.pocketlife.com
http://www.swiftcover.com/stuck-iphone-app/
5
http://world.waze.com/
6
RFC3986
4
Cúmar Ramiro Cueva Tacuri
5
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic


Ofrecer información sobre los recursos mediante estándares (RDF, SPARQL)
Incluir enlaces a otras URIS, que permita descubrir más cosas.
Tomando estos principios se puede hacer una calificación de la calidad de nuestros datos
en torno a la perspectiva de Linked Data [6]:
1. Los datos se encuentra en la red (en cualquier formato), pero con una licencia
abierta.
2. Hacerlos disponibles como datos estructurados (ej. Excel en lugar de una
imagen)
3. Usar formatos no-propietarios (ej. csv en lugar de Excel)
4. Usar URLs para identificar cosas, así las personas pueden enlazarte.
5. Enlazar sus datos a los datos de otras personas para proporcionar un contexto.
Este tipo de calificativo es conocido como un entorno 5 estrellas. La idea que se persigue
es publicar datos de forma estandarizada, uniforme y mediante una forma genérica de
consumo. Desde el lanzamiento de estos principios el trabajo en Linked Data ha llevado a
que gran cantidad de datos sean colocados de manera pública y bajo un estándar en la
nube conocida como Linked Open Data la misma que se muestra en la Figura 1, cuya
última actualización es a Septiembre del 2010.
Figura 1: Linked Open Data Cloud
7
La aplicabilidad de Linked Data en la web transforma el paradigma de una web de
7
http://www.w3.org/wiki/SweoIG/TaskForces/CommunityProjects/LinkingOpenData
Cúmar Ramiro Cueva Tacuri
6
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
documentos a una web de cosas, donde se pueden determinar y reconocer las relaciones
entre estas. Para ello Linked Data utiliza el estándar de representación conocido bajo el
nombre de RDF. El mismo que hace posible esta relación de los datos y la transición
hacia un web de cosas [4].
Este modelo para el intercambio de datos en la web, se destaca por ser directo,
etiquetado y toda su estructura está basada en grafos, cuyo elemento principal son las
URI’s. Su base para realizar estas relaciones se basa en la estructura Triple que maneja
RDF también conocida como Tripletas.
Las propiedades en las que se basa el esquema RDF es conocido como Vocabulario, pero
para definirlo es necesario utilizar una extensión semántica conocida bajo el estándar de
RDFSchema [5] el mismo que es propuesto por la W3C. Esta extensión de RDF es
utilizada para describir clases (similares a las utilizadas en POO), propiedades y otros
recursos que pueden ser descritos, con eso se obtienen recursos agrupados en
categorías similares.
Debido a sus beneficios RDF se ha convertido en la web actual, en el formato en que
están escritos los datos. [6]
1.3.RDFStore
Esta información transformada a tripletas, las mismas que crean enlaces entre ‘cosas’
manteniendo el principio de Linked Data, necesitan, al igual que los datos relaciones
normales, un almacén de datos donde puedan ser guardadas y consultadas.
Lo que comúnmente se conoce en los ambientes relaciones como Base de Datos, dentro
de Linked data, el almacenamiento de tripletas es conocido bajo el nombre de RDFStore.
Estos son sistemas específicos para el almacenamiento de Grafos RDF, estos Stores
proporcionan mecanismos de backend para la extracción y almacenaje de información. El
estándar propuesto para este propósito por la W3C es SPARQL [7].
Aunque SPARQL fue definido por la W3C, cada Store implementa variaciones de este
adaptadas a sus entornos, posee una sintaxis similar a la utilizada por SQL, pero con
mayores ventajas como la recuperación de datos almacenados en localidades diferentes
(locales - remotas) así como de almacenes heterogéneos, esto debido a que SPARQL ha
sido pensado específicamente para el trabajo con Grafos RDF.
Cúmar Ramiro Cueva Tacuri
7
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
1.3.1. Sparql Update
Si bien SPARQL es el estándar de consulta para la extracción de datos del
RDFStore, para el proceso de realizar las operaciones restantes CRUD
(CreateReadUpdateDelete) sobre los grafos almacenados, se ha motivado la
tendencia a utilizar el lenguaje de actualización conocido como SPARQL/UPDATE,
el mismo que inició de la aportación de miembros de la compañía HewlettPackard8 y que la W3C ha acogido para crear un borrador [11] orientándolo a ser
definido como un estándar de la mano de SPARQL. Algunos de los almacenes de
RDF que implementan esta solución pueden ser observados en la Tabla 1.
Las facilidades que Sparql 1.1 Update presenta, se basan en permitir:
-
Insertar nuevas tripletas en un grafo RDF.
Eliminar tripletas de un grafo RDF.
Llevar a cabo un conjunto de operaciones de actualización en una sola acción.
Crear un nuevo grafo RDF en un RDFStore
Eliminar un grafo RDF en un RDFStore
Además de poseer una sintaxis similar a la utilizada por SPARQL, lo que permite
tener una curva de aprendizaje menor, facilitando la interacción.
RDFStore
4store9
BigData10
BigOwlim11
TDB12
Virtuoso14
AllegroGraph15
Sesame16
Método de Actualización
SPARQLUpdate
SPARQLUpdate
SPARQLUpdate(mediante Fuseki)
SPARQLUpdate(mediante Jena13)
SPARQLUpdate
SPARQLUpdate
API Nativo
Tabla 1: Stores y Métodos de Actualización
La eficiencia y rendimiento de varios de estos RDFStores ha sido evaluada por el
Equipo de la Universidad de Berlín SPARQLBenchmark, basándose en la utilización
8
http://www.w3.org/Submission/SPARQL-Update/
http://4store.org/
10
http://www.systap.com/bigdata.htm
11
http://www.ontotext.com/owlim/big/
12
http://www.openjena.org/wiki/TDB
13
http://jena.sourceforge.net/
14
http://virtuoso.openlinksw.com/
15
http://www.franz.com/agraph/allegrograph/
16
http://www.openrdf.org/
9
Cúmar Ramiro Cueva Tacuri
8
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
de conjuntos de datos de entre 100 y 200 millones de tripletas, el análisis y los
resultados se pueden encontrar publicados en la red17.
1.3.2. SPARUL y El Proceso Asistido de Actualización
Otros mecanismos utilizados para la actualización de datos se basan en la
construcción de sistemas intermedios utilizados como puentes para la
transformación de la información, en la mayoría son sistemas de bases de datos
relacionales.
Existe otro método implementado en la extracción de datos desde Wikipedia
conocido como DBPedia Live [12] en donde se distinguen 3 tipos de actualización.
La primera es la actualización basada en SPARUL sobre un mismo gráfoRDF, la
segunda mencionada es sobre distintos grafos, al igual que la anterior basándose
en SPARUL. Mientras que la tercera es una mezcla entre SPARUL y una Base de
Datos Relacional. Este proceso es conocido como “RDBassistedupdateprocess”.
Si bien estos dos métodos implican cambios en el RDFStore, el utilizar SPARUL de
forma aislada conlleva la utilización de acciones complejas para realizar una
determinada actualización sobre el Store puesto que, como se mencionó
anteriormente, las tripletas conforman un grafo relacionado.
En cambio, el proceso asistido para la actualización, utiliza una tabla relacional
para representar las tripletas existentes, de tal forma que puedan ser recuperadas
y analizadas para determinar los cambios que deben ser llevados a cabo sobre el
RDFStore. Los datos de las tripletas son almacenados de forma serializada en un
objeto JSON para su posterior comparación.
Un esquema de la forma en que los datos se almacenan en la Base Relacional
puede ser apreciado en la Figura 2.
Figura 2: Tabla de la BD Relacional
17
http://www4.wiwiss.fu-berlin.de/bizer/BerlinSPARQLBenchmark/results/V6/index.html
Cúmar Ramiro Cueva Tacuri
9
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
La principal diferencia entre estas dos formas de actualización radica en la
complejidad que adquiere SPARUL, con la utilización de un Base de Datos
Relacional esto se reduce significativamente de tal forma que las sentencias y
operaciones realizadas por SPARUL luego de este proceso es mínima.
El rendimiento de cada uno de estos métodos ha sido evaluado por el equipo de
la Universidad Leipzing, los cuales han obtenido un conjunto de métricas que se
pueden observar en la Tabla 2.
p
Added
Removed
Retained
Strategy
SQL
RDF
SQL
RDF
SQL
RDF
0.5
124924
124937
123319
0.8
79605
79710
318149
0.9
44629
44554
402748
Tabla 2: Resultados Benchmarking
Time
taken
(sec)
240
200
200
250
170
300
18
Debido a que estos métodos son utilizado para la actualización de contenido en
DBPedia, la medición fue realizada para simular cambios en 5000 recursos
distintos, por cada uno de estos se considera los conjuntos N y O los mismos que
hacen referencia al antes y después de la modificación de esa tripleta, la magnitud
del cambio realizado se basa en el porcentaje p. Donde ha tenido una variación de
p=0.9, p=0.8, p=0.5 correspondientes a un cambio del 10%, 20%, 50% de la
tripleta respectivamente.
En base a estos dos conjuntos se puede determinar la cantidad de tripletas
removidas (O – N), añadidas (N – O) y mantenidas (N  O). Además, de estas
consideraciones la comparativa fue ejecutada sobre el RDFStore de Virtuoso.
La tabla muestra la eficiencia de la solución basada en un entorno de Base de
Datos Relacional cuando existe un solapamiento suficiente entre los conjuntos O y
N (p=0.9, p=0.8). A diferencia del caso en que existe menor solapamiento, en
donde la solución RDF tiene mejor desempeño (p=0.5), esto debido al costo
adicional de comparativas frente a la cantidad de tripletas que debe eliminar e
insertar.
Esta comparativa basada en la estructura de DBPedia permite apreciar que para
18
Universidad Leipzig (Alemania): Update Strategies for DBpedia Live
Cúmar Ramiro Cueva Tacuri
10
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
ambientes donde los UPDATES al RDFStore son frecuentes y los mismos
involucran un cambio mínimo en la estructura de las tripletas, una solución
basada en la utilización de una Base Relacional presenta ventajas, frente a la
utilización de la solución SPARUL por sí sola. Esto basado en que la solución con
SPARUL necesita de la utilización de FILTROS que ralentizan la búsqueda y además
de ignorar la duplicación de datos que se realiza en la Base Relacional.
1.4. Puntos de Interés
La creación de Point of Interests (POI), han sido un elemento relevante en la evolución de
las redes sociales basadas en geolocalización, estos consisten en la localización de un
punto específico sobre un mapa, el mismo que puede resultar de importancia para otras
personas19.
Su utilidad es variada, puesto que se puede considerar a prácticamente cualquier ‘cosa’
que pueda ser ubicada por una coordenada geográfica un punto de utilidad, como
Supermercados, Escuelas e incluso paradas de buses o domicilios de personas, tema
sobre el cual se desarrolla la plataforma Points of Interesting Semantic(POIS).
A medida que la información geográfica ha sido accesible y manejable, los POIs han
constituido el pilar fundamental, puesto que desde tiempo atrás se ha venido explotando
de forma no dirigida estas oportunidades, así existen utilidades capaces de brindar
información sobre determinados sitios de interés a usuarios, muchos de ellos vía web y
otros creados para dispositivos específicos20. La mayor parte de estos están orientados al
sector hotelero y turístico, basándose en información manejada por el sector público
para la categorización.
El transportar esta información a la web permite que sea manejada por los usuarios,
logrando que ellos sean quienes realicen su clasificación, permitiendo tener así una
visión más clara de lo que resulta de ‘interés’, esto mediante la utilización de métodos de
categorización basados en rankings asignados por los mismos usuarios.
Fabricantes de dispositivos de navegación los han venido incluyendo como valor añadido
a sus productos para brindar al usuario una experiencia basada en información, uno de
ellos es el fabricante Garmin21 para cuyos dispositivos existe una gama muy amplia de
POIs, que pueden ser obtenidos de forma gratuita o mediante pago.
Con relación a servicios de POIs basados en internet, el principal exponente de su uso y
19
http://en.wikipedia.org/wiki/Point_of_interest
http://www8.garmin.com/products/poiloader/
21
http://www.garmin.com
20
Cúmar Ramiro Cueva Tacuri
11
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
utilidad es Google con su iniciativa Maps22, la misma que permite la visualización de
información en forma de POIs basados en una determina posición geográfica,
principalmente orientado a mostrar información en tiempo real sobre el tráfico. El punto
de partida para la creación de estos POIs es mediante la aplicación MapMaker23 en
donde se puede apreciar la categorización existente para los diferentes puntos.
La información que se maneja sobre cada punto de interés varía de un proveedor a otro,
en este caso GPS-WAYPOINTS 24 realiza la categorización de los POIs utilizando
agrupaciones en subcategorías que permiten al usuario encontrar de forma rápida los
elementos de interés y permitiendo agrupar atributos comunes. En cambio MapMaker
de Google ofrece una gran cantidad de categorías de POIs específicas, sin utilizar subcategorías directamente. Otros proveedores como GeoTourGuide25 y Geovative26, llevan
el concepto de POI un nivel más arriba incluyendo en ellos elementos multimedia para
brindar información audiovisual de sitios de interés localizados geográficamente.
Una comparativa entre los atributos que cada proveedor maneja se puede apreciar en la
Tabla 3 donde se describen los atributos de un POI bajo la categoría de ‘clínica’ en los
entornos GPS-WAYPOINTS y MapMaker. Como se puede apreciar, la alternativa de
Google maneja gran cantidad de atributos relacionados a esta categoría específica de
POI, lo que da una visión muy clara de la representación de los atributos que un POI de
igual categoría puede tener en dos diferentes servicios.
GPS-WAYPOINTS
Latitud
Longitud
Altitud
Nombre
Descripción
País
Localización
Límite de Velocidad
Dirección
Teléfono
URL
MapMaker
Latitud
Longitud
Nombre
Idioma
Tipo
Nombre
Atributos
Categoría
Precisión
Popularidad
Categorías Adicionales
Horas Laborables
Métodos de Pago
URL de foto
Dirección
Parcela#
Calle
Información de Contacto
22
http://maps.google.com/maps
http://www.google.com/mapmaker
24
http://www.gps-waypoints.net
25
http://www.GeoTourGuide.com
26
http://www.geovative.com/
23
Cúmar Ramiro Cueva Tacuri
12
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Sitio Web
Correo Electrónico
Teléfono
Fax Móvil
Descripción
Información de Ubicación
Sublocalidad
Localidad
Ciudad
Distrito/Condado
Estado/provincia
Código postal
Tabla 3: Atributos de un POI de categoría ‘Clínica’ en dos entornos diferentes
Con la definición de Linked Data, la creación de POIs es un tema central, puesto que
estos constituyen una puerta de entrada hacia información contenida en diferentes
medios pero que se encuentra enlazada con el POI inicial, con ello, se obtiene
información específica de gran utilidad partiendo de un mismo inicio, todo esto
dependiendo de la definición que se haya dado en el vocabulario para la estructura RDF
que será almacenada en el RDFStore.
1.5. Trabajo Relacionado
Actualmente la integración de estos POIs al concepto de web semántica, basándose en
Linked Data, se puede ver reflejado en varios trabajos, como el realizado por el equipo de
DBPedia para crear DBPediaMobile27 y el trabajo realizado en la universidad de KoblenzLandau, donde se ha creado la propuesta de un entorno de puntos de interés capaz de
permitir la interacción entre usuarios en un entorno colaborativo basado en POIs [13].
DBPediaMobile, tiene como principio ser una solución móvil para la exploración de los
datos extraídos por DBPedia basándose en una aplicación LBS. Presentando información
geolocalizada y relevante en forma de POIs al usuario, permitiendo hacer una
exploración del espacio geográfico de forma interactiva. Siguiendo este mismo principio,
la iniciativa de la Universidad de Koblenz-Landau, se basa en la creación de un sistema
capaz de permitir a los usuarios de forma colaborativa crear, compartir y modificar
puntos de interés mediante la utilización de un programa cliente. Además de
proporcionar un mecanismo de revisión capaz de identificar diferentes Puntos de Interés
que han sido puestos por los usuarios pero que hacen referencia a un mismo sitio, para
ser agrupados en uno solo, formando así una herramienta de colaboración asistida.
La iniciativa de vincular información geográfica con datos de forma enlazada, o más
27
http://wiki.dbpedia.org/DBpediaMobile
Cúmar Ramiro Cueva Tacuri
13
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
explícitamente añadir una dimensión espacial a la web de datos, empezó con la iniciativa
planteada por la Universidad de Leipzig denominada LInkedGeoData 28 , la cual se
encuentra enmarcada dentro de la nube de Linked Open Data. Esta iniciativa se enmarca
en utilizar los datos recolectados por el proyecto libre OpenStreetMap29 y ser expresados
en formato RDF, de tal forma que la información geográfica sea enlazada a fuentes
externas y tenga acceso público.
Otra Universidad vinculada a la iniciativa de POIs a través de LinkedData es la
Universidad de Southampton en el Reino Unido, la misma que contiene un conjunto de
Datasets sobre información variada y entre ellos uno bajo el nombre de Open Data
Map30 que ubica diversos Puntos de Interés sobre un mapa georeferenciado.
Como se menciona, la aplicabilidad de los puntos de interés al sector turístico es el
principal punto de partida, tomando como punto de referencia el caso de estudio sobre
CRUZAR31. Se puede observar como las preferencias de los usuarios pueden ser tomadas
en cuenta para determinar puntos de interés basados en perfiles de usuario. Con esto se
logra que la información contenida en los puntos de interés no sea visualizada de forma
estática sino de acuerdo a preferencias, lo que convierte a los puntos de interés en
elemento principal de la construcción de rutas dinámicas interactivas bajo preferencias
de usuario. A diferencia de los folletos genéricos que pueden ser encontrados en la
mayoría de recorridos turísticos.
Otra aplicabilidad de los puntos de interés es el análisis, puesto que los puntos de interés
se encuentran enmarcados bajo una localización geográfica, es de fácil análisis el
determinar la concentración de puntos bajo un criterio en un determinado lugar, lo que
incrementa de forma sustancial la toma de decisiones en diversos campos. E incluso
pueden ser agrupados en base a criterios para ser evaluados o examinados.
La tarea de representar los POIs en Linked Data se realiza en base a la definición de un
vocabulario, pero debido a la variedad y diferentes usos que tienen, no existe un
estándar para su representación, puesto que diferentes POIs manejan diferentes
atributos como se menciona en [14].
El intento por crear Vocabularios que describan Puntos de Interés así como otros
aspectos ha llevado a realizar avances como:


Basic RDF Geo Vocabulary32, el mismo que consiste de los elementos básicos
para representar un POI como es Latitud, Longitud y Altitud.
GeoOnionVocabulary33, Se basa en el esquema del vocabulario anterior, pero
28
http://linkedgeodata.org/About
http://www.openstreetmap.org/
30
http://opendatamap.ecs.soton.ac.uk/
31
http://www.w3.org/2001/sw/sweo/public/UseCases/Zaragoza-2/
32
http://www.w3.org/2003/01/geo/#vocabulary
29
33
http://www.w3.org/wiki/GeoOnion
Cúmar Ramiro Cueva Tacuri
14
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic



orientado a la descripción de elementos en relación de distancia con otros.
LGDVocabulary34, que es la base del proyecto Linked Geo Data para describir
puntos geográficos, manteniendo información sobre localización, datos
referentes a una posición, características del sitio como religión, aparcamiento,
altitud y una categoría.
GoodRelations35, orientado al E-Commerce permite describir productos y sus
propiedades asociadas como valor, información sobre el sitio de venta, detalles
de garantía, datos de la institución y otros.
csxPOISystem[13], utiliza un vocabulario capaz de clasificar a los puntos de
interés en categorías como ‘monumento’ las mismas que pueden pertenecer o
tener subcategorías, lo que permite realizar interrelaciones entre ellas, donde
cada categoría posee un conjunto de características.
Aunque la existencia de un Vocabulario común para la representación de POIs es aún un
tema de discusión como se mencionó, la información contenida en aplicaciones que
utilizan Puntos de Interés no semánticos y los vocabularios específicos que actualmente
existen en Linked Data permiten tener una perspectiva global de los aspectos que se
deben considerar para el planteamiento del vocabulario para el proyecto POIS.
En la actualidad existe un grupo que forma parte de la W3C bajo el nombre de "Points of
InterestWorkingGroup"36 que fue lanzado el 30 Septiembre del 2010 y uno de sus fines es
desarrollar especificaciones técnicas para la representación de "Puntos de Interés" como
información para la web creando una recomendación de Vocabulario para POIs, la fecha
preliminar de su lanzamiento está prevista para Abril del 2011.
El crecimiento y aplicabilidad de POIs junto a Linked data está en aumento, puesto que
cada vez más las redes sociales incorporan características de geolocalización para sus
usuarios y los dispositivos de localización son cada vez más accesibles.
1.6. Trabajo futuro
La construcción de la plataforma Points of Interesting Semantic(POIS) como proyecto
basado en Linked Data, tiene como objetivos la implementación de un Vocabulario
genérico para la representación de Puntos de Interés, buscando ser lo más genérico
posible capaz de englobar un sin número de categorías que pueden ser agregadas en un
futuro.
Así, este vocabulario será implementado en POIS para la representación de un
34
http://linkedgeodata.org/vocabulary
http://www.heppnetz.de/ontologies/goodrelations/v1
36
http://www.w3.org/2010/POI/charter/
35
Cúmar Ramiro Cueva Tacuri
15
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
determinado tipo de POIs, en este caso, las paradas realizadas por los Buses de la
Universidad Técnica Particular de Loja y la ubicación de la vivienda y la parada más
frecuente, de los estudiantes pertenecientes a la misma.
Esto contribuirá a la iniciativa de mantener información relacionada a la Universidad en
formato accesible a través de LinkedData en este caso RDF.
La prueba de concepto sobre la representación de estos datos en RDF y su consumo, será
basada en una aplicación Web que implemente un servicio de consulta capaz de permitir
al usuario obtener los horarios de los recorridos de los buses según su parada habitual,
definida previamente, para ello la aplicación permitirá que el usuario registre la posición
de su domicilio.
Además, se considerará la creación de un mecanismo de creación/actualización para la
información almacenada en un RDFStore.
Cúmar Ramiro Cueva Tacuri
16
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
2. VOCABULARIO RDF
2.1.Construcción
La creación del Vocabulario bajo la sintaxis RDF, permitirá definir el lineamiento principal
de la plataforma POIS. Para este fin se hará uso de la herramienta Protégé 4.x37, puesto
que presta de gran aceptación en los ambientes de trabajo semántico por su flexibilidad
y gran cantidad de funcionalidades.
2.1.1. Selección de Elementos Preliminares y Formulación de
Interrogantes
La construcción del vocabulario para la plataforma POIS, deberá cumplir como
objetivo principal, el ser capaz de expresar y representar las paradas de buses de
la UTPL como un punto de interés (POI). Además, de permitir la representación de
Puntos de Interés de diferente índole, tales como Parques, lugares turísticos o
edificios emblemáticos.
La Tabla 4 agrupa un conjunto de elementos y preguntas, a través de los cuales se
generará el vocabulario para la plataforma POIS.
COD
INTERROGANTE
IMPORTANCIA
IT1 A una hora Y que Rutas existen.
ALTA
IT2 Cuáles son las paradas de la Calle X.
ALTA
IT3 Cuáles son las paradas de una Ruta X.
ALTA
IT4 Cuantas paradas realiza una Ruta X.
ALTA
RECORRIDOS
Que rutas [bajan | suben | suben o bajan] de la
Universidad
ALTA
IT6 Que rutas pasan por la Parada X [a una Hora Y].
ALTA
IT5
IT11
37
[Cuales | Cuantos] barrios no poseen paradas de los
buses de la UTPL.
MEDIA
http://protege.stanford.edu/
Cúmar Ramiro Cueva Tacuri
17
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
A una hora X que Ruta debo elegir para [ subir a|
IT12 bajar de ] la UTPL -- Considerando la Parada
Frecuente de un Estudiante
IT15
ESTUDIANTE
Cuál es la parada de la Ruta X que se localiza más
cerca de mi casa
MEDIA
ALTA
IT7 Que estudiante posee la cedula X
ALTA
IT8 Cuál es la parada más frecuente de un estudiante X
ALTA
IT13
Cuál es el [ barrio | sector ] con mayor número de
estudiantes
MEDIA
IT14
Cuantos estudiantes toman el bus de la UTPL en el [
sector | barrio ] X
MEDIA
IT9
Cuáles son los POIs que se encuentran más cercanos
del Punto Y.
ALTA
[Cuantos | Cuales] POIs X contienen un nombre con X
características
ALTA
GENÉRICOS IT10
IT16
Cuál es el [ barrio | sector ] donde se ubican mayor
cantidad de POIs
MEDIA
Tabla 4: Preguntas Base para Generación de Vocabulario
2.1.2. Definición de Elementos Finales y sus Atributos
Elemento
Atributos
Anotaciones
Interrogantes
Nombre
Tipo
Ruta
Horario
Fecha
IT1 | IT5 | IT15
Dato de creación
Activa
Parada
Cúmar Ramiro Cueva Tacuri
Calle Principal
IT2 | IT3 | IT4 | IT6
18
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Calle Secundaria
Imagen
| IT12
Dirección de la Img
Lat
Lon
Pertenece_A_Ruta
Referencia
Activa
Cedula
Estudiante Parada_Frecuente
Vivienda
IT7 | IT8 | IT13
Dato geográfico
Nombre
Lat
Lon
Calle Principal
IT9 | IT10 | IT11 |
IT14 | IT16
Genérico
Calle Secundaria
Sector
Barrio
Fecha
Dato de creación
Tabla 5: Elementos del Vocabulario
2.1.3. Estructura de Vocabulario
La construcción del vocabulario a partir de otros ya existentes (reutilización) se
constituye en uno de los pilares fundamentales de LOD, de tal manera que
elementos que ya pertenecen a un vocabulario no sean nuevamente definidos.
Cúmar Ramiro Cueva Tacuri
19
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
En el vocabulario para la plataforma POIS, debido a la información a representar
que involucran los Puntos de Interés solamente es posible la reutilización del
vocabulario Basic Geo38, el mismo que establece una representación de puntos
geográficos basándose en los atributos lon (longitud) y lat (latitud) de una
coordenada geográfica, ignorando del mismo el atributo altitud.
Vocabularios ampliamente utilizados en diferentes ambientes como Doublin
Core39 o FOAF40, no formarán parte de la Plataforma por no tener relación con la
información manejada.
2.1.3.1.
Consideraciones de Nomenclatura
Los diagramas de vocabulario, como su posterior implementación sobre
RDF mantendrán el siguiente estándar de nomenclatura, lo que facilitará
el establecer relaciones entre los mismos:
 Los conceptos serán nombrados en letras mayúsculas.
 Las Propiedades Objeto serán nombradas en singular utilizando
notación CamelCase41.
 Las Propiedades de Datos serán nombradas en singular y en letras
minúsculas, si contiene dos palabras serán separadas por un guión.
2.1.3.2.
Descripción de Conceptos
2.1.3.2.1. RUTA
Concepto para la representación de información relativa a una ruta
concreta. En la actualidad, en el sistema de transportación estudiantil
de la UTPL, cada ruta es nombrada en base a las calles por las que la
unidad de transporte realiza las paradas, y en ocasiones el barrio.
De esta forma las Rutas poseen nombres de sintaxis similar a:
“Av. Manuel Agustín Aguirre y Mercadillo”.
2.1.3.2.2. PARADA
Constituyen cada uno de los puntos geográficos que identifican los
sitios donde los buses de la UTPL, se detienen dentro de una RUTA.
38
http://www.w3.org/2003/01/geo/wgs84_pos#
http://purl.org/dc/elements/1.1
40
http://xmlns.com/foaf/0.1/
41
http://es.wikipedia.org/wiki/CamelCase
39
Cúmar Ramiro Cueva Tacuri
20
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
2.1.3.2.3. ESTUDIANTE
Considerado un usuario del sistema de transportación estudiantil de
la UTPL, el mismo que posee preferencias en cuanto a su PARADA y
vivienda.
2.1.3.2.4. POIG
Un punto de Interés genérico capaz de representar otros elementos
de forma directa.
2.1.3.2.5. ORDEN PARADA
Debido a que el actual sistema de transportación estudiantil involucra
RUTAS y PARADAS, a su vez estas siguen una secuencia determinada,
el conocimiento de esta secuencia, permitirá tanto el tratamiento de
las PARADAS en orden, como la determinación de la PARADA INICIAL
y FINAL del recorrido.
2.1.3.2.6. PARADA FRECUENTE
El enlace entre el estudiante y su parada seleccionada como
preferida, que permite mantener un historial de selecciones, puesto
que contiene una propiedad de fecha.
Figura 3: Extracto de Vocabulario - RDFs
Cúmar Ramiro Cueva Tacuri
21
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
2.1.3.3.
Esquema Preliminar
Figura 4: Vocabulario - Esquema Preliminar
Cúmar Ramiro Cueva Tacuri
22
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
2.1.3.4.
Esquema Final
Figura 5: Vocabulario – Esquema Final
Cúmar Ramiro Cueva Tacuri
23
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
2.1.3.5.
Relaciones Binarias
Figura 6: Relaciones Binarios
Cúmar Ramiro Cueva Tacuri
24
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
2.1.3.6.
Diagrama RDF
Basado en el archivo RDF que contiene la estructura del vocabulario, se
puede apreciar en la
Figura 7 el diagrama de relación entre los elementos del mismo.
42
Figura 7: Diagrama RDF – Vocabulario: Generado con el plugin OntoGraf de Protégé
De igual forma se puede generar un diagrama de modelo de datos
mediante el servicio de validación de RDF de la W3C43. Este diagrama
puede ser encontrado en la dirección:
[http://www.box.com/s/g26t41incyzd200ribze ]
2.1.4. Validación del Vocabulario
En base a la construcción del vocabulario, tomando en consideración las
relaciones establecidas entre conceptos, a continuación se demostrará la solución
de las preguntas planteadas en el primer enunciado. Se debe considerar que no
necesariamente todas las preguntas pueden o deben ser resueltas, ya que las
preguntas iníciales son una abstracción general de lo que se intenta abarcar con el
vocabulario.
42
43
http://protegewiki.stanford.edu/wiki/OntoGraf
http://www.w3.org/RDF/Validator/
Cúmar Ramiro Cueva Tacuri
25
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
La comprobación ha sido realizada basada en el lenguaje SPARQL, haciendo uso
de la herramienta de navegación Gruff 44 para AllegroGraph, un almacén de
tripletas, basándose en un archivo RDF para realizar la carga. Cabe recalcar que
Gruff no soporta Sparql 1.1 el cual permite utilizar funciones de agregación, razón
por la cual varias preguntas son omitidas o resueltas parcialmente.
2.1.4.1.
Instancias de Vocabulario
Para la comprobación del vocabulario se trabajará con el siguiente
esquema de instancias del vocabulario, el mismo que está estructurado en
base a las preguntas iniciales.
El vocabulario puede ser descargado en formato RDFs desde la siguiente
dirección:
[ http://www.box.net/shared/88cz8c06ojanjlhs11r6 ]
En apartados siguientes se mencionará la publicación del mismo, tanto en
formato html como rdfs.
44
http://www.franz.com/agraph/gruff/
Cúmar Ramiro Cueva Tacuri
26
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Figura 8: Instancias de Prueba
2.1.4.2. Consultas SPARQL
IT1:: A una hora Y que Rutas Existen
PREFIX pois: <http://localhost/POIS.owl#>
SELECT *
WHERE
{
?Ruta a pois:RUTA.
?Ruta pois:nombre ?NameRuta.
?Ruta pois:horario ?horaRuta.
FILTER( regex(str(?horaRuta), "10:00") )
}
IT2:: Cuales son las paradas de la calle X
PREFIX pois: <http://localhost/POIS.owl#>
SELECT ?Parada ?CallePrincipal ?CalleSecundaria
WHERE
{
?Parada a pois:PARADA.
?Parada pois:LocalizadaEn ?Poig.
Cúmar Ramiro Cueva Tacuri
27
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
?Poig pois:calle1 ?CallePrincipal.
?Poig pois:calle2 ?CalleSecundaria.
FILTER(
regex(str(?CallePrincipal),
Kigman") ||
regex(str(?CalleSecundaria), "Eduardo
)
"Eduardo
Kigman")
}
IT3:: Cuales son las paradas de una Ruta X
IT4:: Cuántas paradas realiza una ruta X
PREFIX pois: <http://localhost/POIS.owl#>
SELECT ?NombreRuta ?RutaXPard ?ordenParada
WHERE
{
?RutaX a pois:RUTA;
pois:nombre ?NombreRuta;
pois:ParadaConOrden ?RutaXPardConst.
?RutaXPardConst pois:num_secuencia ?ordenParada;
pois:ParadaRelacionada ?RutaXPard.
FILTER(
regex(str(?NombreRuta),
"Rosales,
Pradera Catacocha,"))
}
ORDER BY ?ordenParada
IT5:: Que rutas [bajan | suben | suben o bajan] de la Universidad
PREFIX pois: <http://localhost/POIS.owl#>
SELECT ?nombreRuta
WHERE
{
?RutaX a pois:RUTA;
pois:nombre ?nombreRuta.
?RutaX pois:tipo ?SentidoRuta.
FILTER ( ?SentidoRuta = "BAJA")
}
order by ?nombreRuta
IT6:: Qué rutas pasan por la Parada X [a una hora Y]
PREFIX pois: <http://localhost/POIS.owl#>
SELECT ?Num_Parada ?RutaXNombre ?refParada
WHERE
{
?ParadaX a pois:PARADA.
?ParadaX pois:referencia ?refParada.
?RutaX a pois:RUTA;
Cúmar Ramiro Cueva Tacuri
28
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
pois:ParadaConOrden ?RutaXPardConst;
pois:nombre ?RutaXNombre.
?RutaXPardConst
pois:ParadaRelacionada
?RutaXParada;
pois:num_secuencia ?Num_Parada.
FILTER(regex(str(?refParada), "Laguna") &&
?RutaXParada = ?ParadaX )
}
IT7:: Qué estudiante posee la cédula X
PREFIX pois: <http://localhost/POIS.owl#>
SELECT ?EstudianteX
WHERE
{
?EstudianteX a pois:ESTUDIANTE.
?EstudianteX pois:cedula ?cedEstudiante.
FILTER(regex(str(?cedEstudiante), "1104665621"))
}
IT8:: Cuál es la parada más frecuente de una estudiante X.
PREFIX pois: <http://localhost/POIS.owl#>
SELECT ?callePrincipal ?calleSecundaria
WHERE
{
?EstudianteX a pois:ESTUDIANTE.
?EstudianteX pois:cedula ?cedEstudiante.
?EstudianteX pois:Prefiere ?preferEnlace.
?preferEnlace pois:VinculadaA ?PrdPreferida.
?PrdPreferida pois:LocalizadaEn ?poigLoc.
?poigLoc pois:calle1 ?callePrincipal;
pois:calle2 ?calleSecundaria.
FILTER(regex(str(?cedEstudiante), "1104665621"))
}
IT9:: Cuáles son los POIs que se encuentran más cercanos al punto Y.
La definición de 'cercano' es aún imprecisa así como la forma de
determinar distancia entre dos puntos geográficos, por ahora se
simulará asumiendo que esto se basa en estimación de la diferencia
de los valores.
PREFIX pois: <http://localhost/POIS.owl#>
PREFIX
<http://www.w3.org/2003/01/geo/wgs84_pos#>
SELECT *
Cúmar Ramiro Cueva Tacuri
geo:
29
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
WHERE
{
?PuntoInt a pois:POIG.
?PuntoInt pois:CoordenadaGeo ?CoordXY.
?CoordXY geo:lat ?LatPoig;
geo:long ?LonPoig.
FILTER ((?LatPoig>-3.98)&&(?LonPoig<-78.99))
}
IT10:: [Cuantos | Cuales] POIs X contienen un nombre con X
características.
Aplicado solo a elementos que no constituyen una parada, puesto que
las paradas no poseen nombres, solo los puntos genéricos.
PREFIX pois: <http://localhost/POIS.owl#>
SELECT *
WHERE
{
?PuntoInt a pois:POIG.
?PuntoInt pois:nombre ?NamePoig.
FILTER(regex(str(?NamePoig), "abc"))
}
IT11:: [Cuántos | Cuáles] barrios no poseen paradas de los buses de la
UTPL.
Se utilizará una búsqueda basada en el nombre del barrio.
PREFIX pois: <http://localhost/POIS.owl#>
PREFIX
geo:
<http://www.w3.org/2003/01/geo/wgs84_pos#>
SELECT *
WHERE
{
?ParadaX a pois:PARADA;
pois:LocalizadaEn ?Poig.
?Poig pois:barrio ?PoigBarrio.
FILTER(regex(str(?PoigBarrio), "La Pradera"))
}
order by ?ParadaX
IT12:: A una hora X que Ruta debo elegir para [subir a | bajar de] la UTPL
(parada frecuente)
Para considerar la parada frecuente en este resultado, se debería
considerar la implementación de un algoritmo que determine la
proximidad de los resultados a la parada frecuente. Por ahora no se lo
considera.
Cúmar Ramiro Cueva Tacuri
30
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
PREFIX pois: <http://localhost/POIS.owl#>
SELECT ?NombreRuta
WHERE
{
?RutaX a pois:RUTA.
?RutaX pois:tipo ?TipoRuta.
?RutaX pois:horario ?HoraRuta.
?RutaX pois:nombre ?NombreRuta.
FILTER( (?TipoRuta = "BAJA") &&
(regex(str(?HoraRuta), "10:00")) )
}
IT13:: Cuál es el [barrio|sector] con mayor número de estudiantes
Al igual que para dar respuesta a otras interrogantes que hacen
referencia a cantidad, es necesario utilizar funciones de agregación
disponibles en SPARQL 1.1
PREFIX pois: <http://localhost/POIS.owl#>
SELECT ?cedEstd
WHERE
{
?EstdX a pois:ESTUDIANTE.
?EstdX pois:ViveEn ?PoigEstd.
?PoigEstd pois:barrio ?BarrioEstd.
?EstdX pois:cedula ?cedEstd.
FILTER (?BarrioEstd = "Gran Colombia")
}
IT14:: Cuántos estudiantes toman el bus de la UTPL en el [sector | barrio]
X.
PREFIX pois: <http://localhost/POIS.owl#>
SELECT ?CedEstdX
WHERE
{
?EstdX a pois:ESTUDIANTE;
pois:Prefiere ?ParadaF;
pois:cedula ?CedEstdX.
?ParadaF pois:VinculadaA ?ParadaX.
?ParadaX pois:LocalizadaEn ?PoigPrd.
?PoigPrd pois:barrio ?Barrio.
FILTER(?Barrio = "San Sebastian")
}
IT15:: Cuál es la parada de la Ruta X que se localiza más cerca de mi casa.
Se debería considerar definir el término ‘cerca’, así como la
Cúmar Ramiro Cueva Tacuri
31
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
implementación de un algoritmo que determine la proximidad de los
resultados. Por ahora no se lo considera.
PREFIX pois: <http://localhost/POIS.owl#>
PREFIX
<http://www.w3.org/2003/01/geo/wgs84_pos#>
SELECT DISTINCT ?ParadaY
WHERE
{
?RutaX a pois:RUTA;
pois:nombre ?NombreRuta;
pois:ParadaConOrden ?PardCons.
?PardCons pois:ParadaRelacionada ?ParadaY.
geo:
?ParadaY pois:LocalizadaEn ?PoigPardY.
?PoigPardY pois:CoordenadaGeo ?CoordPoigPardY.
?CoordPoigPardY geo:lat ?LatParadaY.
?EstdZ a pois:ESTUDIANTE.
?EstdZ pois:cedula ?cedEstd.
?Estdz pois:ViveEn ?PoigCasaEstdz.
?PoigCasaEstdz
pois:CoordenadaGeo
?CoordPoigCasaEstdz.
?CoordPoigCasaEstdz geo:lat ?LatEstdZ.
}
ORDER BY ?ParadaY
IT16:: Cuál es el [barrio|sector] donde se ubican mayor cantidad de POIs
PREFIX pois: <http://localhost/POIS.owl#>
SELECT ?POIS
WHERE
{
?POIS a pois:POIG.
?POIS pois:sector ?sectorPOIS.
FILTER( ?sectorPOIS = "Pio Jaramillo Alvarado")
}
2.1.4.3. Resultados de Validación
En base a las consultas realizadas con SPARQL sobre las instancias del
vocabulario, se puede apreciar como la mayor parte de preguntas se han
podido resolver sin mayor problema. Existiendo casos en los que se
demanda la utilización de SPARQL 1.1 por permitir funciones de agregación
Cúmar Ramiro Cueva Tacuri
32
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
para el cálculo de cantidades.
Además, la determinación de conceptos como "cercano a" que se basa en
Coordenadas geográficas, deberá definirse, de tal forma que se implemente
un método (algoritmo) que permita extraer tal medida en base a una
distancia pre-establecida o a su vez el uso de las funciones geográficas de
sparql.
2.2. URI’s
2.2.1. Definición
La localización de recursos dentro del internet está basada en la asignación de URI
a los recursos, siendo este también una premisa importante en el ámbito de
Linked Data. Siguiendo esta línea W3C establece algunas recomendaciones [25]
generales. Así también el gobierno del Reino Unido ha creado un documento de
orientación, el mismo que puede ser encontrado en [26], orientado a la
representación de conocimiento en el área pública del gobierno.
Figura 9: URIs for Vocabularies
Fuente: http://data.gov.uk/resources/uris
Siguiendo este principio se han establecido las siguientes URI’s para el vocabulario
pois, las mismas que se estructuran bajo el esquema de ‘hash namespace’45
donde el vocabulario se construye con la colocación del nombre de la clase o
propiedad de forma directa en la URI antecedida de un ‘comodín’ (#).
45
http://www.w3.org/TR/swbp-vocab-pub/#hash
Cúmar Ramiro Cueva Tacuri
33
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Otra forma de posible representación es conocida como ‘slashnamespace’ 46
donde la diferencia radica en la utilización del ‘/‘ en lugar del ‘#’. La
representación ‘hash namespace’ ha sido elegida por prestar mayor simplicidad al
usuario al intentar acceder a determinada información del vocabulario.
Vocabulario:
/{prefijo}/{vocabulary}
Clases:
/{prefijo}/{vocabulary}#{class}
Propiedades:
/{prefijo}/{vocabulary}#{property}
2.2.2. Uri’s para el Vocabulario
Vocabulario
POIS
Clases
ESTUDIANTE
ORDEN_PARADA
PARADA
PARADA_FRECUENTE
POIG
RUTA
Propiedades
Activa
Barrio
Calle1
Calle2
Cedula
Fecha
Horario
Imagen
Nombre
Num_secuencia
ContieneEstudiante
46
URI
/POIS/vcblr
/POIS/vcblr#ESTUDIANTE
/POIS/vcblr#ORDEN_PARADA
/POIS/vcblr#PARADA
/POIS/vcblr#PARADA_FRECUENTE
/POIS/vcblr#POIG
/POIS/vcblr#RUTA
/POIS/vcblr#activa
/POIS/vcblr#barrio
/POIS/vcblr#calle1
/POIS/vcblr#calle2
/POIS/vcblr#cedula
/POIS/vcblr#fecha
/POIS/vcblr#horario
/POIS/vcblr#imagen
/POIS/vcblr#nombre
/POIS/vcblr#num_secuencia
/POIS/vcblr#ContieneEstudiante
http://www.w3.org/TR/swbp-vocab-pub/#slash
Cúmar Ramiro Cueva Tacuri
34
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
CoordenadaGeo
ElegidaPor
LocalizadaEn
MarcadaEn
OrdenEnRuta
OrdenParada
ParadaConOrden
ParadaRelacionada
PerteneceAParada
Prefiere
Referencia
Sector
Tipo
VinculadaA
ViveEn
/POIS/vcblr#CoordenadaGeo
/POIS/vcblr#ElegidaPor
/POIS/vcblr#LocalizadaEn
/POIS/vcblr#MarcadaEn
/POIS/vcblr#OrdenEnRuta
/POIS/vcblr#OrdenParada
/POIS/vcblr#ParadaConOrden
/POIS/vcblr# ParadaRelacionada
/POIS/vcblr#PerteneceAParada
/POIS/vcblr#Prefiere
/POIS/vcblr#referencia
/POIS/vcblr#sector
/POIS/vcblr#tipo
/POIS/vcblr#VinculadaA
/POIS/vcblr#ViveEn
Tabla 6: Uri’s de Vocabulario
2.3. Publicación de Vocabulario
La publicación del vocabulario implica permitir el acceso al mismo desde cualquier
lugar de la web, basándose comúnmente en la visualización del mismo en dos formas
diferentes, la primera una vista entendible para las personas regularme basado en un
documento HTML. Y la segunda un formato entendible para las máquinas en este caso
RDF.
El acceso a estas definiciones se gestiona a través de la misma URI, es decir, la URI
devolverá uno de los dos formatos según lo solicitemos. Este proceso es conocido
como Dereference URI 47 mediante un proceso conocido como negociación de
contenido.
Basado en esto, son necesarios dos servicios específicos, que pueden o no ejecutarse
en equipos físicamente separados, aunque esto es recomendable. El primer servicio se
encargará de receptar las peticiones y resolverlas (similar a un DNS), mientras que el
segundo almacenará y devolverá la información relativa al vocabulario.
En la actualidad existen servidores dedicados en la Internet que permiten realizar la
función de re-direccionar hacia el almacenaje del vocabulario, como lo es PURL48
gestionado por OCLC49.
47
Dereferencing HTTP URIs. http://www.w3.org/2001/tag/doc/httpRange-14/2007-08-31/HttpRange14.html (draft)
48
http://purl.oclc.org
Cúmar Ramiro Cueva Tacuri
35
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
En el presente trabajo se utilizará el servicio público de PURL para la publicación y para
el almacenaje del vocabulario se utilizará un servidor Web Apache, el mismo que será
instalado sobre una plataforma Linux, en este caso Ubuntu 11.04.
2.3.1. Generación de la Descripción del Vocabulario
La creación del archivo de descripción para el vocabulario (necesario para la
publicación) es generado mediante la utilización de OWLDoc[27], un plugin para
Protégé, que permite exportar un vocabulario (ontología) a una versión HTML
similar a la presentada por los JavaDoc. El plugin ha sido utilizado mediante la
versión 4.x de Protégé.
Su instalación y uso puede ser encontrada en el ANEXO A
2.3.2. PURL
El servicio de Persistent Uniform Resource Locator, conocido comúnmente como
PURL, brinda identificadores permanentes para recursos en la web. Lo que
permite mantener redirecciones a recursos que pueden cambiar a través del
tiempo. Una lista de los servidores en internet que prestan este servicio puede ser
encontrada en [28].
Figura 10: Partes de una PURL
50
Su funcionamiento se basa en el uso de redirecciones51 bajo el protocolo HTTP,
para el uso en Web Semántica se ha estandarizado el uso de la redirección 303
See Other para el uso con PURL. Este tipo de redirección especifica que la
respuesta a una solicitud puede ser encontrada en una URI diferente y que debe
ser recuperada mediante el uso del método GET. Hay que notar que la redirección
303 y todas las del tipo 3xx son llevadas a cabo por los agentes de usuario sobre
HTTP(user agents).
49
http://www.oclc.org
Extraído de: http://purl.oclc.org/docs/help.html#overview
51
RFC2616
50
Cúmar Ramiro Cueva Tacuri
36
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
En donde:
a. El usuario realiza una petición GET a un servidor PURL, especificando un
cierto tipo de contenido indicado por el campo Accept request-header.
b. El servidor PURL emplea la redirección 303 para re-direccionar la petición
del usuario.
c. El servidor de destino (a donde apunta la redirección 303) realiza la
operación de 'content negotiation' para finalmente devolver un recurso a
la petición del usuario.
Figura 11: Funcionamiento de Server PURL
2.3.2.1. Configuraciones
Basado en las especificaciones de inicio de este apartado, se utilizará un
servidor público PURL al cual se vinculará una dirección web en donde se
alojarán los datos del vocabulario. En este caso serán:


Server PURL: http://purl.oclc.org
Servidor Web (apache): http://200.0.29.117:8080/pois/conten
Para que se pueda utilizar la uri del servidor PURL
http://purl.oclc.org/POIS/vcblr
Como una uri desreferenciada que enlaza al vocabulario publicado en la
dirección:
http://200.0.29.117:8080/pois/conten
Es necesario realizar el proceso de configuración detallado en el ANEXO B.
Cúmar Ramiro Cueva Tacuri
37
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Recordando que este proceso es ejecutado sobre un servicio en internet. En
caso de requerir una instancia propia de PURL se puede contemplar la
instalación de este, como se detalla en el ANEXO C.
2.3.3. Apache HTTP Server
Apache HTTP Server 52 es un proyecto mantenido por la comunidad de
desarrolladores de Apache Software Fundation53, el cual en la actualidad se ha
convertido en uno de los Servidores HTTP más robustos y confiables.
2.3.3.1. Negociación de Contenido (Content Negotiation)
El proceso de devolver un recurso diferente al usuario basado en una
misma URI es conocido como Negociación de Contenido54, con lo cual el
usuario o aplicación puede solicitar determinado tipo de contenido que
desea aceptar como respuesta, esto en base al campo Accept requestheader que el protocolo HTTP especifica.
Una vez configurado nuestra PURL, la misma que referencia a nuestro
servidor HTTP, será necesario colocar dentro de este último, nuestro
contenido y configurar la recuperación del mismo mediante la negociación
de contenido.
2.3.3.2. Configuraciones
La negociación de contenido es llevada a cabo mediante la sobre escritura
de peticiones a una URL, para ello Apache HTTP Server posee un módulo
que permite hacer uso de esta funcionalidad, conocido bajo el nombre de
mod_rewrite 55 . Este módulo hace uso de expresiones regulares para
realizar el re-direccionamiento a un determinado recurso o URL.
El proceso de configuración puede ser encontrado en el ANEXO D.
52
http://httpd.apache.org/
http://apache.org/
54
http://httpd.apache.org/docs/trunk/content-negotiation.html
53
55
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
Cúmar Ramiro Cueva Tacuri
38
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Mediante este proceso nuestro servidor web será capaz de responder a una
petición en función del contenido solicitado, en este caso pudiendo
responder mediante un archivo HTML o RDF.
2.3.4. Pruebas
La comprobación de la funcionalidad completa de la publicación del vocabulario
será evaluada en base al funcionamiento descrito en la Figura 11. Para ello se
utilizará la utilidad cURL56, la misma que es una librería que automatiza el
intercambio de archivos.
El primer test de prueba será realizado para recuperar la versión en RDF del
vocabulario. Para ello utilizamos los siguientes parámetros en cURL:
curl -i -H "Accept: rdf/xml" -L http://purl.oclc.org/POIS/vcblr
Figura 12: Content Negotiation - Archivo RDF
En donde especificamos el tipo de documento solicitado mediante la sentencia:
Accept: rdf/xml. Obteniendo con ello el archivo Vocabulario.rdf que fue colocado
en el servidor Apache.
El segundo test se basa en la recuperación del archivo HTML del Vocabulario, para
ello utilizamos:
curl -i -H "Accept: text/html" -L http://purl.oclc.org/POIS/vcblr
56
http://curl.haxx.se/
Cúmar Ramiro Cueva Tacuri
39
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Figura 13: Content Negotiation - Archivo HTML
La especificación del tipo de documento va contenida en la sentencia: Accept:
text/html. Con lo cual obtendremos la visualización del contenido del archivo
Vocabulario.html.
Al ser cURL una utilidad de línea de comandos, lo que se verá será el contenido
del archivo y no una representación gráfica. En caso de querer visualizar
gráficamente el contenido es posible ingresar a la misma dirección mediante un
navegador web con lo cual obtendremos una vista similar a la presentada en la
Figura 35, esto solo es aplicable para el documento HTML, puesto que un
navegador web utiliza por defecto el campo Accept: text/html.
2.3.4.1. VAPOUR
El proceso de validación de la correcta publicación del vocabulario
siguiendo los principios de LOD, también puede ser comprobada mediante
la utilización de un validador automático conocido como VAPOUR57
desarrollado por miembros de la Fundación CTIC58.
Este validador de carácter opensource, puede ser utilizado como una
instalación propia o hacer uso del mismo mediante el servicio público
levantado por la Fundación CTIC. Para la presente validación se utilizará el
servicio público por la facilidad que presenta.
57
58
http://vapour.sourceforge.net/
http://www.fundacionctic.org/
Cúmar Ramiro Cueva Tacuri
40
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Figura 14: Interfaz del servicio VAPOUR
La interfaz principal del servicio puede ser observada en la Figura 14, en
este caso, de igual forma que en la validación utilizando curl, se utilizará la
URI del vocabulario basada en PURL.
Este servicio permitirá evaluar la capacidad de la URI para procesar la
petición, basándose para ello en la negociación de contenido. El resumen
de la ejecución de esta validación se puede apreciar en la Figura 15.
Cúmar Ramiro Cueva Tacuri
41
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Figura 15: Resumen de Validación – VAPOUR
Esta validación ha sido realizada utilizando opciones específicas para
Vocabularios, como lo es la especificación de una Clase y propiedad.
Pudiendo así, apreciar que la publicación del vocabulario cumple con
todos los test aplicados por la herramienta.
El resultado completo de esta validación puede ser encontrado en el
ANEXO E.
Cúmar Ramiro Cueva Tacuri
42
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
3. BACKEND
La construcción de la plataforma POIS para el trabajo de puntos de interés geo referenciados,
necesita un almacén de tripletas capaz de permitir tanto su conservación como su consulta y
manipulación. Esta clase de ‘almacenes’ son conocidos bajo el nombre de TripleStore por
permitir el almacenaje y recuperación de datos RDF mediante un lenguaje de consulta
específico.
3.1.OpenLink Virtuoso
El almacén de datos (triplestore) será construido mediante la utilización de Virtuoso en
su versión OpenSource 659, puesto que esta presenta la característica de soportar el
lenguaje SPARQL 1.1, el mismo que contiene un conjunto de funciones necesarias para
cumplir con los objetivos del proyecto POIS, así como la inclusión de SPARUL, un lenguaje
de manipulación de datos que permitirá encargarse de las operaciones de actualización y
eliminación.
El proceso de instalación del Servidor Virtuoso puede ser consultado en el Anexo F.
3.1.1. Carga de Tripletas al Store
La finalidad de la plataforma POIS, como se ha venido mencionando, es la de
poder almacenar la representación de puntos de interés semánticos, los mismos
que pueden ser explotados posteriormente. Siendo su aplicabilidad práctica en
las paradas de los buses de la UTPL.
Toda esta información relativa al servicio de transportación estudiantil ha sido
levantada y almacenada dentro de una Base de Datos Relacional (MySQL), estos
datos son utilizados por una aplicación existente bajo el nombre de IRBU
(Información de Recorridos de Buses de la UTPL)60 que actualmente se encuentra
funcionando como servicio para la Universidad.
59
60
http://virtuoso.openlinksw.com/features-comparison-matrix/
http://200.0.29.121:8080/IRBU
Cúmar Ramiro Cueva Tacuri
43
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Figura 16: Diagrama ER – IRBU
En base a esta estructura se ha seleccionado los elementos que serán
incorporados al Store, definiendo claramente la relación entre este esquema y el
planteado en el Vocabulario RDF de la plataforma POIS.
Individuo
Prefijo
POINT
crd
POIG
pg
PARADA
prd
ORDEN_PARADA
orden
RUTA
rt
Tabla 7: Prefijos de Individuos
Para el proceso de migración de estos datos, de una Base de Datos relacional a un
esquema RDF, ha sido realizado mediante la construcción de una aplicación
propia que se encarga de extraer la información y convertirlas a tripletas.
Esta aplicación genera como salida un archivo OWL con sintaxis RDF/XML que
contiene la información extraída del esquema relacional de la Figura 16,
utilizando para ello los valores de conexión establecidos previamente en la
aplicación.
Los identificadores de los individuos creados mediante esta aplicación son
Cúmar Ramiro Cueva Tacuri
44
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
creados en base a un prefijo y el identificador numérico contenido en la Base de
Datos como llave primaria, la tabla de prefijos utilizados puede ser observada en
la Tabla 7.
Figura 17: Extracto del archivo OWL de salida
Una vez transformados los datos relacionales en tripletas RDF, estás serán
cargadas al Store de Virtuoso (previamente instalado) utilizando para ello la
interfaz principal de administración CONDUCTOR, este proceso puede
encontrarse en el ANEXO G.
Con este proceso tendremos nuestro Store con la población inicial que ha sido
migrada de una Base de Datos Relacional y listo para ser operado a través del
lenguaje de consulta SPARQL.
3.1.2. Sparql Endpoint
Para la extracción de la información almacenada en el Store dentro del Servidor
Virtuoso, se utiliza la interfaz conocida como EndPoint a donde se pueden enviar
peticiones HTTP del tipo SPARQL que serán respondidas apropiadamente por el
servidor, este servicio es levantado por defecto en el puerto 8890.
Este tipo de peticiones involucran tanto la consulta de datos como las operaciones
de manipulación del Store mediante el uso de Sparql 1.1 (sparul), gracias al
soporte de Virtuoso. Siendo este un punto fuerte para la publicación y
mantenimiento del store RDF.
Al momento de la instalación Virtuoso se genera un ENDPOINT automático que
puede ser ubicado en la dirección web:
http://servidor.com:8890/sparql.
El mismo presenta una interfaz gráfica desde donde se puede realizar extracción
de datos utilizando el lenguaje de consulta SPARQL.
Cúmar Ramiro Cueva Tacuri
45
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Figura 18: EndPoint generado por Virtuoso
El lenguaje utilizado para la recuperación de la información desde el EndPoint se
realiza mediante SPARQL, cuya sintaxis es similar al lenguaje SQL utilizado por las
bases de datos relacionales. Para profundizar sobre la sintaxis y sus beneficios se
puede remitir a [7].
3.1.2.1. Formatos de Respuesta
Las operaciones realizadas de extracción de datos, desde la interfaz del
EndPoint del servidor pueden ser visualizadas en diversos formatos, de tal
forma que la manipulación y visualización de los resultados se acoplan a la
integración con aplicaciones existentes (clientes). Un resumen de los
formatos permitidos puede ser encontrado en la Tabla 8.
Valor
Mimetype
HTML
text/html
json
application/sparql-results+json
json
application/rdf+json
js
application/javascript
table
text/html
XML
text/html
TURTLE text/html
Cúmar Ramiro Cueva Tacuri
46
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Tabla 8: Formatos de Respuesta
61
Para la interacción planeada con el EndPoint, tanto la recuperación de
datos como las operaciones de manipulación de datos (sparul) serán
manejadas mediante el formato JSON, esto debido a que es un formato
ligero para el intercambio de datos y permitiendo una manipulación más
versátil en comparación con respuestas del tipo XML u otros.
3.1.2.2. SPARQL basado en REST
REST, cuya representación se interpreta como Transferencia de Estado
Representacional, originado a partir de la tesis doctoral de Roy Fielding[29],
establece la creación e interacción de servicios en la red utilizando un
protocolo cliente/servidor sin estado, conteniendo en una sola petición
HTTP toda la información suficiente para procesarla.
El servidor Virtuoso, basa el funcionamiento de los EndPoint bajo esta
tendencia, permitiendo de esta forma que la información almacenada en el
store pueda ser consumida desde un cliente REST. En este caso, la dirección
indicada es la misma del EndPoint visualizado desde la web:
http://servidor.com:8890/sparql.
Para el consumo de este servicio se deben considerar un conjunto de
parámetros a ser enviados al servidor, en la Tabla 9 se muestra un resumen
de los más importantes:
Parámetro
query
Descripción
Requerido?
Consulta Sparql
Yes
dflt_graph URI del gráfico por defecto (string o NULL)
No
maxrows
Límite de filas mostradas
No
timeout
Tiempo máximo de duración de la consulta No
Tabla 9: Lista de parámetros
62
Mediante la utilización de estos parámetros, la extracción (interacción) con
el Store es realizada de forma sencilla mediante peticiones GET hechas a
dicho servicio.
61
62
http://docs.openlinksw.com/virtuoso/rdfsparql.html
http://docs.openlinksw.com/virtuoso/rdfsparql.html - 16.2.3.3.1. Request Parameters
Cúmar Ramiro Cueva Tacuri
47
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Al ser los datos almacenados en el Store considerados públicos (según los
principios de LOD) y por la cantidad de datos que se almacenan dentro, es
conveniente el acceso (recuperación – modificación) mediante peticiones
directas, las mismas que no deberán permitir crear ‘sesiones’ o almacenar
alguna información temporal sobre la petición (cookies).
De esta forma REST permite la interacción perfecta con el STORE
convirtiendo cada consulta de sparql en una petición GET directa al Store.
3.1.2.3. Pruebas
Una de las ventajas presentes en el uso de REST es la sencillez de los
clientes, pudiendo ser construidos en básicamente cualquier lenguaje. Para
la comprobación del servicio REST presente en Virtuoso se utilizará un
cliente desarrollado bajo el lenguaje PHP.
Se extraerán 3 elementos del tipo PARADA, donde los resultados serán
mostrados en formato JSON.
$query = “PREFIX pois:< select *
http://localhost:9090/pois/vcblr/#> where { ?Parada
a pois:PARADA } LIMIT 3”;
$baseURL = “http://localhost:9090/pois/vcblr/#”;
$format="application/json"
$params=array(
"default-graph" =>
"http://localhost:8890/poisV5",
"query" => $query,
"timeout" => "",
"format" => $format,
"save" => "display"
);
$querypart="?";
foreach($params as $name => $value)
{
$querypart=$querypart . $name . '=' .
urlencode($value) . "&";
}
$sparqlURL=$baseURL . $querypart;
file_get_contents($sparqlURL)
El resultado devuelto del store es el siguiente:
Cúmar Ramiro Cueva Tacuri
48
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
{ "head": { "link": [], "vars": ["Parada"] },
"results": { "distinct": false, "ordered": true,
"bindings": [
{ "Parada": { "type": "uri", "value":
"http://localhost:9090/pois/vcblr/#prd1" }},
{ "Parada": { "type": "uri", "value":
"http://localhost:9090/pois/vcblr/#prd2" }},
{ "Parada": { "type": "uri", "value":
"http://localhost:9090/pois/vcblr/#prd3" }} ] } }
Como se puede apreciar, la interacción con el Store desde su interfaz REST
es sencilla, donde es importante notar la importancia de los parámetros
correctos, así como indicar que los valores de los parámetros deberán ir
codificados mediante la función urlencode()63, que realiza un reemplazo
de los caracteres no alfanuméricos por símbolos equivalentes. De tal forma
que estos no interfieran con la sintaxis y caracteres propios de la URL a la
cual se hace la petición HTTP.
Texto : a ser enviado %
encode
Texto%20%3A%20a%20ser%20enviado%20%25
Figura 19: Caracteres codificados
3.1.3. Autenticación sobre EndPoint
Virtuoso, como se ha comentado en apartados anteriores, permite la utilización
de SPARQL 1.1, el mismo que posee el lenguaje de manipulación SPARQL UPDATE
(sparul), con el cual se pueden realizar operaciones de INSERCIÓN – BORRADO –
MODIFICACIÓN de tripletas almacenadas en el Store.
Este tipo de operaciones son necesarias para cumplir con el objetivo de la
plataforma POIS y su API CRUD. El uso de este lenguaje es realizado desde el
mismo EndPoint donde se interactúa con SPARQL. De esta forma, basándose en la
descripción dada de este EndPoint anteriormente, el mismo que es de acceso
público, implicaría que cualquiera desde el EndPoint podrá manipular la
estructura de los datos mediante la ejecución de sentencias SPARQL-UPDATE, algo
que compromete seriamente la integridad de los datos y la consistencia de los
mismos en el Store.
63
http://php.net/manual/es/function.urlencode.php
Cúmar Ramiro Cueva Tacuri
49
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Figura 20: Usuarios Virtuoso Server
Para solventar este inconveniente Virtuoso implementa un conjunto de ROLES
que son asignados a determinados usuarios, de tal forma que un usuario
determinado puede poseer uno o varios roles que le permitan llevar acabo
determinadas acciones sobre el Store.
Dentro del conjunto de roles preexistentes en Virtuoso es importante enfocarse
en la existencia de dos roles: SPARQL_SELECT y SPARQL_UPDATE, los mismos que
contienen permisos de selección y permisos de actualización (selección implícita)
respectivamente.
Figura 21: Roles Virtuoso Server
Virtuoso por defecto enlaza la interfaz del EndPoint localizada en la dirección:
http://servidor.com:8890/sparql.
Al usuario SPARQL, el mismo que posee tan solo permisos de consulta de datos
Cúmar Ramiro Cueva Tacuri
50
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
bajo el rol de SPARQL_SELECT, es así que al intentar ejecutar una sentencia
DELETE (o cualquiera que involucre SPARQL – UPDATE) sobre esta interfaz
obtendremos un resultado similar al mostrado en la Figura 22.
Figura 22: Error de Privilegios
Donde se especifica que no existen los permisos asociados con el usuario para
realizar dicha acción, lo que resulta una medida necesaria para proteger la
integridad del Store dejando tan solo accesible la consulta de datos.
Aun así la necesidad de realizar manipulaciones sobre el Store es necesaria,
puesto que el API de la Plataforma deberá permitir esto, y debido a que desde
esta interfaz no es seguro aplicar también el rol SPARQL_UPDATE, se
implementará una solución que involucra la existencia de dos interfaces de
entrada hacia el Store. La ya conocida /sparql y una nueva bajo el directorio
/sparql-auth.
De tal forma que existirán dos interfaces una para la extracción y otra para la
manipulación de los datos del Store. Así, se creará un usuario con los permisos
necesarios (rol SPARQL_UPDATE) para que trabaje sobre esta interfaz, con los
siguientes datos:
User: test2
Pass: test2
La creación del usuario es realizada mediante la interfaz principal de Conductor,
bajo la opción ‘System Admin’. Donde además se asignará el rol
correspondiente para realizar la manipulación del Store.
Cúmar Ramiro Cueva Tacuri
51
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Figura 23: Creación de Usuario
Una vez creado el usuario con los permisos adecuados (rol), se puede comprobar
su funcionamiento desde la dirección:
http://servidor.com:8890/sparql-auth
La autenticación utilizada por este tipo de usuario es una Autenticación Digest64,
conocida en Virtuoso como SQL Authentication. Siendo una forma útil y eficaz
para garantizar el acceso. Además de este método Virtuoso presenta otras formas
posibles como65:


OAuth
WebID Protocol based authentication
Para la utilización de estos tipos de autentificación es necesaria la instalación del
módulo policy_manager_dav.vad y acceder desde la dirección:
http://servidor.com:8890/ policy_manager/
Donde es posible seleccionar el método de autenticación, recordando que debe
existir al menos un usuario que acepte este tipo de autenticación.
64
65
http://en.wikipedia.org/wiki/Digest_access_authentication
http://docs.openlinksw.com/virtuoso/rdfsparql.html [16.2.3.4.2. Authentication]
Cúmar Ramiro Cueva Tacuri
52
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Figura 24: Servidor de Autentificación
La selección de uno u otro método dependerá directamente de la aplicabilidad
que tendrá nuestro Store, en este caso, será consumido y actualizado desde otra
aplicación (cliente – API) por lo que utilizar autenticación digest, se convierte en la
mejor opción, por su valor de seguridad y facilidad.
3.1.3.1. Pruebas
Una vez creado el usuario con permisos de actualización sobre el Store, así
como identificado el punto de acceso, la interacción con él mediante el
protocolo REST es similar a las pruebas realizadas anteriormente. A
continuación se muestra la inserción de un individuo del tipo ESTUDIANTE
(según se define en el vocabulario POIS) desde un fichero PHP hacia el
Store, en este caso se utilizará la librería CURL66.
<?php
$user = "test2";
$pass = "test2";
$query = "PREFIX pois:<http://purl.oclc.org/POIS/vcblr/#>
INSERT INTO GRAPH <http://localhost:8890/POIS> {
pois:estd01 rdf:type pois:ESTUDIANTE; pois:cedula
1104698723; pois:ViveEn pois:pg64 }";
$format = "application/sparql-results+json";
$endPointSecure = "http://localhost:8890/sparql-auth/";
$URL = $endPointSecure."?query=".urlencode($query)."
&format=".urlencode($format);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
66
http://curl.haxx.se/
Cúmar Ramiro Cueva Tacuri
53
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
curl_setopt($ch, CURLOPT_USERPWD, "$user:$pass");
$output = curl_exec($ch);
echo $output;
curl_close($output);
La salida producida será una confirmación de inserción de la siguiente
manera.
{ "head": { "link": [], "vars": ["callret-0"] },
"results": { "distinct": false, "ordered": true,
"bindings": [
{ "callret-0": { "type": "literal", "value": "Insert into
<http://localhost:8890/POIS>, 3 (or less) triples -- done" }}
] } }
De esta forma se ha insertado un nuevo individuo ESTUDIANTE que
contiene 3 tripletas, se debe recalcar que para realizar la autenticación
contra el EndPoint se especifica el tipo de autenticación a utilizar:
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
Esta prueba demuestra la viabilidad de utilizar una interfaz de EndPoint
dedicada solo al proceso de manipulación de datos del Store y otra para la
extracción de información.
3.2. Vocabulary of Interlinked Datasets (VoID)
Una propuesta del Digital Enterprise Research Institute (DERI)67 y adoptada por la W3C
como una nota de grupo de interés68 permite expresar metadatos sobre los DataSets de
tripletas, intentando de esta forma ser un punto de enlace entre quienes publican el
DataSet y los que lo usan. Permitiendo que herramientas personalizadas puedan
examinar el documento y catalogar el DataSet, basándose para ello en el uso de,
principalmente, el vocabulario Dublin Core.
En este documento se especifica aspectos relevantes del DataSet como su localización,
la información que almacena, la vinculación existente con otros DataSets, así como el
uso de vocabularios. Así mismo se menciona la inclusión de información relativa a la
licencia con la cual se ha publica el mismo. Las principales han sido propuestas por
Open Data Commons69.
67
http://www.deri.ie/
“Describing Linked Datasets with the VoID Vocabulary” http://www.w3.org/TR/void/
69
http://opendatacommons.org
68
Cúmar Ramiro Cueva Tacuri
54
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
En este caso, para la publicación del DataSet de la plataforma POIS, se ha seleccionado
la licencia del tipo "Open Data Commons Attribution License (ODC-By) v1.0" la misma
que permite Compartir, crear y adaptar la información existente, siempre y cuando se
atribuya dicha información al productor del DataSet.
Para la creación de este documento VoID, el grupo DERI ha creado una herramienta
online70, capaz de permitir incluir de forma gráfica y detallada todos los aspectos
relativos al DataSet. Esta herramienta bajo el nombre de ve2 puede ser observada en la
Figura 25.
Esta herramienta genera la descripción del DataSet en base a la sintaxis RDF Turtle,
permitiendo además realizar una revisión de la salida y la facilidad de publicación del
documento en varios sitios como Sindice71, voiD Store72, voiD Browser73 y PTSW74, los
mismos que mantienen gran cantidad de DataSets registrados, facilitando de esta
manera su búsqueda y utilización.
Figura 25: Editor VoID - DERI
A continuación, se muestra el archivo VoID del Store de la Plataforma POIS, que ha sido
construido utilizando la herramienta antes descrita y cuya salida se encuentra en
formato RDF Turtle.
@prefix
@prefix
@prefix
@prefix
rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
foaf: <http://xmlns.com/foaf/0.1/> .
dcterms: <http://purl.org/dc/terms/> .
70
http://ld2sd.deri.org/ve2/
http://sindice.com/
72
http://void.rkbexplorer.com/
73
http://kwijibo.talis.com/voiD/
74
http://pingthesemanticweb.com/
71
Cúmar Ramiro Cueva Tacuri
55
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
@prefix void: <http://rdfs.org/ns/void#> .
@prefix : <#> .
## POIS DATASET
<http://www.utpl.edu.ec/poisDataSet> rdf:type void:Dataset ;
foaf:homepage <http://www.utpl.edu.ec/poisDataSet> ;
dcterms:title "POIS Plataform" ;
dcterms:description "Informacion relativa a todas las rutas
y paradas del sistema de transportacion estudiantil de la
Universidad Tecnica Particular de Loja." ;
dcterms:publisher <http://foaf.me/qmarqeva#me> ;
dcterms:license <http://opendatacommons.org/licenses/by/summary/> ;
void:sparqlEndpoint <http://www.utpl.edu.ec/poisDataSet/sparql> ;
void:vocabulary <http://purl.oclc.org/POIS/vcblr/#> ;
void:vocabulary <http://www.w3.org/2003/01/geo/wgs84_pos#> .
3.3. Servicio REST - CRUD
El acceso a los datos contenidos en el Store tanto para su consumo como modificación,
será realizado mediante la utilización de un servicio REST, el mismo que es desarrollado
bajo los principios de este estilo arquitectónico de la Web.
De esta forma, los clientes (software) que deseen interactuar con el Store tendrán una
vía de acceso sencilla, basada en recursos y accedida mediante peticiones HTTP,
dejando el trabajo de formular las consultas SPARQL al servicio REST.
La adopción de este tipo de servicios en la actualidad tiene gran acogida, en el internet
gran cantidad de empresas ofrecen sus servicios basados en REST como eBay 75,
Twitter76 así como el servicio de búsqueda de Google77.
La facilidad brindada por REST radica principalmente, en la utilización del protocolo
HTTP a nivel de aplicación, de tal forma que se obtiene un conjunto de operaciones bien
definidas como lo son POST, GET, PUT y DELETE (por mencionar las principales) las
mismas que actúan sobre recursos, donde cada uno de ellos son identificados de forma
única mediante la utilización de URIs78.
De esta forma se puede realizar una comparativa entre los métodos ofrecidos por el
protocolo HTTP y las operaciones CRUD de un sistema transaccional de base de Datos
como se muestra en la Tabla 10.
75
http://developer.ebay.com/developercenter/rest/
https://dev.twitter.com/docs/api
77
http://code.google.com/intl/es/apis/websearch/docs/
78
RFC3986
76
Cúmar Ramiro Cueva Tacuri
56
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Operación
Create
Read
Update
Delete
SQL
Insert
Select
Update
Delete
HTTP
POST
GET
PUT
DELETE
Tabla 10: Métodos HTTP - CRUD
Estas relaciones serán tomadas en consideraciones al momento de la implementación
del API para la plataforma POIS.
3.3.1. Framework
A medida que el uso de REST se ha popularizado, es frecuente encontrar
frameworks que permiten implementarlo en diferentes lenguajes. Cada una de
estas implementaciones presta un valor determinado en dependencia del
ambiente en el que se desarrollan. Para la utilización de uno de estos dentro de la
plataforma POIS es vital la consideración del servidor necesario por el framework
en donde residirá el aplicativo REST. Tomando en cuenta esta restricción a
continuación se expone un cuadro descriptivo conteniendo algunos framework
existentes en diversos lenguajes.
Lenguaje /
Framework
Tecnología
ASP.net
REST Starter Kit79
Axis280
Java
Jersey81
Restlet82
Recess83
PHP
Zend Framework84
Ruby
restful-rails85
Server
Internet Information Server
Servidor de Aplicaciones Java
Apache
Apache (soporte Ruby)
Tabla 11: Frameworks REST
79
http://www.asp.net/downloads/starter-kits/wcf-rest
http://axis.apache.org/axis2/java/core/
81
http://jersey.java.net/
82
http://www.restlet.org/
83
http://www.recessframework.org/
84
http://framework.zend.com/manual/en/zend.rest.client.html
85
http://rubyforge.org/projects/restful-rails/
80
Cúmar Ramiro Cueva Tacuri
57
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
En base a la Tabla 11, el backend para el servicio REST de la plataforma POIS será
realizado en PHP debido a su simplicidad y tiempo de aprendizaje.
Además, la interacción con el EndPoint de Virtuoso desde PHP se convierte en una
tarea relativamente sencilla, ya que PHP es un lenguaje para la web y para su
funcionamiento es necesario un servidor Web como lo es Apache, el mismo que
ya ha sido utilizado en la publicación del Vocabulario en apartados anteriores.
De esta forma y tomando como base el funcionamiento del framework Recess,
para la construcción del servicio REST para la plataforma POIS, se utilizará un
framework derivado de este que trabaja de forma similar pero presenta ventajas
en cuanto a simplicidad de funcionamiento, pues es una versión reducida del
mismo, la cual puede ser encontrada en [30], mismo que es totalmente
independiente de librerías y otros frameworks.
3.3.1.1.
Funcionamiento del Servidor REST
Al ser REST un servicio Web, este está encargado de responder la
peticiones realizadas por un usuario, como se mencionó anteriormente,
estas peticiones estarán dirigidas a un determinado recurso, el mismo que
ha sido identificado por una URI, las mismas que seguirán el siguiente
formato:
http://server.com/recurso/param1/param2/param3
Dónde:
http: Determinará el tipo de operación CRUD a realizar.
recurso: Identifica el recurso al que se va a acceder.
paramX: Estable todo el conjunto de parámetros (valores) que
serán enviados como parte de la petición.
Cúmar Ramiro Cueva Tacuri
58
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
JSON
JSON
EndPoint Virtuoso
Index.php
ControladorRest.php
HTTP METHOD
.htaccess
.htaccess
RestServer.php
Figura 26: Servidor REST – POIS
De esta forma, el servidor REST utilizará el módulo mod_rewrite del
servidor Apache para realizar la redirección, localización de recursos y el
paso de parámetros desde la petición. Para ello hace uso de un archivo
.htaccess, en el que se especifica la redirección de todas las peticiones a
un archivo inicial que se encargará de gestionarlas y asignar la operación
correspondiente.
DirectoryIndex index.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^.*$ index.php [QSA,L]
</IfModule>
En base a esto, y siguiendo la estructura de la Figura 26, la construcción
del servidor REST, involucra la utilización de 4 archivos:
.htaccess: Realiza la redirección de la petición a un archivo base.
Index.php: Archivo base que se encarga de levantar el servicio
REST y ejecutarlo.
RestServer.php: Gestiona todo el proceso del servidor, encargado
de localizar el recurso al que se quiere acceder en base
a la URI y el método HTTP de la petición.
ControladorRest.php: Contiene todas las operaciones posibles
sobre los recursos, así como definición de las URIs.
Cúmar Ramiro Cueva Tacuri
59
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Aquí es donde se implementarán
operaciones sobre el EndPoint.
todas
las
Toda petición realizada al servidor devolverá como resultado una
respuesta en formato JSON conteniendo en ella el resultado de la
interacción con el EndPoint o un código de estado HTTP.
{
"error": {
"code": 404,
"message": "Not Found"
}
}
El proceso de creación de URIs por parte del servidor así como la relación
entre los métodos HTTP, es realizada de una manera ingeniosa en base a
la definición de funciones (procedimientos) en php y a su vez haciendo
uso de los comentarios que son colocados al inicio de estas.
De esta forma la estructura básica de una función a ser definida en el
archivo ControladorRest.php se muestra en la Figura 27, considerando
que toda función que se enlazará a una URI deberá tener para ello un
comentario indicando esto.
Figura 27: Estructura función – Server REST
Al iniciar el servidor REST este mapeará todos métodos que contenga en
sus comentarios el tag @url de tal forma que se relacionará cada método
a esta sección de la URI, indicando además al inicio de esta el método
HTTP que trabajará con esta URI.
Se debe resaltar que todos los valores contenidos en esta URI precedidos
por el símbolo de moneda $ serán reconocidos como parámetros y serán
Cúmar Ramiro Cueva Tacuri
60
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
correspondidos directamente con los contenidos en la definición de la
función como se muestra en la Figura 28.
A diferencia de otros frameworks, el nombre colocado a la función no
tiene mayor relevancia ya que la relación es establecida directamente por
la URI en el comentario y los parámetros de entrada de la función.
Figura 28: Correspondencia de Parámetros
Para convertir uno de los parámetros en opcional, se deberá considerar el
añadir una nueva URI mediante el tag @url en donde no se mencionará el
parámetro opcional, así como indicar un valor por defecto al parámetro
relacionado en la función, similar a la Figura 29. Donde se ha considerado
opcional el segundo parámetro tienen asignado en el método un valor por
defecto null. Con esto se puede lograr vincular más de una URI a una
determinada acción (función).
Figura 29: Parámetro Opcional
3.3.2. URIs de Recursos
REST establece que toda URI indica una operación sobre un determinado recurso,
para cumplir con este principio dentro del servidor REST para la plataforma POIS,
se considerarán como recursos todos los elementos que conforman el
Vocabulario POIS, el cual se puede encontrar en la Figura 5.
Para este proceso de definición de URIs se establecerá un prefijo entre el nombre
del servidor y el recurso al que se está accediendo, con el nombre de /pois/ que
Cúmar Ramiro Cueva Tacuri
61
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
permitirá identificar el nombre de la plataforma, para ello se establecerá la
estructura de la Figura 30 para el directorio en el servidor web Apache.
Figura 30: Directorio Servidor Apache
En base a estas consideraciones el formato genérico de una URI proporcionada
por el servidor REST será la siguiente:
http://{dir_server}/pois/[individuo/]$params
Se debe recordar que debido al uso de SPARUL en interacción con el EndPoint de
Virtuoso, algunas URIs tendrán los parámetros $user - $pass que harán referencia
a un usuario válido con el rol de SPARQL_UPDATE.
La definición de todas las URIs proporcionadas por el servidor REST POIS, pueden
ser encontradas en el ANEXO H.
Cúmar Ramiro Cueva Tacuri
62
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
3.3.3. Métodos del API
Las operaciones posibles sobre el Store, como se mencionó anteriormente, están
dentro de cada función definida en el archivo ControladorRest.php ubicado en el
servidor Apache.
Estas devolverán el resultado de la operación sobre el Store (sparql), códigos de
estado HTTP, así como la confirmación de alguna acción o el fracaso de la misma.
{
"status": "[OK | FAIL]",
["indiv": "idIndividuo"],
["message": "Descripción"]
}
Cada uno de estos métodos tiene relación directa con una o más URIs como se ha
mencionado en los apartados anteriores, la mayoría de operaciones no conlleva
mayor proceso lógico, a diferencia de unas cuantas que se exponen a
continuación.
De la misma manera en que se utilizó prefijos para nombrar a los individuos que
fueron exportados desde la base de datos relacional, el API al crear individuos
utilizará un prefijo por cada individuo más una combinación de la fecha y hora
para crear un id único de individuo mediante el uso de la función
date("YmdHis") desde PHP.
3.3.3.1.
Eliminar una Ruta
Función:
delete_ruta($user, $pass, $ruta)
Http: DELETE
URI: /ruta/$user/$pass/$ruta
Descripción: El proceso de eliminación dentro del Store se convierte en un
proceso de desactivación, puesto que es necesario conservar estos
datos para la posterior extracción de información histórica.
En base a esto, al ‘eliminar’ un elemento del tipo RUTA, se procede a
desactivar la ruta manipulando su propiedad activa colocando en ella
el valor de 0. De la misma forma, se desactivarán solamente las
paradas que sean referenciadas únicamente por esta RUTA,
colocando igualmente el valor de 0 a su propiedad activa.
Cúmar Ramiro Cueva Tacuri
63
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
3.3.3.2.
Agregar una nueva parada
Función: add_ruta_parada($user, $pass, $ruta, $ordprd, $numsec)
Http: PUT
URI: /ruta/parada/$user/$pass/$ruta/$ordprd/$numsec
Descripción: Existe la posibilidad de agregar una nueva PARADA a una
determinada RUTA, sea esta PARADA nueva o existente en el Store.
Para ello se vincula un individuo del tipo ORDEN_PARADA que es
recibido como parámetro de entrada, así como el número de orden
que ocupará en la RUTA especificado en el parámetro numsec.
De esta forma, se actualizará la propiedad num_secuencia de todos
los individuos ORDEN_PARADA vinculados a esta RUTA y que sean
mayores o iguales al orden recibido, el proceso es ilustrado en la
Figura 31.
Luego de esto serán vinculados estos objetos de forma directa
haciendo uso de la propiedad ParadaConOrden del individuo RUTA.
4
1
1
2
2
3
3
4
4
5
6
+1
+1
+1
+1
+1
+1
5
6
7
Figura 31: Desplazamiento e inserción de Parada
3.3.3.3.
Eliminar parada
Función: delete_ruta_parada($user, $pass, $ruta, $parada){
Http: DELETE
URI: /ruta/parada/$user/$pass/$ruta/$parada
Descripción: El proceso de ‘eliminación’ de una parada en relación con una
ruta, es la eliminación del vínculo existente entre estas, así como
desactivar la parada si solamente es referenciada por esta ruta.
Al igual que el proceso anterior aquí se deberá realizar un
Cúmar Ramiro Cueva Tacuri
64
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
desplazamiento de acuerdo a la parada a eliminar.
1
1
2
2
3
3
4
5
-1
-1
-1
-1
4
5
6
Figura 32: Desplazamiento y eliminación de Parada
3.3.3.4.
Actualizar Propiedad
Función: update_propiedad($user, $pass, $individuo, $propiedad, $valor,
$tipo = null)
Http: PUT
URI: /propiedad/$user/$pass/$individuo/$propiedad/$valor/$tipo
/propiedad/$user/$pass/$individuo/$propiedad/$valor
Descripción: Este permite la actualización de cualquier propiedad de
cualquier individuo existente en el Store, lo que permite tener un
acceso global desde un solo punto.
Este proceso de actualización es llevado a cabo mediante el uso del
operador MODIFY contenido en SPARQL 1.1. El mismo que permite la
ejecución de una sentencia DELETE e INSERT al mismo tiempo que
permiten simular una sentencia UPDATE tradicional en SQL.
PREFIX
PREFIX
MODIFY
DELETE
INSERT
WHERE
:rt001
}
pois:<http://purl.oclc.org/POIS/vcblr/#>
:<http://localhost/pois/vcblr/indv/#>
GRAPH <http://localhost:8890/poisV5>
{ :rt001 pois:tipo ?y }
{ :rt001 pois:tipo "newValue" }
{
pois:tipo ?y
Como se puede apreciar esto permite ejecutar actualizaciones
específicas así como masivas, mediante la selección de las mismas en
base a la cláusula WHERE.
Cúmar Ramiro Cueva Tacuri
65
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
3.3.3.5.
URL para Imágenes
En la definición de los individuos PARADA, presente en la construcción del
vocabulario para la plataforma, se contempla que cada parada podrá
tener vinculada consigo una imagen bajo la propiedad del mismo
nombre. Esta propiedad hará referencia a una dirección URL en la cual
podrá ser encontrada la imagen.
Debido a que el servicio de la Plataforma POIS es accedido mediante REST,
mediante la utilización de notación ‘slash’ que utiliza como separadores
de recursos y parámetros el símbolo ‘/’. En este caso, al incluir una URL
como parámetro se creará un conflicto, puesto que se interpretarán los ‘/’
como recursos o propiedades del servicio.
La codificación de este parámetro tampoco es una solución puesto que al
utilizar una notación ‘hash’, el servidor Apache realiza una decodificación
de la URL y se obtiene el mismo problema.
Para solventar este inconveniente se ha considerado el envío de este
parámetro (URL de la imagen) con doble codificación, la misma que será
decodificada en primera instancia por el servidor Apache y luego por el
servicio REST. Este proceso puede ser observado en la Figura 33.
http://server.com/pictures/prd01.png
original
http%3A%2F%2Fserver.com%2Fpictures%2Fprd01.png
codificada
http%253A%252F%252Fserver.com%252Fpictures%252Fprd01.png
Doble codificada
Figura 33: Doble codificación de una URL
Cúmar Ramiro Cueva Tacuri
66
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
3.3.4. Pruebas
El proceso de pruebas ha sido desarrollado enfocado a comprobar tanto el
funcionamiento del API REST como la lógica aplicada en las acciones que se
deberán llevar acabo.
Los datos utilizados en las pruebas involucran datos ficticios como datos reales
cargados en el Store. Por cada URI se indicará los valores a ser enviados, la acción
esperada y el estado del Store antes y después de la acción (en los casos
aplicables). Estas han sido llevadas a cabo utilizando el complemento RESTClient86
para Firefox.
El proceso y resultado se puede encontrar en el ANEXO I.
86
https://addons.mozilla.org/en-US/firefox/addon/restclient/
Cúmar Ramiro Cueva Tacuri
67
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
4. CLIENTE
El funcionamiento de la plataforma POIS es comprobada con la construcción de un cliente con
funcionalidades básicas orientadas a los Estudiantes, haciendo uso del servicio prestado por el
servidor REST, todas ellas mediante el uso de peticiones HTTP. Se menciona que otras
funcionalidades relativas a la sección administrativa de la plataforma no han sido
contempladas en este cliente.
4.1. Tecnologías
Para el proceso de construcción del cliente se ha considerado la selección de
tecnologías que permitan una interoperabilidad alta, entre los componentes a
desarrollar y los servicios existentes.
En primera instancia es necesario el uso de un mapa digitalizado sobre el cual se
realizarán todas las operaciones de visualización, actualmente en el mercado existen
soluciones gratuitas como Bings Maps87, Google Maps88 y otros, que son una solución
excelente para diversos proyectos. En el caso de la plataforma POIS, la sección más
importante a visualizar en el mapa es la ciudad de Loja, motivo por el cual las soluciones
propuestas han sido desechadas, puesto que no poseen la ciudad entre sus mapas.
Con estos antecedentes la selección del servidor de mapas para el proyecto cliente, se
orienta al consumo de mapas de los servidores del Proyecto OpenStreetMap89 (OSM),
este proyecto libre y colaborativo, cuenta con una vasta colección de mapas de todo el
mundo, poseyendo entre estos la ciudad de Loja en su mayor parte digitalizada. Otra de
sus ventajas radica en que no es necesaria la utilización de una cuenta o key especial
para el consumo de los mismos, pues su uso se basa en la licencia Creative Commons90.
De esta misma forma se debe considerar un framework o librería capaz de permitir el
trazado de figuras y manipulación de las mismas sobre nuestro mapa, en este caso se ha
seleccionado a la librería OpenLayers(OL)91, una librería desarrollada totalmente bajo
javascript que permite la carga, manipulación y trazado, tanto de figuras como mapas
de cualquier lugar. Poseyendo además características notables como la manipulación de
gran cantidad de figuras en forma de vectores así como acceso al código fuente por ser
un proyecto de código abierto.
87
http://www.bing.com/maps/
http://maps.google.es/
89
http://www.openstreetmap.org/
90
http://creativecommons.org/
91
http://openlayers.org/
88
Cúmar Ramiro Cueva Tacuri
68
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Finalmente el cliente deberá cumplir con una característica importante, el ser de fácil
manejo y de apariencia agradable, siendo la construcción de esta dependiente de las
tecnologías antes seleccionadas. Razón por la cual se ha seleccionado el framework
ExtJs92 para la construcción de todo el frontEnd. ExtJs posee un gran conjunto de
componentes gráficos listos para su uso los mismos que son de fácil manejo y poseen
gran cantidad de documentación, siendo una de las características notables la
compatibilidad entre navegadores y el soporte para el trabajo con Ajax.
4.2. Integración
La creación de este cliente (prueba de concepto) ha involucrado aspectos relevantes
que se deben destacar, como el proceso de comunicación entre el cliente y el API REST ,
el mismo que es realizado mediante consultas HTTP efectuadas desde el framework
ExtJs, donde se especifica el tipo de petición a realizar sobre un determinado recurso, el
formato de una petición típica se puede apreciar en la Figura 34.
De igual forma, todo el procesamiento de la información recibida desde el servicio REST
es procesada mediante lectores JSON propios de ExtJs.
Figura 34: Petición HTTP – ExtJs
En el siguiente apartado se describirán cada una de las funcionalidades implementadas
en la aplicación cliente y que servirán para comprobar el funcionamiento de la
Plataforma POIS.
92
http://www.sencha.com/products/extjs/
Cúmar Ramiro Cueva Tacuri
69
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
4.3. Funcionalidades
4.3.1. Verificación de Existencia de Estudiante
El ingreso al cliente es realizado mediante el ingreso de un número de cédula
válido. La validación realizada determina la existencia de un estudiante con esta
cédula en el Store, en caso de existir son extraídas su vivienda y parada frecuente.
En caso de no existir y ser una cédula válida, se notificará al usuario la posibilidad
de incluirlo dentro del Store. Anexo 9.10.1
4.3.2. Visualización de Vivienda
El proceso de visualización de la vivienda de un estudiante dentro del
sistema, en caso de tenerla especificada, será graficada con un icono
representativo sobre un mapa de la ciudad, para esta visualización se
considera la extracción de la última vivienda registrada por el estudiante. Anexo
9.10.2
4.3.3. Visualización de Parada Frecuente
Al igual que el proceso de visualización de vivienda, la parada frecuente del
estudiante será visualizada al iniciar sesión, en caso de tenerla definida, la
misma corresponderá directamente a una Parada existente en el Store.
Anexo 9.10.3
4.3.4. Registro de Vivienda
Un usuario del sistema (estudiante) podrá fijar un determinado punto geográfico
como el sitio actual donde vive, permitiéndole las veces que desee el cambio de
ubicación del mismo. Para ello solo deberá ubicarse sobre el mapa y seleccionarlo.
Anexo 9.10.4
4.3.5. Registro de Parada Frecuente
El proceso de registro de la Parada Frecuente, permite al usuario (estudiante)
definir una parada actualmente existente como su preferida, pudiendo de la
misma forma cambiarla las veces que se desee. Para ello se mostrarán todas las
paradas existentes en el Store de tal manera que se podrá seleccionar la preferida
Cúmar Ramiro Cueva Tacuri
70
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
de forma gráfica. Anexo 9.10.5
La interfaz de la aplicación cliente puede ser encontrada en el Anexo: 0
4.4. Pruebas
El proceso de verificación para el funcionamiento del cliente y la consecuente
interacción con el API REST será evaluado mediante casos de prueba que
involucrarán todos los casos posibles así como las funciones existentes del cliente.
4.4.1. CASO 1
Nombre: Cédula Incorrecta
Descripción: Se proporciona al sistema una cédula incorrecta ya sea esta no
válida, incompleta o no numérica. Comprobando la reacción del
cliente.
Aspectos a Validar: Respuesta del cliente a ingreso de datos erróneos
Datos:
cedula: 1245785612 | 4556 | 45A8
Resultados: Al ingresar una cédula inválida, incompleta o alfanumérica los datos
son validados antes de llamar al servicio REST y se presenta un
mensaje indicando “Debe ingresar una cédula válida”. El mensaje
puede ser apreciado en el Anexo 0
4.4.2. CASO 2
Nombre: Cédula Correcta NO existente en el Store
Descripción: Se proporciona al sistema una cédula válida de un estudiante que
no ha sido agregado al store.
Aspectos a Validar: Ingreso automático de estudiantes. Procesos de agregar
Parada Frecuente y Vivienda por primera vez a un estudiante.
Datos:
cedula: 1104665623
Cúmar Ramiro Cueva Tacuri
71
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Resultados: El ingresar una cédula válida pero no existente en el Store, hace que
exista la opción de agregarla al Store o no. En caso de ingresarla se
podrá especificar tanto la posición de la vivienda como la Parada
Frecuente en el mapa.
Los mensajes visualizados en estos procesos, así como las
peticiones HTTP sobre el servicio REST pueden ser encontrados en
el Anexo 5.8.2.
4.4.3. CASO 3
Nombre: Cambiar Parada Frecuente y Vivienda
Descripción: Se proporciona al sistema una cédula válida de un estudiante
existente en el Store, el mismo que posee ya definidas su Parada
Frecuente y su Vivienda.
Aspectos a Validar: Carga de datos existentes. Cambio de Parada Frecuente y
Cambio de Vivienda.
Datos:
cedula: 1104665623
Resultados: El proceso y mensajes presentados son similares a los visualizados
al definir tanto la Parada Frecuente como Vivienda, por primera
ocasión. Esto determina que el usuario no tenga que realizar
procesos diferentes. Además, la aplicación refresca la localización
de estas, cada vez que son cambiadas, lo que permite tener una
interacción directa con la misma sin necesidad de recargar la
página. Mayor detalle puede ser encontrado en el Anexo 5.8.3.
Cúmar Ramiro Cueva Tacuri
72
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
5. DISCUSIÓN
La construcción de la plataforma POIS, ha permitido la integración de conceptos en una sola
solución funcional según los principios de Linked Data. Lo que demuestra la posibilidad de
acceso a datos públicos almacenados en un TripleStore desde un servicio REST.
Constituyendo, la creación del vocabulario, en una de las faces críticas del proyecto. Tanto por
la importancia de cumplir con el propósito de representar diversos tipos de Puntos de Interés
como de cumplir con el principio de reutilización. Luego del proceso de selección llegué a
determinar que solamente se puede reutilizar un elemento de un vocabulario ya existente,
como lo es Basic Geo, para la representación de un punto geográfico. Demostrando así, que
no existe aún un vocabulario capaz de abarcar atributos de diversos puntos de interés, por su
variada heterogeneidad.
De igual manera, el proceso de población del TripleStore en base a datos existentes y
almacenados en un ambiente relacional, no requiere de la realización de cambios drásticos en
la representación de información relacional para ser almacenada en tripletas. Es más, si la
información no hubiera estado en un RDBMS, el proceso de población hubiera tomado más
tiempo.
Además, el uso de REST para la interacción entre el cliente y el TripleStore permitió que se
integren conceptos de clases e individuos, lo que permitió desarrollar un API acoplado al
esquema del vocabulario RDF.
Un tema que requiere mayor análisis es la apertura al cliente de la modificación de los datos
en el TripleStore, proceso de modificación que fue solventado con las ventajas de Sparql 1.1,
esto debido a que si la información es pública la modificación no necesariamente debería
serlo, en especial si la información es relativa a preferencias del usuario (parada frecuente).
En el presente trabajo se ha utilizado una autenticación proporcionada por el TripleStore
Virtuoso, para evitar la manipulación de información, que si bien resuelve el problema de
modificación no autorizada, aún sigue siendo necesario el definir un esquema capaz de
permitir el acceso a los datos de forma pública y la modificación de los mismos solo por sus
creadores o personas con autorización.
Inconvenientes futuros también se han considerado, como el traslado del TripleStore a una
nueva ubicación (cambio de dirección) lo que haría necesario una actualización de todas las
aplicaciones que ya lo estén utilizando, solventando esto con la utilización de PURLs.
En definitiva puedo argumentar que el presente trabajo muestra la pauta necesaria para la
publicación y consumo de datos según LOD, lo que permite una interacción eficaz con la web
actual.
Cúmar Ramiro Cueva Tacuri
73
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
6. CONCLUSIONES
Al término del presente trabajo investigativo puedo concluir que:

La construcción de la Plataforma POIS, basada en los principios de Linked Data,
demuestra que el acceso y modificación de información localizada en el TripleStores
semánticos puede ser realizada de forma transparente para el usuario final (cliente).
Sin diferenciar la forma de almacenaje de la misma.

Dentro del proceso de construcción de un vocabulario para la representación de
datos, este debe contener la mayor cantidad de elementos reutilizados de
vocabularios existentes y ampliamente utilizados, lo que facilita el consumo e
integración de estos datos. Uno de los principios de Linked Data.

El proceso de migración de datos actualmente almacenados en ambientes
relacionales, es fácilmente transformado a un esquema semántico, considerando
primero la equivalencia de relaciones y el significado de los datos en base al
vocabulario RDF.

La organización de los datos en el TripleStore de acuerdo al vocabulario RDF, solo es
eficaz cuando existe una definición previa y estandarizada de URIs que representarán
los elementos, lo que facilita la localización de los mismos.

El uso de REST para el acceso a los datos en un TripleStore, resulta beneficioso puesto
que tanto REST como el vocabulario, que define el almacenamiento de los datos, se
basan en la definición de recursos (clases).

Sparql 1.1, también conocido como SPARUL permite completar el conjunto de
operaciones CRUD que se pueden realizar sobre los grafos del TripleStore y evitar el
uso de procesos asistidos.
Cúmar Ramiro Cueva Tacuri
74
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
7. RECOMENDACIONES
Durante el proceso de elaboración del presente trabajo investigativo se ha extraído las
siguientes recomendaciones:

Es necesario recomendar el uso de PURLs (direcciones URL permanentes) para todas
aquellas direcciones que involucren difusión, siendo necesario la creación de las
mismas en un servidor confiable.

Considerar siempre que si el valor almacenado como propiedad de una clase del
vocabulario es una URL (dirección de una imagen en el caso de POIS), esta debe ser
codificada para que no presente problemas al trabajar con navegadores.

Es recomendable validar cada uno de los componentes de la solución en base a los
principios de Linked Data que se pudieren aplicar, puesto que esto contribuirá a que
nuestros datos sean reutilizados.

Antes de realizar la publicación de datos, es recomendable considerar la clasificación
que estos datos tienen para el propietario, puesto que algunos pueden considerarse
datos personales que no podrán ser públicos.

Al publicar datos según LOD, se recomienda considerar el tema de modificación de los
mismos en el caso que estos dependan de terceras personas (usuario final) como es el
caso de la Plataforma POIS, para lo cual es necesario la utilización de un sistema de
autentificación.
Cúmar Ramiro Cueva Tacuri
75
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
8. BIBLIOGRAFÍA
[1] Miniwatts Marketing Group: Latin American Internet Usage Statistics. (2011)
http://www.internetworldstats.com/stats15.htm.
[2] LinkedData.org: Linked Data. Connect Distributed Data across the Web. (2010)
http://linkeddata.org/
[3] Wikipedia. Point of interest. (2011). Recuperado 22/02/2011. Disponible
http://en.wikipedia.org/wiki/Point_of_interest
[4] W3C.org: Resource Description Framework (RDF). (2004) http://www.w3.org/RDF/
[5] W3C.org: RDF Vocabulary Description Language 1.0: RDF Schema. (2004)
http://www.w3.org/TR/rdf-schema/
[6] Berners-Lee, T.: Linked Data. (2006) http://www.w3.org/DesignIssues/LinkedData.html
[7] WEC.org.: SPARQL Query Language for RDF. (2008). http://www.w3.org/TR/rdf-sparql-query/
[8] Wikipedia. SPARUL. (2010). http://en.wikipedia.org/wiki/SPARUL
[9]OpenLink. SPARUL -- an Update Language ForRDF Graphs. (2009)
http://docs.openlinksw.com/virtuoso/sparqlextensions.html#rdfsparul
[10] ARC. Easy RDF and SPARQL for LAMP systems. (2010) http://arc.semsol.org/
[11] W3C.org: Working Draft :SPARQL 1.1 Update. (14 Octubre 2010).
http://www.w3.org/TR/sparql11-update/
[12]OpenLink. Dbpedia Live Extraction. (2011) http://live.dbpedia.org/
[13] Max, B.: Context-aware Collaborative Creation of Semantic Points of Interest as Linked Data.
Thesis, Programa de Grado de Informática, University of Koblenz-Landau. (2009)
[14] Hegde, V. (febrero 2011). POIs in Semantic Web. Ponencia en el International AR Standards
Meeting, Barcelona, España
[15] LinkedDataTools. Introducing RDF/XML. (2010) http://www.linkeddatatools.com/introducingrdf-part-2
[16] INKDROID. The 5 Stars of Open Linked Data. (2010)
http://inkdroid.org/journal/2010/06/04/the-5-stars-of-open-linked-data/
[17] Stadler, C. Martin, M. Lehmann, J. Hellmann, S.: Update Strategies for DBpedia Live.
Departamento de Informática, Universidad Leipzig (Alemania)
Cúmar Ramiro Cueva Tacuri
76
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
[18]Bizer, C., Heath, T., Berners-Lee, T. Linked Data - The Story so Far. Paper presentado en:
Heath, T., Hepp, M., and Bizer, C. (eds.). Special Issue on Linked Data, International Journal on
Semantic Web and Information Systems (IJSWIS). http://linkeddata.org/docs/ijswis-specialissue
[19] Davis, I.: An Introduction to RDF. (2005) http://research.talis.com/2005/rdf-intro
[20] Lamarca, M.: RDF. (2009) http://www.hipertexto.info/documentos/rdf.htm
[21] Gómez, A.: La web de datos enlazados (Web of Linked Data). (2010). Ontología Grupo de
Ingeniería, Universidad Politécnica de Madrid. http://www.web-mix.ws/pyme/2010/06/laweb-de-datos-enlazados-web-of-linked-data/
[22] W3C.org.: Guía Breve de Linked Data. (2010)
http://www.w3c.es/divulgacion/guiasbreves/LinkedData
[23] Wisman, M.: Bringing Linked Data to the Geo World. (2009)
http://blog.safe.com/2009/07/bringing-linked-data-to-the-geo-world/
[24]W3C.org. Data Model. (2010). http://www.w3.org/2010/POI/wiki/Data_Model
[25]W3C.org. Cool URIs for the Semantic Web. (2008). http://www.w3.org/TR/cooluris/
[26] data.gov.uk - Opening up government. Creating URIs. http://data.gov.uk/resources/uris
[27] Drummond, Nick. OWLDoc - Plugin for Protégé. The University of Manchester.
http://code.google.com/p/co-ode-owl-plugins/wiki/OWLDoc
[28] Purlz.org. PURLs in the Wild. http://www.purlz.org/purls-in-the-wild
[29] Fielding T, Roy.: Architectural Styles and the Design of Network-based Software Architectures.
UNIVERSITY OF CALIFORNIA, IRVINE. (2000).
http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm.
[30] Wright, Jacob: Simple REST server in PHP – Supports JSON & AMF.
http://jacwright.com/250/simple-rest-server-in-php-supports-json-amf/
[31] SourceForge: Quality Criteria for Linked Data sources.
http://sourceforge.net/apps/mediawiki/trdf/index.php?title=Quality_Criteria_for_Linked_Dat
a_sources. (2010)
Cúmar Ramiro Cueva Tacuri
77
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
9. ANEXOS
Cúmar Ramiro Cueva Tacuri
78
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
9.1. ANEXO A
Cúmar Ramiro Cueva Tacuri
79
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
INSTALACIÓN DE PLUGIN - OWLDoc
El archivo instalador puede ser descargado desde la dirección:
http://code.google.com/p/persistenturls/downloads/list
a. En ventana principal de Protégé seleccionar la opción 'check for plugins...' del
menú 'File'
b. En la ventana lanzada 'Automatic Updates' buscar y seleccionar el plugin
'OWLDoc' dentro de la pestaña 'Downloads'.
c. Clic en el botón 'Install'
d. Reiniciar Protégé.
Utilizar Plugin:
a. Una vez terminada la ontología en Protégé seleccionar la opción 'Export
OWLDoc...' del menú 'Tools'
b. Seleccionar la ubicación en donde se almacenará los archivos (tiene que ser un
directorio válido)
El plugin OWLDoc genera un conjunto de archivos que contienen toda la información
relativa a la ontología, donde el archivo inicial está bajo en nombre de index.html.
Una vista inicial de la documentación se puede apreciar en la Figura 35.
Figura 35: Documentación Generada con OWLDoc
Cúmar Ramiro Cueva Tacuri
80
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
9.2. ANEXO B
Cúmar Ramiro Cueva Tacuri
81
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
CONFIGURACIONES - PURL
El servicio prestado por OCLC para la creación de dominios y PURLs individuales está
restringido para usuarios registrados. Para ello se debe llenar una forma de registro.
Figura 36: Registro Server PURL OCLC
Una vez dentro del Servicio PURL, es necesaria la creación de un Dominio, puesto
que toda PURL individual debe necesariamente pertenecer a un Dominio. El dominio
elegido estará bajo el nombre de POIS, es decir el dominio completo tendrá la
forma de:
http://purl.oclc.org/POIS
Este dominio es considerado de Alto Nivel, y OCLC deberá aprobarlo directamente
para su creación. Para ello se deberá llenar el formulario de Información sobre el
nuevo Dominio.
Cúmar Ramiro Cueva Tacuri
82
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Figura 37: Registro de Dominio - PURL
Una vez aprobado el Dominio (proceso que lleva varios días) se puede proceder a
crear el PURL individual que re direccionará al servidor Apache donde se encuentra
nuestro vocabulario, tanto en formato RDF como HTML.
Figura 38: Registro de PURL Individual
Con lo que se obtiene un enlace entre el dominio de PURL y la dirección de nuestro
vocabulario.
Cúmar Ramiro Cueva Tacuri
83
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
9.3. ANEXO C
Cúmar Ramiro Cueva Tacuri
84
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
INSTALACIÓN DE SERVIDOR PURL
El archivo instalador puede ser descargado desde la dirección:
http://code.google.com/p/persistenturls/downloads/list
Para el ejemplo se creará la siguiente Persistent URL:
http://serverPurl/VOC/poisVocab
1. Ejecutar instalador:
$ java -jar PURLZ-Server-1.6.2.jar
2. Continuar con los pasos del wizard. En uno de ellos nos pedirá el puerto y host del
servicio. Si el servidor en el que se está instalando va a ser dedicado es mejor colocar
el puerto 80. De lo contrario cualquier otro. Esto por simplicidad en la dirección:
http://purl.example.com en lugar de http://purl.example.com:8080
Figura 39: Instalación PURL - Wizard
Cúmar Ramiro Cueva Tacuri
85
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
3. Configuraciones Adicionales. Especificar el BackEnd a utilizar, entre HSQLDB y MySQL.
Figura 40: Instalación PURL – Especificación de BackEnd
4. Configuraciones Adicionales. Definir la forma de creación de usuarios y la creación de
'Top Level Domains' similares a http://purl.example.com/NET/. Pudiendo ser
gestionadas por un administrador o no.
Figura 41: Instalación PURL – Permisos
Cúmar Ramiro Cueva Tacuri
86
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
5. Al finalizar la instalación podremos acceder a la interfaz de administración mediante
el uso del usuario 'admin' y la clave 'password' que se establecen por defecto.
Figura 42: PURL – Interfaz Principal
6. Desde la interfaz principal se crea el dominio de alto nivel VOC.
Figura 43: PURL – Creación de Dominio Público
7. Creamos la Persistent URL dentro de este dominio. Tomar en cuenta que para las
Cúmar Ramiro Cueva Tacuri
87
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
aplicaciones de Web Semántica es recomendado el uso de la redirección 303 puesto
que determina otro tipo de recursos. La dirección (recurso) a donde se re
direccionará será colocada en el campo “See Also URL”
Figura 44: PURL – Creación de Dirección
8. Permitir acceso público al servidor PURL
Por defecto la instalación de PURL solamente permite conexiones locales, para
colocarlo como un servicio público es necesario especificar el host o dirección ip que
se vinculará a este.
Para ello se localizar dentro del directorio de instalación el archivo:
modules/mod-purl-virtualhost/modules.xml
Y se añade la dirección pública o nombre de dominio del servidor en la sección
export del mismo. Con ello el servicio quedará de manera pública bajo un nombre de
dominio o una IP.
9. Obtendremos finalmente una PURL que redireccionará al valor colocado en el campo
‘See Also URL’.
http://[DIR_SERVIDOR]:8080/VOC/poisVocab
Cúmar Ramiro Cueva Tacuri
88
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
9.4. ANEXO D
Cúmar Ramiro Cueva Tacuri
89
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
APACHE WEB SERVER: Instalación y Configuración
Instalación
El proceso descrito a continuación es válido para el sistema operativo linux en su
distribución Ubuntu 11.04. Dentro de una terminal ejecutar ejecutar el siguiente
comando:
sudo apt-get install apache2
El cual descargará e instalará los archivos necesarios para que nuestro servidor
HTTP esté listo. A partir de la instalación es recomendable recordar los siguientes
directorios por defecto:
Directorio Instalación: /etc/apache2/
Directorio Web:
/var/www/
De igual forma el acceso al ‘demonio’ que controla el proceso es realizado
mediante las instrucciones:
/etc/init.d/apache2
start|stop|restart
Configuraciones
Para la instalación y activación del módulo de mod_rewrite, ejecutar la siguiente
instrucción en la terminal:
a2enmod rewrite
Las configuraciones de este módulo pueden ser colocadas dentro del archivo
principal de configuración de Apache HTTP Server o en un directorio específico
mediante el uso de un fichero .htaccess93. En este caso se utilizará un fichero
.htaccess y la siguiente estructura de directorios.
93
http://httpd.apache.org/docs/2.2/howto/htaccess.html
Cúmar Ramiro Cueva Tacuri
90
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Figura 45: Estructura de Directorios
Donde el archivo vocabulario.rdf hace referencia al archivo del vocabulario
creado con la herramienta Protégé, mientras que el archivo vocabulario.html
corresponde al archivo index.html de la documentación del vocabulario que fue
generado con el plugin OWLDoc de Protégé. Se ha cambiado de nombre para
mantener una relación (visual) entre los dos archivos.
Ahora se debe definir el contenido del archivo .htaccess:
# Desactivar la visualización automática
# de archivos
Options -MultiViews
# Definir el tipo para el archivo .rdf
AddType application/rdf+xml .rdf
# Activar Modulo de SobreEscritura
RewriteEngine On
#Especificar URL base
RewriteBase /pois
# Especificar cuando se aplicará esta
# sobre escritura
RewriteCond %{HTTP_ACCEPT}
!application/rdf\+xml.*(text/html|application/xhtm
l\+xml)
RewriteCond %{HTTP_ACCEPT} text/html [OR]
RewriteCond %{HTTP_ACCEPT} application/xhtml\+xml
[OR]
RewriteCond %{HTTP_USER_AGENT} ^Mozilla/.*
# Documento que debe devolver basado
# en una petición HTML
RewriteRule ^conten$ contenido/vocabulario.html
[R=303]
Cúmar Ramiro Cueva Tacuri
91
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
# Documento que debe devolver basado
# en una petición RDF
RewriteRule ^conten$ contenido/vocabulario.rdf
[R=303]
Una vez creado el archivo .htaccess deberá ser colocado dentro del directorio
especificado en el parámetro RewriteBase, en este caso dentro del directorio
pois.
Con esto tendremos una configuración robusta capaz de responder a una petición
a la URI http://200.0.29.117:8080/pois/conten en función del contenido
solicitado.
Cúmar Ramiro Cueva Tacuri
92
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
9.5. ANEXO E
Cúmar Ramiro Cueva Tacuri
93
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
VAPOUR: VALIDACIÓN DE VOCABULARIO
Figura 46: URI y parámetros – VAPOUR
Cúmar Ramiro Cueva Tacuri
94
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Figura 47: Petición RDF/XML – VAPOUR
Figura 48: Sin ‘Content Negotiation’ - VAPOUR
Cúmar Ramiro Cueva Tacuri
95
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Figura 49: Class - Petición RDF/XML – VAPOUR
Figura 50: Class - Sin 'Content Negotiation' - VAPOUR
Cúmar Ramiro Cueva Tacuri
96
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Figura 51: Property - RDF/XML – VAPOUR
Figura 52: Property - Sin 'Content Negotiation' - VAPOUR
Cúmar Ramiro Cueva Tacuri
97
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
9.6. ANEXO F
Cúmar Ramiro Cueva Tacuri
98
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
INSTALACIÓN DE VIRTUOSO SERVER
El proceso de instalación descrito a continuación es realizado sobre la distribución de
Linux Ubuntu. En esta distribución OpenLink Software94 mantiene Virtuoso OpenSource
dentro de los repositorios oficiales, puesto que el servidor no contendrá ninguna
configuración especial este método de instalación es adecuado, de lo contrario es
recomendable la instalación mediante el uso del código fuente95.
Actualizar los orígenes de datos
$ sudo apt-get update
Visualizar los paquetes disponibles, en caso de necesitar paquetes adicionales
$ apt-cache search '^virtuoso'
Descargar e Instalar
$ sudo aptitude install
virtuoso-opensource
Durante este proceso de instalación se notificará de la creación de dos usuarios con
privilegios de administrador en el servidor: “dba” y “dav” a los cuales se debe asignar una
clave. En este caso se ha colocado los valores:
dba
passwd: ‘dba’
dav
passwd: ‘dav’
Estos podrán ser utilizados en la interfaz de administración, la cual puede ubicada en la
siguiente dirección:
http://localhost:8890
94
http://www.openlinksw.com/
http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VOSUbuntuNotes#Building Virtuoso from
Source
95
Cúmar Ramiro Cueva Tacuri
99
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Figura 53: Interfaz Principal
El ingreso a la interfaz de administración proporcionada por Virtuoso bajo el nombre de
‘CONDUCTOR’ puede ser realizado mediante la URL:
http://localhost:8890/conductor
Esta permite tener un control total del servidor, desde donde se pueden gestionar
usuarios, servicios, paquetes, grafos entre otros.
Figura 54: Interfaz de Administración - CONDUCTOR
Cúmar Ramiro Cueva Tacuri
100
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
El proceso de iniciar, detener u obtener información sobre el proceso que ejecuta el
servidor puede ser llevado a cabo mediante la instrucción:
$ sudo /etc/init.d/virtuoso-opensource-6.1 [ start | stop |
status]
En ocasiones, cuando el servidor ha sido detenido de forma incorrecta puede presentar
problemas para iniciar nuevamente de forma automática, en estos casos, es
recomendable iniciar el servicio mostrando la información de log. Para ello ejecutamos el
siguiente comando, dentro del directorio database, el mismo que se encuentra dentro
de la instalación de Virtuoso:
$ virtuoso-t –df
Este mostrará información útil sobre el problema, uno de los más comunes es causado
por el archivo virtuoso.lck, el mismo que es creado en cada inicio del servidor, pero
si no ha sido borrado previamente por el servidor la instancia no se levantará
nuevamente. Si este fuera el problema, basta con eliminar el archivo virtuoso.lck
del directorio database de forma manual, para que el servicio vuelva a iniciar.
Cúmar Ramiro Cueva Tacuri
101
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
9.7. ANEXO G
Cúmar Ramiro Cueva Tacuri
102
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
VIRTUOSO: CARGA DE DATOS AL STORE
El proceso a seguir para la carga de datos desde un archivo de tripletas al Store,
es realizado mediante la interfaz principal CONDUCTOR, mediante los siguientes
pasos:
1. Hacer loggin en la interfaz principal con los datos user: dba passwd: dba
(Figura 54)
2. Bajo la pestaña RDF seleccionar la opción RDF Store Upload, la cual nos
permite efectuar la carga de datos desde un archivo, en este caso será el
que se creó con la aplicación anteriormente.
3. Una vez seleccionado el archivo y definido el nombre del grafo, completar
haciendo clic en el botón “UPLOAD”. El nombre del grafo definido será:
http://localhost:8890/poisV5
Figura 55: Carga de Archivo OWL
4. Una vez subidos los datos podremos comprobar la creación del grafo en
la opción Graphs.
Figura 56: Grafo Creado
5. La comprobación de la carga de las tripletas puede ser realizada mediante
la opción SPARQL, y ejecutando una consulta para extraer algunas
tripletas.
Cúmar Ramiro Cueva Tacuri
103
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Figura 57: Verificación de Tripletas
Es importante notar que se ha definido el campo Default Graph IRI con el
nombre del grafo, indicando así al servidor de que grafo de recuperar las
tripletas.
Cúmar Ramiro Cueva Tacuri
104
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
9.8. ANEXO H
Cúmar Ramiro Cueva Tacuri
105
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
URIs – POIS REST SERVER
HTTP
METHOD
URI
Descripción
http://{dir_server}/pois
/point/$user/$pass/$lat/$lon
Crea un individuo del tipo
POINT
/poig/$user/$pass/$nombre/$point/$calle1/$calle2/$barrio/$sector
/poig/$user/$pass/$point/$calle1/$calle2/$barrio/$sector
Crea un individuo del tipo
POIG
/poig/$user/$pass/$point/$calle1/$calle2/$barrio
/parada/$user/$pass/$referencia/$img/$poig
/parada/$user/$pass/$img/$poig
Crear un individuo
PARADA
/parada/$user/$pass/$poig
/ordenparada/$user/$pass/$numsec/$parada
Crear individuo
ORDEN_PARADA
/ruta/$user/$pass/$nombre/$horario/$tipo
Crear individuo RUTA
/ordenparada/ruta/$user/$pass/$ruta/$ordParada
Relación entre un
elemento RUTA con un
ORDEN_PARADA
/paradafrecuente/$user/$pass/$parada
Crear individuo PARADA
FRECUENTE
POST
/estudiante/$user/$pass/$cedula/$poig/$prdfrc
/estudiante/$user/$pass/$cedula/$poig
/estudiante/$user/$pass/$cedula
Crear individuo
ESTUDIANTE
/estudiante2/$user/$pass/$cedula/$prdfrc
/estd_parada/$user/$pass/$estudiante/$prdfrc
Relación ESTUDIANTE con
PARADA_FRECUENTE
/estudiante/vivienda/$user/$pass/$estudiante/$poig
Relación con ESTUDIANTE
con su vivienda
/parada/$user/$pass/$parada/$poig
Reubicar parada
/ruta/horario/$user/$pass/$ruta/$horario
Agregar un horario a una
RUTA
PUT
Cúmar Ramiro Cueva Tacuri
106
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
/propiedad/$user/$pass/$individuo/$propiedad/$valor/$tipo
/propiedad/$user/$pass/$individuo/$propiedad/$valor
DELETE
/ruta/parada/$user/$pass/$ruta/$ordprd/$numsec
Agrega una nueva
PARADA a una RUTA
mediante el elemento
RUTA_PARADA
/ruta/horario/$user/$pass/$ruta/$horario
Borrar un Horario de una
RUTA
/ruta/$user/$pass/$ruta
Elimina una RUTA y sus
paradas únicas
/ruta/parada/$user/$pass/$ruta/$parada
Elimina una PARADA de
una RUTA
/individuo/$tipo/$propiedad/$valor/$tipoValor/$operador
/individuo/$tipo/$propiedad/$valor/$operador
GET
Actualizar propiedad de
un individuo
Extrae el identificador de
un individuo
/individuo/propiedad/$individuo
Extrae el valor de la
propiedad de un individuo
/individuos/fecha/$tipoIndv/$fechaIni/$fechaFin
Extrae el identificador de
un individuo basado en
fechas
/estudiante/parada/$estudiante
Extrae la parada frecuente
de un estudiante
/estudiante/vivienda/$estudiante
Extrae la vivienda actual
de un estudiante
/ruta/parada/$ruta
Devuelve todas las
paradas relacionadas con
una RUTA
/parada/
Devuelve todas las
paradas activas existentes
en el Store
/parada/ruta/$prd
Extrae todas las RUTAs y
sus respectivos horarios
que posean la PARADA
indicada.
Cúmar Ramiro Cueva Tacuri
107
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
9.9. ANEXO I
Cúmar Ramiro Cueva Tacuri
108
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
PRUEBAS SERVICIO REST - POIS
URI: /point/$user/$pass/$lat/$lon
DESCRIPCIÓN: Crear un individuo del Tipo POINT
HTTP: POST http://localhost/pois/point/test2/test2/-4.00135/-79.20124
RESPUESTA:
{
"status": "OK",
"indiv": "crd20110816220415"
}
STORE:
URI: /poig/$user/$pass/$nombre/$point/$calle1/$calle2/$barrio/$sector
DESCRIPCIÓN: Crea un individuo del Tipo POIG
HTTP: POST http://localhost/pois/poig/test2/test2/TestPois/crd20110816220415/1ero
de Mayo/10 de Agosto/Buena Esperanza/Centro
RESPUESTA:
{
"status": "OK",
"indiv": "pg20110816221900"
}
STORE:
Cúmar Ramiro Cueva Tacuri
109
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
URI: /poig/$user/$pass/$point/$calle1/$calle2/$barrio/$sector
DESCRIPCIÓN: Crea un individuo del Tipo POIG, sin especificar un nombre del mismo
HTTP: POST http://localhost/pois/poig/test2/test2/crd20110816220415/Olmedo/Abdon
Calderon/María Auxiliadora/San José
RESPUESTA:
{
"status": "OK",
"indiv": "pg20110816222408"
}
STORE:
URI: /poig/$user/$pass/$point/$calle1/$calle2/$barrio
DESCRIPCIÓN: Crea un individuo del Tipo POIG, sin especificar el nombre ni sector.
Cúmar Ramiro Cueva Tacuri
110
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
HTTP:
POST http://localhost/pois/poig/test2/test2/crd20110816220415/Av.
Octubre/Bolivar/Motupe
9
de
RESPUESTA:
{
"status": "OK",
"indiv": "pg20110816222945"
}
STORE:
URI: /parada/$user/$pass/$referencia/$img/$poig
DESCRIPCIÓN: Crea un individuo del tipo PARADA
HTTP: POST http://localhost/pois/parada/test2/test2/Junto a carpintería
Pinocho/paradaImg.png/pg20110816222945
RESPUESTA:
{
"status": "OK",
"indiv": "prd20110816224300"
}
STORE:
Cúmar Ramiro Cueva Tacuri
111
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
URI: /parada/$user/$pass/$img/$poig
DESCRIPCIÓN: Crea un individuo del tipo PARADA, sin especificar una referencia
HTTP: POST http://localhost/pois/parada/test2/test2/paradaImg.gif/pg20110816222945
RESPUESTA:
{
"status": "OK",
"indiv": "prd20110816224744"
}
STORE:
URI: /parada/$user/$pass/$poig
DESCRIPCIÓN: Crea un individuo del tipo PARADA, sin especificar una referencia ni una
imagen.
HTTP: POST http://localhost/pois/parada/test2/test2/pg20110816222945
RESPUESTA:
{
"status": "OK",
"indiv": "prd20110816225313"
}
STORE:
Cúmar Ramiro Cueva Tacuri
112
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
URI: /ordenparada/$user/$pass/$numsec/$parada
DESCRIPCIÓN: Crea un individuo del tipo ORDEN_PARADA
HTTP: POST http://localhost/pois/ordenparada/test2/test2/1/prd20110816225313
RESPUESTA:
{
"status": "OK",
"indiv": "ord20110816230103"
}
STORE:
URI: /ruta/$user/$pass/$nombre/$horario/$tipo
DESCRIPCIÓN: Crea un individuo del tipo RUTA
HTTP: POST http://localhost/pois/ruta/test2/test2/Belén - Bolonia/15:12:00/RECOGE
RESPUESTA:
{
"status": "OK",
"indiv": "ruta20110816230450"
}
STORE:
Cúmar Ramiro Cueva Tacuri
113
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
URI: /ordenparada/ruta/$user/$pass/$ruta/$ordParada
DESCRIPCIÓN: Establece la relación de un elemento ORDEN_PARADA con una RUTA
HTTP: POST
http://localhost/pois/ordenparada/ruta/test2/test2/ruta20110816230450/ord201
10816230103
RESPUESTA:
{
"status": "OK"
}
STORE:
URI: /paradafrecuente/$user/$pass/$parada
DESCRIPCIÓN: Crea un individuo del tipo, PARADA_FRECUENTE
HTTP: POST http://localhost/pois/paradafrecuente/test2/test2/prd20110816224300
RESPUESTA:
{
"status": "OK",
"indiv": "prdfrc20110816232851"
Cúmar Ramiro Cueva Tacuri
114
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
}
STORE:
URI: /estudiante/$user/$pass/$cedula/$poig/$prdfrc
DESCRIPCIÓN: Crea un individuo del tipo ESTUDIANTE
HTTP: POST
http://localhost/pois/estudiante/test2/test2/1104584875/pg20110816222408/pr
dfrc20110816232851
RESPUESTA:
{
"status": "OK",
"indiv": "estd20110816233215"
}
STORE:
URI: /estudiante/$user/$pass/$cedula/$poig
DESCRIPCIÓN: Crea un individuo
PARADA_FRECUENTE
del tipo ESTUDIANTE,
sin especificar
su
HTTP: POST
http://localhost/pois/estudiante/test2/test2/1109547875/pg20110816222408
Cúmar Ramiro Cueva Tacuri
115
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
RESPUESTA:
{
"status": "OK",
"indiv": "estd20110816233646"
}
STORE:
URI: /estudiante/$user/$pass/$cedula
DESCRIPCIÓN: Crea un individuo ESTUDIANTE con solamente su cédula
HTTP: POST http://localhost/pois/estudiante/test2/test2/1102507973
RESPUESTA:
{
"status": "OK",
"indiv": "estd20110816234709"
}
STORE:
URI: /estudiante2/$user/$pass/$cedula/$prdfrc
DESCRIPCIÓN: Crea un individuo ESTUDIANTE con su cédula y su parada frecuente
HTTP: POST
http://localhost/pois/estudiante2/test2/test2/1895123698/prdfrc2011081623285
Cúmar Ramiro Cueva Tacuri
116
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
1
RESPUESTA:
{
"status": "OK",
"indiv": "estd20110817003355"
}
STORE:
URI: /estd_parada/$user/$pass/$estudiante/$prdfrc
DESCRIPCIÓN: Relaciona un ESTUDIANTE con su PARADA_FRECUENTE
HTTP: POST
http://localhost/pois/estd_parada/test2/test2/estd20110816234709/prdfrc20110
816232851
RESPUESTA:
{
"status": "OK"
}
STORE:
URI: /estudiante/vivienda/$user/$pass/$estudiante/$poig
DESCRIPCIÓN: Relacionar un estudiante con su vivienda
HTTP: POST
Cúmar Ramiro Cueva Tacuri
117
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
http://localhost/pois/vivienda/estudiante/test2/test2/estd20110816234709/pg20
110816222945
RESPUESTA:
{
"status": "OK"
}
STORE:
URI: /parada/$user/$pass/$parada/$poig
DESCRIPCIÓN: Reubicar una parada existente
HTTP: PUT http://localhost/pois/parada/test2/test2/prd10/pg20110816222945
RESPUESTA:
{
"status": "OK"
}
STORE:
Cúmar Ramiro Cueva Tacuri
118
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
URI: /ruta/horario/$user/$pass/$ruta/$horario
DESCRIPCIÓN: Agregar un nuevo horario a una ruta
HTTP: PUT
http://localhost/pois/ruta/horario/test2/test2/ruta20110816230450/11:11:00
RESPUESTA:
{
"status": "OK"
}
STORE:
URI: /propiedad/$user/$pass/$individuo/$propiedad/$valor/$tipo
DESCRIPCIÓN: Actualiza la Propiedad de un Individuo
HTTP: PUT
http://localhost/pois/propiedad/test2/test2/estd20110816233215/cedula/123456
7890/string
RESPUESTA:
{
"status": "OK"
}
STORE:
Cúmar Ramiro Cueva Tacuri
119
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
URI: /propiedad/$user/$pass/$individuo/$propiedad/$valor
DESCRIPCIÓN: Actualiza la Propiedad de un Individuo valor de objetos
HTTP: PUT
http://localhost/pois/propiedad/test2/test2/estd20110816233215/ViveEn/pg102
RESPUESTA:
{
"status": "OK"
}
STORE:
URI: /ruta/parada/$user/$pass/$ruta/$ordprd/$numsec
DESCRIPCIÓN: Agrega una nueva PARADA a una RUTA mediante el elemento
RUTA_PARADA
HTTP: PUT http://localhost/pois/ruta/parada/test2/test2/rt18/orden3_5/5
RESPUESTA:
{
"status": "OK",
Cúmar Ramiro Cueva Tacuri
120
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
"message": "Nueva parada vinculada exitosamente"
}
STORE:
Antes:
Después:
URI: /ruta/horario/$user/$pass/$ruta/$horario
DESCRIPCIÓN: Borrar horario de una Ruta
HTTP: DELETE
http://localhost/pois/ruta/horario/test2/test2/ruta20110816230450/11:11:00
Cúmar Ramiro Cueva Tacuri
121
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
RESPUESTA:
{
"status": "OK"
}
STORE:
Antes:
Después:
URI: /ruta/$user/$pass/$ruta
DESCRIPCIÓN: Elimina una RUTA y sus paradas únicas
HTTP: DELETE http://localhost/pois/ruta/test2/test2/ruta20110731165403
RESPUESTA:
{
"status": "OK",
"message": "Ruta (ruta20110731165403) desactivada"
}
STORE:
Cúmar Ramiro Cueva Tacuri
122
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Antes:
Después:
URI: /ruta/parada/$user/$pass/$ruta/$parada
DESCRIPCIÓN: Elimina una PARADA de una RUTA
HTTP: DELETE http://localhost/pois/ruta/parada/test2/test2/rt31/prd51
RESPUESTA:
{
"status": "OK",
"message": "Parada eliminada"
}
STORE:
Antes:
Cúmar Ramiro Cueva Tacuri
123
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Después:
URI: /individuo/$tipo/$propiedad/$valor/$tipoValor/$operador
DESCRIPCIÓN: Extrae el identificador de un individuo
HTTP: GET http://localhost/pois/individuo/ESTUDIANTE/cedula/1102507973/string/=
RESPUESTA:
{ "head": { "link": [ ],
"vars": [ "obj" ] },
"results": {
"distinct": false,
"ordered": true,
"bindings": [
{
"obj": {
"type": "uri",
"value": "http: //localhost: 8080/pois/vcblr/indv/#estd20110816234709"
}}]}}
URI: /individuo/$tipo/$propiedad/$valor/$operador
DESCRIPCIÓN: Extrae el identificador de un individuo (basado en otro individuo)
Cúmar Ramiro Cueva Tacuri
124
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
HTTP: GET http://localhost/pois/individuo/PARADA/LocalizadaEn/pg39/=
RESPUESTA:
{ "head": { "link": [ ],
"vars": [ "obj" ] },
"results": {
"distinct": false,
"ordered": true,
"bindings": [
{
"obj": {
"type": "uri",
"value": "http: //localhost: 8080/pois/vcblr/indv/#prd39"
}}]}
URI: /individuo/propiedad/$individuo
DESCRIPCIÓN: Extrae todas las propiedades de un determinado individuo
HTTP: GET http://localhost/pois/individuo/propiedad/pg39
RESPUESTA:
{
.
.
.
"type": "uri",
"value": "http: //purl.oclc.org/POIS/vcblr/#POIG"
}
},
{
"prop": {
"type": "uri",
"value": "http: //purl.oclc.org/POIS/vcblr/#calle1"
},
"valor": {
"type": "typed-literal",
"datatype": "http: //www.w3.org/2001/XMLSchema#string",
"value": "Av. 8 de Diciembre"
}
Cúmar Ramiro Cueva Tacuri
125
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
.
.
.
}
URI: /individuos/fecha/$tipoIndv/$fechaIni/$fechaFin
DESCRIPCIÓN: Extrae todos los individuos que posean el atributo fecha entre los dos
valores especificados.
HTTP: GET http://localhost/pois/individuos/fecha/POIG/2011-06-14/2011-06-16
RESPUESTA:
{
.
.
.
"type": "uri",
"value": "http: //localhost: 8080/pois/vcblr/indv/#pg4"
},
"prop": {
"type": "typed-literal",
"datatype": "http: //www.w3.org/2001/XMLSchema#date",
"value": "2011-06-15"
}
},
{
"obj": {
"type": "uri",
"value": "http: //localhost: 8080/pois/vcblr/indv/#pg6"
.
.
.
}
URI: /estudiante/parada/$estudiante
Cúmar Ramiro Cueva Tacuri
126
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
DESCRIPCIÓN: Obtiene la parada frecuente de un estudiante
HTTP: GET http://localhost/pois/estudiante/parada/estd20110731172927
RESPUESTA:
{ "head": {"link": [ ], "vars": [ "parada", "fechaSelec" ] },
"results": {
"distinct": false,
"ordered": true,
"bindings": [
{
"parada": {
"type": "uri",
"value": "http: //localhost: 8080/pois/vcblr/indv/#prd20110731161335"
},
"fechaSelec": {
"type": "typed-literal",
"datatype": "http: //www.w3.org/2001/XMLSchema#date",
"value": "2011-07-31"
}}]}}
URI: /estudiante/vivienda/$estudiante
DESCRIPCIÓN: Obtiene la vivienda actual de un determinado estudiante.
HTTP: GET http://localhost/pois/estudiante/vivienda/estd20110731172927
RESPUESTA:
{
.
.
.
"type": "uri",
"value": "http: //localhost: 8080/pois/vcblr/indv/#pg20110731151108"
},
"fechaCreac": {
"type": "typed-literal",
"datatype": "http: //www.w3.org/2001/XMLSchema#date",
"value": "2011-07-31"
},
Cúmar Ramiro Cueva Tacuri
127
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
"lat": {
"type": "typed-literal",
"datatype": "http: //www.w3.org/2001/XMLSchema#integer",
.
.
.
}
URI: /ruta/parada/$ruta
DESCRIPCIÓN: Devuelve todas las paradas relacionadas con una ruta determinada.
HTTP: GET http://localhost/pois/ruta/parada/rt45
RESPUESTA:
{
.
.
.
"lon": {
"type": "typed-literal",
"datatype": "http: //www.w3.org/2001/XMLSchema#double",
"value": "-79.20137875411901"
}
},
{
"orden": {
"type": "typed-literal",
"datatype": "http: //www.w3.org/2001/XMLSchema#int",
"value": "2"
},
"parada": {
"type": "uri",
"value": "http: //localhost: 8080/pois/vcblr/indv/#prd66"
},
"lat": {
"type": "typed-literal",
"datatype": "http: //www.w3.org/2001/XMLSchema#double",
.
Cúmar Ramiro Cueva Tacuri
128
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
.
.
}
URI: /parada/
DESCRIPCIÓN: Extrae todas las paradas existentes en el Store.
HTTP: GET http://localhost/pois/parada/
RESPUESTA:
{
.
.
.
"type": "uri",
"value": "http: //localhost: 8080/pois/vcblr/indv/#prd20110731161335"
},
"lat": {
"type": "typed-literal",
"datatype": "http: //www.w3.org/2001/XMLSchema#integer",
"value": "5"
},
"lon": {
"type": "typed-literal",
"datatype": "http: //www.w3.org/2001/XMLSchema#integer",
"value": "7"
.
.
.
}
URI: / parada/ruta/$prd/
DESCRIPCIÓN: Devuelve todas las RUTAS de una determinada PARADA así como sus
horarios.
HTTP: GET http://localhost/pois/parada/ruta/prd25
RESPUESTA:
Cúmar Ramiro Cueva Tacuri
129
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
{
.
.
.
"nomb": {
"type": "typed-literal",
"datatype": "http://www.w3.org/2001/XMLSchema#string",
"value": "Av. Orillas del Zamora, Calle Guayaquil, Av. Salvador Bustamante,
SOLCA, La Paz, Colegio Militar, Cdla. La Banda."
}
,
"hr": {
"type": "typed-literal",
"datatype": "http://www.w3.org/2001/XMLSchema#time",
"value": "12:35:00-05:00"
}
,
"tp": {
"type": "typed-literal",
"datatype": "http://www.w3.org/2001/XMLSchema#string",
"value": "BAJA"
.
.
.
}
Cúmar Ramiro Cueva Tacuri
130
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
9.10. ANEXO J
Cúmar Ramiro Cueva Tacuri
131
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
CASOS DE USO
9.10.1.
Existencia de Estudiante
Existencia de Estudiante
App Cliente
Ingreso Cédula
Sin Acceso
9.10.2.
Rest API
Comprobar
existencia en el Store
Agregarlo al Store
Permitir Acceso
Store Virtuoso
Devolver Tripletas
Guardar Tripletas
Visualizar Vivienda
Visualizar Vivienda
Rest API
Store Virtuoso
Procesa y Dibuja
Vivienda
Consultar Vivienda
(posicion - informacion)
Devolver Tripletas
App Cliente
Cúmar Ramiro Cueva Tacuri
132
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
9.10.3.
Visualizar Parada Frecuente
Visualizar Parada Frecuente
Rest API
Store Virtuoso
Procesa y Dibuja
Parada Frecuente
Consultar Parada
Frecuente (posicion informacion)
Devolver Tripletas
App Cliente
9.10.4.
Registro de Vivienda
Registro de Vivienda
App Cliente
Activa Modo
Selección de Vivienda
Rest API
Store Virtuoso
Registra nuevo
sitio
Transmite Datos
usuario
Guardar Tripletas
Ingresa Información
Visualización de
Vivienda
Cúmar Ramiro Cueva Tacuri
133
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
9.10.5.
Registro de Parada Frecuente
Registro de Parada Frecuente
App Cliente
Activa Modo Selección
de Parada Frecuente
Rest API
Solicita los datos
de todas las paradas
Store Virtuoso
Devuelve Tripletas
Grafica todas las
paradas
usuario
Selecciona Parada
Transmite Datos
Guardar Tripletas
Visualización de
Parada Frecuente
Cúmar Ramiro Cueva Tacuri
134
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
9.11. ANEXO K
Cúmar Ramiro Cueva Tacuri
135
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
INTERFAZ DE CLIENTE
9.11.1.
INGRESO
9.11.2.
PRINCIPAL
Cúmar Ramiro Cueva Tacuri
136
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
9.11.3.
VIVIENDA
9.11.4.
PARADA FRECUENTE
Cúmar Ramiro Cueva Tacuri
137
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
9.11.5.
PARADAS EXISTENTES
Cúmar Ramiro Cueva Tacuri
138
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
9.12. ANEXO L
Cúmar Ramiro Cueva Tacuri
139
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
5.8.1 CASO 1: Cédula Incorrecta
Figura 58: Mensaje de Error al ingresar una cédula incorrecta,
incompleta o alfanumérica.
5.8.2 CASO 2: Cédula Correcta NO existente en el Store
En caso de aceptar estos datos son almacenados en el Store mediante el Servicio
REST y se presenta un mensaje de bienvenida.
Figura 59: Mensaje para ingresar un nuevo individuo.
Figura 60: Mensaje de bienvenida.
Cúmar Ramiro Cueva Tacuri
140
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
El proceso de vinculación de una vivienda inicia luego de hacer clic sobre el
botón ‘Mi Casa’ mostrando un mensaje de información sobre el proceso a seguir.
Siendo este la selección de un punto cualquiera sobre el mapa que será tomado
como el sitio donde se ubicará la nueva vivienda.
Figura 61: Aviso de Selección
Una vez ubicado el sitio se deberá completar cierta información necesaria que
hará mención a la localización de la vivienda, la misma que es relativa a calles y
barrio.
Figura 62: Formulario sobre Vivienda
Toda la información ingresada anteriormente puede ser observadas haciendo
clic sobre el icono de la vivienda que se ha colocado automáticamente luego del
proceso.
Cúmar Ramiro Cueva Tacuri
141
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Figura 63: Información sobre Vivienda
El proceso de selección de una Parada Frecuente inicia al hacer clic sobre el
icono “Mi Parada” con esto se muestran sobre el mapa todas las paradas
existentes en el Store y actualmente activas, en donde el usuario puede
seleccionar una de ellas haciendo clic y se visualizará información relativa a
localización y una imagen de la localización real.
Para aceptar una de estas como parada frecuente basta con hacer clic sobre el
botón “Seleccionar” del PopUp desplegado.
Figura 64: Selección de Parada Frecuente
Cúmar Ramiro Cueva Tacuri
142
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Una vez seleccionada la interfaz será actualizada y se mostrará sobre el mapa
solo la parada seleccionada de la cual se puede extraer más información relativa
a las Rutas y horas en las que pasa un recorrido por esta parada.
Figura 65: Información sobre Parada
Una característica especial del cliente es la capacidad de visualizar solamente la
información requerida, pudiendo ser esta filtrada mediante la activación y
desactivación de capas, a través del selector ubicado en la parte derecha
superior de la aplicación.
Figura 66: Capas visibles
Cúmar Ramiro Cueva Tacuri
143
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
Todo el proceso de visualización y actualización es realizado mediante el Servicio
REST creado para la Plataforma POIS.
Figura 67: Peticiones REST
5.8.3 CASO 3: Cambiar Parada Frecuente y Vivienda
El proceso de Cambio de Parada Frecuente y Vivienda sigue el mismo
procedimiento relatado en el apartado 5.8.2. Facilitando al usuario la interacción
con la aplicación.
Cúmar Ramiro Cueva Tacuri
144
Universidad Técnica Particular de Loja
POIS - Points Of Interest Semantic
9.13. ANEXO M - PAPER
Plataforma POIS – Linked Data
Cueva T, Cúmar R#, López V, Jorge A*
#
Sistemas Informáticos y Computación – UTPL
*
Tecnologías avanzadas de la Web- UTPL
1
[email protected]
[email protected]
2
Abstract— Plataforma Points of Interesting Semantic (POIS), se
basa en la implementación de un Vocabulario genérico para la
representación de Puntos de Interés de diversa índole. Siendo
prueba de concepto la aplicación a las paradas de los buses de la
UTPL, integrando datos de estudiantes como su Parada
Frecuente y la localización de su vivienda.
Vocabulario:
/{prefijo}/{vocabulary}
Clases:
/{prefijo}/{vocabulary}#{class}
Propiedades:
/{prefijo}/{vocabulary}#{property}.
Keywords— POIS - LINKED DATA - REST - WEB SERVICE
- VOCABULARIO
INTRODUCCIÓN
La plataforma POIS contempla la construcción de un
vocabulario genérico para la representación de puntos de
interés, así como la implementación de un método de
actualización de datos en el TripleStore por parte del usuario
final mediante la utilización de un Servicio REST.
VOCABULARIO
El componente inicial para definir el almacenaje y
representación de los datos.
Construcción
La construcción del vocabulario está basada en la selección
de elementos iniciales que hacen referencia a puntos de interés
diversos y en especial características del sistema de
transportación estudiantil de la UTPL.
La formulación de interrogantes en torno a estos elementos
y una asignación de prioridad permiten definir atributos
iniciales sobre los que se moldea el vocabulario. Estos
elementos plenamente identificados, son comparados con
elementos de vocabularios existentes para la selección de
términos que puedan ser reutilizables. Cumpliendo así con
uno de los principios de Linked Data.
Elementos
seleccionados en la Tabla 1.
En el caso de la plataforma POIS solo es posible la
reutilización de un elemento del vocabulario Basic Geo [1],
para la representación de puntos geográficos.
El modelado y la relación entre los conceptos han sido
realizados mediante la herramienta Protégé [2].
Definición de URIs
Las URIs que posee el vocabulario, así como las utilizadas
para la publicación, están definidas bajo el esquema ‘hash
namespace’ [3] donde se utiliza el símbolo ‘comodín’ (#) para
la identificación de los recursos
Obteniendo una distribución de la siguiente manera:
TABLA I
CONCEPTOS DE VOCABULARIO
Conceptos
RUTA
PARADA
ESTUDIANTE
POIG
ORDEN PARADA
PARADA FRECUENTE
Propiedades
Nombre
Tipo
Horario
Fecha
Activa
Referencia
Activa
Imagen
cedula
Calle 1
Calle 2
Barrio
Sector
Nombre
Fecha
Num_Secuencia
Fecha
VALIDACIÓN
Se han efectuado dos procesos de validación, una para
determinar que el vocabulario cumple con las expectativas
necesarias y otra para comprobar la correcta publicación del
vocabulario según los principio de LOD[4].
En el caso de validar el objetivo del vocabulario se ha
creado un conjunto de instancias de prueba que han sido
montados en la herramienta de navegación Gruff para
AllegroGraph[5] y sobre los cuales se ha efectuado consultas
SPARQL para resolver la mayor cantidad de inquietudes
planteadas en la construcción del Vocabulario.
El vocabulario final puede ser encontrado en la dirección:
http://www.box.net/shared/88cz8c06ojanjlhs11r6
Publicación
El proceso de publicación es efectuado con la creación del
vocabulario accesible en dos formatos RDF y HTML. El
formato HTML ha sido generado mediante el uso del plugin
OWLDoc[6] de Protégé que permite generar una descripción
de los conceptos y sus relaciones.
Este proceso de publicación utiliza PURLs[7] y una
negociación de contenidos para la identificación del recurso a
recuperar, en este caso, la negociación de contenidos[8] ha
sido implementada en un servidor web Apache mediante el
uso de reglas colocadas en un archivo .httaccess. El
funcionamiento se muestra en la Fig. 1.
para acceso a los datos y el soporte para la utilización de
SPARQL 1.1.[11]
El EndPoint generalmente se encuentra en la dirección:
http://servidor.com:8890/sparql
B. Población del Store
Los datos iniciales que tendrá el Store se encontraron
almacenados en una base de datos relacional, por lo que se
efectuó una migración de estos datos, en base al diagrama de
la Fig. 3.
Una vez transformados estos datos a tripletas en base al
vocabulario, fueron insertadas en el Store haciendo uso de la
interfaz de administración disponible, conocida como
CONDUCTOR. Lo que permite tener hasta este punto el Store
poblado y listo.
Fig. 1 Funcionamiento de PURL y la negociación de contenido
De esta forma se ha construido la URL Permanente como:
http://purl.oclc.org/POIS/vcblr
La misma que enlaza a una URI des referenciada que
contiene al vocabulario en sus dos formatos:
http://200.0.29.117:8080/pois/conten
La validación de la correcta publicación ha sido realizada
mediante consultas individuales utilizando la utilidad CURL y
su parámetro HEADER, lo que permite diferenciar el
contenido a recuperar.
Para determinar si los principios establecidos en LOD para
la publicación de Vocabularios han sido cumplidos se ha
utilizado la herramienta VAPOUR[9] desarrollada por la
Fundación CTIC.
Utilizando configuraciones propias para un vocabulario, el
test realizado con VAPOUR ha demostrado que la publicación
cumple con todos los requisitos. Los resultados pueden ser
observados en la Fig. 2.
SERVICIO REST
La interacción entre las instancias del vocabulario y el
usuario final, será realizada mediante la implementación de un
Servicio REST.
A. TripleStore
El almacenaje de las tripletas ha sido realizado sobre un
servidor Virtuoso en su versión OpenSource[10], siendo una de
sus principales fortaleces el proveer por defecto un EndPoint
C. Sparql basado en REST
REST,[12] cuya representación se interpreta como
Transferencia de Estado Representacional, originado a partir
de la tesis doctoral de Roy Fielding, establece la creación e
interacción de servicios en la red utilizando un protocolo
cliente/servidor sin estado, conteniendo en una sola petición
HTTP toda la información suficiente para procesarla.
Siguiendo este principio, Virtuoso permite el acceso a su
EndPoint utilizando esta tendencia, para ello es necesaria la
especificación de ciertos parámetros que deberán ser
utilizados al efectuar una petición. Una lista resumen puede
ser apreciada en la Tabla II.
Además, para el trabajo mediante REST, se ha determinado
la utilización del formato JSON debido a la gran acogida que
posee para el desarrollo de aplicaciones web y la
representación de datos.
TABLA III
PARÁMETROS CONSULTA REST – ENDPOINT VIRTUOSO
Parámetro
query
dflt_graph
maxrows
timeout
Descripción
Consulta Sparql
URI del gráfico por
defecto (string o NULL)
Límite de filas mostradas
Tiempo máximo de
duración de la consulta
Requerido?
Yes
No
No
No
En este proceso de extracción de datos desde el Store, al
igual que en la inserción, se debe considerar el almacenaje de
direcciones URL como valores de una propiedad
perteneciente a una instancia del vocabulario. Puesto que estos
no pueden ser almacenados en forma directa sino una vez que
hayan sido codificados, siendo útiles las funciones del
lenguaje php, urlencode() y urldecode(). [13]
Esto para evitar que el navegador interprete directamente
estos valores como direcciones que tenga que mostrar en lugar
de solo extraerlas.
D. Autenticación EndPoint
El uso de Sparql 1.1 para completar el esquema CRUD,
mediante operaciones de borrado, actualización y creación de
tripletas, lleva a la necesidad de la utilización de un
mecanismo que permita solo a determinado grupo la
modificación de los datos en el Store, esto para garantizar la
fiabilidad de los datos, puesto que seguiría el principio de:
público para todos editable para pocos.
F. Implementación de Servicio REST
Para la implementación del Servicio REST, se ha utilizado
el lenguaje PHP, debido a que permite el acoplamiento
perfecto para el manejo de peticiones HTTP.
Utilizando además, un framework basado en Recess, el
mismo que es una versión más simplificada y que presenta
facilidad de uso. [16]
Este framework permite hacer un mapeo directo desde una
URL a un método PHP, por medio de la utilización de las
partes de la URL, así como el método de la petición HTTP
que son enlazados directamente a una de las operaciones
CRUD. Como se puede apreciar en la Tabla IV.
Entre las principales funcionalidades que han sido
implementadas se mencionan:
Eliminar una Ruta:
Http: DELETE
URI: /ruta/$user/$pass/$ruta
Agregar una Nueva Parada
Http: PUT
URI: /ruta/parada/$user/$pass/$ruta/$ordprd/$numsec
Fig. 2 Resultados de Validación con VAPOUR
En este caso se ha hecho uso de las funcionalidades del
Store, el mismo que permite la gestión de usuarios y roles,
haciendo de esta forma que el acceso para modificar el Store
sea controlado mediante la utilización de un método de
autenticación Digest, basado en usuario y clave. [14]
Eliminar Parada
Http: DELETE
URI: /ruta/parada/$user/$pass/$ruta/$parada
Actualizar Propiedad
Http: PUT
URI: /propiedad/$user/$pass/$indv/$prop/$valor/$tipo
/propiedad/$user/$pass/$indv/$prop/$valor
Para ello es necesario acceder a una segunda interfaz del
EndPoint bajo esta dirección:
http://servidor.com:8890/sparql-auth
Otros métodos que pudieren se aplicados y que abarca este
trabajo contemplan la utilización de WebID y OAuth, también
soportados por Virtuoso.
E. Vocabulary of Interlinked Datasets (VoID)
Una propuesta del Digital Enterprise Research Institute
(DERI) y adoptada por la W3C como una nota de grupo de
interés permite expresar metadatos sobre los DataSets de
tripletas, intentando de esta forma ser un punto de enlace entre
quienes publican el DataSet y los que lo usan. Permitiendo
que herramientas personalizadas puedan examinar el
documento y catalogar el DataSet, basándose para ello en el
uso de, principalmente, el vocabulario Dublin Core. [15]
Para ello se hará uso de un editor online conocido como
ve2, aquí se especifica datos relativos a autor, dirección del
vocabulario y dataset. De igual forma la licencia de los datos.
Este además permite difundir el dataset(documento void)
en varios sitios como Sindice, voiD Store, voiD Browser y
PTSW.
Fig. 3 Esquema de datos Relacionales
La comprobación del funcionamiento de cada uno de estas
ha sido evaluada mediante la utilización del complemento
RESTClient 1.3.4 para el navegador Firefox. [17]
CLIENTE
La prueba de concepto para la plataforma POIS se basa en
la construcción de un Cliente básico capaz de hacer uso del
servicio REST y extraer/modificar la información contenida
en el Store desde un ambiente Web.
A. Tecnologías
El cliente ha sido elaborado mediante la utilización del
Framework ExtJs, [18] por la versatilidad para el desarrollo de
aplicaciones RIA así como el manejo de operaciones
Asíncronas. Integrado con el api OpenLayers [19] para el
manejo de mapas y operaciones sobre este.
TABLA IV
RELACIÓN ENTRE MÉTODOS HTTP Y CRUD
Operación
Create
Read
Update
Delete
SQL
Insert
Select
Update
Delete
HTTP
POST
GET
PUT
DELETE
de relaciones y el significado de los datos en base al
vocabulario RDF.
 La organización de los datos en el TripleStore de acuerdo al
vocabulario RDF, solo es eficaz cuando existe una
definición previa y estandarizada de URIs que representarán
los elementos, lo que facilita la localización de los mismos.
 El uso de REST para el acceso a los datos en un TripleStore,
resulta beneficioso puesto que tanto REST como el
vocabulario, que define el almacenamiento de los datos, se
basan en la definición de recursos (clases).
 Sparql 1.1, también conocido como SPARUL permite
completar el conjunto de operaciones CRUD que se pueden
realizar sobre los grafos del TripleStore y evitar el uso de
procesos asistidos.
REFERENCIAS
W3C
De esta forma se han implementado las funcionalidades
siguientes:
1) Verificación de Existencia de Estudiante
2) Visualización de Vivienda
3) Visualización de Parada Frecuente
4) Registro de Vivienda
5) Registro de Parada Frecuente
CONCLUSIONES
 La construcción de la Plataforma POIS, basada en los
principios de Linked Data, demuestra que el acceso y
modificación de información localizada en el TripleStores
semánticos puede ser realizada de forma transparente para el
usuario final (cliente). Sin diferenciar la forma de
almacenaje de la misma.
 Dentro del proceso de construcción de un vocabulario para
la representación de datos, este debe contener la mayor
cantidad de elementos reutilizados de vocabularios
existentes y ampliamente utilizados, lo que facilita el
consumo e integración de estos datos. Uno de los principios
de Linked Data.
 El proceso de migración de datos actualmente almacenados
en ambientes relacionales, es fácilmente transformado a un
esquema semántico, considerando primero la equivalencia
Semantic
Web
Interest
Group
(2003):
http://www.w3.org/2003/01/geo/wgs84_pos#
Stanford Center for Biomedical Informatics Research: Protégé. Standford
University (2011): http://protege.stanford.edu/
data.gov.uk
Opening
up
government.
Creating
URIs.
http://data.gov.uk/resources/uris
Berners-Lee,
T.:
Linked
Data.
(2006)
http://www.w3.org/DesignIssues/LinkedData.html
Franz Inc.(2011):Gruff-A Grapher-Based Triple-Store Browser for
AllegroGraph. http://www.franz.com/agraph/gruff/
Drummond, Nick. OWLDoc - Plugin for Protégé. The University of
Manchester.
http://code.google.com/p/co-ode-owlplugins/wiki/OWLDoc
OCLC.(2010): PURL. http://purl.oclc.org
Apache
Fundation
(2011):
Content
Negotiation.
http://httpd.apache.org/docs/trunk/content-negotiation.html
Fundación CTIC (2011): VAPOUR a Linked Data validator.
http://vapour.sourceforge.net/
OPENLINK SOFTWARE.(2011): Virtuoso Universal Server OpenSource.
http://virtuoso.openlinksw.com/
W3C.org: Working Draft :SPARQL 1.1 Update. (14 Octubre 2010).
http://www.w3.org/TR/sparql11-update/
Fielding T, Roy.: Architectural Styles and the Design of Network-based
Software Architectures. UNIVERSITY OF CALIFORNIA, IRVINE.
(2000). http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm.
PHP(2010): URLENCODE. http://php.net/manual/es/function.urlencode.php
OpenLink (2009): 16.2.3.4. Service Endpoint Security: Authentication.
http://docs.openlinksw.com/virtuoso/rdfsparql.html
W3C Interest Group Note(2011): Describing Linked Datasets with the VoID
Vocabulary. http://www.w3.org/TR/void/
Wright, Jacob: Simple REST server in PHP – Supports JSON & AMF.
http://jacwright.com/250/simple-rest-server-in-php-supports-json-amf/
ZHOU, Chao (2011): RESTClient Complemento para Firefox.
https://addons.mozilla.org/es-ES/firefox/addon/restclient/
Sencha (2011): ExtJS: JavaScript Framework for Rich Apps in Every
Browser. http://www.sencha.com/products/extjs/
Open Source Geospatial Foundation: OpenLayers: Free Maps for the Web.
http://openlayers.org/
Descargar