jorge lopez web_apps
DESCRIPTION
Taller dictado por el Ing. Jorge López en Isummit Loxa 2010TRANSCRIPT
![Page 1: Jorge lopez web_apps](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/1.jpg)
WEB APPS: CONSUMIENDO LINKED DATA
Ing. Jorge López [email protected]
I3C2
lunes 18 de octubre de 2010
![Page 2: Jorge lopez web_apps](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/13.jpg)
RDF MODELADO
lunes 18 de octubre de 2010
![Page 14: Jorge lopez web_apps](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/14.jpg)
RDF MODELADO
lunes 18 de octubre de 2010
![Page 15: Jorge lopez web_apps](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/15.jpg)
RDF MODELADO
lunes 18 de octubre de 2010
![Page 16: Jorge lopez web_apps](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/22.jpg)
TIPOS DE CONSULTAS!"#$%&'(#)'(*+%&,-&(./",/01%*(/23(%4+"%**,#2*5
SELECT ?c ?cap (1000 * ?people AS ?pop)
!"#$%&'(#)'(/11(./",/01%*5
SELECT *
!"#$%&'(#)'(3,*62&'(F,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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/24.jpg)
TIPOS DE RESULTADOS
• xml
• json
• rdf/xml
• html
lunes 18 de octubre de 2010
![Page 25: Jorge lopez web_apps](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/27.jpg)
MAYORES INFORMACIÓN
•http://www.w3.org/TR/rdf-sparql-query/
lunes 18 de octubre de 2010
![Page 28: Jorge lopez web_apps](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/28.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/29.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/30.jpg)
LINKED DATA
2007
lunes 18 de octubre de 2010
![Page 31: Jorge lopez web_apps](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/31.jpg)
LINKED DATA
lunes 18 de octubre de 2010
![Page 32: Jorge lopez web_apps](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/32.jpg)
LINKED DATA
lunes 18 de octubre de 2010
![Page 33: Jorge lopez web_apps](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/33.jpg)
LINKED DATA
•Datasets
•RDFizers, ConvertToRDF
•PublishingTools
•Semantic Web Browsers
•Semantic Web Search
lunes 18 de octubre de 2010
![Page 34: Jorge lopez web_apps](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/34.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/35.jpg)
CONSTRUCCIÓN DE UNA APLICACIÓN WEB
lunes 18 de octubre de 2010
![Page 36: Jorge lopez web_apps](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/36.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/37.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/38.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/39.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/40.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/41.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/42.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/43.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/44.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/45.jpg)
JSON
•JSON:
•JavaScript Object Notation
•Formato ligero para el intercambio de datos
lunes 18 de octubre de 2010
![Page 46: Jorge lopez web_apps](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/46.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/47.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052600/5584dedbd8b42a25468b4c9a/html5/thumbnails/48.jpg)
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