jorge lopez web_apps

Post on 20-Jun-2015

498 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Taller dictado por el Ing. Jorge López en Isummit Loxa 2010

TRANSCRIPT

WEB APPS: CONSUMIENDO LINKED DATA

Ing. Jorge López Vargasjalopez2@utpl.edu.ec

I3C2

lunes 18 de octubre de 2010

AGENDA

•Web Semántica

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

•SPARQL

•Linked Data

lunes 18 de octubre de 2010

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

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

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

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

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

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

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

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

RDF REPRESENTACIÓN

Grafo RDF (Seres humanos)

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

lunes 18 de octubre de 2010

RDF REPRESENTACIÓN

Grafo RDF (Seres humanos)

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

lunes 18 de octubre de 2010

RDF MODELADO

lunes 18 de octubre de 2010

RDF MODELADO

lunes 18 de octubre de 2010

RDF MODELADO

lunes 18 de octubre de 2010

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

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

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

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

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

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

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

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

TIPOS DE RESULTADOS

• xml

• json

• rdf/xml

• html

lunes 18 de octubre de 2010

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

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

MAYORES INFORMACIÓN

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

lunes 18 de octubre de 2010

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

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

LINKED DATA

2007

lunes 18 de octubre de 2010

LINKED DATA

lunes 18 de octubre de 2010

LINKED DATA

lunes 18 de octubre de 2010

LINKED DATA

•Datasets

•RDFizers, ConvertToRDF

•PublishingTools

•Semantic Web Browsers

•Semantic Web Search

lunes 18 de octubre de 2010

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

CONSTRUCCIÓN DE UNA APLICACIÓN WEB

lunes 18 de octubre de 2010

ARQUITECTURA DEL PROYECTO

clientemaps servidor

dbpedia

geonames

RPC

REST

REST

http://cafelojano.wordpress.com

lunes 18 de octubre de 2010

HERRAMIENTAS

•Java & NetBeans•Jersey - Servicios REST•GWT4NB

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

lunes 18 de octubre de 2010

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

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

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

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

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

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

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

JSON

•JSON:

•JavaScript Object Notation

•Formato ligero para el intercambio de datos

lunes 18 de octubre de 2010

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

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

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

top related