Linked data in use
-
Upload
isoco -
Category
Technology
-
view
250 -
download
1
description
Transcript of Linked data in use
Linked Data in Use
Guillermo Álvaro Rey
José Manuel Gómez Pérez
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
Mensaje
entrada
Mensaje
salida
Documentos y Datos Documento
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!
hasReview hasReviewer
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!
hasReview hasReviewer
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#user1 This is
a comment
hasReview
hasReviewer
text
¿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)
SPARQL
query
LD
access
¿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 APILD Frontend
(Pubby)
RDF2Go
POST
feedback
GET
feedbackSPARQL
query
LD
access
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 APILD Frontend
(Pubby)
RDF2Go
POST
feedback
GET
feedbackSPARQL
query
LD
access
SPARQL explorer
(SNORQL)
SPARQL
Via 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 Uso
en la Web de iSOCO Lab
+
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 DBpedia http://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 Rey [email protected]
@guillelamb
José Manuel Gómez Pérez [email protected]
@josemanuelgp