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
Agenda


» Re-Intro Linked Data
     » (Motivación)
» Publicando Linked Data
     » (un ejemplo)
» Consumiendo Linked Data
     » (ejemplos)
» “Ejercicios”
     » (Un poco de SPARQL)




                             2
Motivación




• Linked Data:
  – Para pasar de una Web de documentos…
  – …a una Web de Datos
                    Un ejemplo:
  – …¿por qué?
                    ¿Jugadores de fútbol de la provincia
                    de Albacete que han marcado un gol
                     en la final de la Copa del Mundo?




                                                             3
Motivación: Ejemplo




   ¿¿??




                 4
Motivación: Ejemplo




No
debería
ser…?




                           5
Motivación: Ejemplo




            (jugadores de fútbol de la provincia
                de Albacete que han ganado la
                           la Copa del Mundo)




Mejor
encontrar
que
buscar…



                                                      6
Motivación: Datos vs Documentos



• ¿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

                                                                       7
Linked Data: Los 4 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/

                                                                                                  8
RDF

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…
                                                          9
Documentos y Datos
Documento
                  Datos



                       Servicio


                      Operación


            Mensaje               Mensaje
            entrada                salida




                                        10
Datos en RDF


Datos en
RDF y con
URIs
                            http://...service#lastFm          label           Last.fm service

                                        hasOperation

                         http://...operation#getEvents        label           geo.getEvents

                 hasInput                       hasOutput


            http://...inMessage                        http://...outMessage




                                                                                                   11
Datos en RDF
Enlazando
con otros
datos
                                        text         Great music service!

                   http://...review

  hasReviewer                                  hasReview

    http://...reviewer                           http://...service#lastFm          label           Last.fm service

    name                                                     hasOperation

      Guillermo                                                                    label
                                               http://...operation#getEvents                       geo.getEvents

                                      hasInput                       hasOutput


                               http://...inMessage                          http://...outMessage


                                                                                                              12
Datos en RDF



…y más
                                                text         Great music service!

                           http://...review

        hasReviewer                                    hasReview

           http://...reviewer                            http://...service#lastFm          label           Last.fm service

                        name                                         hasOperation
     lives in
                        Guillermo                      http://...operation#getEvents       label           geo.getEvents

                                              hasInput                       hasOutput
http://dbpedia.org/resource/Madrid

                                       http://...inMessage                          http://...outMessage


                                                                                                                      13
Datos enlazados




Datos en la Web expuestos como RDF, y
 enlazados con otros datos. Eso es:


          Linked Data!

                                            14
2007                               La evolución de Linked Data




                      2008


                                         2009             2010




      Linking Open Data cloud diagram,
by Richard Cyganiak and Anja Jentzsch.
            http://lod-cloud.net/
                                                                         15
Linked (Open?) Data




• Imagen anterior:
  – La nube de “Linked Open Data”


• No confundir:
  – Linked Data (Datos enlazados)
  – Open Data (Datos abiertos)


                                                     16
SPARQL



• “La Web se transforma en una gran Base de Datos”…
• ¿Cómo consultar esta gran BD?



                  SPARQL                       Veremos
                                               unos cuantos
                (W3C Recommendation)           ejemplos…




                         http://www.w3.org/TR/rdf-sparql-query/

                                                                  17
Motivación para enlazar: Ejemplo en Logística




Image by:
http://www.flickr.com
                                                                                    Image by:
/photos/argen/
                                                                     http://www.flickr.com/
                                                                      photos/senoranderson/




                        Image by: http://map-of-spain.co.uk
                                                                                      18
Agenda


» Re-Intro Linked Data
     » (Motivación)
» Publicando Linked Data
     » (un ejemplo)
» Consumiendo Linked Data
     » (ejemplos)
» “Ejercicios”
     » (Un poco de SPARQL)




                             19
Publicando Linked Data


