Skip to content

Crossref export: emit hasPreprint relation from related-article preprint entries#327

Draft
Copilot wants to merge 2 commits intomasterfrom
copilot/fix-preprint-data-crossref
Draft

Crossref export: emit hasPreprint relation from related-article preprint entries#327
Copilot wants to merge 2 commits intomasterfrom
copilot/fix-preprint-data-crossref

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 28, 2026

XMLProgramRelatedItemPipe only emitted isTranslationOf / hasTranslation relations, so a JATS <related-article related-article-type="preprint" .../> was dropped from the xmlcrossref deposit and the preprint link was never registered with Crossref (e.g. http://doi.org/10.1590/0102-469854644).

O que esse PR faz?

Estende XMLProgramRelatedItemPipe._transform_original (em articlemeta/export_crossref.py) para emitir, no program do journal_article principal, um <intra_work_relation relationship-type="hasPreprint" identifier-type="doi"> para cada entrada de v241 cujo t == 'preprint'. SciELO armazena <related-article> em v241 com subcampos i (href/DOI), t (related-article-type) e n (ext-link-type); apenas entradas com n == 'doi' (ou ausente) são emitidas, pois hasPreprint exige DOI.

  • Pipe alterado: novo helper _get_preprint_relations(raw) que filtra raw.data['article']['v241']; _transform_original itera o resultado e adiciona um related_item por preprint, depois das traduções.
  • Escopo do relacionamento: emitido apenas no journal_article principal (DOI canônico). As traduções já apontam para ele via hasTranslation, então o vínculo com o preprint fica ancorado na obra original.
  • Testes: três casos novos em tests/test_export_crossref.py cobrindo (1) emissão correta no artigo principal e ausência nas traduções, (2) ausência de v241, (3) related-article-type diferente de preprint.

Trecho do XML resultante:

<program xmlns="http://www.crossref.org/relations.xsd">
  ...
  <related_item>
    <intra_work_relation relationship-type="hasPreprint" identifier-type="doi">10.1590/SciELOPreprints.9348</intra_work_relation>
  </related_item>
</program>

Onde a revisão poderia começar?

articlemeta/export_crossref.pyXMLProgramRelatedItemPipe._get_preprint_relations e _transform_original.

Como este poderia ser testado manualmente?

  1. Selecionar um artigo cujo XML JATS contenha <related-article ext-link-type="doi" related-article-type="preprint" xlink:href="..."/> (ex.: PID S0102-46982024000100100, DOI 10.1590/0102-469854644).
  2. Garantir que o registro carregado no articleMeta tenha article.v241 populado (subcampos i, t=preprint, n=doi).
  3. Gerar a saída no formato xmlcrossref e verificar a presença, no journal_article principal, de <program><related_item><intra_work_relation relationship-type="hasPreprint" identifier-type="doi">…</intra_work_relation></related_item></program> apontando para o DOI do preprint.
  4. Rodar os testes alvo: pytest tests/test_export_crossref.py -k "related_item or preprint".

Algum cenário de contexto que queira dar?

A relação hasPreprint é o mecanismo do Crossref para vincular o artigo final ao preprint correspondente (visível em relation na API do Crossref). Hoje esse vínculo se perde no depósito, embora esteja correto no XML do artigo. A mudança não afeta o depósito de relações de tradução já existentes.

Screenshots

N/A — alteração apenas no XML gerado.

Referências

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • articlemeta.scielo.org
    • Triggering command: /usr/bin/curl curl -s REDACTED (dns block)
    • Triggering command: /usr/bin/curl curl -s REDACTED -o /tmp/sample.json -w %{http_code}\n _TOKEN&#34;; }; f (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

… entries

Agent-Logs-Url: https://github.com/scieloorg/articles_meta/sessions/4132fd93-82e7-460e-ba46-59f75ea60c86

Co-authored-by: robertatakenaka <505143+robertatakenaka@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix preprint relation data not sent to Crossref Crossref export: emit hasPreprint relation from related-article preprint entries Apr 28, 2026
Copilot AI requested a review from robertatakenaka April 28, 2026 12:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Dado de relação de preprint não está sendo enviado para o Crossref

2 participants