Mostrando entradas con la etiqueta triplify. Mostrar todas las entradas
Mostrando entradas con la etiqueta triplify. Mostrar todas las entradas

Exponiendo datos

miércoles, 12 de enero de 2011 0 comentarios
Tal y como comentaba en el anterior post, a la hora de decidir como exponer datos en un website corporativo suelen existir muchas alternativas: mostrar estos datos directamente en el propio sitio web en HTML estático o generado a través de una o varias consultas a una base de datos, subir documentos presentando esos datos estáticos disponibles para su descarga en distintos formatos, tanto propietarios como libres en el mejor de los casos, autogenerar estos documentos mediante herramientas de reporting, etc. Siguiendo con esas pautas, tu posición dentro del ranking The five-stars of Open Linked Data, sería como mucho de tres estrellas, lo que determina que publicas datos en tu website corporativo de forma estructurada y disponible en formatos abiertos.   

Para llegar a las cinco estrellas, necesitas introducir herramientas que te permitan la semantificación de tus contenidos. Es decir, aquellos que puedes identificar mediante URLs y que pueden enlazarse, consumirse, exponerse con otros datos y otras plataformas. Aqui Triplify vuelve a ayudarnos, ya que tal y como vimos, nos posibilita que la información extraida se pueda disponer en formatos RDF/n3 y JSON entre otros. 

Ahora hay que decidir como exponer estos datos. Al margen del diseño de la solución final, de como vaya a presentarse el catalogo de datos de una entidad, y del conjunto de datos que conforman ese catalogo, hay que proporcionar el listado de formatos disponible para cada uno de estos datos. Así pues vamos a volver a realizar un ejercicio práctico. En esta ocasión me he decidido a extraer y exponer el listado de usuarios activos de una aplicación propia de gestión de tareas denominada yourtask (uno de mis primeros proyectos web donde suelo cacharrear). Para ello he definido la siguiente configuración para extraer dichos datos:

1
2
3
4
$triplify['queries']=array(
 'users'=>"SELECT u.id AS id, u.usuario AS 'foaf:name'
   FROM usuarios u",
);

Con esto como sabemos es suficiente para definir como se llevará a cabo la extracción de los datos deseados. Ahora vamos a definir en esta misma configuración como se expondrán dichos datos, para ello fundamentalmente nos pararemos en dos: LinkedDataDepth y license

LinkedDataDepth: Con este parámetro configuramos el nivel de la URL donde expondremos los datos, con tres posibles valores: 0 que identifica que la exposición vendra dada cuando se acceda a triplify/ en el servidor; 1 que identifica que la exposición vendra dada por un nivel más de profundidad sobre la URL anterior, en este caso para consultar usuarios triplify/users/; y 2 para acceder a una instancia concreta a traves de su URL, por ejemplo triplify/users/1/. Para nuestro ejemplo hemos decidido exponer todos los usuarios con el nivel de profundidad que se determina por defecto (0)

1
$triplify['LinkedDataDepth']='0';

license:con este parametro especificamos con que licencia vamos a exponer nuestros datos en la web. Hay que decidir con el cliente que licencia desea. Para este ejemplo usare Creative Commons Attribution.

1
$triplify['license']='http://creativecommons.org/licenses/by/3.0/us/';

Tras esto, ya solo nos falta decidir si queremos publicar nuestros datos en algún otro formato, por ejemplo: un listado de los usuarios que se proporcione en un fichero .csv y en pdf. Explicar cómo autogenerar estos listados esta fuera del proposito de este post, ya que no requiere de semantificación de contenidos y es algo habitual en las soluciones que existen hoy dia.

Finalmente, publicamos nuestro catalogo en una URL determinada. A continuación vamos a hacer uso de la plataforma de exposición de datos semánticos de Triplify para ver si efectivamente nuestros datos estan expuestos mediante la identificación de los mismos bajo una URL, requisito indispensable para disponer de las cinco estrellas.