Dos grandes vías:
    1) De Bases de Datos relacionales a Linked Data
        •   D2R
        •   Triplify
        •   Virtuoso
        •   Ultrawrap
                                  http://triplify.org
        •   …                                    http://www4.wiwiss.fu-berlin.de/bizer/d2r-server/

    2) Usando Repositorios RDF nativos
        •   Sesame
        •   Jena             Veremos
        •   Owlim            ejemplo
        •   Talis platform   de esto…
        •   …
    (También en CMS tipo Drupal 7, en HTML + RDFa…)

                                                                                              20
Creando Linked Data 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 21
¿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/


   (además…)
   – Provenance vocabulary
       • http://purl.org/net/provenance/



                                                                       22
¿Qué necesitamos? (I)

                 @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 ;
Un rating:            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 ;
Un comentario:        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>
Un etiquetado:        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 .

                                                                                              23
¿Qué necesitamos? (I)

@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" ;                                                   http://example.com/items#item1
     rev:minRating "1" ;
     rev:maxRating "5" ;
     rev:reviewer <http://example.com/users#user1> ;                                     hasReview
     rev:createdOn "2010-06-22T12:29:28+0200"^^xsd:dateTime .

<http://soa4all.isoco.net/luf/comments/yyy>
                                                                    http://soa4all.isoco.net/luf/comments/yyy
     rdf:Type rev:Review ;                                                                                      text
     rev:text "This is a comment" ;
     rev:reviewer <http://example.com/users#user1> ;
                                                                                         hasReviewer
     rev:createdOn "2010-06-22T10:59:01+0200"^^xsd:dateTime .
                                                                                                                   This is
                                                                        http://example.com/users#user1
<http://soa4all.isoco.net/luf/taggings/zzz>                                                                      a comment
     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 .

                                                                                                                       24
¿Qué necesitamos? (II)




                                     SPARQL

• Un repositorio RDF:
   – Para almacenar los datos
     semánticamente.
   – P.ej. SESAME
      • http://www.openrdf.org/
      • Desplegar en Tomcat
                                  RDF repository
                                    (Sesame)




                                                             25
¿Qué necesitamos? (III)



                                                       LD           SPARQL

• Un frontend Linked Data:                           access          query


   – Para exponer los datos como Linked Data
     (con content negotiation, etc.)
   – P.ej. Pubby                                  LD Frontend
      • http://www4.wiwiss.fu-berlin.de/pubby/      (Pubby)

      • Desplegar en Tomcat




                                                 RDF repository
                                                   (Sesame)



                                                                       26
¿Qué necesitamos? (III)



• 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




                                                                       27
Añadidos (I)


• Una API
                                   POST       GET            LD               SPARQL
                                 feedback   feedback       access              query


• P.ej. RDF2Go:
   http://rdf2go.semweb4j.org/

   – Abstracción java sobre
                                                        LD Frontend
     repositorios RDF                 REST API
                                                          (Pubby)
                                            RDF2Go
   – Programación
     independiente del
     repositorio
   – Alternativa, programar
     sobre la interfaz del
                                                       RDF repository
     repositorio                                         (Sesame)

                                                                                  28
Añadidos (II)


• Un SPARQL explorer
           POST       GET            LD         SPARQL        SPARQL
         feedback   feedback       access        query        Via Web




                                LD Frontend              SPARQL explorer
              REST API
                                  (Pubby)                  (SNORQL)
                    RDF2Go




                               RDF repository
                                 (Sesame)

                                                                           29
Añadidos (II)



• Snorql:                                        Luego volvemos para
                                                 hacer consultas…
   – SPARQL explorer
       • http://wiki.github.com/kurtjx/SNORQL/
   – Ejemplo:
       • http://soa4all.isoco.net/luf/snorql/




                                                                   30
Agenda


» Re-Intro Linked Data
     » (Motivación)
» Publicando Linked Data
     » (un ejemplo)
» Consumiendo Linked Data
     » (ejemplos)
» “Ejercicios”
     » (Un poco de SPARQL)




                             31
Consumiendo Linked Data: Navegadores



