Curso integración Web Semántica

2,319 views
2,225 views

Published on

1 Comment
5 Likes
Statistics
Notes
No Downloads
Views
Total views
2,319
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
64
Comments
1
Likes
5
Embeds 0
No embeds

No notes for slide

Curso integración Web Semántica

  1. 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
  2. 2. ProducciónPublicaciónConsumo
  3. 3. Producción Selección ModeladoEnriquecimiento Generación
  4. 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. 5. ¿Qué datasetsvamos a reutilizar? http://datacatalogs.org/ http://sindice.com/ http://ckan.net
  6. 6. ¿Qué vocabularios vamos a reutilizar? prefix.ccnamespace lookup for RDF http://prefix.cc developers Búsqueda de prefijos para vocabularios y datasets
  7. 7. ¿Qué definiciones necesitamos? RDFS SKOS OWL …
  8. 8. Enriquecimiento> K Z :
  9. 9. Servicios SPARQL Endpoint Servicios Web K Z :
  10. 10. Generación ScriptsPrograma+API RDF Herramientas ETLMapeadores a RDF
  11. 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
  12. 12. En nuestro caso…
  13. 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. 14. Objetivo E Linked DataNoménclator Asturias 2010
  15. 15. Noménclator Fuente: http://www.sadei.es/ - Aplicaciones de Consulta- Noménclator 2010 - Más datos - EntidadesVer fichero: recursos/nomen2010/entidades2010.xls
  16. 16. 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
  17. 17. 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+DChttp://www.w3.org/TR/skos-reference/skos-xl.html
  18. 18. 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
  19. 19. 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)
  20. 20. 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”
  21. 21. Extensión Grefine-RDF
  22. 22. Trabajando con Google Refine
  23. 23. Consola de Google Refine URL Navegador: http://localhost:3333
  24. 24. Crear un proyectoNombre de proyecto + Fichero de Datos
  25. 25. Comprobamos que tenemos la extensión RDF
  26. 26. Preparación de los datos Cambiamos los nombres de las columnas para referenciarlasBorramos las primeras filas (no son datos)Borramos las últimas filas (son datos de la entidad) Borramos las 3 últimas columnas (repetidas)
  27. 27. Marcamos con Flag las filas a borrar
  28. 28. Seleccionamos Facet
  29. 29. Ordenamos por Flag (true)
  30. 30. Remove All matching rows !!!
  31. 31. Last-Previous-Flag-Borrar…
  32. 32. Datos “Limpios”
  33. 33. Modelado de datos• Definir la taxonomía de tipo de entidades con SKOS• Generar esqueleto RDF para aplicar a cada entidad… veamos un ejemplo!
  34. 34. …Recordando (principios Linked Data)…1. Usar URIs para identificar las cosas2. Usar URIs HTTP3. Ofrecer información sobre los recursos usando RDF4. Incluir enlaces a otros URIs
  35. 35. …Recordando (referencias)…1. http://linkeddatabook.com/editions/1.0/2. http://www.w3.org/DesignIssues/LinkedDat a.html3. http://www.w3.org/TR/swbp-vocab-pub/4. http://www.w3.org/2009/08/skos- reference/skos.html
  36. 36. Taxonomía de tipo deEntidad de Población s W W s W h
  37. 37. Taxonomía de tipo de Entidad de Población en SKOSConcejo 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
  38. 38. 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
  39. 39. …en RDF…W s d…definimos este esqueletocon Google Refine+RDF…
  40. 40. …y las estadísticas en RDF?Estrategia…Paso 1-Modelar, generar… las entidades depoblación-RDFPaso 2-Enriquecer las entidades de población-RDFPaso 3-Modelar, generar…las estadísticas porseparado-RDF
  41. 41. …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”
  42. 42. toTitlecase(value.split(,).reverse().join( ))
  43. 43. Cambiamos la Base URI…
  44. 44. Añadimos prefijos:skos,skos-xl y dc
  45. 45. Borramos los mapeos que no interesan
  46. 46. Buscamos las propiedades que decidimos al modelar…
  47. 47. Salida previa…
  48. 48. URIs para cada recurso2010/+value+/+cells[Cod_Parroquia].value+/ +cells[Cod_Entidad].value
  49. 49. Lang en los labels…
  50. 50. Crear URI para tipo de entidad…
  51. 51. http://localhost/nomenclator/definitions/+repla ceChars(value,áéíóú,aeiou)
  52. 52. Crear dc:identifier…value+_+cells[Cod_Parroquia].value+_+cells[ Cod_Entidad].value)
  53. 53. Generando skos:broader…partimos de la columna “Cod_Concejo”if(cells[Cod_Entidad].value == 00,if(cells[Cod_Parroquia].value ==00,http://nuts.psi.enakting.org/id/ES12,http://localhost/nomenclator/asturias/2010/+cells[Cod_Concejo].value+/00/00),http://localhost/nomenclator/asturias/2010/+cells[Cod_Concejo].value+/+cells[Cod_Parroquia].value+/00))
  54. 54. Versión del RDF Skeleton
  55. 55. Nuestro ejemplo en Turtle…http://localhost/nomenclator/asturias/2010/53/08/02 skosxl:prefLabel “Llanuces@es , Chanuces@ast ; rdfs:label “Llanuces@es , Chanuces@ast ; a http://localhost/nomenclator/definitions/Lugar ; dc:identifier “53_08_02 ; skos:broaderTransitive http://localhost/nomenclator/asturias/2010/53/08/0 0 .
  56. 56. Añadir lat/long consultandoGoogle Maps..
  57. 57. Partimos de la columna “Nombre_clean”
  58. 58. “Add column by fetching URLs”
  59. 59. 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”
  60. 60. Partimos de la columna “Google Maps” Columna “Lat”with(value.parseJson().results[0].geometry.location, pair, pair.lat) Columna “Long” with(value.parseJson().results[0].ge ometry.location, pair, pair.lng)
  61. 61. Editamos el RDF skeleton..
  62. 62. Añadimos las propiedades…
  63. 63. Generar RDF final de lasEntidades de Población
  64. 64. ¿Es necesariopublicar datos para consultar en SPARQL?
  65. 65. -Cargar RDF por programa (ej: JENA)-Utilizar un procesador SPARQL local
  66. 66. 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”
  67. 67. ARQ • Ver fichero: curso/recursos/queries/1.qr • Ejecutar:• Interesante porque tiene extensiones (algunas presentes ya en SPARQL 1.1
  68. 68. Algunas consultas en SPARQLVer ficheros: curso/recursos/queries/*.qr
  69. 69. Consultas sencillasA. «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
  70. 70. ^d /^d/Ed t,ZA /dZ ^d /^d/Ed t,ZB /dZ d /dZ ^d /^d/Ed t,ZB1 /dZ /dZ /dZ
  71. 71. ^d /^d/Ed t,ZC /dZ /dZ /dZ ^d /^d/Ed t,Z /dZ /dZD /dZ /dZ KZZ z
  72. 72. Y ahora…apublicar los datos
  73. 73. Infraestructura s d ^W ZY d
  74. 74. Instalación Apache• Descarga: http://httpd.apache.org/• Instalación típica como servicio• Ver fichero: curso/software/servidores/httpd- 2.2.21-win32-x86-openssl-0.9.8r.exe
  75. 75. Instalación Apache Tomcat• Descarga: http://tomcat.apache.org/download-60.cgi• Versión 6.x• Descomprimir fichero .zip• Configurar mod_jk y Apache HTTP• Ver fichero: curso/software/servidores/apache-tomcat- 6.0.33-windows-x86.zip
  76. 76. Prueba…
  77. 77. 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
  78. 78. Arrancando…http://localhost:8890/
  79. 79. User: dba password: dba
  80. 80. Subiendo ficheros
  81. 81. Graphs
  82. 82. Prueba “query” SPARQL^d t,Z/D/d
  83. 83. SPARQL endpoint:http://localhost:8890/sparql
  84. 84. Otros paquetes: fct e isparql
  85. 85. Text Search en fct…”Llanuces” (utiliza rdfs:label)
  86. 86. URI lookup en fct…
  87. 87. Algunas estadísticas hasta ahora…
  88. 88. 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
  89. 89. 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
  90. 90. 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
  91. 91. worker.properties# Define 1 real worker using ajp13worker.list=worker1# Set properties for worker1 (ajp13)worker.worker1.type=ajp13worker.worker1.host=localhostworker.worker1.port=8009Ubicación: C:Program FilesApacheSoftware FoundationApache2.2conf
  92. 92. Configurar módulo en httpd.conf# Load mod_jk module# Update this path to match your modules locationLoadModule jk_module modules/mod_jk.so# Where to find workers.properties# Update this path to match your conf directory location (putworkers.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 logsdirectoryJkShmFile C:/Temp/mod_jk.shm# Where to put jk logs# Update this path to match your logs directory location (putmod_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 formatJkLogStampFormat [%a %b %d %H:%M:%S %Y]
  93. 93. Configurar módulo en httpd-vhosts.conf JkMount /nomenclator/* worker1Nuestra aplicación de Pubby se llamará nomenclator y estará en TOMCAT
  94. 94. Linked Data Front-end• Pubby • http://www4.wiwiss.fu-berlin.de/pubby/ • http://www4.wiwiss.fu- berlin.de/pubby/download/pubby-0.3.3.zip • Ver fichero: curso/software/herramientas/pubby- 0.3.3.zip• ELDA • http://elda.googlecode.com/hg/deliver- elda/src/main/docs/index.html• WESO-DESH • http://code.google.com/p/weso-desh/
  95. 95. 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
  96. 96. ¿Cómo funciona Pubby?
  97. 97. 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
  98. 98. 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
  99. 99. config.ttl conf:dataset [ conf:sparqlEndpoint http://localhost/sparql; conf:sparqlDefaultGraphhttp://localhost/nomenclator/asturias/2010; conf:datasetBase http://localhost/nomenclator/; conf:datasetURIPattern asturias/2010/.*; conf:webResourcePrefix ; conf:fixUnescapedCharacters (),!$*+;=@; #conf:metadataTemplate metadata.ttl; meta:pubbyUser http://purl.org/weso; meta:pubbyOperator http://purl.org/weso; meta:endpointUser http://purl.org/weso; meta:endpointOperator http://purl.org/weso; ];…Personalizar “metadata.ttl”
  100. 100. Acceso mediante Pubby• http://localhost/nomenclator/
  101. 101. …hasta ahora tenemos.. s d ^W ZY d
  102. 102. …más linked data..Enlace con DBPedia Reconciliación de entidades Estadísticas
  103. 103. Modelado Desempleo Nuevo proyecto con Google Refine Fuente:http://www.sepe.es/contenido/estadisticas/datos_estadisticos/municipios/index.ht ml Ver fichero: recursos/sepe/Desempleo-Sept-2011- Asturias.xls
  104. 104. Reconciliar con DBPedia
  105. 105. Seleccionar dbo:Place
  106. 106. Algunos “matching” a mano…
  107. 107. Otros editando RDF…1. http://dbpedia.org/page/El_Franco2. http://dbpedia.org/page/Lena,_Asturias3. http://dbpedia.org/page/Muros_de_Nal%C3%B3n4. http://dbpedia.org/page/On%C3%ADs5. http://dbpedia.org/page/Quir%C3%B3s6. http://dbpedia.org/page/Las_Regueras7. http://dbpedia.org/page/San_Mart%C3%ADn_del_Re y_Aurelio8. http://dbpedia.org/page/San_Mart%C3%ADn_de_Os cos9. http://dbpedia.org/page/Villaviciosa,_Asturias10. http://dbpedia.org/page/Soto_del_BarcoVer fichero: recursos/rdf/mapeo-concejos-dbpedia.ttl
  108. 108. Enlazamos con la DBPedia Propiedad: owl:sameAsValor: cell.recon.match.id
  109. 109. Reconciliar con nuestro Noménclator• Preparar los nombres de los concejos• Crear consulta SPARQL• Añadir nueva columna “Fetching web Service”
  110. 110. Consulta en SPARQLSELECT * where{?concejo rdf:type http://localhost/nomenclator/definitions/Concejo.?concejo rdfs:label ?label. FILTER (lang(?label)=es and str(?label)=Allande)}
  111. 111. value.split(td)[1].split(/td)[0]
  112. 112. Y por qué a mano?…Problemas en la codificaciónde las consultas en SPARQLAlgoritmos de ReconcialiciónCon la DBPedia fallaron 18 con nuestro servicio 20: Quirós, Las Regueras, etc.
  113. 113. 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…
  114. 114. RDF Skeleton
  115. 115. Generar RDF del Enlace con la DBPedia
  116. 116. 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
  117. 117. Publicamos en Virtuoso
  118. 118. Finalmente publicamos las definiciones Ver fichero:curso/recursos/rdf/nomenclato r-definitions.ttl
  119. 119. …Y todo este despliegue siempre a mano?
  120. 120. TALIS Platform http://www.talis.com/platform/ LOD2 STACKhttp://lod2.eu/BlogPost/677-first-release-of-the-lod2- stack.html BCN Chile http://www.slideshare.net/jelabra (Presentación I-Semantics 2011)
  121. 121. Checklist• Producción de Linked Data• Enriquecimiento• Reconciliación de entidades• Publicación de datos• Infraestructura para repositorio de RDF• …
  122. 122. ¿Nuestrodataset puedeser una nueva burbuja?
  123. 123. • 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.
  124. 124. 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

×