Hackday outputs
Pages 15
-
- Overview
- Haplo People Data API
- eprints ORCID Export
- ORCID Reports
- Return ID List
- Ingest data from Haplo
- Ingest data from ePrints
- Collect ORCIDs by ringgold id
- Download ORCID IDs and affiliation data from the ORCID API
- Python Notebook with some work to understand users with an ORCID ID not registered in the institution
- "Zombie" detector
- Ruby based Employment lookup
- Find My Researchers:
- How does it work?
Clone this wiki locally
Overview
The COrDa Hackday at Jisc London Offices on 11th February 2019 produced some interesting pieces of work, detailed below. We also further explored the proposed overall framework and it seems necessary that there will be at least some element of caching or storage present in the system going forwards.
Further work was done at a Members event at the Jisc Manchester Offices on 26-27th March 2019.
(Updated diagram here soon)
Initial outputs used a lightweight JSON format (below) for results but it is more likely that the next iteration would have a schema based on the ORCID person data schema / API
Application that looks up ORCiD IDs associated with a Ringgold ID:
Haplo People Data API
From the Haplo CRIS, a list of all the ORCID iD in the system.
Query endpoint for a test Haplo instance: https://dev7a26.infomanaged.co.uk/api/demojisc-hackday/get-people-data
Example Output:
[
{
"names": [
"Mr Gamaliel Kelly"
],
"typeOfPerson": [
"Staff"
],
"emails": [
"gamaliel.kelly@example.org"
],
"institutions": [],
"studentId": [],
"repositoryId": "803wy",
"orcid": [],
"orcidIsAuthenticated": false,
"publishedWorks": []
},
{
"names": [
"Mr Fowler Birch"
],
"typeOfPerson": [
"Staff"
],
"emails": [
"fowler.birch@example.org"
],
"institutions": [],
"studentId": [],
"repositoryId": "803wq",
"orcid": [
"3097-1409-2433-5179"
],
"orcidIsAuthenticated": false,
"publishedWorks": []
}
]
The first version use an interim JSON Schema (discussions :
// JCAL REQUESTS FROM SYSTEMS
person: {
emailAddresses:
names:
institutions:
orcid:
orcidIsAuthenticated:
repositoryId:
crisId:
studentRecordSystemId:
// Used for matching in JCAL
publishedWorks: [
{
title:
doi:
handle:
issn:
isbn:
}
]
}
// JCAL THEN COLLATES:
singleOrcid: {
emailAddresses: [],
names: [],
institutions: [],
repositoryId: [],
crisIds: [],
studentRecordSystemIds: [],
authenticatedIn: [],
scopusIds: [],
// Used for matching in JCAL
publishedWorks: [
{
title:
doi:
handle:
issn:
isbn:
pubmedID:
pubmedCentralId:
}
]
}
eprints ORCID Export
basic eprints example:
curl -u user:password -H"Accept:application/json" http://63.35.7.234/eprints/cgi/users/orcid_api/creators/JSON?creators=admin
returns a JSON which lists ORCID iD, works and matching eprints user id
[
{
"orcid": "0000-0002-2085-1908",
"eprints": [
{
"eprintid": 1,
"title": "Iterative augmentation of a medical training simulator: Effects of affective metacognitive scaffolding",
"uri": "http://63.35.7.234/eprints/id/eprint/1"
},
{
"eprintid": 4,
"title": "Funny Evidence: Female Comics are the New Policy Entrepreneurs",
"uri": "http://63.35.7.23/eprints/id/eprint/4"
}
],
"userid": "2"
}
]
Requires the generic reporting framework
The two new pieces of code are captured here until better documented: eprints code
ORCID Reports
Possible output from API implemented in ORCID, to export report data.
{
groupID: '4444-4444-4444-4444',
group name: 'Test org',
clientID: '5555-5555-5555-5555',
client name: 'Test client',
reportDate: 'YYYY-MM-DD',
reportStartDate: 'YYYY-MM-DD',
reportEndDate: 'YYYY-MM-DD',
emailDomains: [
'abc.ac.uk': {
recordCount: 123
},
'def.edu': {
recordCount: 456
}
],
userActions: {
AuthorizeP_READ_LIMITED: {
totalEvents: 123,
uniqueEvents: 456
},
Authorize_Deny: {
totalEvents: 123,
uniqueEvents: 456
},
New-Registration: {
totalEvents: 123,
uniqueEvents: 456
},
}
}
##Service Prototype
A service prototype ingests reports from the haplo JSON then produces a report (perhaps it would also use the eprints output as it also has the same JSON format?)
The code is currently the main component of the github repository (it should live on top of Restler PHP framework)
Prototype of the service:
Return ID List
http://63.35.7.234/corda-restler/public/corda/index.php/Downloader/ReturnIDList
0000-0001-6487-6050 Mr Gamaliel Kelly ORCID API
0000-0001-5280-5116 Ms Wylma Newton ORCID API
0000-0003-3542-4519 Mrs Ainsley Cole ORCID API
0000-0002-4797-0528 Mr Antoine Collier ORCID API
3097-1409-2433-5179 Mr Fowler Birch HAPLO DATA
0000-0002-9324-3364 Mr Ludvig Law ORCID API
9457-4223-9296-6774 Mr Anatol Kent HAPLO DATA
0000-0002-3087-6850 Mr Rodge Wade ORCID API
0000-0002-9360-1782 Mr Piggy Watkins ORCID API
0000-0002-7459-6703 Mr Claudius Doyle ORCID API
Ingest data from Haplo
http://63.35.7.234/corda-restler/public/corda/index.php/DemoConnector/haplo_connect
Ingest data from ePrints
http://63.35.7.234/corda-restler/public/corda/index.php/DemoConnector/eprints_connect
Collect ORCIDs by ringgold id
##Other prototypes and experiments
Download ORCID IDs and affiliation data from the ORCID API
https://github.com/oacore/orcid-experiments
Python Notebook with some work to understand users with an ORCID ID not registered in the institution
https://notebooks.azure.com/mcancellieri/projects/orcid-wrangler
"Zombie" detector
Detects ORCIDS which have never been active after first creation http://63.35.7.234/cgi-bin/zombie.cgi?0000-0002-2085-1908
Ruby based Employment lookup
Very rough demo of retrieving orcid records where the current employment is a specified employer. Employer is looked up using the ringgold or grid id Code: https://github.com/anarchist-raccoons/ringorcid
Find My Researchers:
Application that looks up ORCiD IDs associated with a Ringgold ID:
How does it work?
- Uses public API to search for all ORCID IDs with an affiliation to an institution, using Ringgold ID to specify the institution
- Fetches the resulting ORCID IDs 200 at a time (maximum API will allow) until all results have been retrieved (SLIGHTLY SLOW)
- Displays list of ORCID IDs on a web page
- For each ORCID ID displayed, fetches the full, publicly available, information (VERY SLOW!)
- Once all full data has been retrieved, make table searchable, sortable and exportable