DOI Look up

tkrebs - July 28, 2007 - 15:54
Project:Bibliography Module
Version:5.x-1.x-dev
Component:Code
Category:feature request
Priority:normal
Assigned:Unassigned
Status:active
Description

It would be extremely useful if biblio could look up citation information from a Digital Object Identifier (DOI) number. Similar to http://www.connotea.org

Looks like there are tools and APIs available to help with this:
http://www.doi.org/tools.html
http://www.crossref.org/index.html

#1

lennart - November 21, 2007 - 00:36

Would it be possible just to type in the DOI and then the module would automatically retrieve the rest of the information?

#2

rjerome - November 29, 2007 - 03:10

Yes I think so but I haven't had the time to implement it.

Ron.

#3

ajzz - June 11, 2008 - 07:23

1) Bump for DOI based citation info lookup feature. I am building a new site and need to populate several years worth of (electronically available) articles. This feature would save *a lot* of time while adding new citations in general. A related useful feature would be to allow file imports of a text file list of DOIs.

2) Where DOIs are present in existing nodes, these can safely replace the OpenURL link in the list view.

3) In the full view, DOI URLs can be auto generated by using the dx.doi.org prefix. It seems redundant that a separate URL field with the prefix needs to be typed in to have an active link.

4) "Abstract"-like DOI hyperlink in list view?

#4

MichelO - August 5, 2008 - 18:52

I noticed a "biblio_doi" field already existed in the biblio table, so for me importing DOI URLs was just a matter of editing the EndNote XML parser (endnote8_parser.inc), and changing a few lines in biblio.module.

endnote8_parser.inc changes:
The DOI URLs are enclosed in "electronic-resource-num" tags, so change this "case" in the en8_characterData() function to:

case 'electronic-resource-num': // DOI URL
      $node_array[$node_id]['biblio_doi'] .= $data;
      break;

Now it's just a matter of showing the data in your various biblio lists.
In theme_biblio_long() in biblio.module (or in your theme's template.php) add something like this:
if ($node->biblio_doi) {
  $doi = stristr($node->biblio_doi, '10.'); // the actual useful part of a DOI URL starts with "10."
  $attrib = (variable_get('biblio_links_target_new_window',null)) ? array('target'=>'_blank') : null;
  $output .= '<h4>'.t("DOI Name (links to online publication)").'</h4>' . l($doi,"http://dx.doi.org/".$doi,$attrib) . "\n";
}

In biblio_show_results() add something like this just before the $content .= theme('biblio_list', $node,$base,$style,$inline); line:
if ($node->biblio_doi) $content .= '<a href="http://dx.doi.org/' . stristr($node->biblio_doi, '10.') . '" title="DOI link to online publication"><img src="some_doi_image.png" /></a>';

You can see working examples at http://biosyn.lic.leidenuniv.nl/en/publications or http://theor.lic.leidenuniv.nl/en/publications. The publications listed are also associated with researchers and research topics/expertises, and, if neccessary, tagged as a "key publication" of the research group.

#5

ajzz - March 30, 2009 - 23:40

Thanks MichelO, I will try these suggestions out, that will already be an improvement. Your links above are impressive.

I would like to return to the original point of DOI metadata lookup using an example on your site. If we look at the link from MichelO above, http://biosyn.lic.leidenuniv.nl/en/publications/recent the second and third articles in 2009 (as of post date) are from the same journal but their titles are shown different... this is a common problem with citing page numbers as well. In the long run, it is useful to have normalized data for all citations. In that regard, if a DOI is provided, there should be a way to pull metadata from Crossref and have that metadata supercede the user-entered details.

To elaborate the feature request:
1) while adding a biblio node ---
From both the administrative and user viewpoints and for accuracy and uniformity of the database, the following are suggested. Data entry could have the unique identifier field (DOI/ISBN/etc) as the first field of entry. A button or checkbox next to the field should give the user an option to "auto-fill" citation data. And the node add submit button confirms the data entered.
This work flow will ensure uniformity. Module admins should be given the option to force crossref/isbn metadata when DOI/ISBNs etc. are available.

2) while importing a bibliography ---
As in the example above, citation databases like Medline, ISI etc do not follow the same journal abbreviations and title capitalization rules. Thus, when libraries are uploaded by multiple users or from multiple sources, there is a problem with internal consistency. Allowing DOI/ISBN metadata to supercede will ameliorate this issue.

3) keeping bibliography updated ---
Many journals, books, etc are published online months in advance now. Users/Univ Departments are eager to cite documents as soon as they are published online, which means the database would need to be updated with issue/page information etc. once the print version is released. Often errata and retractions of articles are also added to the online abstracts much later. To keep all this information upto date, an admin feature that can update citation metadata for all biblio nodes (flagged as "auto-fill") containing identifiers (DOI or ISBN) would be of excellent utility to maintain data accuracy.

Original post 03/28. Edited for clarity on 03/30 - Ajzz

#6

rjerome - March 29, 2009 - 15:44

OK, this is way to weird!! Last night as you were writing this, I was working on implementing this very request before I even saw it! Believe it or not I was writing an XML parser to parse information like this (http://www.crossref.org/openurl/?noredirect=true&format=unixref&id=doi%3...) into a biblio "node" and auto fill the input form. Now, this is currently being built for the 6.x version, but could probably be ported back to 5.x.

So I guess the answer to your request is... Stay tuned, it's coming.

Ron.

#7

ajzz - March 30, 2009 - 23:02

Ron, that's exciting and I'd claim that if two people think of the same thing around the same time, there must be immediate need for it :)
I'm willing and able to setup a 6.x test server and help you alpha the upgrade if needed. Are you also including the biblio list display tweaks from MichelO? Those seem easy and useful. Cheers! Ajay

#8

ajzz - March 31, 2009 - 01:45

FYI: ISBN lookup, if not available through crossref, can be done through the Library of Congress SRU (Search and Retreive through URL) web service. That leaves you with some more XML to parse.

Here's an example (there are simpler record schemas available, this is the default one):
http://z3950.loc.gov:7090/voyager?version=1.1&operation=searchRetrieve&m...

Cheers!

#9

rjerome - March 31, 2009 - 14:31

Parsing is the easy part, what's proving to be a challenge is injecting the data into the form!!

Ron.

#10

rjerome - April 7, 2009 - 16:55

FYI, the DOI lookup is now in the 6.x-dev code.

Ron.

#11

ajzz - April 7, 2009 - 19:51

Cool thanks... will test this out and keep you posted.

#12

biocomp.pat - September 30, 2009 - 23:18

Wow! I just discovered your module, and it's fantastic what you've done with it!

Anyhow, quick suggestion, referring back to item 3 in the #3 post: Would it make sense to have a URL/DOI field instead of 2 separate ones? It seems to me that the only time a URL would be useful would be when there isn't a DOI, since DOI provides the link when prefixed with "http://dx.doi.org/"

Personally, I ask because I've been prepopulating with the DOI, and just now realized that I can't get the titles to link to the articles unless I go back and manually copy the DOI URL into the URL field. Perhaps the easier solution would be to read the DOI if the URL field is empty?

Anyhow, thanks for all you do!

 
 

Drupal is a registered trademark of Dries Buytaert.