Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Here comes the #FLOD

Here comes the #FLOD

Presentación realizada en la MediaParty 2014 en Buenos Aires, Argentina sobre FLOD, un framework par la creación de aplicaciones semánticas.

Alvaro Graves

August 29, 2014
Tweet

More Decks by Alvaro Graves

Other Decks in Technology

Transcript

  1. ¿Por qué? ¿Para qué? Tecnologías semánticas facilitan la descripción de

    datos de manera estándar en la Web Al ser schemaless permite cambios rápido y flexibles de los datos Estándares son maduros (SPARQL, RDF, OWL) y permiten manejo de datos muy diversos
  2. A Framework for Linked Open Data (FLOD) Basado en Python

    Principio 0: Maximizar lo que se puede hacer con el mínimo esfuerzo Principio 1: TODO es una URI (http://…) Principio 2: Extensibility, expect the unexpected
  3. Pre-requisitos Virtualenv Permite crear ambientes virtuales y no ensuciar la

    instalación principal de Python Git Permite mantener control de versiones de archivos (especialmente de texto)
  4. Unidad fundamental: Triple <http://graves.cl/#alvaro> <http://graves.cl/nombre> “Alvaro” . <http://graves.cl/#alvaro> <http://graves.cl/viveEn> <http://graves.cl/portland>

    . <http://graves.cl/#alvaro> <http://graves.cl/nacioEn> <http://graves.cl/santiago> . <http://graves.cl/santiago> <http://graves.cl/capitalDe> <http://graves.cl/chile> . Sujeto { Predicado { Objeto {
  5. Unidad fundamental: Triple @prefix g: <http://graves.cl/> g:alvaro g:nombre “Alvaro” .

    g:alvaro g:viveEn g:portland . g:alvaro g:nacioEn g:santiago . g:santiago g:capitalDe g:chile . Sujeto { Predicado { Objeto {
  6. Unidad fundamental: Triple @prefix g: <http://graves.cl/> g:alvaro g:nombre “Alvaro” ;

    g:viveEn g:portland ; g:nacioEn g:santiago . g:santiago g:capitalDe g:chile . Sujeto { Predicado { Objeto {
  7. Graficamente… @prefix g: <http://graves.cl/> @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. @prefix foaf: <http://xmlns.com/foaf/0.1/>.

    g:alvaro g:nombre “Alvaro” ; g:viveEn g:portland ; g:nacioEn g:santiago ; rdf:type foaf:Person . g:santiago g:capitalDe g:chile ; rdf:type g:Ciudad . g:portland g:capitalDe g:oregon ; rdf:type g:Ciudad .
  8. Lenguaje de consulta: SPARQL Es un lenguaje de consulta para

    RDF Existen muchos “SPARQL endpoints” disponibles en la Web Ej: http://dbpedia.org/sparql
  9. Result 1 { "head": { "vars": [ "estado" ] },

    "results": { "bindings": [ { "estado": { "type": "uri", "value": "http://graves.cl/chile" } } ] } }
  10. Result 2 { "head": { "vars": [ "ciudad", "estado" ]

    }, "results": { "bindings": [ { "ciudad": { "type": "uri", "value": "http://graves.cl/santiago" }, "estado": { "type": "uri", "value": "http://graves.cl/chile" } }, { "ciudad": { "type": "uri", "value": "http://graves.cl/portland" }, "estado": { "type": "uri", "value": "http://graves.cl/oregon" } } ] } }
  11. Result 3 { "head": { "vars": [ "pais" ] },

    "results": { "bindings": [ { "estado": { "type": "uri", "value": "http://graves.cl/chile" } }, { "estado": { "type": "uri", "value": "http://graves.cl/oregon" } } ] } }
  12. Ejemplo 4 prefix g: <http://graves.cl/> SELECT ?persona WHERE{ ?persona g:nombre

    “Alvaro” ; g:viveEn ?ciudad . ?ciudad g:capitalDe g:oregon . }
  13. Result 4 { "head": { "vars": [ "persona" ] },

    "results": { "bindings": [ { "persona": { "type": "uri", "value": "http://graves.cl/alvaro" } } ] } }
  14. Componentes En FLOD, cada aplicación es un conjunto de componentes

    Cada proyecto en FLOD se inicia como un repositorio git Facilita y ordena el desarrollo Hace más fácil compartir aplicaciones
  15. Creando un nuevo proyecto 1.Dominio donde se verá esta aplicación?

    http://localhost:54321/ por defecto 2.Espacio de nombre de los datos? http://mediaparty.info/ 3.Dirección del SPARQL endpoint http://dbpedia.org/sparql
  16. Componentes FLOD posee varios módulos, cada módulo hace 1 cosa

    static sirve archivos estáticos (imágenes, css) type sirve URIs desde un SPARQL endpoint service entrega datos agregados users provee acceso, login, etc. jsonupdate permite grabar via objetos JSON Cada módulo tiene 1 o más componentes (creados por el usuario)
  17. Prioridad de módulos en FLOD Cuando se pide una URI,

    FLOD prueba cada módulo en orden Una vez que un módulo acepta una URI, se deja de buscar Módulos se pueden agregar, eliminar y reordenar a gusto http://localhost:54321/foo/bar FLOD static user service types jsonwriter
  18. Datos: Escuelas en Chile Escuela Comuna Nombre Nombre retirados reprobados

    aprobados latitud longitud Disclaimer: No es una buena representación! (pero nos sirve)
  19. @PREFIX mp: <http://mediaparty.info/> . ! mp:4 a mp:Escuela ; mp:rbd

    "4" ; mp:nombre "LICEO OCTAVIO PALMA PEREZ" ; mp:comuna mp:arica ; mp:region mp:de-arica-y-parinacota- ; mp:latitud -18.47420668 ; mp:longitud -70.30826392 ; mp:total_aprobados 1195 ; mp:total_reprobados 12 ; mp:total_retirados 48 .