desarrollo práctico de aplicaciones linked data: metodología y herramientas

Post on 07-Dec-2014

1.667 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Lección "Desarrollo práctico de aplicaciones Linked Data: metodología y herramientas" del Curso de Verano 2010 de la UPM: "Linked Data: ¿Una oportunidad o un riesgo?"

TRANSCRIPT

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

galvaro@isoco.com

@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:-)

top related