• Navegadores Linked Data (páginas y extensiones sobre
  navegadores, etc.)
   – Tabulator
   – Disco
   – LENA
   –   Marble
   –   VisiNav
   –   Zitgist
   –   …          Ejemplo
                  de rating
                  en Zitgist:




                                                                   32
Consumiendo Linked Data: Visualizadores de relaciones


• Herramientas para visualizar relaciones.
                                                              Ejemplo: Relación
• Ejemplo RelFinder:                                          entre Iniesta y Gasol
   –   http://www.visualdataweb.org/relfinder/relfinder.php




                                                                                 33
“Ejercicio” en RelFinder

Relaciones entre “Pulp Fiction”,
“Kill Bill” y “Reservoir Dogs”




                                                         34
Consumiendo Linked Data: Usando SPARQL


• 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/



                                                                       35
Usando SPARQL




• 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)


                                                                   36
Ejemplos de integración de LUF


                              (via consultas al SPARQL
                              endpoint)

SPICES
(Semantic Platform for the Interaction and                                           iServe
    Consumption of Enriched Services)
http://soa4all.isoco.net/spices/
                                                           (Linked Data services repository)
                                                   http://iserve.kmi.open.ac.uk/browser.html




                                                                                        37
Librerías para SPARQL


• 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)                                    Usada en la página de LUF
      •   http://code.google.com/p/pysparql
  –   …




                                                                                       38
                               http://soa4all.isoco.net/luf/about
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




                                                                                                  39
Ejemplo de consumo de Linked Data: NY Times

• The New York Times: Alumni In The News
   –   http://data.nytimes.com/schools/schools.html




                                                                                    40
Ejemplo de consumo de Linked Data: NY Times




• The New York Times: Código fuente disponible




 … y son consultas SPARQL


                                                                   41
Ejemplo de Uso
    en la Web de iSOCO Lab




+                     42
Ejemplo sacando partido de enlazar
                                                         (work-in-progress)
“El Viajero” como     “Guía Santillana”
Linked Data           como Linked Data



  Ratings
  de LUF


     Datos meteorológicos
     (AEMET)                                              Recomendaciones




  Contexto de
  Usuarios (RDF)




 +                                                                       43
Named Entity Recognition sobre Linked Data



Servicios de reconocimiento de nombres de entidades
(en textos en lenguaje natural)

Ejemplos:


                    http://dbpedia.org/spotlight




       http://www.opencalais.com/      http://www.alchemyapi.com/




                                                                            44
Ejemplo NER en miKrow




                                   Uso de
                                   Linked Data,
                                   para ir más
                                   allá de la
Company: Vodafone UK (info)
                                   ontología de
                                   dominio




http://mikrow.isoco.net                           45
Agenda


» Re-Intro Linked Data
     » (Motivación)
» Publicando Linked Data
     » (un ejemplo)
» Consumiendo Linked Data
     » (ejemplos)
» “Ejercicios”
     » (Un poco de SPARQL)




                             46
Últimos ratings en LUF



Últimos 5 ratings en LUF   http://soa4all.isoco.net/luf/snorql




                                               ¿Cómo sería para los
                                               últimos ratings de 5
                                               estrellas?




                                                                      47
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




                                                  48
Fútbol en la DBpedia
    ¿Cómo sería para los
    jugadores de fútbol
    nacidos en España que
    han ganado la Copa del
    Mundo de fútbol?


http://dbpedia.org/page/Andrés_Iniesta




                                 Una pista…




                                                                49
Fútbol en la DBpedia




22 jugadores y no 23 ¿?




                                      50
Fútbol en la DBpedia




http://dbpedia.org/page/Fernando_Torres




                                          Ojo con los datos…




                                                                         51
Ejemplo de app: Linked Data Movie Quiz
http://10k.aneventapart.com/Uploads/310/




                                                                  Creando
                                                                  preguntas
                                                                  sobre cine
                                                                  usando la
                                                                  Linked Movie
                                                                  Data Base


                                                                    Extra! (idea)
                                                                    Usuarios al
                                                                    jugar pueden
                                                                    identificar
                                                                    errores en el
                                                                    set de datos


                                                                                 52
SPARQL en Linked Data Movie Quiz

https://github.com/lamboratory/Linked-Data-Movie-Quiz




  Podemos ver las
  consultas SPARQL
  usadas para generar
  las preguntas…



                                                                                      53
Actores en la Linked Movie DataBase

http://data.linkedmdb.org/snorql




                                                                     Películas en donde
                                                                     sale Marlon Brando,
                                   Corripio, c/Fuencarral 102
                                                                     con sus personajes,
                                                                     directores y años




                     …                                                                     54
Actores en la Linked Movie DataBase
¿Cómo sería para
actores que hayan
hecho de Vito
Corleone?




                    Corripio, c/Fuencarral 102




                                                                          55
Consultando más de un dataset a la vez




• 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)           Veremos
   –   Juntando sets de datos                                       ejemplo

   –   Usar repositorio con varios datasets Veremos
                                            ejemplo




                                                                        56
Queries federadas:
Personajes de la Biblia




   Hijos de
   Abraham




                    57
Personajes de la Biblia:
    Bible Ontology y DBpedia


Bibleontology

                     DBpedia




                           58
Queries federadas:
              Ejemplo




Hijos de Abraham
con abstract en
castellano en la
DBpedia




                   59
Consulta a repositorio centralizado


Opción para queries sobre distintos datasets: Usar un
repositorio que incluya varios. P.ej.




http://factforge.net/sparql      Corripio, c/Fuencarral 102




  “Ejercicio”: ¿Qué datos
  saca esta query?


                                                                                         60
Visualizando datos en FactForge


Datos sobre playmates
en FactForge,
incluyendo inferidas
                                                           Navegación facetada
                                                           directamente con exhibit


                        Corripio, c/Fuencarral 102



                                                            Ojo a algunos datos en
                                                            distintos formatos




                                                                                      61
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…;)




                                                                                        62
¿Dónde estamos?
                                                                                  Contacta con iSOCO


              Guillermo Álvaro Rey                         José Manuel Gómez Pérez
                   galvaro@isoco.com                              jmgomez@isoco.com
                       @guillelamb                                  @josemanuelgp


                                             ¿Quieres innovar?


Barcelona                    Madrid                        Pamplona              Valencia
Tel +34 935 677 200          Tel +34 913 349 797           Tel +34 948 102 408   Tel +34 963 467 143
Edificio Testa A             Av. del Partenón, 16-18 1,7   Parque Tomás          Oficina 107
C/ Alcalde Barnils, 64-68    28042 Madrid                  Caballero, 2, 6º-4ª   C/ Prof. Beltrán Báguena, 4
St. Cugat del Vallès                                       31006 Pamplona        46009 Valencia
08174 Barcelona




                                                                                                               63

