Skip to content

Validação de <role>/CRediT compara texto do termo com valor fixo em inglês, ignorando traduções #1335

Description

@Rossi-Luciano

Descrição do problema

ContribRoleValidation.validate_credit() (packtools/sps/validation/article_contribs.py:1134), chamada dentro do
pipeline principal usado por xml_validator.get_validation_results, compara o texto de <role> contra o termo
CRediT em inglês esperado para o @content-type informado (expected_term.upper() == text.upper()). Quando o
texto não bate exatamente com o termo em inglês, é gerado um erro "CRediT taxonomy term".

O SPS 1.10, na seção "<role>: Papel do Autor - Taxonomia CRediT", documenta que:

  • O uso de taxonomia é opcional: "O periódico e/ou os autores podem usar qualquer taxonomia. SciELO Brasil
    recomenda o uso da taxonomia CRediT."
  • Quando CRediT é usado, o vínculo formal é feito pelo @content-type (URL do papel), não pelo texto do elemento.
  • "A tradução dos termos para outros idiomas fica a critério do periódico e autores que desejarem utilizá-los" -
    ou seja, o texto de <role> pode legitimamente estar em português/espanhol mesmo com @content-type CRediT
    correto em inglês.

Isso gera falso-positivo em todo artigo que usa CRediT com o rótulo do papel traduzido, por exemplo:
<role content-type="https://credit.niso.org/contributor-roles/conceptualization/">Conceituação</role>.

O mesmo trecho do SPS também estabelece duas regras que hoje não parecem cobertas:

  1. Consistência de uso: "Ou o documento adota os termos CRediT na íntegra ou não adota" - todos os <role> de um
    mesmo documento devem, ou todos ter @content-type, ou nenhum ter.
  2. "Cada papel de autor deve ser marcado em uma tag de <role>, esta tag não deve ser usada para marcação do
    conjunto de vários papéis" - um único <role> não deve concentrar múltiplos papéis.

Passos para reproduzir o problema

  1. Validar um XML com <role content-type="https://credit.niso.org/contributor-roles/conceptualization/">Conceituação</role>.
  2. Observar que validate_credit() emite erro "CRediT taxonomy term" porque o texto não é exatamente "Conceptualization".

Comportamento esperado

  • Quando @content-type estiver presente, validar apenas se a URL corresponde a um dos identificadores CRediT
    (essa parte, a validação de URI, já está correta).
  • Não validar/restringir o conteúdo textual de <role> contra a lista fixa de termos em inglês.
  • Manter/implementar a validação de consistência (todo <role> do documento com @content-type, ou nenhum).

Anexos

Trecho citado a partir do arquivo SPS 1.10_pt.pdf (versão 1.10, última atualização em 22/05/2025), seção
"<role>: Papel do Autor - Taxonomia CRediT".

Ambiente utilizado

N/A (validação de XML via packtools.sps.validation.xml_validator)

Classificação (esforço / risco / relevância)

  • Esforço: Médio - remover a comparação de texto é simples, mas a consistência de uso de @content-type
    entre <article> e <sub-article> pode exigir estender a lógica de validate_credit_consistency.
  • Risco: Médio - toca um validador usado por qualquer artigo com <contrib>/<role>; a suíte de testes
    correspondente (test_article_contribs.py) é extensa.
  • Relevância: Alta - a comparação de texto contra o termo em inglês quebra qualquer artigo que use CRediT
    com o rótulo do papel traduzido, um cenário comum em periódicos em português/espanhol.

Referências

  • Reportado originalmente em Validação: role spsvalidator#46
  • Código relevante: packtools/sps/validation/article_contribs.py (ContribRoleValidation.validate_credit,
    CreditValidation.validate_credit_consistency)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions