Top Banner
WEB APPS: CONSUMIENDO LINKED DATA Ing. Jorge López Vargas [email protected] I3C2 lunes 18 de octubre de 2010
48

Jorge lopez web_apps

Jun 20, 2015

Download

Documents

eccutpl

Taller dictado por el Ing. Jorge López en Isummit Loxa 2010
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Jorge lopez web_apps

WEB APPS: CONSUMIENDO LINKED DATA

Ing. Jorge López [email protected]

I3C2

lunes 18 de octubre de 2010

Page 2: Jorge lopez web_apps

AGENDA

•Web Semántica

•Framework para la descripción de recursos (RDF)

•SPARQL

•Linked Data

lunes 18 de octubre de 2010

Page 3: Jorge lopez web_apps

WEB SEMÁNTICA

web de documentos

diseñada para seres humanos

computadoras ayudan a buscar

La Web Actual:

millones de documentos

HTML

Sintax

is

lunes 18 de octubre de 2010

Page 4: Jorge lopez web_apps

WEB SEMÁNTICA

web de datos

extensión de la web actual

descripción semántica de recursos

permite una mejor colaboración computadores y humanos

web para computadores

lunes 18 de octubre de 2010

Page 5: Jorge lopez web_apps

WEB SEMÁNTICA

•Un esfuerzo por convertir a la Web actual en una base de datos descentralizada gigante.

•Entendible por seres humanos y por computadores

•Es necesario: representar y manipular el conocimiento - RDF

lunes 18 de octubre de 2010

Page 6: Jorge lopez web_apps

RESOURCES DESCRIPTION FRAMEWORK

The Resource Description Framework (RDF) is a language designed to support the Semantic Web, in much the same way that HTML is the language that helped initiate the original Web. RDF is a framework for supporting resource description, or metadata (data about data), for the Web. RDF provides common structures that can be used for interoperable XML data exchange.

lunes 18 de octubre de 2010

Page 7: Jorge lopez web_apps

RESOURCES DESCRIPTION FRAMEWORK

• RDF es:

• Parte de la Web Semántica - representa el conocimiento

• Un modelo de datos que permite establecer relaciones

• Funciona bien para información distribuida

• Un método para descomponer información en piezas (S,P,O)

• RDF no es XML. RDF representa conocimiento, XML datos

lunes 18 de octubre de 2010

Page 8: Jorge lopez web_apps

RDF ELEMENTOS

• Tripleta RDF

• Sujeto: Lo que se esta describiendo

• Predicado: Una relación, una propiedad

• Objeto: Valor o un sujeto

“El título del artículo es Problemas con Jena y Google App Engine”

lunes 18 de octubre de 2010

Page 9: Jorge lopez web_apps

RDF CARACTERÍSTICAS

• Cada tripleta se construye con: sujeto, predicado y objeto

• Cada tripleta es completa y un hecho único

• Todo es univocamente identificado con una URI (Uniform Resource Identifier)

• Cada tripleta se puede unir a otras, pero sigue siendo única

lunes 18 de octubre de 2010

Page 10: Jorge lopez web_apps

RDF URI

• La necesidad de acceder a un objeto específico dado un único nombre o identificador

• Provee una sintaxis común para nombrar recursos (independiente del protocolo)

• URL (Uniform Resource Locators) instancia URI

• No implica la existencia física (páginas html por ejemplo)

http://dbpedia.org/page/Ecuador

lunes 18 de octubre de 2010

Page 11: Jorge lopez web_apps

RDF REPRESENTACIÓN

Grafo RDF (Seres humanos)

RDF/XML (W3C Estándar)(Computadores)

lunes 18 de octubre de 2010

Page 12: Jorge lopez web_apps

RDF REPRESENTACIÓN

Grafo RDF (Seres humanos)

RDF/XML (W3C Estándar)(Computadores)

lunes 18 de octubre de 2010

Page 13: Jorge lopez web_apps

RDF MODELADO

lunes 18 de octubre de 2010

Page 14: Jorge lopez web_apps

RDF MODELADO

lunes 18 de octubre de 2010

Page 15: Jorge lopez web_apps

RDF MODELADO

lunes 18 de octubre de 2010

Page 16: Jorge lopez web_apps

LENGUAJES DE MODELADO

• Vocabularios

• RDF

• Ontologías

• RDFSchema: clases, jerarquías, dominios rangos y tipos de datos

• Owl: cardinalidad, restricciones, inferencias

• Mayor expresividad que RDF

• A mayor expresividad mayor razonamiento complejo

lunes 18 de octubre de 2010

Page 17: Jorge lopez web_apps

ALGUNOS VOCABULARIOS

• Foaf

• Dublin core

• GeneOntology

• GeoNames

• CiteSeer

• BBC

• DBLP

Otros 257 (Schemapedia)

13.1 billones tripletas (

Linking open data)

lunes 18 de octubre de 2010

Page 18: Jorge lopez web_apps

EJERCICIO

• Elabore un Grafo RDF que modele los siguientes tablas:

• Empresa (Nombre, dirección, teléfono, página web)

• Departamento(Nombre, empleado responsable)

• Empleado (Cédula, apellidos, nombres, email)

lunes 18 de octubre de 2010

Page 19: Jorge lopez web_apps

SPARQL

• Protocol And RDF Query Language

• Lenguaje de consulta para RDF

• Idea principal: coincidencia de patrones en un Grafo RDF

• Obtenemos subgrafos que coinciden con los patrones

lunes 18 de octubre de 2010

Page 20: Jorge lopez web_apps

EJEMPLO CONSULTA

!

"#$%!&''(!)*+,-./0!12,3!+,!%,45*67!8.497:!;/+/!,4!+<7!$7=1

!"#$%&'()"*+,-)#*(&)*&./0123!"#$%#&'$()*+

,-4))56778887./01(2/

3333333$&4+56)#

4))567788877/"2589(:#$ 4))56778887./01(2/$&4+56)#

;<==>;

)+0(?5@$")5%/2333333333333333333333333333333333

4)567788877/"258@52(

33333333333333333$&4+56)#

,-

4))567788877/"2589(:#$4))567788877/"258@52(

A#?"05?+!

"#$%!&''(!)*+,-./0!12,3!+,!%,45*67!8.497:!;/+/!,4!+<7!$7=1

!"#$%&'()"*+,-)#*(&)*&./0123!"#$%#&'$()*+

,-4))56778887./01(2/

3333333$&4+56)#

4))567788877/"2589(:#$ 4))56778887./01(2/$&4+56)#

;<==>;

)+0(?5@$")5%/2333333333333333333333333333333333

4)567788877/"258@52(

33333333333333333$&4+56)#

,-

4))567788877/"2589(:#$4))567788877/"258@52(

A#?"05?+

!

"#$%!&''(!)*+,-./0!12,3!+,!%,45*67!8.497:!;/+/!,4!+<7!$7=1

!"#$%&'()"*+,-)#*(&)*&./0123

! ./01234&2,$"5&36(7,67$&%*"&189&+6)6

! :6#(&#+$64&;6))$"(&<6)-=#(7

! 8$>-"#?$&>,?7"6;=>&*%&)=$&@,$"#$+&189&7"6;=

! .,?7"6;=>&)=6)&<6)-=&5*,"&+$>-"#;)#*(&5#$A+&6&"$>,A)

! :$6(4&7"6;=&;6))$"(>&B#C$C&189&7"6;=>&DE&F6"#6?A$>G

!"=));4DDCCCD#$%&'($

)))))))*+,-./01

lunes 18 de octubre de 2010

Page 21: Jorge lopez web_apps

ANATOMÍA DE UNA CONSULTAPREFIX foo: <…>PREFIX bar : <…>…SELECT …FROM <…>FROM NAMED <…>WHERE { …}GROUP BY …HAVING …ORDER BY …LIMIT …OFFSET …BINDINGS …

Prefijos(opcional)

Origen de datos(opcional)

Patrón de consulta

Modificadoresconsulta(opcional)

Resultados consulta

lunes 18 de octubre de 2010

Page 22: Jorge lopez web_apps

TIPOS DE CONSULTAS!"#$%&'(#)'(*+%&,-&(./",/01%*(/23(%4+"%**,#2*5

SELECT ?c ?cap (1000 * ?people AS ?pop)

!"#$%&'(#)'(/11(./",/01%*5

SELECT *

!"#$%&'(#)'(3,*62&'(&#70,2/6#2*(#2185

SELECT DISTINCT ?country

9%*)1'*(,2(/('/01%(#:(./1)%*(;,2(<=>(#"(?@ABC5

SELECT!"#$%&$'

?c ?cap ?pop

ex:France ex:Paris 63,500,000

ex:Canada ex:Ottawa 32,900,000

ex:Italy ex:Rome 58,900,000

D#2*'")&'(9EF('",+1%*GH"/+I*5

CONSTRUCT { ?country a ex:HolidayDestination ; ex:arrive_at ?capital ; ex:population ?population .}

9%*)1'*(,2(9EF('",+1%*(;,2(/28(9EF(*%",/1,J/6#2C5

ex:France a ex:HolidayDestination ; ex:arrive_at ex:Paris ; ex:population 635000000 .ex:Canada a ex:HolidayDestination ; ex:arrive_at ex:Ottawa ; ex:population 329000000 .

CONSTRUCT!"#$%&$'

K*L(MI%'I%"(#"(2#'('I%"%(/"%(/28(7/'&I%*5

ASK

9%*)1'(,*(%,'I%"(N'")%O(#"(N:/1*%O(;,2(<=>(#"(?@ABC5

true, false

ASK!"#$%&$'E%*&",0%('I%("%*#)"&%*(7/'&I%3(08('I%(H,.%2(./",/01%*5

DESCRIBE ?country

9%*)1'(,*(9EF('",+1%*(;,2(/28(9EF(*%",/1,J/6#2C(5

ex:France a geo:Country ; ex:continent geo:Europe ; ex:flag <http://…/flag-france.png> ; …

DESCRIBE!"#$%&$'

lunes 18 de octubre de 2010

Page 23: Jorge lopez web_apps

EJERCICIO

• Consultar todos los países que se encuentran registrados en la Dbpedia

• Ingresar al sitio: http://dbpedia.org/snorql

• Copiar la consulta:

SELECT ?paisWHERE { ?pais rdf:type <http://dbpedia.org/ontology/Country>}

lunes 18 de octubre de 2010

Page 24: Jorge lopez web_apps

TIPOS DE RESULTADOS

• xml

• json

• rdf/xml

• html

lunes 18 de octubre de 2010

Page 25: Jorge lopez web_apps

EJERCICIO

• Consultar en dbpedia cada país y su moneda

SELECT ?pais ?monedaWHERE { ?pais rdf:type <http://dbpedia.org/ontology/Country>. ?pais dbpprop:currencyCode ?moneda}

lunes 18 de octubre de 2010

Page 26: Jorge lopez web_apps

EJERCICIO

• Consultar el país y moneda de Ecuador

SELECT ?pais ?monedaWHERE { ?pais rdf:type <http://dbpedia.org/ontology/Country>. ?pais dbpprop:currencyCode ?moneda. ?pais rdfs:label ?nombreEng FILTER (langMatches( lang(?nombreEng), "EN" ) && ?nombreEng = "Ecuador"@en)}

lunes 18 de octubre de 2010

Page 27: Jorge lopez web_apps

MAYORES INFORMACIÓN

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

lunes 18 de octubre de 2010

Page 28: Jorge lopez web_apps

LINKED DATA

• Hoy en día:• Grandes fuentes de datos Web (Google, Yahoo, eBay,

Amazon)• Apis acceso Web (+ 1300)

• Lo que ha ocasionado:• Diferentes mecanismos de identificación• Diferentes mecanismos de acceso• Diferentes formatos

lunes 18 de octubre de 2010

Page 29: Jorge lopez web_apps

LINKED DATA

• Mejores prácticas y recomendaciones para publicar y conectar datos en la Web:

• Usar URI para identificar cosas

• Usar HTTP URIs para que las cosas sean referidas y encontradas

• Proveer información útil (metadata)

• Incluir a otras URI relacionadas

lunes 18 de octubre de 2010

Page 30: Jorge lopez web_apps

LINKED DATA

2007

lunes 18 de octubre de 2010

Page 31: Jorge lopez web_apps

LINKED DATA

lunes 18 de octubre de 2010

Page 32: Jorge lopez web_apps

LINKED DATA

lunes 18 de octubre de 2010

Page 33: Jorge lopez web_apps

LINKED DATA

•Datasets

•RDFizers, ConvertToRDF

•PublishingTools

•Semantic Web Browsers

•Semantic Web Search

lunes 18 de octubre de 2010

Page 34: Jorge lopez web_apps

LOD SPARQL ENDPOINT

• Provistos por las fuentes de datos LOD

• Enviamos la consulta SPARQL y recibimos los resultados

• Son servicios Web RESTful

• http://esw.w3.org/topic/SparqlEndpoints

lunes 18 de octubre de 2010

Page 35: Jorge lopez web_apps

CONSTRUCCIÓN DE UNA APLICACIÓN WEB

lunes 18 de octubre de 2010

Page 36: Jorge lopez web_apps

ARQUITECTURA DEL PROYECTO

clientemaps servidor

dbpedia

geonames

RPC

REST

REST

http://cafelojano.wordpress.com

lunes 18 de octubre de 2010

Page 37: Jorge lopez web_apps

HERRAMIENTAS

•Java & NetBeans•Jersey - Servicios REST•GWT4NB

•Google Web Toolkit - GWT•Google Maps•dbpedia endpoint•Geonames Web Services

lunes 18 de octubre de 2010

Page 38: Jorge lopez web_apps

CONFIGURACIÓN DEL ENTORNO DE DESARROLLO

• Descargar el plugin GWT4NB

• Dentro de NB nos dirigimos a Tools -> Plugins

• En el diálogo abrimos la pestaña Downloaded

• Hacemos click en Add plugin... y seleccionamos el archivo descargado

• Hacemos click en Install

lunes 18 de octubre de 2010

Page 39: Jorge lopez web_apps

CONFIGURACIÓN DEL ENTORNO DE DESARROLLO

• Descargar y descomprimir GWT SDK

• Descargar y descomprimir Google Maps API Library 1.1

lunes 18 de octubre de 2010

Page 40: Jorge lopez web_apps

CREACIÓN DEL PROYECTO

• Dentro de NetBeans:

• Crear un proyecto Web. Categoría Java Web, Proyecto Web Application

• Asignar el nombre VisualLod

• Seleccionar el servidor GlassFish Server 3

• Seleccionar Google Web Toolkit en Frameworks

• Configurar la ruta del GWT SDK

• En GWT Module ubicar un nombre: isummit.lod.VisualizadorLod

• Ejecutar el proyecto

lunes 18 de octubre de 2010

Page 41: Jorge lopez web_apps

GWT

• Crear aplicaciones Web con soporte AJAX programando en Java

• Permite depurar/ejecutar aplicaciones

• No es necesario aprender JavaScript

• Comunicaciones con el servidor a través de RPC

lunes 18 de octubre de 2010

Page 42: Jorge lopez web_apps

CONFIGURACIÓN DEL PROYECTO

• Dentro del paquete de código fuente buscar el archivo: VisualizadorLod.gwt

• Agregar la línea: <inherits name="com.google.gwt.maps.GoogleMaps"/>

• Dentro del proyecto agregar la librería gwt-maps.jar que se encuentra en la carpeta de Google maps API library

• Buscar el archivo welcomeGWT.html y cambiar el título de la página por iSummit Loxa 2010 - Visualizador Linked Data

• Borrar el contenido del método onModuleLoad de la clase VisualizadorLodEntryPoint

lunes 18 de octubre de 2010

Page 43: Jorge lopez web_apps

SERVICIOS WEB BASADOS REST

• Sigue los principios de la Web

• Uso de los verbos HTTP para realizar operaciones.

• Java existen varios APIs uno de ellos Jersey

• Agregar Jersey al proyecto

lunes 18 de octubre de 2010

Page 44: Jorge lopez web_apps

SERVICIO WEB COUNTRYCODE

• http://ws.geonames.org/countryCode?lat=-0.150000&lng=-78.349998&type=JSON

• {"distance":0,"countryName":"Ecuador","countryCode":"EC"}

lunes 18 de octubre de 2010

Page 45: Jorge lopez web_apps

JSON

•JSON:

•JavaScript Object Notation

•Formato ligero para el intercambio de datos

lunes 18 de octubre de 2010

Page 46: Jorge lopez web_apps

CREACIÓN DEL SERVICIOS RPC

•Click derecho en el nombre del proyecto

•Seleccionar New -> GWT RPC service

•Asignarle el nombre LodService

•Quitar la selección a Create Usage Example Class

lunes 18 de octubre de 2010

Page 47: Jorge lopez web_apps

CREACIÓN DEL MÉTODO GETCOUNTRYNAME

•Permite obtener el nombre de un país dado la latitud y longitud de cualquier punto dentro de su territorio.

•Agregar al proyecto la librería JAX RS 1.1

lunes 18 de octubre de 2010

Page 48: Jorge lopez web_apps

CREACIÓN DEL MÉTODO OBTENERDATOSDBPEDIA

•Consulta a través de REST de los datos de un país según su nombre.

•Creación de un objeto Java que se serializa para viajar del servidor al cliente.

lunes 18 de octubre de 2010