Skip to content

Proposal: a Citation Network Importer, pulling a citation graph from OpenAlex #345

Description

@corydugan

Hello, and thank you for the plugin scaffold and the contributing guide. Both made this straightforward to build.

I have a plugin ready on a branch and would rather ask before opening a pull request, because it raises one design question that is yours to answer.

What it is

File > Import Database, the menu Gephi gives its wizard importers, under a Bibliographic sources category. Give it a search query or one work, choose how many generations of citations to follow, and it builds the directed graph in the workspace with no intermediate file. Edges run from the cited work to the citing work. Nodes carry the title, digital object identifier, year, venue, citation count, open access status, retracted flag, authors, institutions, the source's own concepts and work type, and the generation at which the work was reached.

Two sources ship with it, OpenAlex and Semantic Scholar, behind a CitationSource interface that the wizard's first field chooses between. Crossref or PubMed could be added the same way.

Why it is not already covered

The importers here read spreadsheets, Neo4j, a graph streaming endpoint and a hypertext transfer protocol endpoint. None of them speaks to a bibliographic database, so a scientometrics user currently exports from somewhere else and imports a file.

The question

This importer calls an external application programming interface while the wizard is running, which no importer in this repository does today. If you would rather a plugin never made network calls at import time, or would want a different shape for it, I would like to know that before you spend review time on a pull request.

Three details in case they matter. The wizard offers an optional email address for the polite pool and an optional key, both stored through NbPreferences and neither present in the source. Responses are cached under the platform's cache directory, and with no key set the requests that leave the machine are kept about a second apart. The importer implements LongTask, so the progress bar and the cancel button both work, and cancelling keeps whatever had been fetched.

State of the branch

It packages green from the root, including gephi-maven-plugin:validate, with 45 unit tests that run against recorded payloads and never touch the network. Strings are in Bundle.properties, Gson comes from core-library-wrapper rather than being bundled again, and the licence is MIT.

Happy to open the pull request whenever you would like to see it.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions