Tasca #6789
tancatFer que el DOI no distingeixi majúscules i minúscules
Descripció
Resulta que el DOI no distingeix entre majúscules i minúscules:
- https://www.doi.org/10DEC99_presentation/faq.html#3.12
- https://en.wikipedia.org/wiki/Digital_object_identifier#Nomenclature_and_syntax
És a dir, que 10.22395/angr.v10n19a5 i 10.22395/aNgr.v10n19a5 o 10.22395/angr.V10n19A5 i totes les variants són equivalents. Ara mateix no no tenim així, i això ens ocasiona que no sempre es detectin duplicats a temps, o bé que s'afegeixin duplicats a la 024, com aquest:
- 024 7_ $2 doi $a 10.3390/rs12182955
- 024 7_ $2 doi $a 10.3390/RS12182955
- 024 7_ $2 doi $a 10.24241/rcai.2020.124.1.147
- 024 7_ $2 doi $a 10.24241/RCAI.2020.124.1.147
- 024 7_ $2 doi $a 10.6035/MonTI.2020.12.03
- 024 7_ $2 doi $a 10.6035/monti.2020.12.03
Cal arreglar aquest comportament a diferents llocs, d'entrada (potser en sortiran més):
- A l'afegir un doi nou a la 024, mirar abans que no hi sigui ja
- A la base de dades de dois que es fa servir per les citacions
- A la comprovació de duplicats prèvia a https://ddd.uab.cat/dois.py
- A la identificació de duplicats a https://ddd.uab.cat/idregistres.py
Tasques relacionades 2 (0 obertes — 2 tancades)
FJ Actualitzat per Ferran Jorba fa aproximadament 4 anys
- Categoria ha canviat de Gestió de la col·lecció a Tecnologia
FJ Actualitzat per Ferran Jorba fa aproximadament 4 anys
- S'ha actualitzat Descripció (diferències)
CA Actualitzat per Cristina Azorin fa aproximadament 4 anys
- Data de venciment s'ha establert a 22-12-2022
- Paraula clau s'ha establert a NCR
CA Actualitzat per Cristina Azorin fa aproximadament 4 anys
- S'ha afegit relacionat amb Tasca #4953: Afegir les mètriques de dimensions.ai
FJ Actualitzat per Ferran Jorba fa aproximadament 4 anys
- Estat ha canviat de Creada a En curs
Ja ho he fet a la base de dades de dois i citacions, i per tant a la comprovació de l'existència de dois i importació al DDD (https://ddd.uab.cat/dois.py). La solució és doble.
D'una banda, a l'estructura i índexos de la base de dades (~/var/lib/dois/dois.db) he utilitat una particularitat de SQLite que permet ignorar majúscules i minúscules en les comparacions i en els índexos:
CREATE TABLE doi_status_codes (
doi text COLLATE NOCASE PRIMARY KEY,
last_checked text,
recid int,
status_code int,
home_url text,
home_status_code int
);
CREATE TABLE doi_citations (
doi text COLLATE NOCASE,
last_checked text,
remote_database text,
remote_id text,
remote_citations int,
PRIMARY KEY (doi COLLATE NOCASE, remote_database)
);
CREATE INDEX doi_idx ON doi_citations(doi COLLATE NOCASE);
PRAGMA journal_mode=WAL;
De l'altra, en les estructures Python per accedir-hi, he utilitzat un diccionari que ignora les majúscules, implementat a Python requests (requests.structures.CaseInsensitiveDict())
FJ Actualitzat per Ferran Jorba fa aproximadament 4 anys
També ho he implementat a la identificació de registres externs i la comparació amb els locals. En aquest cas, ignorar majúscules i minúscules és no només per dois, sinó també per qualsevol altre camp que identifiqui un registre: articleid, url, isbn, issn, títol de la revista, identificador oai, oaiset, pmcid i identificadors scopus i wos. De fet, això ajuda a fer més tolerant la cerca de registres d'una mateixa revista, que fins ara s'havia de posar seguint estrictament les majúscules i minúscules. Els accents, ara pera ara, s'han de conservar.
Per exemple:
- https://ddd.uab.cat/idregistres.py/search?q=10.1371/journal.pone.0118610
- https://ddd.uab.cat/idregistres.py/search?q=10.1371/joUrNAl.poNe.0118610
- https://ddd.uab.cat/idregistres.py/search?q=10.1371/JOURNAL.PONE.0118610
- https://ddd.uab.cat/idregistres.py/search?q=Enrahonar
- https://ddd.uab.cat/idregistres.py/search?q=enrahonar
- https://ddd.uab.cat/idregistres.py/search?q=enrAHonaR
- https://ddd.uab.cat/idregistres.py/search?q=ENRAHONAR
La solució torna a ser doble: a la base de dades ~/var/lib/oaiharvest/oaiharvest.db
[...]
CREATE TABLE external_bibidentifiers (
recid text,
bibfield text,
bibvalue text COLLATE NOCASE,
PRIMARY KEY (recid, bibfield, bibvalue COLLATE NOCASE)
);
CREATE TABLE local_bibidentifiers (
recid int,
bibfield text,
bibvalue text COLLATE NOCASE,
PRIMARY KEY (recid, bibfield, bibvalue COLLATE NOCASE)
);
[...]
CREATE INDEX external_bibidentifiers_bibvalue_idx
ON external_bibidentifiers(bibvalue COLLATE NOCASE);
CREATE INDEX local_bibidentifiers_recid_idx
ON local_bibidentifiers(recid);
CREATE INDEX local_bibidentifiers_bibfield_idx
ON local_bibidentifiers(bibfield);
CREATE INDEX local_bibidentifiers_bibvalue_idx
ON local_bibidentifiers(bibvalue COLLATE NOCASE);
[...]
I a ~/lib/python/oai_uabutils.py, funció def db_search_bibidentifiers canviar els diccionaris de recollir els valors (bibvalues i bibidentifiers), de {} a requests.structures.CaseInsensitiveDict()
FJ Actualitzat per Ferran Jorba fa aproximadament 4 anys
A partir de demà també s'aplicarà a afegir nous identificadors externs a registres del DDD. No només dois. De fet, segurament tindrà alguna avantatge addicional. Per exemple, aquest registre:
https://ddd.uab.cat/record/726
Té una 035 i dos 856 de Racó, i les dues urls són vàlides (i jo em pensava que només en funcionaria una!)
035 __ $a oai:raco.cat:article/14920
856 41 $3 Adreça alternativa $u https://raco.cat/index.php/Analisi/article/view/14920
856 41 $3 Adreça alternativa $u https://raco.cat/index.php/analisi/article/view/14920
Per tant, la millora pels dois servirà també per no embrutar els registres amb altres casos.
Quedarà pendent eliminar aquests duplicats on només canviï les majúscules i minúscules (v també #6139)
FJ Actualitzat per Ferran Jorba fa aproximadament 4 anys
- S'ha afegit relacionat amb Tasca #6139: Detectar i potser eliminar etiquetes 035 duplicades però no consecutives
FJ Actualitzat per Ferran Jorba fa quasi 4 anys
- Estat ha canviat de En curs a Tancada
Ja està adaptat a tot arreu.
FJ Actualitzat per Ferran Jorba fa quasi 4 anys
Ja estan eliminades les etiquetes dels 99 registres amb els dois duplicats, encara que canviïn en les majúscules o minúscules. El programa es queda amb la primera 024 i elimina la segona.
CA Actualitzat per Cristina Azorin fa aproximadament 3 anys
- Paraula clau s'ha suprimit (
NCR)