自動アノテーション(注釈)ブックマークレット

ウェブコンテンツに情報を自動的に付加するブックマークレット(bookmarklet)を作りました。

閲覧しているページに自身の興味を持つキーワードが多数含まれているとき、クリック一つで各キーワードがハイライト表示され、更には関連情報が得られるリンクが新たに加えられるなら便利と思いませんか?

ブラウザのプラグインや注釈サーバーによるサービスとして生命科学分野ではすでにReflectがありますが、前者の場合はブラウザ毎にインストールする必要があり、そして後者では注釈サーバー側からアクセスできるコンテンツでなくては対応できない、という問題点があります。ブックマークレットならばjavascriptが動作するほとんどのブラウザで、そしてブラウザで閲覧できるHTMLコンテンツであればパスワードで制限されていたり、イントラ内であったりしても適切に動作する利点があります。

また、開発者側からの視点として、プラグインはブラウザの豊富な機能を利用できることから、より使い勝手の良いインターフェースや機能を提供できるメリットがある一方で、ブラウザごと、更にはブラウザのバージョンごとに対応する必要があるために常に動作するものを提供し続けるためのコストがかかります。ブックマークレットも同じ問題から完全に自由というわけではないですが、プラグインよりはメンテナンスが容易であると思います。

以上の理由で今回の開発にいたりました。ここに紹介するブックマークレットは、EBIの提供するテキストマイニングシステムwhatizitを利用し、生命科学分野の領域固有語(キーワード、遺伝子・たんぱく質名や疾患名など)を動的にハイライト表示するものです。ブックマークレット実行後に、領域固有語がハイライト表示されるほか、リンクが追加されて関連情報が得られるようになり、さらに、aTag情報がHTMLデータに追加されます。ブラウザで対象ページをファイルに保存することで結果を残しておくことができます(残念ながらIEではうまくいかないようです)。

本サービスを利用するには、以下のリンクをブラウザでブックマークしてください。FirefoxやChromeでは下記のリンクをマウスでクリックしたまま、ブックマーク部分にカーソルを移動して放すだけで登録できます。
ブックマークレット

javascript:(function(){var%20d=document;var%20s=d.createElement('script');s.id='DBCLS_annot';s.src='http://purl.org/togodoc/annot2.js';d.getElementsByTagName('head')[0].appendChild(s);})()

例として本サービスは “S100a4” という領域固有語に対して以下のような情報を追加します。
直接aTagを使わず、dbcls:atagで括っていますが、これは領域固有語がアンカータグの内側にある場合、アンカータグが入れ子になるのを防ぐためです。

<span xmlns:sioc="http://rdfs.org/sioc/ns#"
      xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
      typeof="sioc:Item"
      title="Uniprot:fb=&quot;0&quot; ids=&quot;P05942,P07091&quot;"
      class="DBCLS_uniprot">
      <span property="sioc:content">
      <dbcls:atag info="fb=&quot;0&quot; ids=&quot;P05942,P07091&quot;"
                  atag="&lt;a rel=&quot;sioc:topic&quot;
                              href=&quot;http://purl.uniprot.org/uniprot/P05942&quot;&gt;
                        &lt;span about=&quot;http://purl.uniprot.org/uniprot/P05942&quot; property=&quot;rdfs:label&quot;&gt;
                            P05942
                        &lt;/span&gt;
                        &lt;/a&gt;
                        &lt;a rel=&quot;sioc:topic&quot;
                              href=&quot;http://purl.uniprot.org/uniprot/P07091&quot;&gt;
                        &lt;span about=&quot;http://purl.uniprot.org/uniprot/P07091&quot; property=&quot;rdfs:label&quot;&gt;
                            P07091
                        &lt;/span&gt;
                        &lt;/a&gt;">
                  S100a4
      </dbcls:atag></span></span>

課題

EBI Whatizitのレスポンスが非常に遅かったり、結果が空であることが時折あり、これに起因し、「Processing…」が表示されたままになったり、処理が終わったけれども何もキーワードがハイライトされないことがあります。

ElsevierのScienceDirectについては、先方より送出されるHTMLデータに起因してIEおよびFirefox、Caminoでのみ適切に動作します。 同様に、送出されるHTMLデータとそれに対するブラウザの振る舞いに応じて適切に動作しないことがあります。 この電子ジャーナルサイトではうまくいかなかった、といった例がありましたらお知らせいただけますと幸いです。

その他、PubMed検索結果のように、ハイライトは行われるが、一部の対話的な動作に不具合が生じる例 (PubMedでは「Display Settings」の変更が無効になるなど) もあります。

ブラウザはIE(Ver. 8), Safari, Firefox, Chrome, Camino, Opera (OperaはMac版、いずれも2010/03/03時点最新バージョン)で動作することを確認。IE7以前では適切に動作しないようです。 また、フレームが含まれるページでは動作しないので、対象となるフレームを独立して表示させてから行うと適切に動作すると思われます。