Linked data in use

  • 1.
    Linked Data inUse 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 LinkedData » (Motivación) » Publicando Linked Data » (un ejemplo) » Consumiendo Linked Data » (ejemplos) » “Ejercicios” » (Un poco de SPARQL) 2
  • 3.
    Motivación • Linked Data: – Para pasar de una Web de documentos… – …a una Web de Datos Un ejemplo: – …¿por qué? ¿Jugadores de fútbol de la provincia de Albacete que han marcado un gol en la final de la Copa del Mundo? 3
  • 4.
  • 5.
  • 6.
    Motivación: Ejemplo (jugadores de fútbol de la provincia de Albacete que han ganado la la Copa del Mundo) Mejor encontrar que buscar… 6
  • 7.
    Motivación: Datos vsDocumentos • ¿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 7
  • 8.
    Linked Data: Los4 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/ 8
  • 9.
    RDF En la Webde 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… 9
  • 10.
    Documentos y Datos Documento Datos Servicio Operación Mensaje Mensaje entrada salida 10
  • 11.
    Datos en RDF Datosen RDF y con URIs http://...service#lastFm label Last.fm service hasOperation http://...operation#getEvents label geo.getEvents hasInput hasOutput http://...inMessage http://...outMessage 11
  • 12.
    Datos en RDF Enlazando conotros datos text Great music service! http://...review hasReviewer hasReview http://...reviewer http://...service#lastFm label Last.fm service name hasOperation Guillermo label http://...operation#getEvents geo.getEvents hasInput hasOutput http://...inMessage http://...outMessage 12
  • 13.
    Datos en RDF …ymás text Great music service! http://...review hasReviewer hasReview http://...reviewer http://...service#lastFm label Last.fm service name hasOperation lives in Guillermo http://...operation#getEvents label geo.getEvents hasInput hasOutput http://dbpedia.org/resource/Madrid http://...inMessage http://...outMessage 13
  • 14.
    Datos enlazados Datos enla Web expuestos como RDF, y enlazados con otros datos. Eso es: Linked Data! 14
  • 15.
    2007 La evolución de Linked Data 2008 2009 2010 Linking Open Data cloud diagram, by Richard Cyganiak and Anja Jentzsch. http://lod-cloud.net/ 15
  • 16.
    Linked (Open?) Data •Imagen anterior: – La nube de “Linked Open Data” • No confundir: – Linked Data (Datos enlazados) – Open Data (Datos abiertos) 16
  • 17.
    SPARQL • “La Webse transforma en una gran Base de Datos”… • ¿Cómo consultar esta gran BD? SPARQL Veremos unos cuantos (W3C Recommendation) ejemplos… http://www.w3.org/TR/rdf-sparql-query/ 17
  • 18.
    Motivación para enlazar:Ejemplo en Logística Image by: http://www.flickr.com Image by: /photos/argen/ http://www.flickr.com/ photos/senoranderson/ Image by: http://map-of-spain.co.uk 18
  • 19.
    Agenda » Re-Intro LinkedData » (Motivación) » Publicando Linked Data » (un ejemplo) » Consumiendo Linked Data » (ejemplos) » “Ejercicios” » (Un poco de SPARQL) 19
  • 20.
    Publicando Linked Data Dosgrandes vías: 1) De Bases de Datos relacionales a Linked Data • D2R • Triplify • Virtuoso • Ultrawrap http://triplify.org • … http://www4.wiwiss.fu-berlin.de/bizer/d2r-server/ 2) Usando Repositorios RDF nativos • Sesame • Jena Veremos • Owlim ejemplo • Talis platform de esto… • … (También en CMS tipo Drupal 7, en HTML + RDFa…) 20
  • 21.
    Creando Linked Datacon 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 21
  • 22.
    ¿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/ (además…) – Provenance vocabulary • http://purl.org/net/provenance/ 22
  • 23.
    ¿Qué necesitamos? (I) @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 ; Un rating: 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 ; Un comentario: 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> Un etiquetado: 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 . 23
  • 24.
    ¿Qué necesitamos? (I) @prefixrdf: <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" ; http://example.com/items#item1 rev:minRating "1" ; rev:maxRating "5" ; rev:reviewer <http://example.com/users#user1> ; hasReview rev:createdOn "2010-06-22T12:29:28+0200"^^xsd:dateTime . <http://soa4all.isoco.net/luf/comments/yyy> http://soa4all.isoco.net/luf/comments/yyy rdf:Type rev:Review ; text rev:text "This is a comment" ; rev:reviewer <http://example.com/users#user1> ; hasReviewer rev:createdOn "2010-06-22T10:59:01+0200"^^xsd:dateTime . This is http://example.com/users#user1 <http://soa4all.isoco.net/luf/taggings/zzz> a comment 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 . 24
  • 25.
    ¿Qué necesitamos? (II) SPARQL • Un repositorio RDF: – Para almacenar los datos semánticamente. – P.ej. SESAME • http://www.openrdf.org/ • Desplegar en Tomcat RDF repository (Sesame) 25
  • 26.
    ¿Qué necesitamos? (III) LD SPARQL • Un frontend Linked Data: access query – Para exponer los datos como Linked Data (con content negotiation, etc.) – P.ej. Pubby LD Frontend • http://www4.wiwiss.fu-berlin.de/pubby/ (Pubby) • Desplegar en Tomcat RDF repository (Sesame) 26
  • 27.
    ¿Qué necesitamos? (III) •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 27
  • 28.
    Añadidos (I) • UnaAPI POST GET LD SPARQL feedback feedback access query • P.ej. RDF2Go: http://rdf2go.semweb4j.org/ – Abstracción java sobre LD Frontend repositorios RDF REST API (Pubby) RDF2Go – Programación independiente del repositorio – Alternativa, programar sobre la interfaz del RDF repository repositorio (Sesame) 28
  • 29.
    Añadidos (II) • UnSPARQL explorer POST GET LD SPARQL SPARQL feedback feedback access query Via Web LD Frontend SPARQL explorer REST API (Pubby) (SNORQL) RDF2Go RDF repository (Sesame) 29
  • 30.
    Añadidos (II) • Snorql: Luego volvemos para hacer consultas… – SPARQL explorer • http://wiki.github.com/kurtjx/SNORQL/ – Ejemplo: • http://soa4all.isoco.net/luf/snorql/ 30
  • 31.
    Agenda » Re-Intro LinkedData » (Motivación) » Publicando Linked Data » (un ejemplo) » Consumiendo Linked Data » (ejemplos) » “Ejercicios” » (Un poco de SPARQL) 31
  • 32.
    Consumiendo Linked Data:Navegadores • Navegadores Linked Data (páginas y extensiones sobre navegadores, etc.) – Tabulator – Disco – LENA – Marble – VisiNav – Zitgist – … Ejemplo de rating en Zitgist: 32
  • 33.
    Consumiendo Linked Data:Visualizadores de relaciones • Herramientas para visualizar relaciones. Ejemplo: Relación • Ejemplo RelFinder: entre Iniesta y Gasol – http://www.visualdataweb.org/relfinder/relfinder.php 33
  • 34.
    “Ejercicio” en RelFinder Relacionesentre “Pulp Fiction”, “Kill Bill” y “Reservoir Dogs” 34
  • 35.
    Consumiendo Linked Data:Usando SPARQL • 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/ 35
  • 36.
    Usando SPARQL • UnSPARQL 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) 36
  • 37.
    Ejemplos de integraciónde LUF (via consultas al SPARQL endpoint) SPICES (Semantic Platform for the Interaction and iServe Consumption of Enriched Services) http://soa4all.isoco.net/spices/ (Linked Data services repository) http://iserve.kmi.open.ac.uk/browser.html 37
  • 38.
    Librerías para SPARQL •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) Usada en la página de LUF • http://code.google.com/p/pysparql – … 38 http://soa4all.isoco.net/luf/about
  • 39.
    Visualizando grafos conSPARQL 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 39
  • 40.
    Ejemplo de consumode Linked Data: NY Times • The New York Times: Alumni In The News – http://data.nytimes.com/schools/schools.html 40
  • 41.
    Ejemplo de consumode Linked Data: NY Times • The New York Times: Código fuente disponible … y son consultas SPARQL 41
  • 42.
    Ejemplo de Uso en la Web de iSOCO Lab + 42
  • 43.
    Ejemplo sacando partidode enlazar (work-in-progress) “El Viajero” como “Guía Santillana” Linked Data como Linked Data Ratings de LUF Datos meteorológicos (AEMET) Recomendaciones Contexto de Usuarios (RDF) + 43
  • 44.
    Named Entity Recognitionsobre Linked Data Servicios de reconocimiento de nombres de entidades (en textos en lenguaje natural) Ejemplos: http://dbpedia.org/spotlight http://www.opencalais.com/ http://www.alchemyapi.com/ 44
  • 45.
    Ejemplo NER enmiKrow Uso de Linked Data, para ir más allá de la Company: Vodafone UK (info) ontología de dominio http://mikrow.isoco.net 45
  • 46.
    Agenda » Re-Intro LinkedData » (Motivación) » Publicando Linked Data » (un ejemplo) » Consumiendo Linked Data » (ejemplos) » “Ejercicios” » (Un poco de SPARQL) 46
  • 47.
    Últimos ratings enLUF Últimos 5 ratings en LUF http://soa4all.isoco.net/luf/snorql ¿Cómo sería para los últimos ratings de 5 estrellas? 47
  • 48.
    Fútbol en laDBpedia http://dbpedia.org/snorql Jugadores de fútbol de la provincia de Albacete que han ganado la Copa del Mundo 48
  • 49.
    Fútbol en laDBpedia ¿Cómo sería para los jugadores de fútbol nacidos en España que han ganado la Copa del Mundo de fútbol? http://dbpedia.org/page/Andrés_Iniesta Una pista… 49
  • 50.
    Fútbol en laDBpedia 22 jugadores y no 23 ¿? 50
  • 51.
    Fútbol en laDBpedia http://dbpedia.org/page/Fernando_Torres Ojo con los datos… 51
  • 52.
    Ejemplo de app:Linked Data Movie Quiz http://10k.aneventapart.com/Uploads/310/ Creando preguntas sobre cine usando la Linked Movie Data Base Extra! (idea) Usuarios al jugar pueden identificar errores en el set de datos 52
  • 53.
    SPARQL en LinkedData Movie Quiz https://github.com/lamboratory/Linked-Data-Movie-Quiz Podemos ver las consultas SPARQL usadas para generar las preguntas… 53
  • 54.
    Actores en laLinked Movie DataBase http://data.linkedmdb.org/snorql Películas en donde sale Marlon Brando, Corripio, c/Fuencarral 102 con sus personajes, directores y años … 54
  • 55.
    Actores en laLinked Movie DataBase ¿Cómo sería para actores que hayan hecho de Vito Corleone? Corripio, c/Fuencarral 102 55
  • 56.
    Consultando más deun dataset a la vez • 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) Veremos – Juntando sets de datos ejemplo – Usar repositorio con varios datasets Veremos ejemplo 56
  • 57.
    Queries federadas: Personajes dela Biblia Hijos de Abraham 57
  • 58.
    Personajes de laBiblia: Bible Ontology y DBpedia Bibleontology DBpedia 58
  • 59.
    Queries federadas: Ejemplo Hijos de Abraham con abstract en castellano en la DBpedia 59
  • 60.
    Consulta a repositoriocentralizado Opción para queries sobre distintos datasets: Usar un repositorio que incluya varios. P.ej. http://factforge.net/sparql Corripio, c/Fuencarral 102 “Ejercicio”: ¿Qué datos saca esta query? 60
  • 61.
    Visualizando datos enFactForge Datos sobre playmates en FactForge, incluyendo inferidas Navegación facetada directamente con exhibit Corripio, c/Fuencarral 102 Ojo a algunos datos en distintos formatos 61
  • 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…;) 62
  • 63.
    ¿Dónde estamos? Contacta con iSOCO Guillermo Álvaro Rey José Manuel Gómez Pérez galvaro@isoco.com jmgomez@isoco.com @guillelamb @josemanuelgp ¿Quieres innovar? Barcelona Madrid Pamplona Valencia Tel +34 935 677 200 Tel +34 913 349 797 Tel +34 948 102 408 Tel +34 963 467 143 Edificio Testa A Av. del Partenón, 16-18 1,7 Parque Tomás Oficina 107 C/ Alcalde Barnils, 64-68 28042 Madrid Caballero, 2, 6º-4ª C/ Prof. Beltrán Báguena, 4 St. Cugat del Vallès 31006 Pamplona 46009 Valencia 08174 Barcelona 63