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:
- Python 3.x
- Beautiful Soup
- Biopython.Entrez
- Crossref Commons
- Dimensions CLI
- Requests
- Requests-Cache
- Selenium
- xmltodict
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:
-
PubMed family
-
Scholix family
-
OA family
-
Misc.
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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.