Groups keyboard shortcuts have been updated
Dismiss
See shortcuts

È ancora vivo Data Package?

40 views
Skip to first unread message
Assigned to alberto...@gmail.com by me

Alberto

unread,
Feb 11, 2020, 5:53:19 AM2/11/20
to Spaghetti Open Data
Ciao a tutti, mi accingo a pubblicare alcuni datasets che derivano da progetti di ricerca. In passato ho pubblicato usando lo standard Data Package di Open Knowledge, che mi piace perché è molto flessibile, e io pubblico dati "strani" (da grafi etc.). Vi risulta che sia ancora in uso? Vedo che le pagine di documentazione su GitHub sono ferme da due anni. Siete al corrente di standards alternativi, magari più usati dalla comunità accademica?

(Non che la comunità accademica sia molto interessata a rilasciare dati di buona qualità, nella mia esperienza)

andy

unread,
Feb 11, 2020, 6:24:03 AM2/11/20
to Spaghetti Open Data
Ciao Alberto,
il mondo frictionless-data è sempre attivo https://github.com/frictionlessdata

È inoltre la modalità delle API di Kaggle e anche uno degli output di default di data.world. 

Saluti

On Tue, 11 Feb 2020 at 11:53, Alberto <alberto...@gmail.com> wrote:
Ciao a tutti, mi accingo a pubblicare alcuni datasets che derivano da progetti di ricerca. In passato ho pubblicato usando lo standard Data Package di Open Knowledge, che mi piace perché è molto flessibile, e io pubblico dati "strani" (da grafi etc.). Vi risulta che sia ancora in uso? Vedo che le pagine di documentazione su GitHub sono ferme da due anni. Siete al corrente di standards alternativi, magari più usati dalla comunità accademica?

(Non che la comunità accademica sia molto interessata a rilasciare dati di buona qualità, nella mia esperienza)

--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "Spaghetti Open Data" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a spaghettiopend...@googlegroups.com.
Per visualizzare questa discussione sul Web, visita https://groups.google.com/d/msgid/spaghettiopendata/5a8a1c03-93cd-4a2b-9ed9-45b4a635f5c4%40googlegroups.com.


--
___________________

Andrea Borruso
website: https://medium.com/tantotanto
38° 7' 48" N, 13° 21' 9" E, EPSG:4326
___________________

"cercare e saper riconoscere chi e cosa,
 in mezzo all’inferno, non è inferno, 
e farlo durare, e dargli spazio"

Italo Calvino

Felipe Benites Cabral

unread,
Feb 11, 2020, 6:42:55 AM2/11/20
to spaghett...@googlegroups.com, Alberto Cottica
Yes.

Totally alive and will see a new version of the website, with better documentation, very soon.

Datopian uses it for new CKAN instances almost on a daily basis.

@Alberto Cottica please, send to me all your needs and plans with FR, we can use you as a test user :)

love,
Felipe Benites Cabral
"How could youths better learn to live than by at once trying the experiments of living?" - H.D.T
+39 34 58436288



Alberto

unread,
Feb 11, 2020, 10:51:24 AM2/11/20
to Spaghetti Open Data
Andrea: grazie! Vedo questa libreria Python, ma non sono sicurissimo di come usarla... è possibile generare il datapackage.json in modo più o meno automatizzato?

Felipe: thanks friend, I'll take you up on that. When I have the data files, I will reach out to you on Telegram. What is FR?

Felipe Benites Cabral

unread,
Feb 11, 2020, 1:48:19 PM2/11/20
to spaghett...@googlegroups.com
FR - Frictionless data :) - https://frictionlessdata.io/



Felipe Benites Cabral
"How could youths better learn to live than by at once trying the experiments of living?" - H.D.T
+39 34 58436288


On Tue, Feb 11, 2020 at 4:51 PM Alberto <alberto...@gmail.com> wrote:
Andrea: grazie! Vedo questa libreria Python, ma non sono sicurissimo di come usarla... è possibile generare il datapackage.json in modo più o meno automatizzato?

Felipe: thanks friend, I'll take you up on that. When I have the data files, I will reach out to you on Telegram. What is FR?

--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "Spaghetti Open Data" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a spaghettiopend...@googlegroups.com.

andy

unread,
Feb 11, 2020, 3:55:05 PM2/11/20
to Spaghetti Open Data
Ciao Alberto,

