ResolveRef Resolver

  • Comments
  • About
  • Introduction

    ResolveRef is way of creating human-readable URLs pointing to journal articles in the scientific literature. In web-geek terms, it's essentially a RESTful way of doing a PubMed search which returns a single hit, and redirects to the full text article via the DOI URL. If that's just gibberish to you, take a look at the example below. ResolveRef URLs are constructed like:

    or in the case where there is no volume identifier,

    For example to retrieve the journal article:

    EL Willighagen, NM O'Boyle, H Gopalakrishnan, D Jiao, R Guha, C Steinbeck and D J Wild, Userscripts for the Life Sciences BMC Bioinformatics, 2007, 8, 487.

    you can use the ResolveRef URL: Bioinformatics/2007/8/487

    Which in effect executes a PubMed search, and if there is a single result (which in this case there is), ResolveRef retrieves the DOI and redirects your browser to that document (which is usually the electronic version of the article at the publishers site).


    The main purpose of ResolveRef isn't really to be used via the form above, but the form can help you construct ResolveRef URLs when the journal name used by PubMed isn't obvious. Once you are familiar with the "PubMed titles" of your favorite journals, you can construct ResolveRef URLs directly into your browsers URL bar.

    By adding the optional query strings ?redirect=doi, ?redirect=pubmed or ?redirect=hubmed, the URL will resolve to the DOI, the PubMed abstract or the HubMed abstract respectively.

    For example: Bioinformatics/2007/8/487?redirect=hubmed

    will redirect your browser to the HubMed abstract for the above article, rather than the default redirection to the DOI. If for some reason PubMed doesn't have a DOI for your article, ResolveRef forwards to the HubMed abstract page.


    ResolveRef is based on an idea originally presented by Noel O'Boyle, who proposed a standard identifier for journal articles called OpenRef. The idea is that every journal article can be uniquely identified using a URL scheme, essentially of the form described above.

    The nice thing about these OpenRef URLs is that they should be unique and guessible, unlike other identifiers in use such as the DOI, or the PubMed ID (PMID).

    I initially wrote an "OpenRef resolver" using Turbogears that took these sorts of URLs, searched the PubMed database and forwarded the requester to the apporiate article via the DOI. After a bit of discussion with Noel and others, I became clear that the "perfect ideal" of unique OpenRef identifiers probably couldn't be implemented this way, in part due to the warts of the PubMed database, and the fact that PubMed focuses on the life sciences and doesn't index everything. It seems like a real OpenRef resolver would require a new database .. but since that OpenRef database doesn't actually exist yet, ResolveRef is probably the closest thing to a working OpenRef resolver.