Closed aborruso closed 4 years ago
@giorgialodi hai suggerimenti?
Ci sono tre elementi di attenzione sul tema licenze:
1) la licenza non è associata alla risorsa in CKAN perché il modello alla base di CKAN assegna la licenza al dataset non alla risorsa
2) per ovviare al punto 1 abbiamo affrontato il tema in questo modo. Nel nostro modello intermedio la licenza dovrebbe essere assegnata alla risorsa anche perché nella serializzazione RDF la licenza è attribuita correttamente alle risorse, a meno di un piccolo errore nella serializzazione documentato in un issue che ho aperto. C'è anche una licenza che viene associata al dataset e che sarebbe quella delle risorse se tutte le risorse hanno uguale licenza. Se le risorse hanno licenza diversa (e dovrebbe essere caso remoto) non potevamo concludere quale licenza fosse complessivamente assegnata al dataset e se non ricordo male dovrebbe essere stata messa unknown, seguendo il vocabolario controllato delle licenze.
3) nel campo extras di CKAN sono inserite tutte le indicazioni del profilo DCAT-AP_IT che non sono parte del modello base di CKAN. Detta in altri termini, è nel campo extras che ci sono coppie chiave-valore di tutti gli elementi di estensione di CKAN. Il campo extras è quindi diventato qualcosa di complesso :) Quindi per il discorso API forse conviene vedere come agire in questo elemento. Potrebbe essere utile prendere un dataset di esempio e da lì vedere il tutto e capire a valle come agire poi con le API di base di CKAN che noi non abbiamo toccato.
Grazie @giorgialodi e @jenkin .
Quindi mi confermate che con le API attuali, non è possibile creare una risorsa con i parametri obbligatori per il modello DCAT-AP_IT (come la licenza). Corretto??
Vi chiedo una risposta "booleana", per capire la strada da prendere. Perché devo gestire dei cataloghi non in modo visuale, ma via API.
Un caro saluto a entrambi
Solved!
Questo uno dei modi possibile:
curl -H 'Authorization: xxxx' 'http://mysite.com/api/3/action/resource_update' \
--form id=9c18efad-d854-40a4-9f3d-7eac6a0b3115 \
--form license_type="https://w3id.org/italia/controlled-vocabulary/licences/A21_CCBY40"
@giorgialodi qual è l'endpoint da cui posso estrarre l'elenco degli URI delle licenze? Non vorrei puntare a roba non aggiornata.
Te lo chiedo perché mi sto occupando di una migrazione, ho licenze associate a dataset, e voglio crearmi i corrispettivi da passare via API alle risorse.
Grazie
ciao @aborruso ti stavo scrivendo questo messaggio e poi ho visto che hai risolto. Bene :) L'endpoint dove trovare il vocabolario controllato delle licenze è questo: https://ontopia-virtuoso.pdnd.italia.it/sparql Da qui con una query sparql ti tiri fuori tutte gli URI delle licenze (che stanno a livello 3 - il primo livello ti dice se la licenza è open o meno o è sconosciuta, e il secondo ti dice il tipo di licenza). Chiaramente, la stessa query la puoi invocare machine-to-machine
@giorgialodi ottimo, è sempre un piacere.
@jenkin forse una nota su questa cosa si potrebbe mettere nella documentazione, visto che questo CKAN non è "standard", e che su aspetti come questo (giustamente) non si trovano tracce nella documentazione ufficiale.
Grazie ancora a entrambi
@aborruso quindi se ho capito bene, prima crei la risorsa usando l'endpoint resource_create
, ricavi l'id e poi l'aggiorni aggiungendo la licenza usando resource_update
. Corretto?
Caro @jenkin, corretto.
Lo puoi fare anche in fase di creazione usando resource_create
. Con ad esempio
curl -H'Authorization: xxxxxx' \
'http://mysite.com/api/3/action/resource_create' \
--form package_id=test \
--form description="lorem ipsum" \
--form format=csv \
--form name="temperatura-aria" \
--form created="2019-06-27T09:27:03.840700" \
--form last_modified="2019-10-29T14:48:02.422579" \
--form upload=@01_sias_01-12.csv \
--form distribution_format="CSV" \
--form license_type="https://w3id.org/italia/controlled-vocabulary/licences/A21_CCBY40"
Buongiorno, nelle API "standard" di CKAN non sembra prevista la possibilità di associare una licenza a una risorsa https://docs.ckan.org/en/2.8/api/#ckan.logic.action.create.resource_create
La licenza è però un elemento obbligatorio del profilo DCAT-AP_IT.
In questa versione di CKAN del Team Digitale/AgID è stata aggiunta la possibilità di associare via API una licenza a una risorsa?
Lo chiedo perché un comando come
non associa la licenza
cc-by
alla risorsa; quella associata è la licenza di default (che credo sia una generica "dominio pubblico").Grazie