Fundación CTIC

Archivo etiqueta rdf

Data.gov cumple un año sumándose a la Web 3.0

El primer sitio conocido como de datos públicos abiertos, data.gov, del gobierno federal americano, acaba de cumplir un año. La novedad más significativa es que se ha sumado a la Web 3.0, la del Linked Data o de la Web Semántica con una sección específica sobre la materia, con datasets disponibles en RDF y varias aplicaciones ejemplo de uso. Como sabéis, en Open Data @ CTIC creemos firmemente en esta aproximación y hemos ido ofreciendo varios artículos sobre la misma.

data.gov con linked data

, ,

No hay Comentarios

Publicamos los primeros datasets del sector público: la oferta de formación ocupacional

En Open Data @ CTIC hemos ido contando en las semanas anteriores algunas de las razones estratégicas para embarcarse en un proyecto de reutilización de datos del sector público, así como varios aspectos técnicos y no técnicos del camino a seguir que proponemos como el más adecuado. Hemos ofrecido una prueba de concepto de todo lo expuesto utilizando como modelo los catálogos de datos abiertos que varias administraciones han publicado a nivel mundial. Como os habréis podido imaginar, hay mucho más en lo que hemos estado trabajando, y por fin ha llegado el momento de hablar de ello.

Hemos modelado la oferta de formación ocupacional del Servicio Público de Empleo del Principado de Asturias. Se resume en tres datasets: las acciones formativas (o cursos), los centros donde se imparten dichos cursos, y las organizaciones que imparten dichos cursos. Éstos a su vez constituyen un super-dataset.

los tres datasets de la formacion ocupacional en el cubo de la web semántica

Hemos trabajado con una foto de los datos que tomamos en Julio de 2009. Te puedes descargar todos los datos en RDF/XML en bruto (como pedía Tim Berners-Lee con su Raw Data Now!). Pero hay más formatos, o como parece ser el estándar de facto:

Nombre Área Última Actualización Formatos
Formación Ocupacional 2009 Servicio Público de Empleo, Principado de Asturias 2009-07-24 RDF/XML
XML
HTML
JSON
Excel

Por supuesto, también tienes nuestro SPARQL endpoint para filtrar los datos a tu antojo y, si te preguntas como interpretarlos, está también disponible el vocabulario que hemos utilizado para modelar toda la oferta formativa.

Para acabar, por ahora, también hemos creado algunas visualizaciones de ejemplo, en las que puedes filtrar los datos visualmente y ver los resultados en un mapa, una línea de tiempo e incluso descargarte los cursos que te interesen a tu calendario (en formato iCal).

visualizaciones de los datos en mapa, línea de tiempo y calendario

visualizaciones de los datos en mapa, línea de tiempo y calendario

¿Quién da más? Nosotros. Hay mucho, mucho más que contar sobre estos datasets, y muchas más cosas en las que estamos trabajando intensivamente. Atentos a los próximos artículos.

, , , , ,

7 Comentarios

Reutilización de datos desde una aplicación Java

El uso de estándares abiertos para la publicación de datos permite que, sea cual sea la tecnología utilizada, se puedan crear de forma sencilla aplicaciones o mashups que aprovechen y combinen la información disponible. En posts anteriores hemos comentado los pasos a seguir para desarrollar una aplicación que se alimente de datos públicos, hoy vamos a ver como realizar esto utilizando la tecnología Java.

Descripción del ejemplo

Desarrollo de una aplicación web Java que liste los catálogos de datos públicos disponibles y genere un mapa señalando su localización. El listado de catálogos se obtendrá realizando una consulta a un SPARQL endpoint.

Tecnologías necesarias

  • Jena: Ofrece una API que permite trabajar y realizar consultas sobre modelos o grafos RDF.
  • ARQ: Entre otras cosas, su API permite realizar consultas a servicios SPARQL remotos.

Implementación

Paso 1: Se define la consulta SPARQL que devuelve el conjunto de datos que necesitamos y se ejecuta contra el SPARQL endpoint:


QueryExecution qe = QueryExecutionFactory.sparqlService(sparql_enpoint_uri, query);
ResultSet rs= qe.execSelect();

La consulta que se ha ejecutado es:

prefix ds: <http://data.fundacionctic.org/vocab/catalog/datasets#>
prefix  dcterms: <http://purl.org/dc/terms/>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix foaf: <http://xmlns.com/foaf/0.1/>  
SELECT * FROM <http://data.fundacionctic.org/dataset-catalog>
WHERE {
 ?catalog a ds:Catalog;
 dcterms:spatial ?uriGeonames;
 dcterms:description ?description;
 rdfs:label ?name;
 foaf:homepage ?homepage.
 FILTER langMatches( lang(?name), 'es' )
 FILTER langMatches( lang(?description), 'es' )
}

Este es el SPARQL endpoint sobre el que se ha ejecutado la consulta.

Paso 2: Una vez obtenidos los datos se recorre el conjunto de resultados y para cada uno de ellos se recupera su nombre, descripción, URL de su homepage y el identificador del recurso de Geonames que indica su localización.

A continuación se obtienen los datos del recurso de Geonames para obtener los valores necesarios para la geolocalización:


Model m = ModelFactory.createDefaultModel();
m.read(uri_geonames_resource);
// creación de las propiedades para obtener la latitud y la longitud
Property lat = m.createProperty("http://www.w3.org/2003/01/geo/wgs84_pos#", "lat");
Property lon = m.createProperty("http://www.w3.org/2003/01/geo/wgs84_pos#", "long");
// obtención del valor de las propiedades
Resource geoName = m.getResource(uriResource);
lat= geoName.getProperty(lat);
lon= geoName.getProperty(lon);

Paso 3: Se muestra el listado de catálogos y se crea un mapa utilizando la API Javascript de GoogleMaps en el que se muestra su localización.


var map = new GMap2(document.getElementById("map"));
map.setCenter( new GLatLng(0,0), 1);
// para cada punto se genera un "marker"
var point= new GLatLng( lat, lon );
map.addOverlay(marker);

En estos tres sencillos pasos se ha implementado una aplicación que combina recursos remotos para obtener datos y genera una visualización en un mapa. Este es el resultado obtenido

, , , ,

No hay Comentarios

Disponibles los catálogos de datasets del sector público en RDF

Ya se pueden consultar los catálogos de conjuntos de datos del sector público accesibles desde nuestro SPARQL endpoint. Todos los catálogos están definidos a través de vocabularios estándar como Dublin Core o FOAF y para la representación concreta de cada uno de ellos se utiliza una instancia de la clase http://data.fundacionctic.org/vocab/catalog/datasets#Catalog.

Para más información, consulta el esquema RDF del Vocabulario de Catálogos de Datasets.

Ejemplo de consulta SPARQL

Para visualizar las tripletas RDF de todos los catálogos disponibles, puede hacerse la siguiente llamada sobre el SPARQL endpoint:


prefix cat:<http://data.fundacionctic.org/vocab/catalog/datasets#>
select *
from <http://data.fundacionctic.org/dataset-catalog>
where
{
  ?sujeto a cat:Catalog;
        ?predicado ?objeto.
}

Tras hacer la consulta en el SPARQL endpoint, se obtendrían las tripletas de cada uno de los catálogos (en HTML).

Visualización de los catálogos

Estos resultados pueden ser tratados por cualquier aplicación para construir el catálogo según las necesidades específicas. Hemos construido un simple ejemplo donde se muestra un listado de todos los catálogos de datasets del sector público (en inglés) almacenados. Nótese que se genera instantáneamente haciendo llamadas a Geonames para enriquecer los resultados, por lo que tiene cierto tiempo de carga.

Si tienes constancia de algún catálogo de datasets de información del sector público que no esté incluido, envíanos un correo a opendata@fundacionctic.org y lo incluiremos en la base de datos.

, , , ,

No hay Comentarios

Catálogos de Datasets RISP en RDF

