Projecte

General

Perfil

Accions

Tasca #6789

tancat
FJ FJ

Fer que el DOI no distingeixi majúscules i minúscules

Tasca #6789: Fer que el DOI no distingeixi majúscules i minúscules

Afegit per Ferran Jorba fa aproximadament 4 anys. Actualitzat fa aproximadament 3 anys.

Estat:
Tancada
Prioritat:
Normal
Assignat a:
Categoria:
Tecnologia
Inici:
31-01-2022
Data de venciment:
22-12-2022
Paraula clau:

Descripció

Resulta que el DOI no distingeix entre majúscules i minúscules:

É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):

  1. A l'afegir un doi nou a la 024, mirar abans que no hi sigui ja
  2. A la base de dades de dois que es fa servir per les citacions
  3. A la comprovació de duplicats prèvia a https://ddd.uab.cat/dois.py
  4. A la identificació de duplicats a https://ddd.uab.cat/idregistres.py

Tasques relacionades 2 (0 obertes2 tancades)

relacionat amb DDD - Tasca #4953: Afegir les mètriques de dimensions.aiTancadaJavier Planella16-03-201825-07-2024Accions
relacionat amb DDD - Tasca #6139: Detectar i potser eliminar etiquetes 035 duplicades però no consecutivesTancadaFerran Jorba10-12-202029-07-2022Accions

FJ Actualitzat per Ferran Jorba fa aproximadament 4 anys Accions #1

  • Categoria ha canviat de Gestió de la col·lecció a Tecnologia

FJ Actualitzat per Ferran Jorba fa aproximadament 4 anys Accions #2

CA Actualitzat per Cristina Azorin fa aproximadament 4 anys Accions #3

  • 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 Accions #4

  • S'ha afegit relacionat amb Tasca #4953: Afegir les mètriques de dimensions.ai

FJ Actualitzat per Ferran Jorba fa aproximadament 4 anys Accions #5

  • 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 Accions #6

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:

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 Accions #7

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 Accions #8

  • 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 Accions #9

  • Estat ha canviat de En curs a Tancada

Ja està adaptat a tot arreu.

FJ Actualitzat per Ferran Jorba fa quasi 4 anys Accions #10

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 Accions #11

  • Paraula clau s'ha suprimit (NCR)
Accions

També disponible a: PDF Atom