问题
A digital object identifier (DOI) is a globally unique string that identifies an electronic document (for example, a PDF of an academic article). It essentially provides a method for creating a permalink to a document (for example, http://dx.doi.org/10.1145/146585.146609).
Is there a web service (or any other system) to get the metadata (preferably in BibTeX form) of a document from a given DOI?
Edited to add some expository information.
回答1:
curl -LH "Accept: text/bibliography; style=bibtex" http://dx.doi.org/10.1038/nrd842
回答2:
Section 5.4.1 Content Negotiation of the DOI Handbook documents states, "Content negotiation is being implemented by DOI Registration Agencies for their DOI names, specifically to offer value-added metadata representations for users." According to Section 4 Supported Content Types of the DOI Content Negotiation documentation for http://crosscite.org, "Currently three DOI registration agencies have implemented content negotation for their DOIs: CrossRef, DataCite and mEDRA." The list of supported formats (which depends on the registration agency) includes both BibTeX via Accept: application/x-bibtex
(this is the approach used by http://doi2bib.org) and formatted bibliography entry via Accept: text/bibliography
(this is the approach suggested by @anumi above). When using the latter header, you must specify the style=bibtex
media type parameter.
The two relevant mimetypes provide slightly different representations. A request to GET http://dx.doi.org/10.1038/nrd842
with Accept: application/x-bibtex
yields the response
@article{Atkins_2002,
doi = {10.1038/nrd842},
url = {http://dx.doi.org/10.1038/nrd842},
year = 2002,
month = {jul},
publisher = {Springer Nature},
volume = {1},
number = {7},
pages = {491--492},
author = {Joshua H. Atkins and Leland J. Gershell},
title = {From the analyst{\textquotesingle}s couch: Selective anticancer drugs},
journal = {Nature Reviews Drug Discovery}
}
and with Accept: text/bibliography; style=bibtex
@article{Atkins_2002, title={From the analyst’s couch: Selective anticancer drugs}, volume={1}, ISSN={1474-1784}, url={http://dx.doi.org/10.1038/nrd842}, DOI={10.1038/nrd842}, number={7}, journal={Nature Reviews Drug Discovery}, publisher={Springer Nature}, author={Atkins, Joshua H. and Gershell, Leland J.}, year={2002}, month={Jul}, pages={491–492}}
回答3:
Take a look at how these guys implemented it: www.doi2bib.org.
What I did in one of my projects:
- looked at their
url
request structure:http://www.doi2bib.org/doi2bib
+?id=
+{your doi here}
. - then used their... well
API
to get the data (e.g. http://www.doi2bib.org/doi2bib?id=10.1016%2Fj.actpsy.2016.09.007) and the response is:@article{Leinen_2016, doi = {10.1016/j.actpsy.2016.09.007}, url = {http://dx.doi.org/10.1016/j.actpsy.2016.09.007}, year = 2016, month = {nov}, publisher = {Elsevier {BV}}, volume = {171}, pages = {36--46}, author = {Peter Leinen and Stefan Panzer and Charles H. Shea}, title = {Hemispheric asymmetries of a motor memory in a recognition test after learning a movement sequence}, journal = {Acta Psychologica} }
- then you can parse it the way you want.
This helped me to get what I needed done. However, the nicest way would be to take a look at their GitHub repository and try to build your own.
Hope it helps!
回答4:
CrossRef has an API, which you can use with an API key that can be obtained free of charge from http://www.crossref.org/requestaccount/.
来源:https://stackoverflow.com/questions/10507049/get-metadata-from-doi