Este documento resume un curso sobre integración web semántica y casos prácticos. Explica los pasos para producir, publicar y consumir datos enlazados (Linked Data), incluyendo la selección de un conjunto de datos, su modelado, enriquecimiento y generación en RDF usando herramientas como Google Refine. También cubre la publicación de los datos a través de servicios como SPARQL Endpoint y realización de consultas sobre los datos publicados.
1. Curso Integración
Web Semántica
Casos Prácticos
24 Octubre 2011
Jose María Álvarez Rodríguez
WESO-Universidad de Oviedo
E-mail: josem.alvarez@weso.es
WWW: http://josemalvarez.es
3. Producción
Selección
Modelado
Enriquecimiento
Generación
4. ¿Qué dataset vamos a
generar?
Noménclator 2010 de entidades de
población de Asturias
Formato: MSExcel
Fuente: www.sadei.es
Ejemplo:
http://purl.org/weso/nomenclator/
5. ¿Qué datasets
vamos a reutilizar?
http://datacatalogs.org/
http://sindice.com/
http://ckan.net
6. ¿Qué vocabularios
vamos a reutilizar?
prefix.cc
namespace lookup for RDF http://prefix.cc
developers
Búsqueda de prefijos
para vocabularios y
datasets
10. Generación
Scripts
Programa+API RDF
Herramientas ETL
Mapeadores a RDF
11. Receta
• Elegir el dataset a RDFizar
• Analizar los datos a convertir
• Buscar cómo modelar estos datos
• Reutilizar vocabularios + Nuevas
definiciones
• Enriquecer
• Con qué datasets tengo/debo/quiero
enlazar y qué operación
• Servicios de acceso a esos datasets
• Herramientas de generación
• Validen los datos generados
• Datos estáticos o dinámicos
• Provenance…
• Descripción del dataset generado
13. Mi Receta
• Noménclator 2010 de Asturias
• Formato MSExcel, Códigos, Descripciones
textuales, jerarquía de entidades y datos
estadísticos
• SKOS, Dublin Core, SCOVO, Cube+SDMX,
Organizations Ontology, FOAF, NUTS, etc.
• DBPedia-SPARQL-Reconciliar
• Google Maps API-REST WS-Buscar
• Google Refine+ RDF extension
• Valida RDF de salida
• Datos estáticos
• Provenance, licencia…
• Descripción del dataset generado
14. Objetivo
E
Linked Data
Noménclator Asturias
2010
15. Noménclator
Fuente:
http://www.sadei.es/ -
Aplicaciones de
Consulta- Noménclator
2010 - Más datos -
Entidades
Ver fichero: recursos/nomen2010/entidades2010.xls
16.
17.
18. Análisis del dataset
• Códigos
• Concejo+Parroquia+Entidad
• Jerarquía de entidades
• Etiquetas para cada
entidad de población
(es,ast)
• Datos estadísticos
19. Modelado de datos
(ver más adelante en concreto)
• Códigos +Jerarquía de
entidades (taxonomía)+
Etiquetas para cada
entidades de población –
SKOS-XL+DC
http://www.w3.org/TR/skos-reference/skos-xl.html
20. Estadísticas con The RDF Data Cube vocabulary
(sesión 2)
http://publishing-statistical-
data.googlecode.com/svn/trunk/specs/src/main/html/cube.html
21. Enriquecimiento
• DBPedia
• Entidades de población: http://dbpedia.org/page/Allande
• Endpoint SPARQL
• Georeferenciación
• Google Maps Api
• Servicio REST
• Basic Geo (WGS84 lat/long) Vocabulary:
http://www.w3.org/2003/01/geo/
• NUTS…(a nivel de Comunidad Autónoma)
22. Herramientas
• Google Refine
• http://code.google.com/p/google-refine/
• Descomprimir en un directorio
• Ver fichero: software/herremientas/google-refine-
2.1-r2136.zip
• RDF extension Google
Refine
• http://lab.linkeddata.deri.ie/2010/grefine-rdf-extension/
• Ver fichero: software/herremientas/grefine-rdf-
extension-0.5.3
• Descomprimir e introducir dentro de “…google-refine-
2.1-r2136webappextensions”
30. Preparación de los
datos
Cambiamos los nombres de las
columnas para referenciarlas
Borramos las primeras filas (no son
datos)
Borramos las últimas filas (son datos
de la entidad)
Borramos las 3 últimas columnas
(repetidas)
39. Modelado de datos
• Definir la taxonomía de tipo
de entidades con SKOS
• Generar esqueleto RDF para
aplicar a cada entidad
… veamos un ejemplo!
40. …Recordando
(principios Linked Data)…
1. Usar URIs para identificar las
cosas
2. Usar URIs HTTP
3. Ofrecer información sobre los
recursos usando RDF
4. Incluir enlaces a otros URIs
43. Taxonomía de tipo de
Entidad de Población en
SKOS
Concejo rdf:type skos:Concept .
Parroquia rdf:type skos:Concept ;
skos:broaderTransitive Concejo;
Lugar rdf:type skos:Concept ;
skos:broaderTransitive Parroquia;
…
Cada entidad tendrá un tipo que
será un skos:Concept y un base
uri definitions
44. Esqueleto de una entidad de población
d s
Yh/ZM^
W Eh^
E
E
d
^
d
,
D
d s
s W
s E W
45. …en RDF…
W s
d
…definimos este esqueleto
con Google Refine+RDF…
46. …y las estadísticas
en RDF?
Estrategia…
Paso 1-Modelar, generar… las entidades de
población-RDF
Paso 2-Enriquecer las entidades de población-
RDF
Paso 3-Modelar, generar…las estadísticas por
separado-RDF
47. …a preparar un poco más
los datos…
• Quitar un “carácter extraño” de los
códigos de Concejo, Parroquia y Entidad
(mirar el código con unicode(value) si es 32 entonces trim sino
substring)
• Cambiar los nombres como “Castro, El” a
“El Castro” tanto en su versión normal
como tradicional
• Preparar los nombres del tipo de
“Entidad”
68. Parámetros
• Throttle delay: 100ms+ 0,5 seg. Por petición * 7878
(20-30 mins)
• URL:
http://maps.googleapis.com/maps/api/geoc
ode/json?sensor=falseaddress= +
escape(value+,+value+, Asturias,
Spain,url)
Respuesta en JSON (extraer lat y
long) y creamos nuevas columnas:
“Add column based on this column”
69. Partimos de la columna
“Google Maps”
Columna “Lat”
with(value.parseJson().results[0].ge
ometry.location, pair, pair.lat)
Columna “Long”
with(value.parseJson().results[0].ge
ometry.location, pair, pair.lng)
74. -Cargar RDF por
programa (ej: JENA)
-Utilizar un procesador
SPARQL local
75. ARQ
• Descargar y descomprimir:
• http://sourceforge.net/projects/jena/files/ARQ/
• Ver Fichero:
curso/software/herramientas/arq-2.8.8.zip
• Fijar variable ARQROOT
• SET
arqroot=c:UsersCursoDesktopcursos
oftwareherramientasARQ-2.8.8“
• Ejecutar en cmd:
• %ARQROOT%batarq.bat --query
“file_query” --data “file_data”
76. ARQ
• Ver fichero: curso/recursos/queries/1.qr
• Ejecutar:
• Interesante porque tiene extensiones (algunas
presentes ya en SPARQL 1.1
77. Algunas
consultas en
SPARQL
Ver ficheros: curso/recursos/queries/*.qr
78. Consultas sencillas
A. «Obtener el código y el nombre de los
concejos en castellano»
B. «Obtener el código y el nombre de todas las
entidades de población de un concejo»
C. «Obtener el código y nombre todas las
ciudades de un concejo»
D. «Obtener el código y nombre de todas las
ciudades y lugares de un
79. ^d /^d/Ed t,Z
A
/dZ
^d /^d/Ed t,Z
B /dZ
d
/dZ
^d /^d/Ed t,Z
B1 /dZ
/dZ
/dZ
80. ^d /^d/Ed t,Z
C /dZ
/dZ
/dZ
^d /^d/Ed t,Z
/dZ
/dZ
D /dZ
/dZ
KZZ z
86. Instalación Virtuoso
• Descarga:
http://download.openlinksw.com/virtwiz/
• Ver fichero:
curso/software/servidores/ntvpz2zz.exe
• Necesidad de registro para evaluación
• Versión: ·Multi-Threaded Universal
Server (Commercial Edition) for
OpenLink Virtuoso 6.2
• Instalación Completa y sin registro
• Instalación Connectivity Suite
98. Configuración “cool uris”
• Eliminar el nº de puerto de las
URIs y que se puedan
referenciar
• Crear proxy inverso con Apache HTTP
• http://docs.openlinksw.com/virtuoso/webserver.
html
• Mod_jk (Conexión con
Tomcat)
• Para desplegar un linked data front-end
99. Configuración Apache HTTP
• Paramos el servidor
• Editamos el Archivo: C:Program FilesApache Software
FoundationApache2.2conf httpd.conf (ver
archivo)
• Habilitamos los módulos de proxy (quitar #)
• Habilitamos la carga de configuración de los Vhosts:
Include conf/extra/httpd-vhosts.conf
• Editamos el fichero de vhosts: C:Program FilesApache
Software FoundationApache2.2confextra (ver
archivo)
• Arrancamos el servidor
• Copiar ficheros de configuración de: curso/conf/apache
100. Configuración Apache HTTP-
mod_jk
• Documentación oficial:
http://tomcat.apache.org/connectors-
doc/generic_howto/quick.html
• Descarga:
• http://apache.rediris.es//tomcat/tomcat-
connectors/jk/binaries/windows/tomcat-connectors-1.2.32-
windows-i386-httpd-2.2.x.zip
• Ver fichero: curso/software/servidores/tomcat-
connectors-1.2.32-windows-i386-httpd-2.2.x.zip
• Copiar “mod_jk” a “C:Program FilesApache
Software FoundationApache2.2modules”
• Crear fichero “worker.properties”
• Configurar módulo según documentación
• Añadir punto de montaje a aplicación en TOMCAT
101. worker.properties
# Define 1 real worker using ajp13
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
Ubicación: C:Program FilesApache
Software FoundationApache2.2conf
102. Configurar módulo en
httpd.conf
# Load mod_jk module
# Update this path to match your modules location
LoadModule jk_module modules/mod_jk.so
# Where to find workers.properties
# Update this path to match your conf directory location (put
workers.properties next to httpd.conf)
JkWorkersFile c:/Temp/workers.properties
# Where to put jk shared memory
# Update this path to match your local state directory or logs
directory
JkShmFile C:/Temp/mod_jk.shm
# Where to put jk logs
# Update this path to match your logs directory location (put
mod_jk.log next to access_log)
JkLogFile C:/Temp/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the timestamp log format
JkLogStampFormat [%a %b %d %H:%M:%S %Y]
103. Configurar módulo en
httpd-vhosts.conf
JkMount /nomenclator/* worker1
Nuestra aplicación de Pubby
se llamará nomenclator y
estará en TOMCAT
105. Pubby
• Servlet con negociación de
contenido y queries DESCRIBE de
SPARQL
• ANT para construir nuestra propia
webapp
• Configuración del dataset
• Despliegue en TOMCAT
• Mapeo con APACHE
107. Apache ANT
• Descargar y descomprimir:
http://apache.rediris.es//ant/binaries/apache-
ant-1.8.2-bin.zip
• Ver Fichero:
curso/software/desarrollo/apache-
ant-1.8.2-bin.zip
• Ir a Equipo-Propiedades…
• Crear variable ANT_HOME
• Configurar PATH de Windows
• Comprobar en consola comando: ant
108.
109. Construir
nomenclator.war
• Editar el fichero config.ttl en
pubby-0.3.3webappWEB-INF
• Editar el fichero build.xml en
pubby-0.3.3, cambiar el
nombre generado:
property name=myapp value=nomenclator/
property name=war value=${basedir}/${myapp}.war /
• Empaquetar y Desplegar: ant war
114. Modelado Desempleo
Nuevo proyecto con Google Refine
Fuente:
http://www.sepe.es/contenido/estadistica
s/datos_estadisticos/municipios/index.ht
ml
Ver fichero: recursos/sepe/Desempleo-Sept-2011-
Asturias.xls
123. Y por qué a mano?…
Problemas en la codificación
de las consultas en SPARQL
Algoritmos de Reconcialición
Con la DBPedia fallaron 18 con nuestro servicio 20: Quirós, Las
Regueras, etc.
124. Lo están intentando
resolver…
• http://events.linkeddata.org/ldow2011/papers/ldow2
011-paper11-maali.pdf
• https://github.com/samuraraujo/SERIMI-RDF-
Interlinking
• http://disi.unitn.it/~p2p/OM-011/oaei11_paper15.pdf
Les vamos a dar un buen
caso de prueba…
127. Mezclamos los ficheros
RDF
(sólo tripletas)
• 1º Dataset con las entidades de población ya
publicado en Virtuoso
• 2º Dataset con los enlaces a la DBPedia
• 3º Dataset con los enlaces manuales a la DBPedia
Nomen-full.ttl
132. Checklist
• Producción de Linked Data
• Enriquecimiento
• Reconciliación de entidades
• Publicación de datos
• Infraestructura para
repositorio de RDF
• …
134. • There must be resolvable http:// (or https://) URIs.
• They must resolve, with or without content negotiation, to RDF data
in one of the popular RDF formats (RDFa, RDF/XML, Turtle, N-
Triples).
• The dataset must contain at least 1000 triples. (Hence, your FOAF
file most likely does not qualify.)
• The dataset must be connected via RDF links to a dataset that is
already in the diagram. This means, either your dataset must use
URIs from the other dataset, or vice versam. We arbitrarily require
at least 50 links.
• Access of the entire dataset must be possible via RDF crawling, via
an RDF dump, or via a SPARQL endpoint.
135. Curso Integración Web
Semántica
…Estadísticas, Consumo,
Introducción OWL+Ejemplo,
Debate+Conclusiones…
Jose María Alvarez Rodríguez
WESO-Universidad de Oviedo
E-mail: josem.alvarez@weso.es
WWW: http://josemalvarez.es