janeway icon indicating copy to clipboard operation
janeway copied to clipboard

Add support for Research Organization Registry (ROR)

Open joemull opened this issue 2 years ago • 1 comments

Problem

To show the impact of our publishing activities, we often want to see how many affiliates of a given university have published in our journals. Authors are encouraged to enter the names of their universities when they publish through Janeway, but they do not always give the same names for their universities. As a result, if we tell the computer to give us all the authors who typed in a given name, we may be missing some out--it will be imprecise and messy.

This is the problem solved by the Research Organization Registry (ROR). They assign unique identifiers to organizations, like DOIs for digital objects, ORCIDs for people, and ISBNs for books.

To use ROR in Janeway, we need to build the data model for it in our database and provide interfaces that let individual users select an authoritative organization name, and that allow press managers to safely match existing institution names to ROR identifiers.

Proposed user journeys

  • [ ] As a user registering for the first time, I should not be asked for institution, affiliation, and country right away, but instead have an option on my profile page to add an affiliation, which should lead me through the data entry and ROR selection steps (if applicable) on a dedicated page (change theme to admin, for consistency with UI in submission?) image image

  • [ ] As an author, when I am submitting an article, I should be prompted to search for and select my institution using ROR data. I should have an option to enter a custom string but it shouldn't be as convenient as searching and selecting my institution from the ROR list. image

  • [ ] As a publishing librarian or research impact librarian, I want to see ROR data in Crossref deposits, OAI-PMH feeds, and JATS files exposed to web crawlers so that I can track research impact.

  • [ ] As a publisher importing metadata, I want to be able to import RORs using the import / export / update interface.

  • [ ] As an editor/publisher I want to be able to pull reports using ROR as a filter

  • [ ] As a marketer/publisher I want to pull reports that compare authors against the consortial billing plugin

Proposed data model

classDiagram
    Account "0..1" <-- "*" Affiliation
    FrozenAuthor "0..1" <-- "*" Affiliation
    PreprintAuthor "0..1" <-- "*" Affiliation
    Affiliation "*" --> "1" Organization
    Organization "*" --> "*" Location
    Location "*" --> "0..1" Country
    class Account{
        property affiliation() str
        property institution() str
        property department() str
    }
    note for Account "CharField institution deprecated\nCharField department deprecated"
    class FrozenAuthor{
        property affiliation() str
        property institution() str
        property department() str
    }
    note for FrozenAuthor "CharField institution deprecated\nCharField department deprecated"
    class PreprintAuthor{
        property affiliation() str
    }
    note for PreprintAuthor "CharField affiliation deprecated"
    class Affiliation{
        CharField title
        CharField department
        BooleanField is_primary
        DateField start
        DateField end
        property current() bool
    }
    class Organization{
        CharField name
        URLField ror
        CharField ror_status
    }
    class Location{
        CharField name
        CharField latitude
        CharField longitude
        IntegerField geonames_id
    }

Question: Where should country go in this model?

Additional context

  • See https://github.com/BirkbeckCTP/hourglass/pull/125 for one example of how to integrate the form and API
  • RORs are required in Crossref 5.3: https://www.crossref.org/documentation/schema-library/metadata-deposit-schema-5-3-1/
  • Guide for publishers: https://ror.readme.io/docs/publishers
  • REST API: https://ror.readme.io/docs/rest-api
  • Existing affiliation data should be matched with ROR to back-populate ROR IDs where possible

joemull avatar Sep 28 '22 12:09 joemull

I've added this to the custom development sprint.

ajrbyers avatar Oct 02 '23 10:10 ajrbyers