Получить метаданные из DOI

Цифровой идентификатор объекта (DOI) - это глобально уникальная строка, которая идентифицирует электронный документ (например, PDF академической статьи). По сути, он предоставляет метод для создания постоянной ссылки на документ (например, http://dx.doi.org/10.1145/146585.146609).

Существует ли веб-служба (или любая другая система) для получения метаданных (предпочтительно в форме BibTeX) документа из данного DOI?

Отредактировано, чтобы добавить пояснительную информацию.

5 ответов

Раздел 5.4.1 Согласование содержимого документов Справочника DOI гласит: " Согласование содержимого осуществляется регистрационными агентствами DOI для своих имен DOI, в частности, чтобы предлагать пользователям дополнительные представления метаданных". В соответствии с разделом 4 "Поддерживаемые типы контента" в документации для переговоров по контенту DOI для http://crosscite.org/: "В настоящее время три регистрационных агентства DOI внедрили согласование контента для своих DOI: CrossRef, DataCite и mEDRA". Список поддерживаемых форматов (который зависит от агентства регистрации) включает в себя как BibTeX через Accept: application/x-bibtex (это подход, используемый http://doi2bib.org/) и отформатированная запись библиографии через Accept: text/bibliography (это подход, предложенный @anumi выше). При использовании последнего заголовка вы должны указать style=bibtex параметр типа носителя.

Два соответствующих mimetypes обеспечивают немного различные представления. Запрос к GET http://dx.doi.org/10.1038/nrd842 с Accept: application/x-bibtex дает ответ

@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}
}

и с 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}}

curl -LH "Accept: text/bibliography; style=bibtex" http://dx.doi.org/10.1038/nrd842

Посмотрите, как эти ребята реализовали это: 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) и получить ответ:
    • @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} }
  • тогда вы можете разобрать это так, как вы хотите.

Это помогло мне сделать то, что мне нужно было сделать. Тем не менее, лучшим способом было бы взглянуть на их репозиторий GitHub и попытаться создать свой собственный.

Надеюсь, поможет!

CrossRef имеет API, который вы можете использовать с ключом API, который можно получить бесплатно по http://www.crossref.org/requestaccount/.

Реализация Python:

      import requests

def get_doi_bibtex(doi):
  base_url = f"https://doi.org/{doi}"
  headers = {
      "Accept": "text/bibliography; style=bibtex"
  }
  response = requests.get(base_url, headers=headers)

  if response.status_code == 200:
    return response.text.strip()
  else:
    print(response.status_code)
    print(response.text)
    return None

get_doi_bibtex("10.1109/xxxx")
Другие вопросы по тегам