Skip to content

Add CrossRefCitationFetcher#14357

Merged
koppor merged 9 commits intomainfrom
add-cross-ref-for-relations
Nov 20, 2025
Merged

Add CrossRefCitationFetcher#14357
koppor merged 9 commits intomainfrom
add-cross-ref-for-relations

Conversation

@koppor
Copy link
Copy Markdown
Member

@koppor koppor commented Nov 19, 2025

Makes use of CrossRef's capability to fetch citation information

Example: https://api.crossref.org/works/10.47397/tb/44-3/tb138kopp-jabref

Not wired into the GUI for our citations tab. This can be a good-first-issue as follow-up.

> Task :jabkit:run
WARNING: A restricted method in java.lang.System has been called
WARNING: java.lang.System::load has been called by ai.djl.pytorch.jni.LibUtils in module ai.djl.pytorch_engine (file:/C:/Users/olive/.gradle/caches/9.3.0-20251116230000+0000/transforms/55a5f0c44becd934295b8df542d3f309/workspace/transformed/pytorch-engine-0.34.0-module.jar)
WARNING: Use --enable-native-access=ai.djl.pytorch_engine to avoid a warning for callers in this module
WARNING: Restricted methods will be blocked in a future release unless native access is enabled

WARNING: A restricted method in java.lang.System has been called
WARNING: java.lang.System::load has been called by ai.djl.huggingface.tokenizers.jni.LibUtils in module ai.djl.tokenizers (file:/C:/Users/olive/.gradle/caches/9.3.0-20251116230000+0000/transforms/f4315d41744601a029b236d155b68fd1/workspace/transformed/tokenizers-0.34.0-module.jar)
WARNING: Use --enable-native-access=ai.djl.tokenizers to avoid a warning for callers in this module
WARNING: Restricted methods will be blocked in a future release unless native access is enabled
@Article{AlZubidy2019,
  author    = {Ahmed Al-Zubidy and Jeffrey C. Carver},
  title     = {Identification and prioritization of SLR search tool requirements: an SLR and a survey},
  doi       = {10.1007/s10664-018-9626-5},
  issn      = {1382-3256},
  number    = {1},
  pages     = {139-169},
  volume    = {24},
  journal   = {Empirical Software Engineering},
  publisher = {Springer Science and Business Media LLC},
  year      = {2019},
}

@Misc{,
  note = {A.D. Brucker. The authorarchive package, Feb. 2023. https://ctan.org/pkg/authorarchive},
}

@Misc{Feyer2017,
  author    = {Stefan Feyer and Sophie Siebert and Bela Gipp and Akiko Aizawa and Joeran Beel},
  title     = {Integration of the Scientific Recommender System Mr. DLib into the Reference Manager JabRef},
  doi       = {10.1007/978-3-319-56608-5_80},
  issn      = {0302-9743},
  pages     = {770-774},
  publisher = {Springer International Publishing},
  year      = {2017},
}

@Misc{,
  note = {GROBID. https://github.com/kermitt2/grobid, 2008–2023.},
}

@Article{Hejda2023,
  author    = {Tom Hejda},
  title     = {Overleaf and TeX Live deployment},
  doi       = {10.47397/tb/44-2/tb137hejda-overleaf-tl},
  issn      = {0896-3207},
  number    = {2},
  pages     = {256-256},
  volume    = {44},
  journal   = {TUGboat},
  publisher = {TeX Users Group},
  year      = {2023},
}

@Misc{Horiguchi2021,
  author    = {Hyuga Horiguchi and Itsuki Omori and Masao Ohira},
  title     = {Onboarding to Open Source Projects with Good First Issues: A Preliminary Analysis},
  doi       = {10.1109/saner50967.2021.00054},
  journal   = {2021 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)},
  pages     = {501-505},
  publisher = {IEEE},
  year      = {2021},
}

@Misc{,
  note = {B. Kitchenham, S. Charters. Guidelines for performing systematic literature reviews in software engineering. Technical report, Keele University, 2007.},
}

@Misc{,
  note = {O. Kopp, M. Mühlich. The coverpage package, 2006. https://ctan.org/pkg/coverpage},
}

@Misc{,
  note = {J. Ludewig. Erfahrungen bei der Lehre des Software Engineering. In Software Engineering im Unterricht der Hochschulen, SEUH 11. dpunkt, 2009.},
}

@Misc{Matsubara2021,
  author    = {Patricia Matsubara and Igor Steinmacher and José Maldonado and Bruno Gadelha and Tayana Conte},
  title     = {Trust yourself! Or maybe not: factors related to overconfidence and uncertainty assessments of software effort estimates},
  doi       = {10.1145/3474624.3474643},
  journal   = {Brazilian Symposium on Software Engineering},
  pages     = {452-461},
  publisher = {ACM},
  year      = {2021},
}

@Misc{,
  note = {F. Mittelbach, U. Fischer. The LaTeX Companion, ch. Bibliography Generation, pp. 375–468. Addison-Wesley, third ed., 2023.},
}

@Article{Steinmacher2019,
  author    = {Igor Steinmacher and Christoph Treude and Marco Aurelio Gerosa},
  title     = {Let Me In: Guidelines for the Successful Onboarding of Newcomers to Open Source Projects},
  doi       = {10.1109/ms.2018.110162131},
  issn      = {0740-7459},
  number    = {4},
  pages     = {41-49},
  volume    = {36},
  journal   = {IEEE Software},
  publisher = {Institute of Electrical and Electronics Engineers (IEEE)},
  year      = {2019},
}

@Misc{,
  note = {Technical University of Munich. Reference management software comparison – 9th update, 2022. https://doi.org/10.14459/9.COMPARISON_REFERENCE_MANAGEMENT_2022},
}

@Misc{Vargovich2023,
  author    = {Joseph Vargovich and Fabio Santos and Jacob Penney and Marco A. Gerosa and Igor Steinmacher},
  title     = {GiveMeLabeledIssues: An Open Source Issue Recommendation System},
  doi       = {10.1109/msr59073.2023.00061},
  journal   = {2023 IEEE/ACM 20th International Conference on Mining Software Repositories (MSR)},
  pages     = {402-406},
  publisher = {IEEE},
  year      = {2023},
}

@Misc{,
  note = {B. Veytsman. Using Overleaf for collaborative projects: First impressions and lessons learned. TUGboat 41(2):179–181, 2020. https://tug.org/TUGboat/tb41-2/tb128veytsman-overleaf.pdf},
}

@Misc{,
  note = {D. Voigt, O. Kopp, K. Wild. Systematic literature tools: Are we there yet? In ZEUS, vol. 2839 of CEUR Workshop Proceedings. CEUR-WS.org, 2021.},
}

@Misc{,
  note = {M. Wetzel, H. Röder. Studentische Projekte: erfolgreich oder realistisch? In Software Engineering im Unterricht der Hochschulen, SEUH 11, pp. 17–28. dpunkt, 2009.},
}

@Misc{,
  note = {T. Winters, T. Manshreck, H. Wright. Software Engineering at Google: Lessons Learned from Programming Over Time. O’Reilly Media, 2020.},
}

@Misc{,
  note = {R.M. Zelle, B.M. Wiernik, et al. CSL 1.0.2 specification, 2015. https://docs.citationstyles.org/en/stable/specification.html},
}

Steps to test

./gradlew :jabkit:run --args="get-cited-works --porcelain 10.47397/tb/44-3/tb138kopp-jabref"

Alternatively, run org.jabref.logic.importer.fetcher.citation.crossref.CrossRefCitationFetcherTest

Mandatory checks

@koppor koppor added the status: ready-for-review Pull Requests that are ready to be reviewed by the maintainers label Nov 19, 2025
}

private enum Provider {
crossref,
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

enum values should be UPPERCASE

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wasn't sure if it works with picocli

./gradlew :jabkit:run --args="get-cited-works --provider=semanticscholar --porcelain 10.47397/tb/44-3/tb138kopp-jabref"

Invalid value for option '--provider': expected one of [CROSSREF, SEMANTICSCHOLAR] (case-sensitive) but was 'semanticscholar'

Fixed in f5544da - 39 lines of code ^^

import org.jabref.model.entry.field.StandardField;
import org.jabref.model.entry.identifier.DOI;

import com.fasterxml.jackson.databind.JsonNode;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tools.jackson to avoid the same issue as in the Unpaywall fetcher

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IntelliJ auto import 🙈

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed at b9bcfa2

Copy link
Copy Markdown
Member

@Siedlerchr Siedlerchr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see comments

@github-actions github-actions bot added status: changes-required Pull requests that are not yet complete and removed status: ready-for-review Pull Requests that are ready to be reviewed by the maintainers labels Nov 20, 2025
@github-actions github-actions bot removed the status: changes-required Pull requests that are not yet complete label Nov 20, 2025
@koppor koppor added the status: ready-for-review Pull Requests that are ready to be reviewed by the maintainers label Nov 20, 2025
@koppor koppor added this pull request to the merge queue Nov 20, 2025
Merged via the queue into main with commit c7a17fc Nov 20, 2025
54 checks passed
@koppor koppor deleted the add-cross-ref-for-relations branch November 20, 2025 11:41
@koppor koppor mentioned this pull request Nov 20, 2025
2 tasks
@koppor koppor mentioned this pull request Dec 23, 2025
1 task
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

component: citation-relations component: JabKit [cli] status: ready-for-review Pull Requests that are ready to be reviewed by the maintainers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants