13

Is there a way to get the DOI (Document Object Identifier) of a research paper when its title is available?

I am preparing a reference database I could not get the URL of all the references. So, I tried to search online but could not get to anything. I will appreciate if anyone uses such tool/website or has any idea.

EDIT I am sorry but my problem is little bigger. I need to automatically (not manually) get them from the websites. Of course, I do not want to do it for more than 50 papers if that is legal/allowed.

7

Reposted from StackOverflow:

Here are three options

CSV upload to crossref.org

CrossRef allows you to upload the linked csv directly, and then performs a text query here: http://www.crossref.org/stqUpload/

However, only 18 of the 250 queries (~7%) returned a doi.

XML Query

Based on the answer on SO by Brian Diggs, here an attempt that does 95% of the work - toward writing the xml-based query, it still has a few bugs that require some deletion using sed. But the biggest problem that my "session timed out" when the query was submitted.

the xml syntax includes an option to use fuzzy matching.

the doiquery.xml contains the template text in @Brians answer; the citations.csv is linked above. (using R, a sample csv can be found on I have posted the first few lines of the table on google docs, or the csv version (not all records have a doi))

library(XML)
doiquery.xml <- xmlTreeParse('doiquery.xml')

query <- doiquery.xml$doc$children$query_batch[["body"]]

citations <- read.csv("citations.csv")

new.query <- function(citation, query = query){
  xmlValue(query[["author"]]) <- as.character(citation$author)
  xmlValue(query[["year"]]) <- as.character(citation$year)
  xmlValue(query[["article_title"]][["text"]]) <- citation$title
  xmlValue(query[["journal_title"]]) <- citation$journal
  return(query)
}


for (i in 1:nrow(citations)){
  q <- addChildren(q, add.query(citations[i,]))
}
axml <- addChildren(doiquery.xml$doc$children$query_batch, q )

saveXML(axml, file = 'foo.xml')

CSV to XML Converter

Creativyst software provides a web based CSV to XML converter.

Steps:

  1. Enter columnames in ElementID's field,
  2. "document" in DocID field
  3. "query" in RowID field
  4. Copy / paste csv in "Input CSV file".
  5. Click Convert

Also, see this related question: https://stackoverflow.com/questions/9880808/shell-script-to-parse-csv-to-an-xml-query

4

So you can do this easily using e.g. Web of Science, and probably other bibliographic databases available through your library.

If that isn't an option, a little google search lead me to the DOI website FAQ, and question 3 is yours. There are 8 registration agencies for DOI, and no single way to search across DOI using document metadata. I tested the free crossref service and it was unable to find one of my articles because that journal doesn't use the crossref agency. One of the other agencies has that information, but you might have to search all of them to find it.

Finally, I tried Google Scholar, which will work if the article in question has reference information available online. That depends on the publisher.

  • I also had the same problem with crossref that I tried before posting this question – Stat-R Jun 26 '12 at 16:37
  • I think Papers or Mendeley mentioned by @aeismail are the way to go - they claim to collect metadata automatically. – atiretoo Jun 26 '12 at 16:40
2

Resources like Web of Knowledge should have information on the DOI's for any titles that have them available (which should be "all of them" for anything that's been published in the last few years).

Tools like Papers or Mendeley should also be able to "harvest" DOI's for published papers.

  • In response to your edit: both Papers and Mendeley should be able to retrieve the metadata for you using the title, unless the paper has just been released (as it might take a while to be archived by various search engines). – aeismail Jun 26 '12 at 20:56
  • I tried but with no success. I will be grateful if you or someone can tell me a website where we can also fetch/download the link to the documents/references. I will do my search again and not use the existing reference file – Stat-R Jun 26 '12 at 21:37
1

The R package fulltext allows you to search DOI's given a title:

library(fulltext)
res1 <- ft_search(query = "Estimating Summer Nutrient Concentrations in
        Northeastern Lakes from SPARROW", from = "plos")
res1 <- ft_links(res1)
res1$plos$ids

[1] "10.1371/journal.pone.0081457" "10.1371/journal.pone.0030492" "10.1371/journal.pone.0049220"

0

Easier, code-free:

At this time, on the CrossRef homepage, there is a text-input field "Metadata search". It says:

Search CrossRef's database of 71 million records for authors, titles, DOIs, ORCIDs, ISSNs, FundRefs, license URIs, etc. You can even paste entire references into the search box and discover their DOIs.

I have tried it out only for one DOI of which I happen to know that a record exists in the crossref database.

You can also use the CrossRef search site and paste the title of the paper there.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.