Como crear aplicaciones basadas en linked data usando lods pea kr

875 views
749 views

Published on

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

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
875
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
11
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • \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

    1. 1. Parte 2: ¿Cómo crearaplicaciones basadas en Linked Data? (Usando LODSPeaKr )
    2. 2. 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
    3. 3. Exploración por clases Es posible ver todas las clases que existen en el triple store
    4. 4. Instancias de una clase LODSPeaKr lista todas las instancias de una clase.
    5. 5. Exploración de una instancia Cualquier recurso que sea derreferenceable por LODSPeaKr es desplegado como una tabla de triples
    6. 6. 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
    7. 7. 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
    8. 8. 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.
    9. 9. Ejemplo módulo Type <- consulta1 <- consulta2
    10. 10. 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”)
    11. 11. 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
    12. 12. Example service
    13. 13. 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
    14. 14. 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
    15. 15. 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
    16. 16. Trabajo futuro• Portar a Python (posiblemente) • rdflib > ARC2• Aplicaciones Read/Write• Reusar aplicaciones
    17. 17. 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/
    18. 18. Ejemplo
    19. 19. 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
    20. 20. 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>
    21. 21. 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
    22. 22. 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>

    ×