从 DOI 获取元数据
Posted
技术标签:
【中文标题】从 DOI 获取元数据【英文标题】:Get metadata from DOI 【发布时间】:2012-05-17 10:25:58 【问题描述】:digital object identifier (DOI) 是一个全球唯一的字符串,用于标识电子文档(例如,学术文章的 PDF)。它本质上提供了一种创建文档永久链接的方法(例如,http://dx.doi.org/10.1145/146585.146609)。
是否有网络服务(或任何其他系统)可以从给定 DOI 获取文档的元数据(最好是 BibTeX 形式)?
编辑添加了一些说明性信息。
【问题讨论】:
我也不确定为什么关闭,但这里有相关信息crosscite.org/cn 既然问题已经结束,我会在cmets中回答:curl -LH "Accept: text/bibliography; style=bibtex" http://dx.doi.org/10.1038/nrd842
另外,寻找 JabRef。
@anumi 问题已重新打开,如果您想将您的评论转换为答案。
您知道自己在 Stack Exchange 上需要两年时间才能重新打开一个问题。
【参考方案1】:
Section 5.4.1 Content Negotiation DOI 手册文档指出,“DOI 注册机构正在为其 DOI 名称实施内容协商,特别是为用户提供增值元数据表示。”根据http://crosscite.org 的 DOI 内容协商文档中的Section 4 Supported Content Types,“目前三个 DOI 注册机构已经为其 DOI 实施了内容协商:CrossRef、DataCite 和 mEDRA。”支持的格式列表(取决于注册机构)包括通过Accept: application/x-bibtex
的BibTeX(这是http://doi2bib.org 使用的方法)和通过Accept: text/bibliography
格式化的书目条目(这是上面的the approach suggested by @anumi)。使用后一种标头时,必须指定style=bibtex
媒体类型参数。
这两种相关的 mimetype 提供了略微不同的表示。使用Accept: application/x-bibtex
对GET http://dx.doi.org/10.1038/nrd842
的请求会产生响应
@articleAtkins_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\textquotesingles couch: Selective anticancer drugs,
journal = Nature Reviews Drug Discovery
和Accept: text/bibliography; style=bibtex
@articleAtkins_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
【讨论】:
把这些放在一起很棒!我会把它标记为答案,它真的很有帮助。【参考方案2】:curl -LH "Accept: text/bibliography; style=bibtex" http://dx.doi.org/10.1038/nrd842
【讨论】:
还有doi2bib.org/#/doi的doi2bib(“给我们一个DOI,我们会尽最大努力为您提供BibTeX条目”) 这个请求/响应接口是否记录在某个地方?您是如何找到此功能的? @argentpepper:抱歉,我不记得了。 @argentpepper:显然是官方的:cros-s-ref.org/labs/citation-formatting-service【参考方案3】:看看这些人是如何实现它的:www.doi2bib.org。
我在我的一个项目中做了什么:
查看了他们的url
请求结构:http://www.doi2bib.org/doi2bib
+ ?id=
+ your doi here
。
然后使用他们的...以及API
来获取数据(例如http://www.doi2bib.org/doi2bib?id=10.1016%2Fj.actpsy.2016.09.007)并且响应是:
@articleLeinen_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
然后你可以按照你想要的方式解析它。
这帮助我完成了我需要做的事情。但是,最好的方法是查看他们的 GitHub 存储库并尝试构建自己的存储库。
希望对你有帮助!
【讨论】:
谢谢!他们的应用程序似乎在发出类似于上述@anumi (GET http://dx.doi.org/whatever
) 的请求,但标题为Accept: application/x-bibtex; charset=utf-8
而不是Accept: text/bibliography; style=bibtex
。我将使用此信息创建一个新答案。【参考方案4】:
CrossRef has an API,您可以使用可从http://www.cros-s-ref.org/requestaccount/ 免费获取的 API 密钥。
【讨论】:
不再可用。 @IGP 您不必再注册了。 API 仍然有效。以上是关于从 DOI 获取元数据的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 HealthKit 从 iHealth 获取元数据?