Skip to content

Migrar exportação Crossref do schema 4.4.0 para 5.5.0 #334

Description

@samuelveigarangel

Contexto

O exportador articlemeta/export_crossref.py gera o XML de depósito no schema Crossref 4.4.0 (SetupDoiBatchPipe, linhas 29-32). A Crossref lançou o schema 5.5.0 em julho/2026 (bundle 0.6.0), que é a versão recomendada para novos depósitos. A 4.4.0 continua aceita, mas a migração permite aproveitar novos metadados (afiliações estruturadas com ROR, roles CRediT, tipo de citação, versão de artigo).
Entre 4.4.0 e 5.5.0 existe uma breaking change: a estrutura de afiliações (introduzida no schema 5.3.0).

Mudanças obrigatórias

1. Cabeçalho do doi_batch (articlemeta/export_crossref.py, linhas 29-32)

  • version: 4.4.05.5.0
  • xmlns: http://www.crossref.org/schema/4.4.0http://www.crossref.org/schema/5.5.0
  • schemaLocation: → http://www.crossref.org/schema/5.5.0 https://data.crossref.org/schemas/crossref5.5.0.xsd (note o novo host data.crossref.org)

2. Afiliações — breaking change (articlemeta/export_crossref.py, linhas 467-490)

O elemento <affiliation> (texto livre) foi removido do schema; XML com ele falha na validação 5.5.0. Reescrever para:

<affiliations>
  <institution>
    <institution_name>Universidade de São Paulo</institution_name>
    <institution_id type="ror">https://ror.org/036rp1748</institution_id> <!-- opcional -->
    <institution_place>São Paulo</institution_place> <!-- opcional -->
  </institution>
</affiliations>

Regras:

  • Cada <institution> exige no mínimo institution_name ou institution_id.
  • institution_id exige atributo type (ror | isni | wikidata) e valor como URL https completa.
  • Uma <institution> por afiliação (hoje o código concatena tudo com '; ' em texto único).
  • addr_line e country não têm equivalente direto (institution_place é só a cidade) — decidir o mapeamento.
  • Posição no XML: dentro de person_name, após surname/suffix (e <role>, se usado) e antes de ORCID. A ordem é validada pelo XSD.

Melhorias opcionais disponíveis na 5.5.0

  • <role type="..." vocab="crossref|credit"/> repetível em person_name: múltiplos roles por contribuidor, novo tipo corresponding-author e suporte à taxonomia CRediT (14 roles). O atributo contributor_role atual (linhas 447-449) continua válido e pode coexistir com <role>.
  • Atributo type em <citation> (XMLCitation, linha 827+): identificar citações como journal-article, dataset, software, etc.
  • Elemento <version> em journal_article para versionamento de artigos.
  • language passa a aceitar ISO 639-2 (os códigos de 2 letras atuais continuam válidos).
  • Demais novidades (posted content blog/poster, CINES, clinical trials estendidos) não se aplicam — só depositamos journal_article.

Impacto nos testes

  • Os XSDs da 5.5.0 usam XSD 1.1; o lxml (libxml2) só suporta XSD 1.0, então ET.XMLSchema (tests/test_export_crossref.py, linhas 699-734) não compila o crossref5.5.0.xsd. Substituir a validação local pela biblioteca xmlschema (suporta XSD 1.1).
  • Baixar o bundle 0.6.0 do GitLab da Crossref para tests/xsd/scielo_crossref/: crossref5.5.0.xsd, common5.5.0.xsd, languages5.5.0.xsd, mediatypes5.5.0.xsd e as versões atualizadas de fundref.xsd, AccessIndicators.xsd, relations.xsd, clinicaltrials.xsd.
  • Atualizar asserções com valores fixos: namespace/schemaLocation (tests/test_export_crossref.py, linhas 2619-2628) e XMLs esperados contendo <affiliation> (ex.: linha 613).

Referências

Metadata

Metadata

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions