PubMedのアブストラクトの取得

NCBIのeUtils経由で、PubMedにクエリを投げてxmlを取得しました。

eUtils

PubMedGenBankなどのデータベースから、検索結果が膨大になるxmlを取得する場合、NCBIに何度もアクセスすることになります。そのような場合に利用するサイトがeUtilsです。

作業

PubMedアブストラクトのxmlを取得するために行ったのは、以下の二つの行程です。
1.EsearchにPubMedのクエリを投げ、取得したxmlから検索に必要なID、クエリを取得。
2.取得したIDなどの情報をクエリとし、EFetchから論文のアブストラクトが書かれたxmlファイルを取得。
Javaのプログラムで作成し、パッケージは java.net.* と java.io.* を使用しました。

EFetch

順番が前後しますが、まずは作業工程2から。
検索クエリからアクセスするアドレスを作成し、そこに書かれていることをファイルに書き込んでいきます。
http://eutils.ncbi.nlm.nih.gov/corehtml/query/static/efetchlit_help.htmlのExampleにクエリとその結果のアドレスの例が書かれています。
今回はEsearchで検索クエリのIDを取得し、そのIDをEFetchに投げます。そのために指定する必要があるのは、retmax、retstart、query_key、WebEnvです。retstartは検索結果の上から何件目から結果を取得するか、retmaxは一度に取得する件数を、query_keyとWebEnvはESearchで取得した検索IDの指定ができます。

ESearch

次に作業工程1です。
http://eutils.ncbi.nlm.nih.gov/corehtml/query/static/esearch_help.htmlのExamplesにアクセスするアドレスの例が書いてあります。EFetchに投げるクエリに必要なQueryKeyやWebEnvを抽出するために、xml形式で取得し、で囲まれている文字列を取得しました。そのために、usehistory=y、retmode=xmlもESearchのクエリにします。また、からは検索結果の件数を得ることができます。検索結果を全て取得したい場合や、結果を複数回に分けて取得したい場合に使用します。
あとは取得した文字列を使って上記のEFetchにアクセスするアドレスを作成して、xmlファイルに書き込みます。