linked data in use (cursos de verano upm 2011)
DESCRIPTION
Slides de la lección "Linked Data In Use" en Cursos de Verano UPM 2011: "Oportunidades de la web de datos (Linked Data) en España"TRANSCRIPT
Linked Data in UseGuillermo Álvaro Rey
La Granja de San Ildefonso, 21 Julio 2011
Cursos de Verano UPM 2011 Oportunidades de la web de datos (Linked Data) en España
2
Agenda
» Re-Intro Linked Data» (Motivación)
» Publicando Linked Data» (un ejemplo)
» Consumiendo Linked Data» (ejemplos)
» “Ejercicios”» (Un poco de SPARQL)
3
• Linked Data: – Para pasar de una Web de documentos…– …a una Web de Datos
– …¿por qué?
Motivación
Un ejemplo:
¿Jugadores de fútbol de la provincia de Albacete que han marcado un gol
en la final de la Copa del Mundo?
4
Motivación: Ejemplo
¿¿??
5
Motivación: Ejemplo
No debería ser…?
6
(jugadores de fútbol de la provincia de Albacete que han ganado la
la Copa del Mundo)
Mejor encontrar que buscar…
Motivación: Ejemplo
7
• ¿Qué sucede?– Nos interesan “cosas” concretas, no documentos– Tenemos que encontrar las cosas que buscamos en los
documentos– Las máquinas no pueden saber (aunque adivinan bien) los
contenidos
• Publicando datos en bruto…– Hacemos más fácil a las máquinas encontrar cosas– Mejor si lo hacemos siguiendo formatos y protocolos estándar– …y mejor aún si los enlazamos con otros datos
Motivación: Datos vs Documentos
8
1) Usar URIs para identificar cosas
2) Usar el protocolo HTTP para esas URIs
3) Ofrecer información útil en esas direcciones
4) Incluir enlaces a otras URIs
Linked Data: Los 4 principios (Tim Berners-Lee, 2006)
Image by: http://www.flickr.com/photos/PhOtOnQuAnTiQuE/
9
En la Web de documentos, usamos HTML,
En la Web de datos, usamos:
RDF(Resource Description Framework)
• Modelo de datos
• Basado en tripletas: sujeto, verbo, predicado. Ej:– <Guillermo> <vive en> <Madrid>– <Madrid> <es la capital de> <España>– <España> <es campeona de> <Mundial de Fútbol>– …
• Serializable en diferentes formatos:– RDF/XML, RDFa, N3, Turtle, JSON…
RDF
10
Servicio
Operación
Mensajeentrada
Mensajesalida
Documentos y DatosDocumento
Datos
11
http://...service#lastFm
http://...operation#getEvents
http://...inMessage http://...outMessage
hasOperation
hasInput hasOutput
Last.fm service
geo.getEvents
label
label
Datos en RDF
Datos en RDF y con URIs
12
http://...service#lastFm
http://...operation#getEvents
http://...inMessage http://...outMessage
hasOperation
hasInput hasOutput
Last.fm service
geo.getEvents
label
label
http://...review
http://...reviewer
Guillermo
Great music service!
hasReviewhasReviewer
name
text
Enlazando con otros datos
Datos en RDF
13
http://...service#lastFm
http://...operation#getEvents
http://...inMessage http://...outMessage
hasOperation
hasInput hasOutput
Last.fm service
geo.getEvents
label
label
http://...review
http://...reviewer
Guillermo
Great music service!
hasReviewhasReviewer
name
text
http://dbpedia.org/resource/Madrid
lives in
…y más
Datos en RDF
14
Datos en la Web expuestos como RDF, y enlazados con otros datos. Eso es:
Linked Data!
Datos enlazados
15
2007
2008
2009 2010
La evolución de Linked Data
Linking Open Data cloud diagram,
by Richard Cyganiak and Anja Jentzsch.
http://lod-cloud.net/
16
• Imagen anterior:– La nube de “Linked Open Data”
• No confundir:– Linked Data (Datos enlazados)– Open Data (Datos abiertos)
Linked (Open?) Data
17
• “La Web se transforma en una gran Base de Datos”…• ¿Cómo consultar esta gran BD?
SPARQL(W3C Recommendation)
http://www.w3.org/TR/rdf-sparql-query/
Veremos unos cuantos ejemplos…
SPARQL
18
Motivación para enlazar: Ejemplo en Logística
Image by:http://
www.flickr.com/photos/senoranderson/
Image by:http://www.flickr.com/photos/argen/
Image by: http://map-of-spain.co.uk
19
Agenda
» Re-Intro Linked Data» (Motivación)
» Publicando Linked Data» (un ejemplo)
» Consumiendo Linked Data» (ejemplos)
» “Ejercicios”» (Un poco de SPARQL)
20
Dos grandes vías:
1) De Bases de Datos relacionales a Linked Data• D2R• Triplify• Virtuoso• Ultrawrap• …
2) Usando Repositorios RDF nativos• Sesame• Jena• Owlim• Talis platform• …
(También en CMS tipo Drupal 7, en HTML + RDFa…)
http://triplify.org
http://www4.wiwiss.fu-berlin.de/bizer/d2r-server/
Veremos ejemplo de esto…
Publicando Linked Data
21
Caso práctico:
Linked User Feedback
• Un servicio para almacenar y exponer como Linked Data feedback de los usuarios en forma de:
– Ratings– Comentarios– Etiquetas
http://soa4all.isoco.net/luf/about
Creando Linked Data con repositorio
22
• Vocabularios:
(usados en Revyu.com)
– Review vocabulary• http://www.purl.org/stuff/rev
– Tag Ontology• http://www.holygoat.co.uk/projects/tags/
(además…)
– Provenance vocabulary• http://purl.org/net/provenance/
¿Qué necesitamos? (I)
23
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rev: <http://purl.org/stuff/rev#> .
@prefix tags: <http://www.holygoat.co.uk/owl/redwood/0.1/tags/> .
<http://example.com/items#item1>
rev:hasReview <http://soa4all.isoco.net/luf/ratings/xxx> ;
rev:hasReview <http://soa4all.isoco.net/luf/comments/yyy> ;
tags:tag <http://soa4all.isoco.net/luf/taggings/zzz> .
<http://soa4all.isoco.net/luf/ratings/xxx>
rdf:Type rev:Review ;
rev:rating "3" ;
rev:minRating "1" ;
rev:maxRating "5" ;
rev:reviewer <http://example.com/users#user1> ;
rev:createdOn "2010-06-22T12:29:28+0200"^^xsd:dateTime .
<http://soa4all.isoco.net/luf/comments/yyy>
rdf:Type rev:Review ;
rev:text "This is a comment" ;
rev:reviewer <http://example.com/users#user1> ;
rev:createdOn "2010-06-22T10:59:01+0200"^^xsd:dateTime .
<http://soa4all.isoco.net/luf/taggings/zzz>
rdf:Type tags:Tagging ;
tags:associatedTag "one tag" , "other tag" ;
tags:taggedBy <http://example.com/users#user1> ;
tags:taggedOn "2010-06-22T13:03:05+0200"^^xsd:dateTime .
Un rating:
Un comentario:
Un etiquetado:
¿Qué necesitamos? (I)
24
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rev: <http://purl.org/stuff/rev#> .
@prefix tags: <http://www.holygoat.co.uk/owl/redwood/0.1/tags/> .
<http://example.com/items#item1>
rev:hasReview <http://soa4all.isoco.net/luf/ratings/xxx> ;
rev:hasReview <http://soa4all.isoco.net/luf/comments/yyy> ;
tags:tag <http://soa4all.isoco.net/luf/taggings/zzz> .
<http://soa4all.isoco.net/luf/ratings/xxx>
rdf:Type rev:Review ;
rev:rating "3" ;
rev:minRating "1" ;
rev:maxRating "5" ;
rev:reviewer <http://example.com/users#user1> ;
rev:createdOn "2010-06-22T12:29:28+0200"^^xsd:dateTime .
<http://soa4all.isoco.net/luf/comments/yyy>
rdf:Type rev:Review ;
rev:text "This is a comment" ;
rev:reviewer <http://example.com/users#user1> ;
rev:createdOn "2010-06-22T10:59:01+0200"^^xsd:dateTime .
<http://soa4all.isoco.net/luf/taggings/zzz>
rdf:Type tags:Tagging ;
tags:associatedTag "one tag" , "other tag" ;
tags:taggedBy <http://example.com/users#user1> ;
tags:taggedOn "2010-06-22T13:03:05+0200"^^xsd:dateTime .
http://example.com/items#item1
http://soa4all.isoco.net/luf/comments/yyy
http://example.com/users#user1This is
a comment
hasReview
hasReviewertext
¿Qué necesitamos? (I)
25
• Un repositorio RDF:– Para almacenar los datos
semánticamente.– P.ej. SESAME
• http://www.openrdf.org/
• Desplegar en Tomcat
RDF repository(Sesame)
SPARQL
¿Qué necesitamos? (II)
26
• Un frontend Linked Data:– Para exponer los datos como Linked Data
(con content negotiation, etc.)– P.ej. Pubby
• http://www4.wiwiss.fu-berlin.de/pubby/
• Desplegar en Tomcat
RDF repository(Sesame)
LD Frontend(Pubby)
SPARQLquery
LDaccess
¿Qué necesitamos? (III)
27
• Y ya tenemos los datos expuestos como Linked Data con Pubby:– Acceso HTML:
• [base]/comments/73ab5e51d203587be87b1b3bbb4f3cc6• [base]/ratings/643e74d8389277dd26907ea56856cbd4• [base]/taggings/675330fa199511c3098672a200d7834b
– Con content-negotiation. También ofrece los datos como RDF/XML:• ?output=n3• ?output=xml
¿Qué necesitamos? (III)
28
• Una API
RDF repository(Sesame)
REST API LD Frontend(Pubby)
RDF2Go
POSTfeedback
GETfeedback
SPARQLquery
LDaccess
Añadidos (I)
• P.ej. RDF2Go:http://rdf2go.semweb4j.org/
– Abstracción java sobre repositorios RDF
– Programación independiente del repositorio
– Alternativa, programar sobre la interfaz del repositorio
29
• Un SPARQL explorer
RDF repository(Sesame)
REST API LD Frontend(Pubby)
RDF2Go
POSTfeedback
GETfeedback
SPARQLquery
LDaccess
SPARQL explorer(SNORQL)
SPARQLVia Web
Añadidos (II)
30
• Snorql:– SPARQL explorer
• http://wiki.github.com/kurtjx/SNORQL/
– Ejemplo:• http://soa4all.isoco.net/luf/snorql/
Añadidos (II)
Luego volvemos para hacer consultas…
31
Agenda
» Re-Intro Linked Data» (Motivación)
» Publicando Linked Data» (un ejemplo)
» Consumiendo Linked Data» (ejemplos)
» “Ejercicios”» (Un poco de SPARQL)
32
• Navegadores Linked Data (páginas y extensiones sobre navegadores, etc.)– Tabulator
– Disco
– LENA
– Marble
– VisiNav
– Zitgist
– …
Consumiendo Linked Data: Navegadores
Ejemplo de rating en Zitgist:
33
• Herramientas para visualizar relaciones.• Ejemplo RelFinder:
– http://www.visualdataweb.org/relfinder/relfinder.php
Consumiendo Linked Data: Visualizadores de relaciones
Ejemplo: Relación entre Iniesta y Gasol
34
“Ejercicio” en RelFinder
Relaciones entre “Pulp Fiction”, “Kill Bill” y “Reservoir Dogs”
35
• Consumiendo Linked Data con SPARQL– Usando los SPARQL endpoints que exponen los diferentes
conjuntos de datos– Ejemplos:
• Dbpedia: http://dbpedia.org/sparql• UK Government: http://data.gov.uk/sparql• USA Government: http://semantic.data.gov/sparql• Musicbrainz: http://dbtune.org/musicbrainz/sparql
…• LUF: http://soa4all.isoco.net/luf/sparql
– CKAN data hub: http://ckan.net/
Consumiendo Linked Data: Usando SPARQL
36
• Un SPARQL endpoint es un servicio REST• HTTP GET con parámetro query
– GET /sparql?query=PREFIX+...
• Respuestas: – (usando la cabecera ACCEPT o vía parámetro ej. “&out=json”)
– RDF– XML– (JSON)
Usando SPARQL
37
SPICES
(Semantic Platform for the Interaction and Consumption of Enriched Services)
http://soa4all.isoco.net/spices/iServe
(Linked Data services repository)http://iserve.kmi.open.ac.uk/browser.html
Ejemplos de integración de LUF
(via consultas al SPARQL endpoint)
38
• Algunos ejemplos– RAP – RDF API for PHP
• http://www4.wiwiss.fu-berlin.de/bizer/rdfapi/index.html
– Sesame (Java)• http://www.openrdf.org/
– Jena / ARQ (Java)• http://jena.sourceforge.net
– PySPARQL (Python)• http://code.google.com/p/pysparql
– …
Librerías para SPARQL
Usada en la página de LUF
http://soa4all.isoco.net/luf/about
39
Visualizando grafos con SPARQL
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX wsl: <http://cms-wg.sti2.org/ns/minimal-service-model#>
SELECT DISTINCT ?op ?labelOp
WHERE {
<http://iserve.kmi.open.ac.uk/...#LastFmEvents> wsl:hasOperation ?op .
OPTIONAL{ ?op rdfs:label ?labelOp . }
}
SPARQL y visualización
40
• The New York Times: Alumni In The News– http://data.nytimes.com/schools/schools.html
Ejemplo de consumo de Linked Data: NY Times
41
• The New York Times: Código fuente disponible
… y son consultas SPARQL
Ejemplo de consumo de Linked Data: NY Times
42
Ejemplo de Usoen la Web de iSOCO Lab
http
://la
b.is
oco.
net
+
43
Recomendaciones
Ejemplo sacando partido de enlazar(work-in-progress)
“El Viajero” como Linked Data
“Guía Santillana” como Linked Data
Ratings de LUF
Datos meteorológicos (AEMET)
Contexto de Usuarios (RDF)
+
44
Servicios de reconocimiento de nombres de entidades
(en textos en lenguaje natural)
Ejemplos:
Named Entity Recognition sobre Linked Data
http://dbpedia.org/spotlight
http://www.alchemyapi.com/http://www.opencalais.com/
45
Ejemplo NER en miKrow
Company: Vodafone UK (info)
Uso de Linked Data, para ir más allá de la ontología de dominio
http://mikrow.isoco.net
46
Agenda
» Re-Intro Linked Data» (Motivación)
» Publicando Linked Data» (un ejemplo)
» Consumiendo Linked Data» (ejemplos)
» “Ejercicios”» (Un poco de SPARQL)
47
Últimos ratings en LUF
Últimos 5 ratings en LUF
¿Cómo sería para los últimos ratings de 5 estrellas?
http://soa4all.isoco.net/luf/snorql
48
Fútbol en la DBpediahttp://dbpedia.org/snorql
Jugadores de fútbol de la provincia de Albacete que han ganado la Copa del Mundo
49
http://dbpedia.org/page/Andrés_Iniesta
¿Cómo sería para los jugadores de fútbol nacidos en España que han ganado la Copa del Mundo de fútbol?
Una pista…
Fútbol en la DBpedia
50
22 jugadores y no 23 ¿?
Fútbol en la DBpedia
51
http://dbpedia.org/page/Fernando_Torres
Ojo con los datos…
Fútbol en la DBpedia
52
Ejemplo de app: Linked Data Movie Quiz
Creando preguntas sobre cine usando la Linked Movie Data Base
http://10k.aneventapart.com/Uploads/310/
Extra! (idea) Usuarios al jugar pueden identificar errores en el set de datos
53
SPARQL en Linked Data Movie Quiz
https://github.com/lamboratory/Linked-Data-Movie-Quiz
Podemos ver las consultas SPARQL usadas para generar las preguntas…
54
Actores en la Linked Movie DataBase
http://data.linkedmdb.org/snorql
Películas en donde sale Marlon Brando, con sus personajes, directores y años
Corripio, c/Fuencarral 102
…
55
Corripio, c/Fuencarral 102
¿Cómo sería para actores que hayan hecho de Vito Corleone?
Actores en la Linked Movie DataBase
56
• Consultar un repositorio está bien…• …pero ¿y si quiero consultar sobre varios a la vez?• Algunas opciones:
– Varias queries– Queries federadas (usando “SERVICE” en SPARQL 1.1)– Juntando sets de datos– Usar repositorio con varios datasets
Consultando más de un dataset a la vez
Veremos ejemplo
Veremos ejemplo
57
Queries federadas:Personajes de la Biblia
Hijos de Abraham
58
Bibleontology
DBpedia
Personajes de la Biblia:Bible Ontology y DBpedia
59
Hijos de Abraham con abstract en castellano en la DBpedia
Queries federadas: Ejemplo
60
Consulta a repositorio centralizado
Corripio, c/Fuencarral 102 http://factforge.net/sparql
Opción para queries sobre distintos datasets: Usar un repositorio que incluya varios. P.ej.
“Ejercicio”: ¿Qué datos saca esta query?
61
Visualizando datos en FactForge
Corripio, c/Fuencarral 102
Datos sobre playmates en FactForge, incluyendo inferidas
Navegación facetada directamente con exhibit
Ojo a algunos datos en distintos formatos
62
Agradecimientos / Acknowledgements
– Juan Sequeda @juansequeda(many ideas from his Consuming Linked Data slides at SemTech2010)
– Selección española de fútbol, Marlon Brando, Hugh Heffner, personajes bíblicos…;)
63
¿Quieres innovar?
Barcelona
Tel +34 935 677 200
Edificio Testa A
C/ Alcalde Barnils, 64-68
St. Cugat del Vallès
08174 Barcelona
Madrid
Tel +34 913 349 797
Av. del Partenón, 16-18 1,7
28042 Madrid
Valencia
Tel +34 963 467 143
Oficina 107
C/ Prof. Beltrán Báguena, 4
46009 Valencia
Pamplona
Tel +34 948 102 408
Parque Tomás
Caballero, 2, 6º-4ª
31006 Pamplona
¿Dónde estamos?Contacta con iSOCO
Guillermo Álvaro [email protected]
@guillelamb