Un conjunto de datos o dataset es una colección de datos publicados, que están disponibles en formatos abiertos en la Web. Para que estos datasets puedan conectarse con otros, deberían tener sus datos identificados por direcciones Web únicas (URIs). Uno de los principales problemas en la reutilización de datos en formatos abiertos es la dificultad de encontrar esos datos que están publicados en algún lugar de la Web debido a la carencia de repositorios homogéneos de los conjuntos de datos (datasets) y la falta de actualización de los mismos.

Con un poco de experiencia es fácil llegar a los conjuntos de datos que se necesita, por ejemplo, navegando por los datasets de la nube de Linked Open Data, o explorando catálogos como el del wiki de SWEO del W3C.

Los índices de conjuntos de datos que expresan sus conjuntos de forma tabular (tipo data.gov) pueden considerarse la primera versión de presentación de esta información. Una versión 2.0 debería ser la publicación del propio catálogo mediante XML o RDF en un fichero descargable o, que se pudiesen consultar automáticamente, a través de interfaces tipo SPARQL endpoints, como se detalla en este post y posteriores.

Descripción de los catálogos en RDF

El descubrimiento y la utilización de los datasets existentes es bastante sencillo si se conoce donde buscarlos, pero ésto se complica si se pretende hacer de forma automática. Una solución a la automatización podría ser la definición de catálogos y de los conjuntos de datos en sí mediante tecnologías de la Web Semántica. Para ello se necesitaría modelar un vocabulario con RDF-Schema o en OWL y, posteriormente, describir los catálogos y sus detalles. Finalmente, tanto el vocabulario como las descripciones deberían ser publicadas para que cualquiera pudiera reutilizarlas o enriquecerlas.

El Vocabulario para conjuntos de datos enlazados (voID) es un vocabulario y conjunto de recomendaciones que facilita el descubrir y reutilizar conjuntos de datos de forma automática. Este vocabulario especifican clases como Dataset o propiedades, como numberOfTriples (número de tripletas especificadas en el dataset).

Para describir los catálogos se utilizan los vocabularios estándar (Dublin Core, FOAF, etc.), además de usar un vocabulario propio que, entre otros términos, contiene la clase Catalog, para representar a los Catálogos de conjuntos de datos. Para indicar que ciertos conjuntos de datos (void:Dataset) pertenecen al catálogo se puede especificar de la siguiente forma:

<Dataset> memberOf <Catalog>

Ejemplo de descripción de un Catálogo

Cada catálogo de datasets tiene una serie de información básica, como es su nombre, descripción, licencia o términos de uso de los datos, fecha de primera publicación, o la página de entrada donde se encuentra el índice de los datasets (o el endpoint de los servicios de sus APIs). A continuación se declara en notación N3 la definición del catálogo de San Francisco, EEUU.

Se declaran los espacios de nombres para que la representación sea más legible:


@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@prefix dcterms: <http://purl.org/dc/terms/>.
@prefix cat: <http://data.fundacionctic.org/vocab/catalog/datasets#>.

Se describe el catálogo en sí:


<http://data.fundacionctic.org/dataset-catalog/datasf.org> a cat:Catalog ;
         dcterms:identifier "datasf.org" ;
         foaf:homepage <http://datasf.org> ;
         rdfs:label "Catálogo de la Ciudad y del Condado de San Francisco (EEUU)" ;
         dcterms:title "Catálogo de la Ciudad y del Condado de San Francisco (EEUU)" ;
         dcterms:description "Repositorio de datasets de la Ciudad y del Condado de San Francisco" ;
         dcterms:language "en" ;
         dcterms:issued "2009-08-19" ^^http://www.w3.org/2001/XMLSchema#date ;
         dcterms:license <http://datasf.org/page.php?page=TOU> ;
         dcterms:spatial <http://sws.geonames.org/5391997/> .

En breve publicaremos el listado de los catálogos de datasets, modelado en RDF y con su correspondiente endpoint SPARQL.

,

No hay Comentarios