WEB APPS: CONSUMIENDO LINKED DATA Ing. Jorge López Vargas [email protected] I3C2 lunes 18 de octubre de 2010
Jun 20, 2015
WEB APPS: CONSUMIENDO LINKED DATA
Ing. Jorge López [email protected]
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&'(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
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