oc_graphenricher
- API di OpenAlex:
- il superamento del rate-limit per secondo (10 richieste) dovrebbe essere gestito, rimane scoperto quello giornaliero: se si eccedono le 100,000 richieste al giorno è un problema
- Non importa, se si eccedono le 100,000 richieste incontreremo un errore e basta.
- sono gestiti i problemi legati al multi-mapping:
- viene eseguita una query per ogni identificativo disponibile per ciascuna br (diversamente da quanto avviene per le altre API); il risultato dell’allineamento viene mantenuto e usato per arricchire il grafo solamente se tutti i valori ottenuti sono uguali.
- non si accede direttamente ad una singola risorsa tramite il PID (ad es. api.openalex.org/works/pmid:12345), perché nel caso in cui uno stesso valore per un determinato PID sia condiviso da più risorse, l’API restituirebbe comunque una risorsa sola. La soluzione è filtrare le risorse (impiega più tempo ma individua questi casi critici): es. api.openalex.org/works**?filter=pmid:**12345.
- esteso il processo di enrich per le risorse OpenAlex:
- vengono estese solo br che non siano venue o issue (perché era strutturato così): cosa dobbiamo fare? Lasciamo che cerchi solo risorse di primo livello (compresi i journals): non è necessario estendere per issues e volumes.
Da fare:
- l’idea di graphenricher è semplicemente estendere il grafo, in modo agnostico rispetto alla correttezza dei dati che vengono usati per arricchire il grafo. Per questo motivo devi aggiungere tutti gli OpenAlex ID che trovi per una risorsa, eliminando le operazioni che fai per scartare i casi di multi-map. Di ripulire i dati da ingerire in Meta si occuperà poi un altro script (da fare) in un secondo momento, che prenderà in input l’output di graphenricher, selezionerà e processerà i dati da ingerire in Meta, e produrrà le tabelle da dare in pasto a Meta.
- sia in GraphEnricher.enrich() che nella chiamata all’API devi fare modifiche: la risposta all’API deve restituire tutti gli OpenAlex ID che trova (anche se ne trova più di uno: quindi il metodo query restituirà un lista, non più una stringa); il metodo enrich non deve più avere quelle if-clause.
- considera di aggiungere parametro a classe dell’API di OpenAlex per decidere se usare filter nella query (e avere un processo più lento ma risultati più completi) o usare l’accesso diretto alla singola risorsa (e quindi andare più veloce ma ottenere dati meno esaustivi)
- Costruisci un sample di grafo a partire dall’iri di una br in MEta