Tras ver que el estado del #opendata en Andalucia no esta muy activo a dia de hoy, aunque permanecemos a la espera de la solución que ya se ha anunciado para este año, en mi empresa hemos comenzado a desarrollar nuestras propias soluciones de apertura de datos. Una de las herramientas que hemos comenzado a utilizar y con resultados muy satisfactorios para nuestros desarrollos es Triplify.
Triplify es una herramienta que posibilita la extracción o apertura de datos en formatos abiertos de un origen de datos basado en una base de datos relacional. De todas las características que posee esta herramienta hay dos que me atraen especialmente. En primer lugar, es una herramienta muy ligera. No son más de 500 lineas de código desarrolladas en PHP, en base al algoritmo de extracción de tripletas RDF de contenidos semánticos definido en "S.Auer, S. Dietzold, J. Lehmann, S.Hellmann, D. Aumueller. Triplify: light-weight linked data publication from relational databases. In Proceedings of the 18th International Conference on World Wide Web 2009. ISBN: 978-1-60558-487-4". Y en segundo lugar, la posibilidad de extraer desde origenes de datos basados en bases de datos relacionales, sin necesidad de tener que montar consultas RDF en base a frameworks como por ejemplo Jena, sino ejecutando las propias consultas SQL que pueden estar siendo ya ejecutadas en otras plataformas web para por ejemplo generar informes.
Además el proyecto, el cual es open source, esta recibiendo bastantes contribuciones de diversas comunidades de desarrolladores que estan definiendo configuraciones, y es que para semantificar tus datos solo tienes que definir una configuración donde especificas de donde salen y que salen -me encanta esto-, para diversos productos ya conocidos como Wordpress, Drupal, phpBB, etc. y que estan reescribiendo su algoritmo en otros lenguajes como Python.
Y como no se puede hablar de algo bien sin haberlo probado antes, me he montado un pequeño ejemplo en base a esta plataforma de tal forma que he realizado una apertura de datos de la forja de proyectos de la Consejeria de Empleo basada en Redmine. Para esto he definido una configuración donde especifico la cadena de conexión a la base de datos de la instancia de Redmine donde tenemos dando servicio nuestra forja de proyectos - en este caso MySQL (Triplify permite mas formatos gracias a que usa la interfaz PDO) y a continuación he definido a modo de ejemplo una consulta muy sencilla donde se me proporciona el listado de proyectos que tenemos registrados en nuestra plataforma. La consulta es:
1 2 3 4 | $triplify['queries']=array( 'project'=>"SELECT p.id AS id, p.name AS 'foaf:name' FROM projects p", ); |
A continuación he creado una pequeña aplicación cliente desde la cual invocar la consulta para extraer el listado de proyectos tanto en formato abierto RDF/N3, como Json. Esta me devuelve el listado de proyectos que estan disponibles en nuestra plataforma que pueden ser visualizados (previa autenticación con LDAP corporativo)
Una vez seleccionado el formato que quiero visualizar, se invoca a la consulta anteriormente mencionada para obtener el listado de proyectos y proporcionarlo tal y como corresponda. El formato de salida para el primero de los proyectos (Agata 2.x) es el siguiente si usamos RDF/N3:
1 2 3 4 5 | <http://10.231.55.9/opendata/triplify/project/203> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://10.231.55.9/vocabulary/project>. <http://10.231.55.9/opendata/triplify/project/203> <http://xmlns.com/foaf/0.1/name> "Agata 2.x" . |
Y en JSON:
1 2 3 4 5 6 7 8 | "http://10.231.55.9/opendata/triplify/project/203":{ "http://www.w3.org/1999/02/22-rdf-syntax-ns#type":{ "value":"http://10.231.55.9/vocabulary/project", "type":"uri" },"http://xmlns.com/foaf/0.1/name":{ "value":"Agata 2.x", "type":"literal"} } |
Con lo que podemos ver que gracias a la introducción de Triplify en nuestro stack tecnologico, llevar a cabo la apertura de datos públicos es una realidad total y absoluta.
Compárteme en:
0 comentarios:
Publicar un comentario