italia / dati.gov.it

dati.gov.it: il sito degli opendata italiani
http://dati.gov.it
Creative Commons Zero v1.0 Universal
53 stars 4 forks source link

Alcuni package non sono raggiungibili con la chiamata package_show tramite l'attributo name #11

Open aborruso opened 7 years ago

aborruso commented 7 years ago

I package elencati qui (circa 800) non erano raggiungibili al 12 Marzo.

Ho fatto qualche test a campione e la situazione non sembra cambiata.

Riporto l'elenco anche sotto.

Grazie

aborruso commented 7 years ago

Buongiorno, ci sono avanzamenti su questo?

Grazie

aborruso commented 7 years ago

Ciao @marciuz anche qui dettaglio un po'.

Il mio riferimento è la pagina Sviluppatori in cui leggo:

Questo metodo permette l'interrogazione dell'indice di tutti i record, tramite la chiamata http://www.dati.gov.it/api/3/action/package_list per poi fare interrogazioni puntuali ai singoli record con la chiamata http://www.dati.gov.it/api/3/action/package_show?id={id-dataset}.

Per esempio, dalla lista dei dataset per accedere ai metadati del singolo dataset ,può essere utilizzata la chiamata: http://www.dati.gov.it/api/3/action/package_show?id=personale-provinciale-rapporto-lavoro-non-tempo-indeterminato

Quindi parto dalla package_list in cui ad esempio trovo elencato immagini-satellitari-spot-5-scene-pancromatiche e costruisco (come da note di sopra) l'URL:

http://www.dati.gov.it/api/3/action/package_show?id=immagini-satellitari-spot-5-scene-pancromatiche

Questo mi restituisce:

{
  "help": "Return the metadata of a dataset (package) and its resources. :param id: the id or name of the dataset :type id: string",
  "success": true,
  "error": {
    "__type": "Not Found Error",
    "message": "Not Found"
  }
}

La query di sopra è by id, l'id di questo dataset è 047b2dd8-8ea2-4bda-98e3-cff267db0332 e se apro l'URL via id

http://www.dati.gov.it/api/3/action/package_show?id=047b2dd8-8ea2-4bda-98e3-cff267db0332

non ho alcun problema.

C'è da scrivere qualcosa di diverso nella pagina sviluppatori?

Grazie

marciuz commented 7 years ago

Ciao @aborruso ,

in teoria dovrebbero funzionare entrambe le chiamate, quella con il name e quella per id (che poi è un uuid, anche se le amministrazioni a volte non lo propagano in fase di harvesting, ma questo è un altro problema).

Che non funzioni per alcuni casi sembra un bug, perché la logica delle api CKAN - come ben sai - è 1) package_list, con lista dei name 2) package_show con parametro id, dove ID può essere il name o l'id.

Non credo neppure sia un problema di cache: la lista package_list non è generata in tempo reale, ma è aggiornata congiuntamente all'esecuzione dell'harvester, quindi escluderei.

Cambio la classificazione e modifico l'oggetto.

aborruso commented 6 years ago

Buongiorno, ritorno su questo perché vorrei fare un'analisi sulle licenze dei dataset.

Sono partito dal download della lista https://www.dati.gov.it/api/3/action/package_list e poi sono andato in loop per ognuno degli elementi via http://www.dati.gov.it/api/3/action/package_show?id=.

Ci sono però dei dataset presenti in lista (due esempi sono aree-verdi e beni-culturali) che restituiscono "Not Found".

Se fosse disponibile la lista degli id otre a quella dei name, penso che potrei risolvere il problema. C'è un modo per ottenere la lista degli id dei 18000 dataset?

Grazie

mgrassotti commented 5 years ago

@aborruso quando scrivi

La query di sopra è by id, l'id di questo dataset è 047b2dd8-8ea2-4bda-98e3-cff267db0332 e se apro l'URL via id http://www.dati.gov.it/api/3/action/package_show?id=047b2dd8-8ea2-4bda-98e3-cff267db0332 non ho alcun problema.

Posso chiederti come hai fatto ad ottenere l'id del dataset? Inoltre ora neanche la URL sopra funziona, giusto? http://www.dati.gov.it/api/3/action/package_show?id=047b2dd8-8ea2-4bda-98e3-cff267db0332

Grazie

aborruso commented 5 years ago

Posso chiederti come hai fatto ad ottenere l'id del dataset? Inoltre ora neanche la URL sopra funziona, giusto? http://www.dati.gov.it/api/3/action/package_show?id=047b2dd8-8ea2-4bda-98e3-cff267db0332

Puoi usare il metodo current_package_list_with_resources che trovi descritto qui https://www.dati.gov.it/content/sviluppatori .

A riga di comando, con jq e con le utility classiche puoi prima contare i dataset (al momento 22436)

curl "https://www.dati.gov.it/api/3/action/package_list" | jq '.result[]' | wc -l

e poi ciclare di 100 in 100 e scaricare tutti i dati

for i in {0..22400..100}; do \
curl "https://www.dati.gov.it/api/3/action/current_package_list_with_resources?limit=100&offset=$i" >./"$i".json; \
done

In output hai pure gli id (ad esempio qui).