En este caso hemos publicado nuestro catalogo de datos para yourtask, de tal forma que el listado de usuarios esta disponible en RDF/N3 y JSON. Vamos a ver si efectivamente hemos expuesto nuestros datos de forma semantica mediante la plataforma de exposición de Triplify. Para esto accedemos a la siguiente URL:


Una vez procesado el RDF vemos que efectivamente se muestran los datos de los usuarios de la plataforma. Para ver si estos datos son validos vamos a exponer consultas SPARQL sobre los mismos que probaremos mediante Rasqal. En este caso construimos la siguiente consulta SPARQL:

1
2
3
4
5
6
7
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT DISTINCT ?name
WHERE {
?x foaf:name ?name
}
ORDER BY ?name

Dándonos el resultado deseado. Con esto hemos concluido nuestra exposición de datos y hemos demostrado que efectivamente nuestra solución esta completamente preparada para poder ser consumida por terceros. Esto lo veremos en un próximo post.


Compárteme en: Eskup Facebook Tuenti Meneame Bitacoras Google Yahoo Windows Live

Requisitos de una buena solución #opendata

0 comentarios
En el anterior post mostramos cómo podemos diseñar una solución #opendata ligera integrando dentro del stack tecnológico de la misma herramientas opensource tales como Triplify para extraer datos de distintos orígenes. Pero una buena solución #opendata no solo debe ser capaz de extraer información en diversos formatos sino que además, en base a la especificación del W3C, debe cumplir con dos requisitos fundamentales más que son: exponer y generar valor. Definimos estos requisitos de la siguiente forma:

  • Extraer: una solución #opendata debe ser capaz de extraer datos de distintas fuentes de datos con independencia de la plataforma y ser capaz de proporcionárnoslos en los formatos abiertos adecuados que correspondan con las necesidades de categorización que se estimen oportunas. Esta categorización se basa en un sistema de ranking basado en estrellas, como los hoteles de una a cinco estrellas, donde se mide el grado de apertura de tus datos. Esto quiere decir que el cliente que opte por una solución de este tipo será el que determine cuantas estrellas quiere tener. Llegar a tener hasta tres estrellas es bastante facil y no exige demasiado. Con Triplify en nuestro stack llegar a las cinco estrellas es una realidad.
  • Exponer: una solución #opendata debe ser capaz de exponer los datos previamente extraidos y que esa exposición de datos asegure que los datos que se estan consultando en ese momento datos en tiempo real. Obviando, que no olvidando, esta ultima característica, la exposición de datos en una solución categorizada entre una y tres estrellas suele ser muy habitual para nosotros y estamos acostumbrados a ver en muchos websites institucionales información estadística de interes o datos relevantes disponibles en diversos formátos y catalogados en función de su naturaleza. Estos datos, en el mejor de los casos, son datos dinámicos generados en tiempo real en distintos formatos a traves de plataformas de reporting como JasperReport. En el peor de los casos, existe un equipo humano detras que de forma periodica genera esos datos y los va poniendo a disposición del ciudadano, siendo entonces considerados datos estáticos. El objetivo del siguiente post será explicar como exponer datos para soluciones de cuatro ~ cinco estrellas.
  • Generar valor: Una solución #opendata debe ser capaz de proporcionar a terceros la posibilidad de generar valor a partir de los datos expuestos. Recordando la definición de trasparencia dentro del contexto de Open Government, los ciudadanos, organismos terceros, etc. deben ser capaz no solo de consultar estos datos a través de la exposición de los mismos, sino ser capaces de consumirlos generando valor mediante estos. Veremos en un post próximo un ejemplo de generación de valor. 

Tras haber detallado esto, nos vemos en el siguiente post para ver cómo a partir de datos extraidos podemos exponer nuestros datos.

Compárteme en: Eskup Facebook Tuenti Meneame Bitacoras Google Yahoo Windows Live

#opendata con Triplify

miércoles, 5 de enero de 2011 0 comentarios
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: Eskup Facebook Tuenti Meneame Bitacoras Google Yahoo Windows Live