Taller Linked Open Data, 13es Jornades Catalanes d'Informació i Documentació, Barcelona
Desarrollo práctico de aplicaciones Linked Data: metodología y herramientas
-
Upload
guillermo-alvaro-rey -
Category
Technology
-
view
1.669 -
download
1
description
Transcript of Desarrollo práctico de aplicaciones Linked Data: metodología y herramientas
1
Desarrollo práctico de aplicaciones Linked Data:metodología y herramientas
Guillermo Álvaro ReyLa Granja de San Ildefonso, 14 Julio 2010
Cursos de Verano UPM 2010 Linked Data: ¿Una oportunidad o un riesgo?
2
Desarrollo práctico de aplicaciones Linked Data Intro
¿De qué va la lección?
Desarrollo práctico
de aplicaciones Linked Data:
Metodología y herramientas
3
Desarrollo práctico de aplicaciones Linked Data Agenda
1: Linked Data(intro y recordatorio)
2: Linked Data desde BD(recordatorio)
3: Aplicaciones Linked Data(ejemplo concreto, hands-on)
4: Consumo de Linked Data(más ejemplos)
4
Desarrollo práctico de aplicaciones Linked Data Intro Linked Data
(Re-)Introducción a Linked Data
1
5
Desarrollo práctico de aplicaciones Linked Data Intro Linked Data
Linked Data: ¿Por qué?- Para pasar de una Web de documentos a una
Web de Datos
Ejemplo:- ¿Jugadores de fútbol de la provincia de Albacete que han
marcado un gol en la final de la Copa del Mundo?
6
Desarrollo práctico de aplicaciones Linked Data Intro Linked Data
¿?
7
Desarrollo práctico de aplicaciones Linked Data Intro Linked Data
No debería ser…?
8
Desarrollo práctico de aplicaciones Linked Data Intro Linked Data
Mejor encontrar que buscar:
(jugadores de fútbol de la provincia de Albacete que jugaron la Eurocopa
2008)
9
Desarrollo práctico de aplicaciones Linked Data Intro Linked Data
¿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
10
Desarrollo práctico de aplicaciones Linked Data Intro Linked Data
Pero… si ya publicamos datos en bruto:- XML- BDs- APIs- CSV- XLS- …
Cierto: Pero en diferentes formatos, modelos…- Difícil de integrar- Datos no enlazados
11
Desarrollo práctico de aplicaciones Linked Data Intro Linked Data
Igual que hay una manera estándar de publicar en la Web…
HTML
12
Desarrollo práctico de aplicaciones Linked Data Intro Linked Data
Formato de datos en esta gran BD:
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…
13
Desarrollo práctico de aplicaciones Linked Data Intro Linked Data
Ejemplo, info en una API
Servicio
Operación
Mensajeentrada
Mensajesalida
14
Desarrollo práctico de aplicaciones Linked Data Intro Linked Data
http://...service#lastFm
Esto en RDF… (cada cosa tiene una URI)
http://...operation#getEvents
http://...inMessage http://...outMessage
hasOperation
hasInput hasOutput
Last.fm service
geo.getEvents
label
label
15
Desarrollo práctico de aplicaciones Linked Data Intro Linked Data
http://...service#lastFm
Enlazando estos datos con otros (ej: comentario)
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
16
Desarrollo práctico de aplicaciones Linked Data Intro Linked Data
http://...service#lastFm
Y más…
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
17
Desarrollo práctico de aplicaciones Linked Data Intro Linked Data
Datos en la Web expuestos como RDF, y enlazados con otros datos. Eso es:
Linked Data!
18
Desarrollo práctico de aplicaciones Linked Data Intro Linked Data
Los cuatro principios (Tim Berners-Lee, 2006)
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
Image by http://www.flickr.com/photos/PhOtOnQuAnTiQuE/
19
Desarrollo práctico de aplicaciones Linked Data Intro Linked Data
2007
2008
2009
20
Desarrollo práctico de aplicaciones Linked Data Intro Linked Data
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/
21
Desarrollo práctico de aplicaciones Linked Data Intro Linked Data
Ejemplo SPARQL: “Dame los últimos 5 comentarios sobre el servicio http://...#lastFm”
PREFIX rev: <http://purl.org/stuff/rev#>SELECT ?text ?whenWHERE{ <http://...#lastFm> rev:hasReview ?review . ?review rev:text ?text . ?review rev:createdOn ?when .}ORDER BY DESC(?when)LIMIT 5
22
Desarrollo práctico de aplicaciones Linked Data Exponiendo datos como Linked Data
Exponiendo datos como Linked Data
2
23
Desarrollo práctico de aplicaciones Linked Data Exponiendo datos como Linked Data
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…)
24
Desarrollo práctico de aplicaciones Linked Data Exponiendo datos como Linked Data
Ejemplo: Triplify
http://triplify.org
25
Desarrollo práctico de aplicaciones Linked Data Exponiendo datos como Linked Data
Ejemplo: D2R Server
http://www4.wiwiss.fu-berlin.de/bizer/d2r-server/
26
Desarrollo práctico de aplicaciones Linked Data Caso práctico: LUF
Aplicación Linked Data(ejemplo usando repositorio nativo)
3
27
Desarrollo práctico de aplicaciones Linked Data Caso práctico: LUF
Creando una aplicación con repositorio. 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
28
Desarrollo práctico de aplicaciones Linked Data Caso práctico: LUF
¿Qué necesitamos? (I)
Vocabularios: (usados en Revyu.com)
- Review vocabulary• http://www.purl.org/stuff/rev
- Tag Ontology• http://www.holygoat.co.uk/projects/tags/
(Añadidos posibles)- Provenance vocabulary
• http://purl.org/net/provenance/
29
Desarrollo práctico de aplicaciones Linked Data Caso práctico: LUF
@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:
30
Desarrollo práctico de aplicaciones Linked Data Caso práctico: LUF
@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 isa comment
hasReview
hasReviewer
text
31
Desarrollo práctico de aplicaciones Linked Data Caso práctico: LUF
¿Qué necesitamos? (II)
Un repositorio RDF:- Para almacenar los datos
semánticamente.- Usaremos SESAME
• http://www.openrdf.org/
RDF repository(Sesame)
SPARQL
32
Desarrollo práctico de aplicaciones Linked Data Caso práctico: LUF
Instalando Sesame:- Bajarlo de http://www.openrdf.org/download.jsp- Hace falta JDK, Tomcat- (en la memoria USB: openrdf-sesame-2.3.0-sdk.zip)- Desplegar el .war en un tomcat e iniciar- Comprobar: http://localhost:8080/openrdf-sesame
33
Desarrollo práctico de aplicaciones Linked Data Caso práctico: LUF
Usando consola para meter tripletas en Sesame:
Conectar al Sesame
Crear repositorio
Añadimos contenido
(y para borrar)
34
Desarrollo práctico de aplicaciones Linked Data Caso práctico: LUF
Y ya tenemos SPARQL endpoint con el Sesame!- http://localhost:8080/openrdf-sesame/repositories/LUF
- Ejemplo de query:• http://localhost:8080/openrdf-sesame/repositories/LUF?query=PREFIX
%20rev%3A%20%3Chttp%3A%2F%2Fpurl.org%2Fstuff%2Frev%23%3E%20SELECT%20%3Ftext%20%3Fwhen%20WHERE%20%7B%20%20%20%20%3Fitem%20rev%3AhasReview%20%3Freview%20.%20%20%20%3Freview%20rev%3Atext%20%3Ftext%20.%20%20%20%3Freview%20rev%3AcreatedOn%20%3Fwhen%20.%20%7D%20ORDER%20BY%20DESC(%3Fwhen)%20LIMIT%205
- Podemos ver todos los statements también:• http://localhost:8080/openrdf-sesame/repositories/LUF/statements
35
Desarrollo práctico de aplicaciones Linked Data Caso práctico: LUF
¿Qué necesitamos? (III)
Un frontend Linked Data:- Para exponer los datos como
Linked Data (con content negotiation, etc.)
- Usaremos Pubbyhttp://www4.wiwiss.fu-berlin.de/pubby/
RDF repository(Sesame)
LD Frontend(Pubby)
SPARQLquery
LDaccess
36
Desarrollo práctico de aplicaciones Linked Data Caso práctico: LUF
Instalando Pubby:- Bajarlo de http://www4.wiwiss.fu-berlin.de/pubby/- (en la memoria USB: pubby-0.3.zip)- Desplegar la carpeta webapp (y renombrar) en el tomcat- Modificar el config.n3- Reiniciar tomcat- Comprobar: http://localhost:8080/LUF/
37
Desarrollo práctico de aplicaciones Linked Data Caso práctico: LUF
Y ya tenemos los datos expuestos como Linked Data con Pubby:
- Acceso HTML:• http://localhost:8080/LUF/comments/7a584c3eda88adb9e085251ca346b608• http://localhost:8080/LUF/ratings/1a1f07fd9e221fee2538d1bbaf2d7426• http://localhost:8080/LUF/taggings/83c993d7d9f7ffee74db8b45c958f1c3
- Con content-negotiation. También ofrece los datos como RDF/XML:• ?output=n3• ?output=xml
- (bueno, estas urls de localhost no son realmente Linked Data;-)
38
Desarrollo práctico de aplicaciones Linked Data Caso práctico: LUF
Añadidos (I): Una API
RDF repository(Sesame)
REST API LD Frontend(Pubby)
RDF2Go
POSTfeedback
GETfeedback
SPARQLquery
LDaccess
39
Desarrollo práctico de aplicaciones Linked Data Caso práctico: LUF
RDF2Go:- Abstracción java sobre repositorios RDF- Programación independiente del repositorio
• http://rdf2go.semweb4j.org/
- Alternativa, programar sobre la interfaz del repositorio
40
Desarrollo práctico de aplicaciones Linked Data Caso práctico: LUF
Añadidos (II): Un SPARQL explorer
RDF repository(Sesame)
REST API LD Frontend(Pubby)
RDF2Go
POSTfeedback
GETfeedback
SPARQLquery
LDaccess
SPARQL explorer(SNORQL)
SPARQLVia Web
41
Desarrollo práctico de aplicaciones Linked Data Caso práctico: LUF
Snorql:- SPARQL explorer
• http://wiki.github.com/kurtjx/SNORQL/
- Ejemplo:• http://soa4all.isoco.net/luf/snorql/
42
Desarrollo práctico de aplicaciones Linked Data Consumiendo Linked Data
Aplicaciones que consumen Linked Data
4
43
Desarrollo práctico de aplicaciones Linked Data Consumiendo Linked Data
Navegadores Linked Data (páginas y extensiones sobre navegadores, etc.)
- Tabulator• http://www.w3.org/2005/ajar/tab
- Disco• http://www4.wiwiss.fu-berlin.de/bizer/ng4j/disco/
- LENA• http://www.uni-koblenz-landau.de/koblenz/fb4/institute/IFI/AGStaab/Research/systeme/lena
- Marble• http://marbles.sourceforge.net/
- VisiNav• http://visinav.deri.org/
- …
44
Desarrollo práctico de aplicaciones Linked Data Consumiendo Linked Data
Herramientas para visualizar relaciones. Ejemplo RelFinder:
- http://relfinder.semanticweb.org
45
Desarrollo práctico de aplicaciones Linked Data Consumiendo Linked Data
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
46
Desarrollo práctico de aplicaciones Linked Data Consumiendo Linked Data
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)
47
Desarrollo práctico de aplicaciones Linked Data Consumiendo Linked Data
Ejemplo de integración de LUF- (via query al SPARQL endpoint)
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
48
Desarrollo práctico de aplicaciones Linked Data Consumiendo Linked Data
Usando librerías para manejar SPARQL en diferentes entornos:
- SPARQL Javascript• http://www.thefigtrees.net/lee/blog/2006/04/
sparql_calendar_demo_a_sparql.html
- 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
- …
49
Desarrollo práctico de aplicaciones Linked Data Consumiendo Linked Data
Ejemplo: RAP (RDF API for PHP)
Usado en la página de LUF- http://soa4all.isoco.net/luf/about
50
Desarrollo práctico de aplicaciones Linked Data Consumiendo Linked Data
Ejemplo: K-Analytics (Knowledge Analytics)- Sacando datos de iServe y otras fuentes…
<?xml version="1.0" encoding="UTF-8"?> <sparql xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation="http://www.w3.org/2007/SPARQL/result.xsd"> <head> <variable name="op"/> <variable name="labelOp"/> </head> <results> <result> <binding name="op"> <uri>http://iserve.kmi.open.ac.uk/…#LastFmGetEventsOperation</uri> </binding> <binding name="labelOp"> <literal>geo.getEvents</literal> </binding> </result> </results> </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 . } }
51
Desarrollo práctico de aplicaciones Linked Data Consumiendo Linked Data
Ejemplo k-Analytics
52
Desarrollo práctico de aplicaciones Linked Data Consumiendo Linked Data
The New York Times: Alumni In The News- http://data.nytimes.com/schools/schools.html
53
Desarrollo práctico de aplicaciones Linked Data Consumiendo Linked Data
The New York Times: Código fuente disponible
… y son consultas SPARQL
54
Desarrollo práctico de aplicaciones Linked Data Consumiendo Linked Data
Ejemplo: Clean Air Status and Trends (CASTNET)- http://data-gov.tw.rpi.edu/demo/exhibit/demo-8-castnet.php
55
Desarrollo práctico de aplicaciones Linked Data Consumiendo Linked Data
Ejemplo: Research Funding Explorer- http://bis.clients.talis.com/
56
Desarrollo práctico de aplicaciones Linked Data Consumiendo Linked Data
Ejemplo: Calidad de las aguas en playas asturianas- http://datos.fundacionctic.org/sandbox/asturias/playas/
57
Desarrollo práctico de aplicaciones Linked Data Consumiendo Linked Data
Ejerciciosy
Ejemplos
Extra
58
Desarrollo práctico de aplicaciones Linked Data Consumiendo Linked Data
Relaciones entre películas en RelFinder:- “Pulp Fiction”, “Kill Bill” y “Reservoir Dogs”
59
Desarrollo práctico de aplicaciones Linked Data Consumiendo Linked Data
En data.gov.uk:- Colegios de la
administración de Londres, que contengan la palabra “music”
60
Desarrollo práctico de aplicaciones Linked Data Consumiendo Linked Data
Por sugerencia de Vader…(http://dbpedia.org/resource/Darth_Vader)
(etc)
Asesinos en serie (de ficción) en la dbpedia
Image by http://www.flickr.com/photos/bflv/
61
Desarrollo práctico de aplicaciones Linked Data Fin
Preguntas - Discusión
Guillermo Álvaro Rey
@guillelamb
¡Gracias!
62
Desarrollo práctico de aplicaciones Linked Data Fin
Agradecimientos / Acknowledgements
Credits go at least to the following people for ideas and particular examples:
- Juan Sequeda @juansequeda (many ideas from his Consuming Linked Data slides at SemTech2010)
- Olaf Hartig @olafhartig (Consuming Linked Data with SPARQL)- Michael Hausenblas @mhausenblas, (using Darth Vader example)- Leigh Dodds @ldodds (querying Edubase data)
(And in general to the LOD community:-)