Skip to main content

richcontext.scholapi

Rich Context API integrations for federating discovery services and metadata exchange across multiple scholarly infrastructure providers.

Development of the Rich Context knowledge graph uses this library to:

  • identify dataset links to research publications
  • locate open access publications
  • reconcile journal references
  • reconcile author profiles
  • reconcile keyword taxonomy

This library has been guided by collaborative work on community building and metadata exchange to improve Scholarly Infrastructure, held at the 2019 Rich Context Workshop.

Installation

Prerequisites:

To install from PyPi:

pip install richcontext.scholapi

If you install directly from this Git repo, be sure to install the dependencies as well:

pip install -r requirements.txt

Then copy the configuration file template rc_template.cfg to rc.cfg and populate it with your credentials.

NB: be careful not to commit the rc.cfg file in Git since by definition it will contain sensitive data, e.g., your passwords.

Parameters used in the configuration file include:

parameter value
chrome_exe_path path/to/chrome.exe
core_apikey CORE API key
dimensions_password Dimensions API password
elsevier_api_key Elsvier API key
email personal email address
orcid_secret ORCID API key
repec_token RePEc API token

Download the ChromeDriver webdriver for the Chrome brower to enable use of Selenium. This will be run in a "headless" mode.

For a good (though slightly dated) tutorial for installing and testing Selenium on Ubuntu Linux, see: https://christopher.su/2015/selenium-chromedriver-ubuntu/

Usage

from richcontext import scholapi as rc_scholapi

# initialize the federated API access
schol = rc_scholapi.ScholInfraAPI(config_file="rc.cfg", logger=None)
source = schol.openaire

# search parameters for example publications
title = "Deal or no deal? The prevalence and nutritional quality of price promotions among U.S. food and beverage purchases."

# run it...
if source.has_credentials():
    response = source.title_search(title)

    # report results
    if response.message:
        # error case
        print(response.message)
    else:
        print(response.meta)
        source.report_perf(response.timing)

Testing

First, be sure that you're testing the source and not from an installed library.

Then run unit tests on the APIs for which you have credentials and generate a coverage report:

coverage run -m unittest discover

Then create GitHub issues among the submodules for any failed tests.

Also, you can generate a coverage report and upload that via:

coverage report
bash <(curl -s https://codecov.io/bash) -t @.cc_token

Test coverage reports can be viewed at https://codecov.io/gh/Coleridge-Initiative/RCApi

API Integrations

APIs used to retrieve metadata:

See the coding examples in the test.py unit test for usage patterns per supported API.

Troubleshooting

  • ChromeDriver

If you encounter an exception about the ChromeDriver version, for example:

selenium.common.exceptions.SessionNotCreatedException: Message: session not created:
  This version of ChromeDriver only supports Chrome version 78

Then check your instance of the Chrome browser to find its release number, then go to https://chromedriver.chromium.org/downloads to download the corresponding required version of ChromeDriver.

Literature

For more background about open access publications see:

Piwowar H, Priem J, Larivière V, Alperin JP, Matthias L, Norlander B, Farley A, West J, Haustein S. 2017.
The State of OA: A large-scale analysis of the prevalence and impact of Open Access articles
PeerJ Preprints 5:e3119v1
https://doi.org/10.7287/peerj.preprints.3119v1

Contributions

If you'd like to contribute, please see our listings of good first issues.

For info about joining the AI team working on Rich Context, see https://github.com/Coleridge-Initiative/RCGraph/blob/master/SKILLS.md

Kudos

Contributors: @ceteri, @IanMulvany, @srand525, @ernestogimeno, @lobodemonte, plus many thanks for the inspiring 2019 Rich Context Workshop notes by @metasj, and guidance from @claytonrsh, @Juliaingridlane.

Metadata

Release files for richcontext-scholapi 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for richcontext-scholapi 1.2.0
File Size Uploaded Provenance Actions
richcontext-scholapi-1.2.0.tar.gz 19.3 kB Without provenance Details for richcontext-scholapi-1.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for richcontext-scholapi 1.2.0
File Interpreter ABI Platform Actions
richcontext_scholapi-1.2.0-py3-none-any.whl Python 3 none any Details for richcontext_scholapi-1.2.0-py3-none-any.whl

Total release size: 34.2 kB

Release files / richcontext-scholapi-1.2.0.tar.gz

Download URL richcontext-scholapi-1.2.0.tar.gz
Size 19.3 kB
Tags Source
SHA-256 checksum
How to use checksums
9e6ba00a2236b14be1ba23b2acdd87890a185407b3a1a6ad35c4df2ed8af82c1
BLAKE2b-256 checksum
How to use checksums
386250a46b2f9a469de357d555745f8f9f3b2bb3ebc558694f70d86f03d0685b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.6.5

Release files / richcontext_scholapi-1.2.0-py3-none-any.whl

Download URL richcontext_scholapi-1.2.0-py3-none-any.whl
Size 14.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dedba8f8fa2d855e79b417f4f9ddeb973789d552391233b3fa49bcf135b3af6c
BLAKE2b-256 checksum
How to use checksums
92f8de91f6ff6a05a63083cb1dbee23427841fb9fc697f086939502ee7046714
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.6.5

Security for richcontext-scholapi 1.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page