On Tue, 11 Feb 2020 at 16:51, Alberto <alberto...@gmail.com> wrote:
Andrea: grazie! Vedo questa libreria Python, ma non sono sicurissimo di come usarla... è possibile generare il datapackage.json in modo più o meno automatizzato?

Puoi replicare gli esempi della documentazione o partire da questo.

Se la installi, ti mette a disposizione una cli con generare un json di base, da arricchire "a mano" secondo le specifiche. Il comando è `datapackage infer input.csv`.

Oppure via GUI, carichi tutto in data.world, aggiungi i metadati del caso e poi fai il download del datapackage, o carichi in kaggle e poi accedi al  datapackage via API.

Notte


Alberto

unread,
Feb 11, 2020, 4:38:56 PM2/11/20
to Spaghetti Open Data
Wow, che meraviglia! Appena finisco il dataset lo provo. Grazie davvero a tutti e due.

Alberto

unread,
Feb 12, 2020, 9:25:19 AM2/12/20
to Spaghetti Open Data
Andrea, Felipe, mi togliete ancora un dubbio? Questa roba di infer:

package.infer('**/*.csv')

funziona solo con CSV, giusto? Non c'è una funzione equivalente per JSON?

Felipe Benites Cabral

unread,
Feb 12, 2020, 9:28:19 AM2/12/20
to spaghett...@googlegroups.com
Hi Alberto,

AFAIK the data packages only work with tabular data.

Would need to flatten the JSON first.

Best,

Felipe Benites Cabral
"How could youths better learn to live than by at once trying the experiments of living?" - H.D.T
+39 34 58436288


--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "Spaghetti Open Data" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a spaghettiopend...@googlegroups.com.

Alberto

unread,
Feb 12, 2020, 9:46:56 AM2/12/20
to Spaghetti Open Data
Thanks man!

andy

unread,
Feb 12, 2020, 10:10:42 AM2/12/20
to Spaghetti Open Data
Ciao Alberto,
quell'utiltity funziona con tabelle, ma puoi crearti anche un datapackage anche su un JSON. Qui un esempio https://pkgstore.datahub.io/examples/geojson-tutorial/2/datapackage.json

--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "Spaghetti Open Data" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a spaghettiopend...@googlegroups.com.
Per visualizzare questa discussione sul Web, visita https://groups.google.com/d/msgid/spaghettiopendata/cb02cbcc-f8e1-4228-af5d-c4af701807d3%40googlegroups.com.

Alberto

unread,
Feb 12, 2020, 10:29:27 AM2/12/20
to Spaghetti Open Data
Sì, certo, Andrea. Io stesso ho già documentato dataset di grafi con Data Package. Ma è stata una bella fatica, e l'idea di automatizzarne un pezzo mi sorride. :-)

Alberto

unread,
Feb 26, 2020, 4:38:44 AM2/26/20
to Spaghetti Open Data
Ciao Spaghettopoli, ho finalmente prodotto i files CSV, e ora vorrei provare la famosa libreria Python per generare il datapackage.json.

Purtroppo mi schianto alla prima curva, perché

pip install datapackage

Mi dà un lungo messaggio di errore (lo metto in fondo, hai visto mai che qualche anima buona sa cosa farci). ll README della repo di datapackage.py propone una soluzione basata su questo post. Purtroppo non funziona: l'installazione di SDK_headers_for_macOS_10.14.pkg fallisce. Il messaggio di errore dell'installatore dice semplicemente di contattare il produttore del software.

Andrea ha proposto una soluzione alternativa basata su Kaggle. Mi sono montato un progetto su Kaggle, ma anche lì non riesco a importare datapackage.py. Cercando sui fora, dicono che puoi inserire custom libraries usando il tab "settings". ma nel mio tab settings non c'è nulla nel genere.

Qualcuno ha qualche idea? Ovvio che posso farmi il datapackage.json a mano, ma vorrei approfittarne per imparare a usare questo strumento.


andy

unread,
Feb 26, 2020, 5:42:21 AM2/26/20
to Spaghetti Open Data
Albe, non sono un "macchista".

Incolli per favore l'errore?

Se carichi i tuoi dati in https://data.world/, il download e le API ti danno anche il datapackage

image.png



--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "Spaghetti Open Data" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a spaghettiopend...@googlegroups.com.

Alberto

