CKAN (Jaca), David Portoles

25
Formación en CKAN, Jaca, 26 de septiembre de 2014 “Jacathon: Hack the Pyrenees” David Portolés Rodríguez Idearium Consultores Formación en CKAN para acceso a catálogo de datos abiertos de Aragón Open Data 1

description

CKAN

Transcript of CKAN (Jaca), David Portoles

Page 1: CKAN (Jaca), David Portoles

Formación en CKAN, Jaca, 26 de septiembre de 2014

“Jacathon: Hack the Pyrenees”

David Portolés RodríguezIdearium Consultores

Formación en CKAN para acceso a catálogo de datos abiertos de Aragón Open Data

1

Page 2: CKAN (Jaca), David Portoles

Formación en CKAN, Jaca, 26 de septiembre de 2014

Introducción a Aragón Open Data

Acceso a contenidos

Negociación de contenido

API de CKAN

Ejercicios

2

Índice

Page 3: CKAN (Jaca), David Portoles

Formación en CKAN, Jaca, 26 de septiembre de 2014

¿Qué es AOD?

3

Portal de datos abiertos del Gobierno de Aragón:

• Conjuntos de datos abiertos (dataset's) + descripción de los mismos (metadatos).

• Además:

Portal con información.

Ontologías.

AragoPedia.

AragoDBPedia.

Aragon Social Data.

Presupuestos.

Page 4: CKAN (Jaca), David Portoles

Formación en CKAN, Jaca, 26 de septiembre de 2014

¿A quién va dirigido AOD?

4

Page 5: CKAN (Jaca), David Portoles

Formación en CKAN, Jaca, 26 de septiembre de 2014

Terminología

5

AOD almacena conjuntos de datos (dataset)

Cada dataset contiene uno o varios recursos (distribuciones)

El conjunto de todos los datasets es el catálogo de AOD.

Se cataloga (en metadatos) tanto catálogo, datasets como recursos.

Cada versión del metadato del dataset, se le llama revisión.

Page 6: CKAN (Jaca), David Portoles

Formación en CKAN, Jaca, 26 de septiembre de 2014

Estructura de AOD

6

Esquema de URIs siguiendo la Norma Técnica de Interoperabilidad (NTI) + extensión propia según informe de experto:

URI base: http://opendata.aragon.es

Sección URI

Catálogo de datos /catalogo

Taxonomía sectores primarios /catalogo/turismo (...)

Dataset /catalogo/indice-de-precios-hoteleros

Ontología /def

Taxonomías, diccionarios... (SKOS) /kos (no hay)

Instancias de conceptos modelados /recurso

Portal /portal

AragoPedia /aragopedia

Catálogo por tipo de dato /catalogo/fotos (...)

Catálogo por tema y tipo /catalogo/medio-ambiente/fotos (...)

NTI

Extensión

CKAN

Page 7: CKAN (Jaca), David Portoles

Formación en CKAN, Jaca, 26 de septiembre de 2014

Taxonomía temas (NTI)

7

La NTI define los temas de sector primario que debe haber en este tipo de portales:

Page 8: CKAN (Jaca), David Portoles

Formación en CKAN, Jaca, 26 de septiembre de 2014

Tipos de dataset

8

Extensión a NTI para representar tipos de dataset.

Combinable con temas taxonomía primaria.

Existe taxonomía de información estadística (IAEst).

Sección URIHojas de cálculo /catalogo/hojas-de-calculo

Texto plano /catalogo/texto-plano

Mapas /catalogo/mapas

Fotos /catalogo/fotos

Canales RSS /catalogo/rss

Información estadística /catalogo/informacion-estadistica

Tema y tipo /catalogo/{tema}/{tipo}

taxonomia estadística hasta nivel 3 /catalogo/informacion-estadistica/{taxonomia estadística hasta nivel 3}

Page 9: CKAN (Jaca), David Portoles

Formación en CKAN, Jaca, 26 de septiembre de 2014

Acceso a contenidos de AOD

9

A través del portal:

• Para consulta de datos por ciudadanos y usuarios esporádicos.

• Para edición de datos esporádica / ocasional.

Page 10: CKAN (Jaca), David Portoles

Formación en CKAN, Jaca, 26 de septiembre de 2014

Acceso a contenidos de AOD

10

Page 11: CKAN (Jaca), David Portoles

Formación en CKAN, Jaca, 26 de septiembre de 2014

Acceso a contenidos de AOD

11

A través de API:

• Para desarrolladores y reutilizadores.

• Para edición masiva.

Más info en: http://opendata.aragon.es/portal/desarrolladores

Sección URI del API

Catálogo de datos /catalogo/api

AragoPedia /aragopedia/api.php

AragoDBPedia /recurso

Aragón Social Data /socialdata

Page 12: CKAN (Jaca), David Portoles

Formación en CKAN, Jaca, 26 de septiembre de 2014

Metadatos RDF

12

CKAN tiene un modelo de datos propio independiente (se ha mapeado).

Los metadatos en RDF se generan siguiendo NTI y DCAT-AP Europeo.

Para acceder a los metadatos RDF de cualquier dataset basta con añadir al final de la URI el sufijo .rdf

http://opendata.aragon.es/catalogo/estadistica-bibliotecas-2010.rdf

Hay un dataset “especial” que ofrece el catálogo de todos los datasets:

http://opendata.aragon.es/catalogo/catalogo.rdf

Además de los campos obligatorios por NTI y DCAT-AP, se han incluido otros que pueden ser de interés y previstos en otras especificaciones.

Incluso hay otros campos que no encajan con ninguna especificación, pero que no se desea perder:

• A sabiendas que la información semántica que proporcionan es pobre.

• Aparecen como etiquetas Relation.

Para la generación de los RDF se ha seguido las indicaciones de un informe de conformidad a la NTI realizado por un experto independiente y disponible en:

http://opendata.aragon.es/public/documentos/Informe_NTI_Aragon_OpenData_v31-01-14.pdf

Page 13: CKAN (Jaca), David Portoles

Formación en CKAN, Jaca, 26 de septiembre de 2014

Metadatos RDF (Catálogo)

13

Metadato NTI Propiedad RDF

REQUERIDOS Meta.

Nombre dct:title

Descripción dct:description

Órgano publicador dct:publisher

Fecha de creación dct:issued

Fecha de actualización dct:modified

Idioma(s) dc:languagedct:language

Temáticas dcat:themeTaxonomy

Página Web foaf:homepage

Términos de uso dct:license

Documento(s) y recurso(s) dcat:dataset

OPCIONALES

Tamaño del catálogo dct:extent

Identificador dct:identifier

Cobertura geográfica dct:spatial

Derechos dct:rights

Registro dcat:record

Page 14: CKAN (Jaca), David Portoles

Formación en CKAN, Jaca, 26 de septiembre de 2014

Metadatos RDF (Dataset)

14

Metadato NTI Propiedad RDF

REQUERIDOS Meta.

Nombre dct:title

Descripción dct:description

Temática(s) dcat:theme

Organismo publicador dct:publisher

Distribución(es) dcat:distribution

RECOMENDADOS – DCAT-AP

Etiqueta(s) dcat:keyword

Contacto dcat:contactPoint / adms:contactPoint

OPCIONALES

Identificador dct:identifier

Fecha de creación dct:issued

Fecha de actualización dct:modified

Frecuencia de actualización dct:accrualPeriodicity

Idioma dc:language / dct:language

Condiciones de uso dct:publisher

Cobertura geográfica dct:spatial

Cobertura temporal dct:temporal

Vigencia dct:valid

Recursos relacionado dct:references

Normativa dct:conformsTo

Página de acceso dcat:landingPage

Identificador secundario adms:identifier

Versión adms:version

Notas de la versión adms:versionNotes

Page 15: CKAN (Jaca), David Portoles

Formación en CKAN, Jaca, 26 de septiembre de 2014

Metadatos RDF (Distribution)

15

Metadato NTI Propiedad

REQUERIDOS

URL de acceso dcat:accessURL

Formato dcat:mediaType

RECOMENDADOS – DCAT-AP

Descripción dct:description

Condiciones de uso dct:license

Formato dct:format

OPCIONAL

Identificador dct:identifier

Nombre dct:title

Tamaño dcat:byteSize

Información adicional dct:relation

Fecha de creación dct:issued

Fecha de actualización dct:modified

Derechos dct:rights

URL de descarga dcat:downloadURL

Estado adms:status

Page 16: CKAN (Jaca), David Portoles

Formación en CKAN, Jaca, 26 de septiembre de 2014

Negociación de contenido

16

Permite que solicitar una misma URI responda diferente (la forma más adecuada al usuario).

• Preferencias según el campo Accept de los mensajes que se transmiten en las cabeceras http durante el intercambio de mensajes de la petición.

Se utilizan redirecciones 303:

• Usar código de respuesta HTTP 303 (See other) para redirigir a las alternativas.

Desde el navegador, la preferencia es a usar HTML por defecto.

• Puede fijarse otra variando la URI (p.ej. añadiendo .rdf al final).

Mediante curl se puede elegir con la misma URI (parámetro -H):

• curl http://opendata.aragon.es/catalogo/indice-de-precios-hoteleros

• curl -H "Accept:application/rdf+xml" http://opendata.aragon.es/catalogo/indice-de-precios-hoteleros

• curl -I http://opendata.aragon.es/catalogo (obsevar redirección 303, también sin -I)

• curl -L http://opendata.aragon.es/catalogo (“sigue” la redirección)

Page 17: CKAN (Jaca), David Portoles

Formación en CKAN, Jaca, 26 de septiembre de 2014

API de CKAN

17

El catálogo AOD se basa en el software CKAN:

• Código abierto.

• Desarrollado por la Open Knowledge Foundation (OKFN).

• Por usar CKAN, se dispone de su API.

Descripción completa del API en: http://docs.ckan.org/en/latest/api/index.html

El API de CKAN ha sido extendida con nuevas operaciones:

• Obtener el número de conjuntos de datos y de recursos almacenados en AOD:

http://opendata.aragon.es/catalogo/api/getDataCount

• Obtener los cinco conjuntos de datos más recientes almacenados en AOD:

http://opendata.aragon.es/catalogo/api/mostRecentDataset

• Obtener los cinco conjuntos de datos más visitados en AOD:

http://opendata.aragon.es/catalogo/api/mostDownloadedDataset

Page 18: CKAN (Jaca), David Portoles

Formación en CKAN, Jaca, 26 de septiembre de 2014

Listado de contenidos vía API

18

El API de CKAN tiene 3 versiones (si no se especifica se utiliza la v3):

• Se indica con /catalogo/api/num_version

• Resultado en JSON

Obtener listados:

• Dataset:

http://opendata.aragon.es/catalogo/api/3/action/package_list

ALTERNATIVA sin usar API: http://opendata.aragon.es/catalogo/catalogo.rdf

• Categorías / Grupos (equivale temas sector primario):

http://opendata.aragon.es/catalogo/api/3/action/group_list

• Etiquetas:

http://opendata.aragon.es/catalogo/api/3/action/tag_list

http://opendata.aragon.es/catalogo/api/2/tag_counts (no incluida en API v3)

Puede accederse mediante el navegador o curl:

curl http://opendata.aragon.es/catalogo/api/3/action/package_list -d '{}'

Page 19: CKAN (Jaca), David Portoles

Formación en CKAN, Jaca, 26 de septiembre de 2014

Detalle de contenidos vía API

19

Con los listados anteriores se puede obtener los detalles de cada elemento (utilizando su id o name):

• Dataset:

http://opendata.aragon.es/catalogo/api/3/action/package_show?id=cartografia-1-5000_carto5000

http://opendata.aragon.es/catalogo/api/3/action/package_show?id=7652354a-8d99-481b-ba09-79d03e736d2f

Alternativa RDF (sin API): http://opendata.aragon.es/catalogo/cartografia-1-5000_carto5000.rdf

• Categorías:

http://opendata.aragon.es/catalogo/api/3/action/group_show?id=turismo

• Etiquetas:

•http://opendata.aragon.es/catalogo/api/3/action/tag_show?id=Hogares

Puede accederse mediante el navegador o curl:

curl http://opendata.aragon.es/catalogo/api/3/action/package_show -d '{"id": "7652354a-8d99-481b-ba09-79d03e736d2f"}'

curl http://opendata.aragon.es/catalogo/cartografia-1-5000_carto5000.rdf

Page 20: CKAN (Jaca), David Portoles

Formación en CKAN, Jaca, 26 de septiembre de 2014

Buscar contenidos vía API

20

Envíar queries utilizando sintaxis Solr:

• Dataset:

http://opendata.aragon.es/catalogo/api/3/action/package_search?q=licencias

• Recursos:

http://opendata.aragon.es/catalogo/api/3/action/resource_search?query=name:mapa

• Etiquetas:

http://opendata.aragon.es/catalogo/api/3/action/tag_search?q=lica

Más info sobre Solr:

http://wiki.apache.org/solr/CommonQueryParameters

http://www.solrtutorial.com/solr-query-syntax.html

Page 21: CKAN (Jaca), David Portoles

Formación en CKAN, Jaca, 26 de septiembre de 2014

Sintaxis Solr

21

Paginación:

• start y rows (por defecto 0 y 10 respectivamente):

•http://opendata.aragon.es/catalogo/api/3/action/package_search?q=javalambre&rows=5&start=1

Criterios de ordenación:

• sort:

http://opendata.aragon.es/catalogo/api/3/action/package_search?q=javalambre&sort=title%20asc

http://opendata.aragon.es/catalogo/api/3/action/package_search?q=javalambre&sort=title%20desc

Filtros sobre muchos campos:

• Comodín es * (no válido al comienzo)

• Negación es -

• Rangos: [10 TO *] [10 TO 20]

• Operadores lógicos: AND, OR...

http://opendata.aragon.es/catalogo/api/3/action/package_search?q=-author:%22Instituto%20Aragon%C3%A9s%20de%20Estad%C3%ADstica%20%28IAEST%29%22%20AND%20title:m*%20AND%20num_tags:[3%20TO%207]%20AND%20metadata_modified:[2014-01-13T23:59:59.999Z%20TO%20NOW-1MONTH]

Page 22: CKAN (Jaca), David Portoles

Formación en CKAN, Jaca, 26 de septiembre de 2014

Otras operaciones vía API

22

Datos de una revisión concreta:

http://opendata.aragon.es/catalogo/api/3/action/revision_show?id=45b017e2-8570-421c-9c89-fa8d1a29fac7

Últimos cambios en datasets:

http://opendata.aragon.es/catalogo/api/3/action/recently_changed_packages_activity_list

Crear, modificar, borrar datasets y/o recursos:

• Necesita un token y credenciales

Crear usuarios, grupos, seguidores...

Autocompletado:

http://opendata.aragon.es/catalogo/api/3/action/package_autocomplete?q=pa&limit=10

http://opendata.aragon.es/catalogo/api/3/action/tag_autocomplete?q=x

http://opendata.aragon.es/catalogo/api/3/action/format_autocomplete?q=x

Page 23: CKAN (Jaca), David Portoles

Formación en CKAN, Jaca, 26 de septiembre de 2014

Curso “Web Semántica”

?David Portolés Rodríguez

[email protected]

Consulta de conjuntos de datos abiertos en RDF mediante el API del catálogo

23

Page 24: CKAN (Jaca), David Portoles

Formación en CKAN, Jaca, 26 de septiembre de 2014

Ejercicios vía portal (sin API)

24

Obtener un fichero de texto con la lista de datasets.

Sabiendo que se han publicado el calendario con los festivos, averiguar los patrones de Albalatillo.

Obtener un fichero con el metadato del dataset anterior en RDF.

Obtener el el metadato del catálogo en RDF y observar si se generan los valores requeridos por la NTI.

Ídem con el dataset estadistica-bibliotecas-2010. Observar los campos relation adicionales. ¿Hay alguno que no esté contemplado en las especificaciones?

Si sobra tiempo:

Descargar masivamente todos los rdf de todos los datasets en ficheros independientes y en un único fichero.

Obtener el listado de todos los autores distintos que hay.

Page 25: CKAN (Jaca), David Portoles

Formación en CKAN, Jaca, 26 de septiembre de 2014

Ejercicios vía API CKAN

25

Averiguar cuántos datasets tienen entre 5 y 8 tags.

Averiguar qué metadatos se han publicado en el último mes.

Averiguar cuántos datos tiene como publicador el IAEst.

Averiguar cuántos datos hay en el grupo turismo.

Averiguar cuántos datos hay con periodicidad anual (PISTA: como p.ej. el dataset registro-de-terrenos-cinegeticos-de-huesca_rtc_cotos_hu y sus campos extra).

Averiguar cuántas veces se ha accedido y descargado el zip del dataset presupuesto-gobierno-aragon-2014. (PISTA: tracking)

Averiguar cuál es el código de la operación en el PEN 2013-2016 del dataset educacion-infantil-1-ciclo-0-3-anyos-unidades-por-curso-y-titularidad-del-centro-por-comarcas (PISTA: Ver campos extra)

Si sobra tiempo:

Obtener un fichero de texto con la lista de datasets. Comparar con la lista obtenida antes y averiguar si hay diferencias.