--- layout: post status: publish published: true title: CrossRef, DOIs and Preparing for Future Assignment wordpress_id: 2642 wordpress_url: https://www.martineve.com/?p=2642 date: !binary |- MjAxMy0wMy0yNiAxMjoxNDowNSArMDEwMA== date_gmt: !binary |- MjAxMy0wMy0yNiAxMjoxNDowNSArMDEwMA== categories: - Technology - Open Access tags: - Technology comments: [] ---

It is a fundamental part of the PILA agreement that is signed when a publisher joins CrossRef that they will link to other articles using their DOIs. So, for example, if I cite an article in a journal that has a DOI, I must ensure that I use that DOI. If it doesn't have a DOI, then I needn't link to the article using the DOI.

A question suddenly occurred to me the other day, though: what happens if, after I've published an article, an article that I cited that did not previously have a DOI is assigned one by its publisher? Do I have a requirement to update? Apparently: yes.

To-date, because I am a low-volume publisher, I have been using the Simple Text Query interface to parse citations and work out where there are DOIs. The problem is, there is no way here for me to be notified of future changes or updates.

The answer, which Ed Pentz gave me on Twitter, was either to re-send queries periodically, or to use stored queries. Realizing that I needed, then, to move towards some kind of automation, I've put together a simple Python script to assist in this process. It's called crossRefQuery and it does what it says, enabling future matches to be emailed to you.

You create a text file containing:

Username
Password
Email
UniqueQueryID
Citation1...
Citation2...

and pipe this into the script. It then returns the XML output to stdout.

Given that Orbit runs off NLM-XML for typesetting, I will probably also write something that will convert NLM citations to CrossRef query format and put that online too. However, Alluvium just runs off plain-text typesetting, so having the formatted citation search option is handy.

Hope it helps someone. Oh, but you will need to contact CrossRef support to get the API enabled on your account.