Hackday outputs - adammoore/corda GitHub Wiki

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

Haplo People Data

eprints ORCID Export plugin

ORCID Reports

Orcid Searches

Application that looks up ORCiD IDs associated with a Ringgold ID:

Service Prototype

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": [
      "[email protected]"
    ],
    "institutions": [],
    "studentId": [],
    "repositoryId": "803wy",
    "orcid": [],
    "orcidIsAuthenticated": false,
    "publishedWorks": []
  },
  {
    "names": [
      "Mr Fowler Birch"
    ],
    "typeOfPerson": [
      "Staff"
    ],
    "emails": [
      "[email protected]"
    ],
    "institutions": [],
    "studentId": [],
    "repositoryId": "803wq",
    "orcid": [
      "3097-1409-2433-5179"
    ],
    "orcidIsAuthenticated": false,
    "publishedWorks": []
  }
 ]

code for implementing plugin

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

http://63.35.7.234/corda-restler/public/corda/index.php/DownloaderFromRinggold/ReturnIDListByRingold?ringgold=5844

##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