Open jamilatta opened 11 years ago
Acho que essa compatibilização teria que ir um pouco além de matchs de urls pois o número de combinações é muito grande.
Teríamos que pensar em uma solução que extrai os atributos passando esses atributos como entrada para uma metodo de resolução ex:
get_new_url(script, pid, tlng='en', ilng='en')
onde:
script: ['sci_arttext', 'sci_serial', 'sci_home', 'sci_abstract',...] pid: 'pid é pid uai' tlng: 'idioma do texto' ilng: 'idioma da interface'
Existem também um outro padrão de URL's na SciELO que é muito mais antigo e que é diferente do atual com relação a identificação do PID. Vou verificar isso e documentar essa regra.
Concordo.
Estudo sobre as URL do SciELO
Exemplo de URL (issue): http://www.scielo.br/scielo.php?script=sci_issuetoc&pid=0034-891020120001&lng=en&nrm=iso
Parâmetros:
lng = Idioma da interface tlng = Idioma do texto pid = publish identifier nrm = Norma (verificar se o valor é sempre 'iso') script = ['sci_alphabetic', 'sci_serial', 'sci_issues', 'sci_issuetoc', 'sci_arttext', 'sci_abstract', ' sci_pdf', 'sci_subject', 'sci_arttext_pr']
OBS.: Iremos considerar somente os params tlng, script e pid.
Característica do PID:
ISSN[0:9] + ANO[9:13] + ORDER_ISSUE[13:17]
ISSN[0:9] + ANO[9:13] + ORDER_ISSUE[13:17] + ORDER_ARTICLE[17:22]
Tabela de tradução:
ISSN | YEAR | ORDER_ISSUE | ORDER_ARTICLE | SCRIPT | OLD URL | NEW URL |
---|---|---|---|---|---|---|
/scielo.php | /URL/ | |||||
sci_alphabetic | /scielo.php?script=sci_alphabetic | /alpha/ | ||||
sci_subject | /scielo.php?script=sci_subject | /subject/ | ||||
0103-2100 | sci_serial | /scielo.php?script=sci_serial&pid=0103-2100 | /journal/ACRON | |||
0103-2100 | sci_issues | /scielo.php?script=sci_issues&pid=0103-2100 | /issue/ACRON | |||
0103-2100 | 2008 | 0004 | sci_issuetoc | /scielo.php?script=sci_issuetoc&pid=0103-210020080004 | /ACRON/ISSUE_ID/ | |
0103-2100 | 2008 | 0004 | 0002 | sci_arttext | /article/ARTICLE_ID | |
0103-2100 | 2008 | 0004 | 0002 | sci_abstract | /article/ARTICLE_ID | |
0103-2100 | 2008 | 0004 | 0002 | sci_pdf | /article/ARTICLE_ID | |
0103-2100 | 2008 | 0004 | 0002 | sci_arttext_pr | /article/ARTICLE_ID |
Para realizarmos essa tradução de URLs resolvemos criar um coleção 'legacy_urls' que conterá todas as URLs da aplicação anterior seguindo o seguinte modelo:
{
'pid': '0103-2100'
'acron': 'rsp'
'id': 2345
}
Justificamos a criação de uma nova coleção para as URLs legadas baseado no fato que iriamos conviver com índices desnecessários que aumentariam desnecessariamente.
Exemplo de como devem ser convertidos os PID do modelo super antigo.
campo v1 representa o formato super antigo, campo v2 representa o formato atual.
mfn= 170 1 "S0104-1169(97)00500311" 2 "S0104-11691997000300011" .. mfn= 171 1 "S0104-1169(97)00500313" 2 "S0104-11691997000300013" .. mfn= 172 1 "S0104-1169(97)00500314" 2 "S0104-11691997000300014"
Ok, devemos portanto adicionar esse "pids super antigos" na coleção "legacy_urls", utilizando campo em separado ou o campo pid como array no mongoDB:
Novo campo na coleção
{
'lpid': 'S0104-1169(97)00500311',
'pid': 'S0104-11691997000300011',
'acron': 'rsp'
'id': 2345
}
Nesse formato seriamos obrigados a identificar na view se o pid é um super antigo.
PID como array
{
'pid': ['S0104-11691997000300011', 'S0104-1169(97)00500311']
'acron': 'rsp'
'id': 2345
}
Nesse formato realizariamos a query no mongoDB sem a necessidade de identificarmos se é ou não super antigo.
Não seria mais fácil criar uma função que identifica a versão do pid, e caso seja o super antigo ele é transformado no antigo?
Dessa forma não teríamos mais a informação que o artigo teve esse PID super antigo, é necessário avaliarmos os impactos disso para outros serviços como por exemplo bibliometria(citação).
A nova aplicação deve ter a capacidade de traduzir as URLs do SciELO atual para as novas URLs definidas pela nova aplicação.
Exemplo da página da revista(atual):
http://www.scielosp.org/scielo.php?script=sci_serial&pid=0034-8910&lng=en&nrm=iso
Exemplo da página da revista(novo):
http://www.scielosp.org/journal/rsp/