• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Como crear aplicaciones basadas en linked data usando lods pea kr
 

Como crear aplicaciones basadas en linked data usando lods pea kr

on

  • 715 views

Segunda parte de la presentación que muestra un ejemplo muy simple para crear un portal sobre tesis y estudiantes usando LODSPeaKr

Segunda parte de la presentación que muestra un ejemplo muy simple para crear un portal sobre tesis y estudiantes usando LODSPeaKr

Statistics

Views

Total Views
715
Views on SlideShare
715
Embed Views
0

Actions

Likes
2
Downloads
8
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Como crear aplicaciones basadas en linked data usando lods pea kr Como crear aplicaciones basadas en linked data usando lods pea kr Presentation Transcript

  • Parte 2: ¿Cómo crearaplicaciones basadas en Linked Data? (Usando LODSPeaKr )
  • LODSPeaKr• Framework para crear aplicaciones basadas en Linked Data• Permite publicación de datos en pocos minutos• Simplifica la exploración de datos• Permite crear APIs, webapps móviles, portales de datos, etc.• Requisito: Tener datos en un SPARQL endpoint
  • Exploración por clases Es posible ver todas las clases que existen en el triple store
  • Instancias de una clase LODSPeaKr lista todas las instancias de una clase.
  • Exploración de una instancia Cualquier recurso que sea derreferenceable por LODSPeaKr es desplegado como una tabla de triples
  • Módulos• Existen varios módulos• Al servir una URI, LODSPeaKr chequea en orden cuál va a ser ejecutado, dependiendo de distintas variables• Sólo se ejecuta un por cada URI
  • Módulo: Type• Principio: Todas las URIs del mismo tipo debiesen ser servidas similarmente • Ej: Todas las personas tienen apellido, mientras que todos los computadores tienen RAM • Queremos mostrar a las personas de manera uniforme, y no necesariamente igual a los computadores
  • Módulo: Type (2)• Cuando se pide una URI, LODSPeaKr busca su rdf:type en triple store• En base al tipo se pueden definir multiples consultas SPARQL y templado de cómo mostrar los datos (en HTML u otro)• Si no tiene tipo, se asume rdfs:Resource• Si una URI pertenece a más de una clase, se puede establecer prioridad sobre componentes y sólo se usa uno.
  • Ejemplo módulo Type <- consulta1 <- consulta2
  • Módulo: Service• Principio: Entregar información agregada debiese ser fácil• Service permite crear URIs que entreguen información agregada (Ej. lista de personas cuyo nombre empiece con “A”)
  • Módulo: Service (2)• Si URI es un servicio, se ejecutan las consultas definidas por el usuario • Ej: “/classes” muestra todas las clases en endpoint• Service acepta argumentos en la URI de la forma /servicio/arg0/arg1/.../argn
  • Example service
  • Multiples formatos• Usuario define qué y cómo entregar datos en HTML, LODSPeaKr se encarga del resto usando Content Negotiation • Reescritura de consultas SPARQL (SELECT -> CONSTRUCT) • RDF/XML, Turtle, N-Triples, RDF/JSON• Es posible definir consultas para cada formato (pero es mala idea)• Es posible definir vistas para cada formato (pero es mala idea, excepto JSON)• Ej: Servir BIBTEX desde Linked Data
  • Otras características• ¿Cómo usar URIs http://otrodominio/... en mi sitio http:// midominio/? • LODSPeaKr provee espejado (mirroring) de URIs• ¿Cómo usar multiples endpoints? • LODSPeaKr permite ejecutar consultas SPARQL en diferentes endpoints • Es posible usar resultados intermedios en nuevas consultas• Templado basado en Haanga, similar a pseudo código
  • Conclusiones• LODSPeaKr es un framework Open Source con múltiples funcionalidades para crear aplicaciones basadas en Linked Data• Las cosas simples debiesen ser simples • Publicar datos en 5 estrellas• Las cosas difíciles debiesen ser posibles • Módulos por tipos, servicios • Templado por tipo, usando Haanga • Multiples endpoints, múltiples formatos
  • Trabajo futuro• Portar a Python (posiblemente) • rdflib > ARC2• Aplicaciones Read/Write• Reusar aplicaciones
  • Ejemplos http://lodspeakr.org• Global Hunger Index: • http://graves.cl/ghi• Linking Open Government Data portal • http://logd.tw.rpi.edu• Farmers Market • http://graves.cl/farmersmarket• ESSI-LOD webapp • http://aquarius.tw.rpi.edu/essi-lod/
  • Ejemplo
  • Se pueden crear componentes para todas las instancias de un clase (definida via rdf:type)Bash $ utils/lodspk.sh create type ex:Professor components/ | ->types/File directory | ->ex:Professor/ | ->html.template | ->queries/ | ->sp.query | ->po.query
  • Componente para ex:ProfessorSELECT ?alumno ?nombreAlumno WHERE{ ?tesis ex:hasAdvisor <{{uri}}> . alumnos.query ?alumno ex:hasThesis ?tesis; rdfs:label ?nombreAlumno .}SELECT ?nombre WHERE{ details.query <{{uri}}> rdfs:label ?nombre}<h2>{{first.details.nombre.value}}</h2> html.template<div> <h4>Alumnos</h4> <ul> {%for i in models.alumnos%} <li> <a href={{i.alumno.value}}>{{i.nombreAlumno.value}}</a> </li> {%endfor%} </ul></div>
  • Componentes: Servicios Es posible definir servicios que entregar datos agregados (Ej: http://mysite.com/classes)Bash $ utils/lodspk.sh create service totalTesis components/ |File directory ->service/ | ->totalTesis/ | ->html.template | ->queries/ | ->main.query
  • Componente para totalTesisSELECT (COUNT(DISTINCT ?tesis) AS ?total) ?profesor ?nombreProfesorWHERE { ?tesis ex:hasAdvisor ?profesor . ?profesor rdfs:label ?nombreProfesor .}GROUP BY ?profesor ?nombreProfesor main.query<ul> {% for row in models.main %} html.template <li> <a href="{{row.profesor.value}}"> {{row.nombreProfesor.value}} </a> ({{row.total.value}}) </li> {% endfor %}</ul><div> {{models.main|GoogleVizPieChart:"nombreProfesor,total"}}</div>