Skip to content
This repository has been archived by the owner on Jun 28, 2022. It is now read-only.

API per associare licenze a risorse #53

Closed
aborruso opened this issue Nov 3, 2019 · 8 comments
Closed

API per associare licenze a risorse #53

aborruso opened this issue Nov 3, 2019 · 8 comments

Comments

@aborruso
Copy link

aborruso commented Nov 3, 2019

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

curl -H'Authorization: xxxx' \
'http://mysite/api/3/action/resource_create' \
--form package_id=testpackage \
--form description="descrizione" \
--form format=csv \
--form name="test" \
--form created="2019-06-27T09:27:03.840700" \
--form last_modified="2019-10-29T14:48:02.422579" \
--form upload=@myfile.csv \
--form distribution_format="CSV" \
--form license_id=cc-by

non associa la licenza cc-by alla risorsa; quella associata è la licenza di default (che credo sia una generica "dominio pubblico").

Grazie

@jenkin
Copy link
Member

jenkin commented Nov 5, 2019

@giorgialodi hai suggerimenti?

@giorgialodi
Copy link
Collaborator

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.

@aborruso
Copy link
Author

aborruso commented Nov 5, 2019

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

@aborruso
Copy link
Author

aborruso commented Nov 5, 2019

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

@aborruso aborruso closed this as completed Nov 5, 2019
@giorgialodi
Copy link
Collaborator

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

@aborruso
Copy link
Author

aborruso commented Nov 5, 2019

@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

@jenkin
Copy link
Member

jenkin commented Nov 5, 2019

@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?

@aborruso
Copy link
Author

aborruso commented Nov 5, 2019

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"

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants