13-09-2022 OpenCitations full automations
Cosa ho fatto
Novità relative al crowdsourcing
Ho studiato tutta la documentazione di GitHub Actions. È ricchissima, ci sono voluti due giorni.
- Limiti di utilizzo che ci interessano:
- Possono essere messe in coda non più di 500 esecuzioni di workflow in un intervallo di 10 secondi per repository e si possono eseguire massimo 1000 richieste ad API all’ora. Pertanto, è conveniente eseguire i workflow in batch.
- I log generati dai workflow vengono cancellati dopo 90 giorni. Pertanto, è conveniente generare dei log autonomamente da GitHub.
- Non è documentato da nessuna parte (meno che in questo issue) ma è possibile creare massimo 150 issue all’ora tramite API. Me ne sono accorto raggiungendo questo limite.
- Sembra che sia possibile cancellare le issue tramite GitHub CLI (https://cli.github.com/manual/gh_issue_delete), ma devo verificare. Stranamente, tale operazione non è possibile né tramite actions né tramite API.
- Ho aggiunto 1050 issues a una repository vuota e la sua dimensione risulta essere 0 kb: https://api.github.com/repos/arcangelo7/issues. Sto indagando la presenza di un hard cap non documentato.
- Ho trovato una repo con circa 119,000 issue chiuse, quindi credo di essere molto lontano dal cap, se ne esiste uno: https://github.com/AdguardTeam/AdguardFilters/issues?q=is%3Aissue+is%3Aclosed
Novità sulle API di OC Meta
I gruppi di richieste separate da AND vengono riordinate in maniera tale che la prima a essere processata sia quella che riduce maggiormente il numero di soluzioni. L’ordine è id<editor<author<title<venue<publisher<volume<issue
La query su autori ed editor senza virgola viene effettuata sia sui foaf:name che sui foaf:familyName.
1
2
3
4
5
6
7
8
9
10
11# Lento
{?tsAuthorRa0 foaf:name ?tsAuthorName0.} UNION
{?tsAuthorRa0 foaf:familyName ?tsAuthorName0.}
?tsAuthorName0 bds:search '"peroni"'.
hint:Prior hint:runFirst true.
# Veloce
?tsAuthorRa0 ?namePredicate ?tsAuthorName0.
VALUES (?namePredicate) {(foaf:name) (foaf:familyName)}
?tsAuthorName0 bds:search '"peroni"'.
hint:Prior hint:runFirst true.È ora possibile cercare volumi e numeri, a patto di aver specificato la venue in ciascun gruppo di richieste separate da AND
I volumi e i numeri vengono esclusi dai risultati delle ricerche testuali su case editrici e riviste.
1
2
3
4
5
6
7
8# Lento
FILTER NOT EXISTS {
?res a ?type.
VALUES (?type) {(fabio:JournalIssue) (fabio:JournalVolume)}}
# Veloce
FILTER (?type != fabio:JournalVolume)
FILTER (?type != fabio:JournalIssue)Ho abbassato la rilevanza minima a 0.4 su 1, ovvero il massimo per permettere a IEEE e Springer di essere trovati.
Ho risolto il bug per cui venivano ritornati risultati non pertinenti. Era dovuto a un errore nell’aggregazione, per cui i risultati non venivano raggruppati solo in base al MetaId, ma a tutti i campi che ritornano un unico valore.
Ho aggiornato la documentazione delle API con tutte le novità.
Novità relative a OC Meta
- Finora OC Meta ha processato 41,668,295 su 71,650,696 risorse bibliografiche (58%)
- Alcuni esempi di risorse bibliografiche con più DOI:
- La rivista Webmedcentral ha associati decine di DOI (10.9754/journal.wmc.2011.001829, 10.9754/journal.wmc.2013.004415, 10.9754/journal.wmc.2010.00562…) che l’editore avrebbe dovuto associare agli articoli e non alla rivista.
- Anche il Türk Pediatri Arşivi ha più DOI, ma essi di riferiscono veramente alla rivista, e non è un caso isolato (10.5152/tpa, 10.5152/turkpediatriars.).
- Il libro Monad to Man ha 2 DOI (10.4159/9780674042995, 10.2307/j.ctv1kz4gtk), uno per la versione pubblicata da JSTORE e l’altro per la versione pubblicata da Harvard University Press. Questo schema di ripete 4154 volte.
- La rivista Webmedcentral ha associati decine di DOI (10.9754/journal.wmc.2011.001829, 10.9754/journal.wmc.2013.004415, 10.9754/journal.wmc.2010.00562…) che l’editore avrebbe dovuto associare agli articoli e non alla rivista.
- Ho aggiunto ‘ror’ agli schemi gestiti.
OSF-IF
- Ho compilato la tabella delle proprietà e relazioni.
Domande
- OCDM contempla le risorse di tipo “software”? Lo chiedo anche in relazione al lavoro su OSG-IF, dove bisogna indicare se OpenCitations gestisce questo tipo di “research product”.
- Come faccio a ritornare un errore 400 tramite Ramose? Se sollevo un’eccezione con messaggio esplicativo viene ritornato un 500.
- Come gestire autori ed editor con nomi e cognomi indistinti derivanti dal crowdsourcing?