janeway
janeway copied to clipboard
Add support for Research Organization Registry (ROR)
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?)
-
[ ] 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.
-
[ ] 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
I've added this to the custom development sprint.