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.

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

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?

13-09-2022 OpenCitations full automations
https://arcangelo7.github.io/p/ef001263efd0428998a41318ade70a35/
Author
Arcangelo Massari
Posted on
September 12, 2022
Licensed under