Tasca #5133
tancatRefer el circuit de recollida i importacions de registres via OAI
Descripció
El client OAI d'Invenio no ha acabat de funcionar del tot bé. En part, per motius purament de qualitat de la seva implementació, molt apedaçada i amb la intervenció de massa persones que no tenien l'experiència que només s'adquireix amb els anys del funcionament de l'OAI. També per temes de disseny de base, que, per exemple, no permet gestionar bé l'afegit de nous oaisets en registres remots (https://github.com/inveniosoftware/invenio/issues/587)
Però també per l'ús que en volem fer a la UAB pel que fa al DDD. Per exemple, nosaltres considerem que els registres que ens venen dels repositoris de revistes OJS, ens van bé com a base, però cal corregir i normalitzar i, per tant, un cop afegits al DDD, no volem que se'ns sobreescriguin si són actualizats en repostiori remot. Això va en contra del funcionament que s'espera del protocol OAI, segons el qual se suposa que el receptor sempre dóna per bones i per tant incorpora les actualitzacions dels registres remots (https://github.com/inveniosoftware/invenio-oaiharvester/issues/40).
D'altra banda, hem hagut de crear un circuit de revisió intern una mica elaborat i confús: donat que les eines de transformació dels registres remots en Dublin Core o NLM via XSL no permeten gaires filigranes, havíem creat la incorporació en dues fases: primer els hem estat incorporant a una col·lecció temporal (anomenada https://ddd.uab.cat/collection/recercat per raons històriques i que ara crea confusió) per després completar la conversió a Marc21 i la còpia en local del PDF i la seva incorporació com a 856 del registre.
Resulta a més que al DDD tenim registres antics que s'estan afegint a posteriori en els sistemes OJS de, per exemple, la UAB, i que, segons el protocol OAI, consten com a nous i, per tant, el client OAI d'Invenio els incorpora (o els incorporaria) com a nous. Perquè això no passi, ja he hagut d'afegir controls.
Finalment, com que al DDD hi tenim registres que consten a més d'un lloc (generalment, a revistes UAB i Racó, però també al TDX i al catàleg, etc), hem hagut de crear un sistema per descobrir i identificar els registres (https://ddd.uab.cat/idregistres.py). De fet, aquest sistema, sense pretendre-ho inicialment, ha resultat ser un client OAI paral·lel al d'Invenio. I, efectivament, amb el temps me n'he adonat que jo tampoc no l'havia fet del tot bé.
Per tant, per tenir-ne dos de dolents, millor pensar què cal fer. Tal com esmentava a la tasca #5116, vaig veure que Invenio 3 incorpora (https://invenio-oaiharvester.readthedocs.io/) un client OAI en Python anomenat Sickle (https://sickle.readthedocs.io/) que està molt ben fet i m'agrada molt. Després de provar-lo en diferents casos (OJS, DSpace i ContentDM), estic d'acord amb el CERN que val la pena no reinventar la roda i utilitzar Sickle (sickle, d'altra banda, vol dir falç de segar, com qui diu Bon cop de falç).
La meva proposta, explicada a la darrera reunió de coordinació, és conservar la interfície de gestió dels repostoris OAI que té Invenio (https://ddd.uab.cat/admin/oaiharvest/oaiharvestadmin.py), però fer que la gestió sigui a partir de Sickle i que amb les dades recollides via Sickle es gestioni tant la incorporació de registres nous com la indentificació de registres.
Tasques relacionades 4 (0 obertes — 4 tancades)