unread,
Feb 26, 2020, 6:20:01 AM2/26/20
to Spaghetti Open Data
Andrea, è qui sotto. Aggiornamento: su Kaggle sono riuscito a installare la libreria (via console del kernel, con un semplice pip install). Però sembra che la struttura delle directory di Kaggle non piaccia a datapackage perché:

package = datapackage.Package()
package.infer('/kaggle/input/**/*.csv')
DataPackageException: Local path "../input/poprebel-psuedonymized/annotations.csv" is not safe

Ora mi studio un po' Data World

Segue il messaggio di errore dell'installatore

pip install datapackage

[... molti messaggi di status ...]

 
Failed building wheel for cchardet
 
Running setup.py clean for cchardet
 
Building wheel for linear-tsv (setup.py) ... done
 
Stored in directory: /Users/albertocottica/Library/Caches/pip/wheels/3f/8a/cb/38917fd1ef4356b9870ace7331b83417dc594bf2c029bd991f
Successfully built linear-tsv
Failed to build cchardet

[... molti messaggi di status e warnings ...]

    ld
: library not found for -lstdc++
    clang
: error: linker command failed with exit code 1 (use -v to see invocation)
    error
: command 'g++' failed with exit status 1
   
   
----------------------------------------
Command "/anaconda3/bin/python -u -c "import setuptools, tokenize;__file__='/private/var/folders/n8/szbcd5613wg9bk3r40lyrdlr0000gn/T/pip-install-18lbl3xf/cchardet/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /private/var/folders/n8/szbcd5613wg9bk3r40lyrdlr0000gn/T/pip-record-bwcf8811/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/var/folders/n8/szbcd5613wg9bk3r40lyrdlr0000gn/T/pip-install-18lbl3xf/cchardet/


Alberto

unread,
Feb 26, 2020, 9:34:48 AM2/26/20
to Spaghetti Open Data
Ho guardato DataWorld. L'interfaccia per caricare i metadati è fatta bene, ma – basandomi su questo – mi pare poi di capire che il modo di scaricare il datapackage.json sia di usare funzioni di questa libreria. Se è così, siamo da capo: l'installazione della libreria sul mio Mac fallisce con lo stesso errore della libreria datapackage originale :-(.

andy

unread,
Feb 26, 2020, 9:47:02 AM2/26/20
to Spaghetti Open Data
Caro Alberto,
puoi accedere alle API di download anche semplicemente in GET, con un URL così fatto `https://api.data.world/v0/download/{owner}/{id}`.

Nel dataset scaricato troverai il datapackage. Se hai bisogno di un pezzo di codice "ciao mondo", fischia.



On Wed, 26 Feb 2020 at 15:34, Alberto <alberto...@gmail.com> wrote:
Ho guardato DataWorld. L'interfaccia per caricare i metadati è fatta bene, ma – basandomi su questo – mi pare poi di capire che il modo di scaricare il datapackage.json sia di usare funzioni di questa libreria. Se è così, siamo da capo: l'installazione della libreria sul mio Mac fallisce con lo stesso errore della libreria datapackage originale :-(.

--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "Spaghetti Open Data" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a spaghettiopend...@googlegroups.com.

andy

unread,
Feb 26, 2020, 10:34:47 AM2/26/20
to Spaghetti Open Data

Ciao Alberto,ti metto qualche nota di base.

Devi partire dal tuo token, che trovi qui https://data.world/settings/advanced

Una volta che hai il token, in base alla documentazione delle API devi costruire la chiamata.

Per avere l’elenco dei tuoi dataset:

curl --request GET \
  --url https://api.data.world/v0/user/datasets/own \
  --header 'authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJwcm9kL......xxxxx'

In python qualcosa come

import http.client

conn = http.client.HTTPSConnection("api.data.world")

headers = { 'authorization': "Bearer   eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJwcm9kL......xxxxx" }

conn.request("GET", "/v0/user/datasets/own", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))

Dalla chiamata di sopra ricavi l’ID dei tuoi dataset.

Per il download di uno di questi dataset

curl --request GET \
  --url https://api.data.world/v0/download/nomeUtente/idDataset \
  --header 'authorization: Bearer   eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJwcm9kL......xxxxx  '

Facci sapere

Alberto

unread,
Feb 27, 2020, 5:16:47 AM2/27/20
to Spaghetti Open Data
Andrea, grazie davvero. Mi sembra di avere capito. La situazione è:
  • Il codice per ricavare l'elenco dei dataset, con relativo ID, funziona (ma l'ID del dataset si può ricavare anche guardando semplicemente la URL)
  • Il comando CURL lanciato da terminale non funziona, tira giù un 401
  • Se provo a usare la libreria requests per tirare giù il file da Python, invece funziona. Bisogna salvare il file con un'estensione .zip per dire a Mac OS come trattare il file.
L'unico problema è... che manca il file datapackage.json! data.world ha una cosa che si chiama data dictionary, dove puoi inserire i metadati (ecco il mio, work in progress). Come si fa per dire alla chiamata di tirare giù anche quello?



andy

unread,
Feb 27, 2020, 6:19:48 AM2/27/20
to Spaghetti Open Data

Ciao Albe,
per lo zip con il datapackage

curl 'https://download.data.world/datapackage/nomeUtente/idDataset' \
-H 'content-type: application/x-www-form-urlencoded' \
--data 'authentication=Bearer+eyJhbGciOiJIUxxxxxxxxxxxxx' --compressed >albe.zip

Perdonami avevo sbagliato end-point


--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "Spaghetti Open Data" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a spaghettiopend...@googlegroups.com.

Alberto

unread,
Feb 27, 2020, 7:08:29 AM2/27/20
to Spaghetti Open Data
Ok, adesso funziona tutto. Sei un uomo prezioso!

Alberto

unread,
Feb 27, 2020, 11:23:49 AM2/27/20
to Spaghetti Open Data
Andrea, ho un'ultima domanda. Con il tuo nuovo endpoint, data.world mi dà una cartella che contiene:
  • il datapackage.json
  • Una cartella "data" che contiene i files dati
  • Una cartella "original" che contiene... gli stessi files, mi pare.
Il datapackage.json contiene riferimenti a tutti i files di entrambe le cartelle. C'è una differenza: i files della cartella "data" hanno un campo "schema" nel datapackage.json. Quelli della cartella "original" non hanno lo schema, ma hanno tre campi in più: "descrizione" (che ho messo io nel data dictionary), "mediatype" e "bytes".

Quindi, qual è il modo corretto di documentare? Tutti e otto i files? Solo i primi quattro?

andy

unread,
Feb 28, 2020, 3:34:12 AM2/28/20
to Spaghetti Open Data

Ciao Alberto,
quando importi una risorsa in dataworld, viene sottoposta a inferencing dei tipi di campo, con trasformazioni più o meno pesanti.
Se hai due colonne longitude, latitude, diventerà ad esempio un campo location con valori espressi in notazione WKT (POINT(13.3315658569 38.1515674216).

Quindi original e data possono non essere coincidenti (fai un diff) e in ogni casa rappresentano i raw data e i dati eventualmente trasformati.

Lo schema ce l’hai proprio grazie all’inferencing. Se viene mappato un campo data, avrai qualcosa come quella di sotto, in cui un campo data è definito secondo standard:

{
            "name": "data",
            "title": "data",
            "type": "date",
            "rdfType": "http://www.w3.org/2001/XMLSchema#date",
            "dwSourceId": "data"
          }

Detto questo, a mio avviso è una tua scelta su cosa “tenere”.

Baci


--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "Spaghetti Open Data" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a spaghettiopend...@googlegroups.com.

Alberto

unread,
Feb 28, 2020, 3:47:12 AM2/28/20
to Spaghetti Open Data
Sì, certo, Andrea. Ho capito che data.world è CSV-centrico, e trasforma tutto in dati tabulari. Se carichi già dei CSV, i files in "data/" e quelli in "original/" sono praticamente uguali. Ci sta anche che lo schema sia considerato una trasformazione fatta dopo l'upload, e quindi non sia nei files in "original/" ma solo in quelli in "data/". L'unica cosa che mi dà fastidio è che le descrizioni dei files non siano state portate in "data/".

Penso di risolvere così:

* copio le descrizioni dei files nel datapackage.json, riferendole ai files in "data/".
* cancello completamente la cartella "original/".
* cancello gli elementi relativi ai files eliminati nel campo "resources" del datapackage.json.

In questo modo ho quattro files unici, senza doppioni, ben documentati.

Uff. Ci siamo arrivati in fondo. Grazie ancora!
Reply all
Reply to author
Forward
0 new messages