(57)【要約】【課題】他のアノテーションの削除により生じるアノテーションの埋め込み位置のずれを防ぐことができるアノテーションプログラム、アノテーション装置及びアノテーション方法を提供することを目的とする。【解決手段】コンピュータを、アノテーション付与構造位置取得手段１２において求められた構造位置情報から現在付与されている他のアノテーションの存在とは独立な構造位置情報を再計算する第１アノテーション独立型構造位置取得手段１５と、アノテーション情報の復元時、他のアノテーションの存在とは独立な構造位置情報から、受信したＷｅｂ資源の解析結果であるＷｅｂ資源解析結果の上での現実のアノテーション埋め込み位置を求める第２アノテーション独立型構造位置取得手段１７として動作させることにより上記課題を解決する。【選択図】  図３
2010257114.tif 000002
【特許請求の範囲】
【請求項１】
アノテーション情報を管理するコンピュータを動作させるアノテーションプログラムであって、
前記コンピュータを、
Ｗｅｂ資源を受信する受信手段と、
受信したＷｅｂ資源におけるアノテーション付与位置を前記Ｗｅｂ資源における構造位置情報として求めるアノテーション付与構造位置取得手段と、
前記アノテーション付与構造位置取得手段が求めた前記Ｗｅｂ資源における構造位置情報から現在付与されている他のアノテーションの存在とは独立な構造位置情報を再計算して前記Ｗｅｂ資源における構造位置情報とする第１アノテーション独立型構造位置取得手段と、
アノテーション対象であるＷｅｂ資源の識別情報と、前記第１アノテーション独立型構造位置取得手段が求めた前記Ｗｅｂ資源における構造位置情報と、アノテーション内容とを含むアノテーション情報をアノテーションデータベースに格納するアノテーション情報格納手段と、
アノテーション情報の復元時、前記アノテーションデータベースから取り出された前記アノテーション情報に基づき、前記他のアノテーションの存在とは独立な構造位置情報を求めるアノテーション復元手段と、
前記他のアノテーションの存在とは独立な構造位置情報から、受信したＷｅｂ資源の解析結果であるＷｅｂ資源解析結果の上での現実のアノテーション埋め込み位置を求める第２アノテーション独立型構造位置取得手段と、
前記第２アノテーション独立型構造位置取得手段が求めた前記Ｗｅｂ資源解析結果の上での現実のアノテーション埋め込み位置に、アノテーション内容をアノテーションテキストフラグメントとして埋め込むアノテーションテキストフラグメント埋め込み手段と
して動作させるアノテーションプログラム。
【請求項２】
前記コンピュータを、更に、
アノテーション情報の付与時、現在付与されている他のアノテーションの存在とは独立な状態において同一位置にある他のアノテーションとの順序関係を取得して同一位置アノテーション順序関係データベースに保存する同一位置順序関係保存手段と、
アノテーション情報の復元時、前記同一位置アノテーション順序関係データベースに保存した順序関係に従って、現在付与されている他のアノテーションの存在とは独立な状態において同一位置にある他のアノテーションとの順序関係を復元する同一位置順序関係復元手段と
して機能させる請求項１記載のアノテーションプログラム。
【請求項３】
アノテーション情報を管理するアノテーション装置であって、
Ｗｅｂ資源を受信する受信手段と、
受信したＷｅｂ資源におけるアノテーション付与位置を前記Ｗｅｂ資源における構造位置情報として求めるアノテーション付与構造位置取得手段と、
前記アノテーション付与構造位置取得手段が求めた前記Ｗｅｂ資源における構造位置情報から現在付与されている他のアノテーションの存在とは独立な構造位置情報を再計算して前記Ｗｅｂ資源における構造位置情報とする第１アノテーション独立型構造位置取得手段と、
アノテーション対象であるＷｅｂ資源の識別情報と、前記第１アノテーション独立型構造位置取得手段が求めた前記Ｗｅｂ資源における構造位置情報と、アノテーション内容とを含むアノテーション情報をアノテーションデータベースに格納するアノテーション情報格納手段と、
アノテーション情報の復元時、前記アノテーションデータベースから取り出された前記アノテーション情報に基づき、前記他のアノテーションの存在とは独立な構造位置情報を求めるアノテーション復元手段と、
前記他のアノテーションの存在とは独立な構造位置情報から、受信したＷｅｂ資源の解析結果であるＷｅｂ資源解析結果の上での現実のアノテーション埋め込み位置を求める第２アノテーション独立型構造位置取得手段と、
前記第２アノテーション独立型構造位置取得手段が求めた前記Ｗｅｂ資源解析結果の上での現実のアノテーション埋め込み位置に、アノテーション内容をアノテーションテキストフラグメントとして埋め込むアノテーションテキストフラグメント埋め込み手段と
を有するアノテーション装置。
【請求項４】
アノテーション情報を管理するコンピュータによって実行されるアノテーション方法であって、
前記コンピュータが、
Ｗｅｂ資源を受信する受信ステップと、
受信したＷｅｂ資源におけるアノテーション付与位置を前記Ｗｅｂ資源における構造位置情報として求めるアノテーション付与構造位置取得ステップと、
前記アノテーション付与構造位置取得ステップで求めた前記Ｗｅｂ資源における構造位置情報から現在付与されている他のアノテーションの存在とは独立な構造位置情報を再計算して前記Ｗｅｂ資源における構造位置情報とする第１アノテーション独立型構造位置取得ステップと、
アノテーション対象であるＷｅｂ資源の識別情報と、前記第１アノテーション独立型構造位置取得手段が求めた前記Ｗｅｂ資源における構造位置情報と、アノテーション内容とを含むアノテーション情報をアノテーションデータベースに格納するアノテーション情報格納ステップと、
アノテーション情報の復元時、前記アノテーションデータベースから取り出された前記アノテーション情報に基づき、前記他のアノテーションの存在とは独立な構造位置情報を求めるアノテーション復元ステップと、
前記他のアノテーションの存在とは独立な構造位置情報から、受信したＷｅｂ資源の解析結果であるＷｅｂ資源解析結果の上での現実のアノテーション埋め込み位置を求める第２アノテーション独立型構造位置取得ステップと、
前記第２アノテーション独立型構造位置取得ステップで求めた前記Ｗｅｂ資源解析結果の上での現実のアノテーション埋め込み位置に、アノテーション内容をアノテーションテキストフラグメントとして埋め込むアノテーションテキストフラグメント埋め込みステップと
を実行するアノテーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アノテーションプログラム、アノテーション装置及びアノテーション方法に係り、特に利用者からの付与要求に基づき情報へアノテーションを付与し、又は利用者からの参照要求に基づき情報にアノテーションを作用させるアノテーションプログラム、アノテーション装置及びアノテーション方法に関する。
【背景技術】
【０００２】
近年、インターネットやイントラネット等のネットワーク上の情報資源（例えばＷｅｂページ）に二次情報としてアノテーションを付与するＷｅｂアノテーション技術が、よく利用されるようになった。
【０００３】
Ｗｅｂアノテーション技術はネットワーク上のＷｅｂページに対してＷｅｂページの作者と異なる別の第三者が、そのＷｅｂページに対して、付箋，下線，又はマーカなどのアノテーションを付与し、そのＷｅｂページの閲覧（参照）時に、付与したアノテーションをＷｅｂページと同時に表示したり、又は付与したアノテーションに基づいた処理をＷｅｂページに加えたりするものである。
【０００４】
通常はアノテーションが付与されたときに、そのＷｅｂページに対する一意の名前（例えばＵＲＬ）を保持しておき、そのＵＲＬで指定されるＷｅｂページの閲覧時に、Ｗｅｂページに付与したアノテーションを復元することにより、時間をおいてのＷｅｂページの閲覧や、アノテーションを付与したアノテータと異なる第三者による閲覧であってもアノテーションを復元できる。
【０００５】
このようなＷｅｂアノテーション技術は、情報共有、校正支援、レビュー支援、調査支援、広告システムなど、広く利用されている。
【０００６】
従来、Ｗｅｂページに対してアノテーションを付与し、付与したアノテーションを複数の利用者で共有する場合は、共通サーバにＷｅｂページのＵＲＬと、そのＵＲＬで示されるＨＴＭＬファイルに付与されたアノテーションの位置及び内容とを管理テーブルに登録することがよく行われている。
【０００７】
利用者がＵＲＬを指定してＷｅｂサーバにＨＴＭＬファイルを要求すると、共通サーバはＷｅｂサーバからＨＴＭＬファイルを取得する。次に、共通サーバは管理テーブルを参照し、指定されたＵＲＬに対応するアノテーションが登録されていれば、アノテーションをＨＴＭＬファイルに埋め込んで利用者のクライアントに送信する。共通サーバは、上記のようにすることで、Ｗｅｂページに付与されたアノテーションを複数の利用者で共有させることができる（例えば引用文献１参照）。
【０００８】
なお、引用文献１に記載されている技術は、電子書籍のようなデジタルコンテンツを対象としているため、アノテーションの位置の特定に、ページ識別子と行識別子とを用いている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０００−１５５７６６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、アノテーション付与時とアノテーション復元時とは時間的なずれがあるため、アノテーションを付与してから復元するまでの間に、そのＷｅｂページに対して他のアノテーションが付与される操作や付与されていたアノテーションが削除される操作が行われているかもしれないし、あるいはアノテーションの対象となっているＷｅｂページ自身がニュース記事やブログなどのように変更されているかもしれない。
【００１１】
Ｗｅｂアノテーション技術では、このようなアノテーションの操作やＷｅｂページの変更などがあっても、アノテーション付与時の意図した位置（ＸＹ座標のような物理的な位置ではなく、Ｗｅｂページとの関係をとらえた位置）にアノテーションを復元したいという要望があった。
【００１２】
実際のＷｅｂページは、ＨＴＭＬやＸＭＬ等のＷｅｂページ記述言語（以下、ＨＴＭＬを例に説明する）で記述されている。ＷｅｂページではアノテーションもＨＴＭＬフラグメントとして記述される。ここでは説明のために各ＨＴＭＬフラグメントを文字で示した一次元の文字列で説明する。
【００１３】
アノテーションの無いＷｅｂページは「ＡＢＣＤＥＦＧＨＩＪ」で示される。「ＡＢＣＤＥＦＧＨＩＪ」の各文字は、実際、<table><tr><td>1</td><td>2</td></tr></table>のようなHTMLフラグメントである。
【００１４】
ここではＷｅｂページにアノテーション「Ｘ」を付与したものとする。アノテーション「Ｘ」は、実際、<div class="annotation">アノテーション</div>のようなHTMLフラグメントである。アノテーション「Ｘ」はＷｅｂページ中の位置を持つ。
【００１５】
例えば「Ｃ」と「Ｄ」との間に付与される場合、アノテーション「Ｘ」は「３」という位置を持つ。実際、ＨＴＭＬは図１のような木構造で表現される。図１は木構造で表現されたＨＴＭＬの一例の構成図である。図１において、「body」の下の２番目（左から２番目）の「h2」を指定するには、例えば「/html/body/h2[2]」という木構造のパス表現（Ｘｐａｔｈ）が用いられる。
【００１６】
Ｘｐａｔｈとは、ＸＹ座標のような表示に依存する物理的な位置ではなく、何段落目の何文字目のような表示と独立な文字の位置をいう。ＸｐａｔｈはＷ３Ｃが勧告した標準仕様でＸＭＬ文書の特定の要素を指し示す記述方法である。
【００１７】
例えば位置「３」にアノテーション「Ｘ」が付与されると、アノテーションを保持するデータベース（ＤＢ）にはアノテーションの位置と内容とが保持される。ここでは、アノテーションの位置と内容とを（３，Ｘ）と表現する。
【００１８】
ここで注意すべき点は、Ｗｅｂページが、インターネット上の他のＷｅｂサーバ上に存在することである。つまり、そのＷｅｂページ自身は管理下にはない。すなわち、Ｗｅｂページはこちら（本システム）側で自由に書き換えることができないし、また、こちらが意図しないうちに内容が書き換えられるかもしれない。このように、本システム側で管理するのは、どのＷｅｂページのどの位置にどのようなアノテーションが付与されているかという情報である。
【００１９】
例えば（３，Ｘ）というアノテーションが付与されたＷｅｂページ「ＡＢＣＤＥＦＧＨＩＪ」は、本システムに取り込まれると、「ＡＢＣＸＤＥＦＧＨＩＪ」（実際はＨＴＭＬ文書である）と復元される。復元されたＷｅｂページは、Ｗｅｂ閲覧器（ブラウザ）等に渡されることでオリジナルのＷｅｂページに対してアノテーション「Ｘ」が付与されるように処理される。
【００２０】
例えばアノテーション「Ｘ」は付箋紙のような形式で「Ｃ」と「Ｄ」との間の位置に表示される。図２は付箋紙のような形式のアノテーションが表示されたＷｅｂページの一例の画面イメージ図である。図２中、アノテーション１は元のＨＴＭＬに対して、ＨＴＭＬフラグメントであり、これらが一緒になって一つのＨＴＭＬとなっている。
【００２１】
図２のようにアノテーションされているＷｅｂページに対し、さらに「Ｇ」と「Ｈ」との間にアノテーション「Ｙ」を付与する場合は、既にアノテーション「Ｘ」が付与されているため、アノテーション「Ｙ」の位置が「８」となる。アノテーションを保持するＤＢには（８，Ｙ）が登録される。
【００２２】
この結果、Ｗｅｂページのアノテーションは（３，Ｘ）、（８，Ｙ）となり、本システムに取り込まれると、「ＡＢＣＸＤＥＦＧＹＨＩＪ」（実際はＨＴＭＬ文書である）と復元される。
【００２３】
さらに「Ｅ」と「Ｆ」との間にアノテーション「Ｚ」を付与されると、アノテーションを保持するＤＢには（６，Ｚ）が登録される。アノテーションを保持するＤＢは、それぞれのアノテーション付与の順序関係を保つように（３，Ｘ）、（８，Ｙ）、（６，Ｚ）が保持される。
【００２４】
本システムでは、それぞれのアノテーション付与の順序関係を保ち、アノテーションの作用においても付与の順序関係を保つ。例えば「３」の位置にアノテーション「Ｘ」を付与することで、Ｗｅｂページは「ＡＢＣＸＤＥＦＧＨＩＪ」と復元される。次に「８」の位置にアノテーション「Ｙ」を付与することで、Ｗｅｂページは「ＡＢＣＸＤＥＦＧＹＨＩＪ」と復元される。最後に「６」の位置にアノテーション「Ｚ」を付与することで、Ｗｅｂページは「ＡＢＣＸＤＥＺＦＧＹＨＩＪ」と復元される。このように、本システムではアノテーションの位置を正しく復元できる。
【００２５】
例えば、アノテーション付与の順序関係を破り、アノテーション（８，Ｙ）の前にアノテーション（６，Ｚ）を付与してしまうと、アノテーション（８，Ｙ）は意図通りの位置に復元できない。
【００２６】
上述したように、本システムでは、アノテーション付与の順序関係を保存し、その順序でアノテーションを復元することで、同一のＷｅｂページに対して複数のアノテーションが存在しても正しい位置にアノテーションを復元できるようになっている。
【００２７】
しかし、本システムではアノテーションの一部が削除されると、残りのアノテーションが意図どおりに復元されないという問題があった。例えば、アノテーションを保持するＤＢは、アノテーション付与の順序関係を保つように（３，Ｘ）、（８，Ｙ）、（６，Ｚ）が保持されたものとする。ここでは、アノテーション（３，Ｘ）が削除されたものとして説明する。
【００２８】
前述したように、アノテーションとはＷｅｂページに直接付与するものではなく、どのＷｅｂページのどの位置にどんなアノテーションを付与したかを保持したデータベースのレコードである。したがって、アノテーションの削除とは、このレコードを削除することを意味している。
【００２９】
アノテーションを保持するＤＢからレコードを削除することで、そのアノテーションはＷｅｂページ上に復元されなくなり、Ｗｅｂページ上からそのアノテーションが削除されたようにみえる。この場合、アノテーションを保持するＤＢでは（８，Ｙ）、（６，Ｚ）が保持される。このＷｅｂページ「ＡＢＣＤＥＦＧＨＩＪ」にアクセスし、「８」の位置にアノテーション「Ｙ」を復元しようとすると、本システムでは、アノテーション「Ｙ」の位置を決めたときに存在したアノテーション「Ｘ」が無くなってしまったため、「８」の位置が「Ｇ」と「Ｈ」との間でなく「Ｈ」の後ろになってしまう。同様に、本システムではアノテーション「Ｚ」の位置を決めたときに存在したアノテーション「Ｘ」が無くなってしまったため、「６」の位置が「Ｅ」と「Ｆ」との間でなく「Ｆ」の後ろになってしまう。
【００３０】
結果、Ｗｅｂページは期待した「ＡＢＣＤＥＺＦＧＹＨＩＪ」でなく、「ＡＢＣＤＥＦＺＧＨＹＩＪ」となってしまうという問題があった。すなわち、本システムでは同一のＷｅｂページに付与された複数のアノテーションのうちの一部が削除されると、残りのアノテーションを正しい位置に復元できないという問題があった。
【００３１】
本発明の一実施形態は、上記の点に鑑みなされたもので、他のアノテーションの削除により生じるアノテーションの埋め込み位置のずれを防ぐことができるアノテーションプログラム、アノテーション装置及びアノテーション方法を提供することを目的とする。
【課題を解決するための手段】
【００３２】
上記課題を解決するため、本発明の一実施形態は、アノテーション情報を管理するコンピュータを動作させるアノテーションプログラムであって、前記コンピュータを、Ｗｅｂ資源を受信する受信手段と、受信したＷｅｂ資源におけるアノテーション付与位置を前記Ｗｅｂ資源における構造位置情報として求めるアノテーション付与構造位置取得手段と、前記アノテーション付与構造位置取得手段が求めた前記Ｗｅｂ資源における構造位置情報から現在付与されている他のアノテーションの存在とは独立な構造位置情報を再計算して前記Ｗｅｂ資源における構造位置情報とする第１アノテーション独立型構造位置取得手段と、アノテーション対象であるＷｅｂ資源の識別情報と、前記第１アノテーション独立型構造位置取得手段が求めた前記Ｗｅｂ資源における構造位置情報と、アノテーション内容とを含むアノテーション情報をアノテーションデータベースに格納するアノテーション情報格納手段と、アノテーション情報の復元時、前記アノテーションデータベースから取り出された前記アノテーション情報に基づき、前記他のアノテーションの存在とは独立な構造位置情報を求めるアノテーション復元手段と、前記他のアノテーションの存在とは独立な構造位置情報から、受信したＷｅｂ資源の解析結果であるＷｅｂ資源解析結果の上での現実のアノテーション埋め込み位置を求める第２アノテーション独立型構造位置取得手段と、前記第２アノテーション独立型構造位置取得手段が求めた前記Ｗｅｂ資源解析結果の上での現実のアノテーション埋め込み位置に、アノテーション内容をアノテーションテキストフラグメントとして埋め込むアノテーションテキストフラグメント埋め込み手段として動作させるアノテーションプログラムである。
【００３３】
なお、本発明の一実施形態の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも本発明の態様として有効である。
【発明の効果】
【００３４】
上述の如く、本発明の一実施形態によれば、他のアノテーションの削除により生じるアノテーションの埋め込み位置のずれを防ぐことができるアノテーションプログラム、アノテーション装置及びアノテーション方法を提供できる。
【図面の簡単な説明】
【００３５】
【図１】木構造で表現されたＨＴＭＬの一例の構成図である。
【図２】付箋紙のような形式のアノテーションが表示されたＷｅｂページの一例の画面イメージ図である。
【図３】本実施例のＷｅｂアノテーションシステムの説明図である。
【図４】本実施例のＷｅｂアノテーションシステムの他の例の説明図である。
【図５】本実施例のＷｅｂアノテーションシステムの一実施例の構成図である。
【図６】コンピュータシステムの一例の構成図である。
【図７】アノテーション作用装置のアノテーション表示処理を表したフローチャートである。
【図８】木構造の一例を示す説明図である。
【図９】アノテーション埋め込み処理の一例を表したフローチャートである。
【図１０】アノテーションＤＢから取り出したアノテーションデータのレコードを表した一例の構成図である。
【図１１】木構造とＸＰａｔｈが示す位置との関係を説明するための説明図である。
【図１２】最初のアノテーションが埋め込まれたＷｅｂ資源解析結果を表す木構造の説明図である。
【図１３】アノテーション独立型埋め込み位置取得処理の一例を表したフローチャートである。
【図１４】２番目のdivノードを示した木構造の説明図である。
【図１５】アノテーション埋め込み処理の他の例を表したフローチャートである。
【図１６】他のアノテーション位置に影響を及ぼさない順序でアノテーションを付与する例を説明する為の説明図である。
【図１７】アノテーション埋め込み処理の他の例を表したフローチャートである。
【図１８】アノテーション埋め込み処理の他の例を表したフローチャートである。
【図１９】アノテーション埋め込み処理の他の例を表したフローチャートである。
【図２０】アノテーションが付与されたＷｅｂ資源解析結果を表す木構造の説明図である。
【図２１】木構造の一例を示す説明図である。
【図２２】文字列の一部に対してアノテーションが付与されたＷｅｂ資源解析結果を表す木構造の説明図である。
【図２３】アノテーションを文字列の一部に対して付与するときのアノテーション独立型埋め込み位置取得処理への追加処理の一例を表したフローチャートである。
【図２４】アノテーション付与装置の処理を表したフローチャートである。
【図２５】アノテーション付与操作の処理を表したフローチャートである。
【図２６】アノテーション独立型位置再計算処理の一例を表したフローチャートである。
【図２７】アノテーション独立の部分XPathを求める処理の一例を表すフローチャートである。
【図２８】アノテーション削除操作の処理を表したフローチャートである。
【図２９】アノテーションの順序関係及び内部位置を表現した同一位置アノテーション順序関係表の一例の構成図である。
【図３０】同一位置順序関係復元部の処理の一例を表すフローチャートである。
【図３１】アノテーションXにアノテーションYを付与したＷｅｂ資源解析結果を表す木構造の説明図である。
【図３２】同一位置順序関係保存部の処理の一例を表すフローチャートである。
【図３３】本実施例のアノテーションプログラムを適用したブラウザの一例の構成図である。
【発明を実施するための形態】
【００３６】
次に、本発明を実施するための形態を、以下の実施例に基づき図面を参照しつつ説明していく。
【００３７】
（本実施例の概要）
本実施例は、アノテーション独立型の位置保持によるＷｅｂアノテーション位置復元方式について説明するものである。本実施例では、アノテーション位置をＸＰａｔｈのような構造位置情報で保持し、外部のＷｅｂページ（テキスト）上のアノテーション対応位置を各アノテーションの構造位置情報から求めて、アノテーションを一時的に埋め込むＷｅｂアノテーションシステムについて説明する。
【００３８】
Ｗｅｂアノテーションシステムは、他のアノテーションの存在によって、構造位置情報からＷｅｂテキスト上のアノテーションを埋め込む具体的な位置を求める計算が影響を受ける。したがって、Ｗｅｂアノテーションシステムでは、あるアノテーションを付与する時に存在した他のアノテーションが削除されると、構造位置情報がずれ、アノテーションの埋め込み位置がずれるという問題が発生していた。
【００３９】
Ｗｅｂアノテーションシステムはアノテーションの挿入・削除によってアノテーションの埋め込み位置がずれないようにするため、他のアノテーションが無かったとした場合の位置を求めて、構造位置情報として記録する。Ｗｅｂアノテーションシステムは、他のアノテーションが無かったとした場合の位置を構造位置情報として使ってアノテーションの埋め込み位置を求めることで、後に他のアノテーションの一部が削除されるようなことがあってもアノテーションの埋め込み位置を正しく計算できる。
【００４０】
上記を実現するための技術的なポイントは、既に埋め込まれたアノテーションによって構造変化が起きた木構造の上で、他のアノテーションが無かったとした場合の位置（位置情報）を求め、その位置情報から対応する現実位置を求めることである。
【００４１】
具体的に、本実施例のＷｅｂアノテーションシステムは、与えられた位置情報からアノテーションによって引き起こされた構造変化を擬似的に部分復元し、根方向に辿りながらアノテーション独立型の構造位置情報を求める。また、本実施例のＷｅｂアノテーションシステムは復元時、アノテーションによって引き起こされた構造変化を根から擬似的に部分復元しながらアノテーション埋め込み位置を求める。
【００４２】
本実施例は、Ｗｅｂ資源に対してＷｅｂ資源上の位置をＸＰａｔｈのような構造位置情報として外部記憶装置（アノテーションＤＢ）に保持し、このアノテーションＤＢに保持されている構造位置情報にしたがってＷｅｂ資源に一時的にアノテーションテキストフラグメントを埋め込むことでアノテーションを行うＷｅｂアノテーションシステムを一例として説明する。
【００４３】
本実施例のＷｅｂアノテーションシステムでは、同一のＷｅｂ資源に付与されていた複数のアノテーションのうち一部のアノテーションが削除されても残りのアノテーションの位置に影響を与えないようにする。つまり、本実施例のＷｅｂアノテーションシステムはアノテーションを付与する時に存在していた他のアノテーションがアノテーションＤＢから削除されることによって引き起こされる構造位置情報の計算のずれを補正し、付与時と同一の位置にＷｅｂアノテーションを復元する。
【００４４】
上述の例では、アノテーション（３，Ｘ）、（８，Ｙ）、（６，Ｚ）が登録された後、アノテーション（３，Ｘ）が削除されたとしても、意図どおりにアノテーションが「ＡＢＣＤＥＺＦＧＹＨＩＪ」と復元される。意図どおりにアノテーションが「ＡＢＣＤＥＺＦＧＹＨＩＪ」と復元されるためには、以下のような処理が必要になる。
【００４５】
（３，Ｘ）、（８，Ｙ）というアノテーションが付与されたＷｅｂページ「ＡＢＣＤＥＦＧＨＩＪ」は、Ｗｅｂアノテーションシステムに取り込まれると、「ＡＢＣＸＤＥＦＧＨＹＩＪ」と復元される。
【００４６】
復元された「ＡＢＣＸＤＥＦＧＨＹＩＪ」上で、新たに「Ｆ」と「Ｇ」との間にアノテーション「Ｚ」を付与する場合は、例えばアノテーション「Ｘ」、「Ｙ」が復元されたＷｅｂページがＷｅｂ閲覧器上に表示される。アノテーション「Ｚ」の位置はユーザがマウス操作等で示し、あるいは外部からキーワード等の指定により示す。
【００４７】
このとき、Ｗｅｂアノテーションシステムはアノテーション情報としてアノテーション位置をアノテーションデータベースに格納する必要がある。アノテーション位置としてＷｅｂ閲覧器等に表示されているアノテーションが復元されたテキストの位置情報を使ったのでは、既に存在しているアノテーションが削除された時などに残りのアノテーションの位置を正しく復元できなくなってしまう。そこで、Ｗｅｂアノテーションシステムは他のアノテーションの存在によって影響を受けない位置情報を得るようにする。
【００４８】
また、Ｗｅｂアノテーションは付与対象とするＷｅｂ資源と独立に位置情報を保持することが必要であり、付与対象としているＷｅｂ資源側の微細な変更に対して頑強性を保つことが求められる。
【００４９】
例えば、位置情報としてテキスト上のオフセットを用いる場合は、テキストの微細な変更に対しても位置が変わってしまうという問題があるため、微細な変更に対しても頑強性のあるＸｐａｔｈのような構造位置情報（木構造として位置をとらえることで、木の他の枝葉の部分の微細な変更に対して頑強である）として位置をとる必要がある。
【００５０】
従来の技術には、テキストにあらかじめ付与されているタグを、そのタグを無視して先頭から順にテキスト上のオフセットとして求めるものがあった（例えば特開２００７−２４１４８２号公報）。しかし、本実施例のＷｅｂアノテーションシステムでは付与しようとしたアノテーション位置を求める際、単純なオフセットではなく他のアノテーションを無視しながら構造位置情報を求めなければならない。
【００５１】
すなわち、本実施例のＷｅｂアノテーションシステムはＷｅｂ資源上の位置をＸｐａｔｈのような構造位置情報として外部記憶装置（アノテーションＤＢ）に保持し、このアノテーションＤＢに保持した構造位置情報に従って、Ｗｅｂ資源に一時的にアノテーションテキストフラグメントを埋め込んだＷｅｂ資源解析結果を作成する。
【００５２】
本実施例のＷｅｂアノテーションシステムは、Ｗｅｂ資源にアノテーションを付与するとき、Ｗｅｂ資源解析結果に存在する他のＷｅｂアノテーションとは独立（単にそのアノテーションを無視するだけでなく、引き起こされた構造変化も吸収する）な構造位置情報を取得する。
【００５３】
また、本実施例のＷｅｂアノテーションシステムはＷｅｂ資源にアノテーションを復元するとき、Ｗｅｂ資源解析結果に存在する他のＷｅｂアノテーションとは独立な構造位置情報を利用してＷｅｂ資源解析結果上のアノテーション埋め込み位置を求めることによりアノテーション付与時と同一の位置にアノテーションを復元する。
【００５４】
アノテーションが付与された時に他のアノテーションの存在を含めて構造位置情報を求めた場合は、他のアノテーションが削除されてなくなった時に、その構造位置情報の計算にずれが生じる。
【００５５】
本実施例のＷｅｂアノテーションシステムでは、他のアノテーションの存在によって影響を受けない構造位置情報を求めてアノテーション位置として保持しておく。本実施例のＷｅｂアノテーションシステムでは、アノテーションを復元する際も他のアノテーションを無視して埋め込み位置を求めることで、アノテーションを正しい位置に復元することができる。
【００５６】
このように、本実施例のＷｅｂアノテーションシステムでは、他のアノテーションの存在によって影響を受けない構造位置情報を求める必要がある。また、本実施例のＷｅｂアノテーションシステムでは、同一位置に複数のアノテーションが付与された場合に、アノテーション間の順序関係を別途保持する必要がある。
【００５７】
（本実施例の原理）
図３は本実施例のＷｅｂアノテーションシステムの説明図である。図３はＷｅｂ資源取得部１０，Ｗｅｂ資源解析結果準備部１１，アノテーション付与構造位置取得部１２，アノテーション情報格納部１３，アノテーションＤＢ１４，アノテーション独立型構造位置取得部１５，アノテーション復元部１６，アノテーション独立型構造位置取得部１７，アノテーションテキストフラグメント埋込部１８，Ｗｅｂ資源解析結果１９，アノテーション作用部２０を表している。
【００５８】
従来のＷｅｂアノテーションシステムでは、アノテーション付与時、他のアノテーションを含めて表示されているＷｅｂ資源上での独立でない（他のアノテーションの存在によって位置が変化する）構造位置を求めてアノテーションＤＢ１４にアノテーション情報として格納している。アノテーションの復元時、Ｗｅｂ資源取得部１０は特定のＷｅｂ資源の所在情報（ＵＲＬ）を指定されたときに、指定されたＵＲＬのＷｅｂ資源をネットワークから取り出す。Ｗｅｂ資源解析結果準備部１１は、取り出されたＷｅｂ資源をそのままＷｅｂ資源解析結果１９とすることも可能であるが、通常、Ｗｅｂ資源をパージングした結果である木構造をＷｅｂ資源解析結果１９として保持する。
【００５９】
アノテーション復元部１６は、取り出されたＷｅｂ資源に付与されたアノテーションの情報をアノテーションＤＢ１４から取り出す。アノテーション構造位置取得部１７’はＷｅｂ資源解析結果１９上でアノテーション情報に指示されている構造位置を探し出す。
【００６０】
アノテーションテキストフラグメント埋込部１８は、アノテーション独立型構造位置取得部１７で探し出された構造位置にアノテーション内容を適切な形式（アノテーションテキストフラグメント）にして埋め込む。ここまでの処理は、Ｗｅｂ資源に関連するすべてのアノテーションに対して行われる。
【００６１】
アノテーション作用部２０は、アノテーション情報が埋め込まれたＷｅｂ資源解析結果１９を作用させる。アノテーション作用部２０が行う作用は、典型的に、レンダリングエンジンによって見える形に変換して表示させることである。
【００６２】
一方、本発明では、アノテーション構造位置取得部１７’はアノテーション独立型構造位置取得部１７になっており、またアノテーション独立型構造位置取得部１５が付け加わっている。
【００６３】
アノテーション付与時、アノテーション付与構造位置取得部１２は他のアノテーションが存在する状況で、Ｗｅｂ資源上からアノテーション付与構造位置情報を取得する。アノテーション独立型構造位置取得部１５は、他のアノテーションが存在する状況で取得したアノテーション付与構造位置情報に対して、他のアノテーションに影響を受けない他のアノテーションとは独立な構造位置情報を求める。
【００６４】
アノテーション情報格納部１３は、アノテーション付与構造位置取得部１２が取得したアノテーション付与構造位置情報の代わりにアノテーション独立型構造位置取得部１５が取得した他のアノテーションとは独立な構造位置情報をアノテーションの構造位置情報として、アノテーション内容、所在情報等とともにアノテーション情報としてアノテーションＤＢ１４に格納する。
【００６５】
そして、アノテーション復元時、アノテーション独立型構造位置取得部１７は構造位置情報からそのままＷｅｂ資源解析結果１９上のアノテーション埋め込み位置を求めるのではなく、他のアノテーションを無視した上での埋め込み位置を求める。アノテーションテキストフラグメント埋込部１８は、他のアノテーションを無視した上での埋め込み位置に適切な形でアノテーションテキストフラグメントを埋め込む。
【００６６】
以上のように、本実施例のＷｅｂアノテーションシステムでは他のアノテーションの存在に影響を受けないアノテーションの構造位置を保持・復元することで、付与時にあった他のアノテーションが削除されたとしても、埋め込み位置を正しく求めることができるようになり、一部のアノテーションの削除があっても、残りのアノテーションの位置を正しく復元できる。
【００６７】
本実施例のＷｅｂアノテーションシステムは、例えばアノテーション付与時に、Ｗｅｂページ「ＡＢＣＤＥＦＧＨＩＪ」に対してまず、位置「３」にアノテーション「Ｘ」が付与されると、アノテーションを保持するアノテーションＤＢ１４に、アノテーション位置とアノテーション内容とが保持される。なお、本実施例では位置「３」にアノテーション「Ｘ」が付与されたことを（３，Ｘ）と記述することとする。アノテーションが付与されたＷｅｂページは「ＡＢＣＸＤＥＦＧＨＩＪ」となる。
【００６８】
次に、本実施例のＷｅｂアノテーションシステムは「Ｇ」と「Ｈ」との間の位置にアノテーション「Ｙ」を付与するが、アノテーション「Ｘ」を考慮した位置「８」でなくアノテーション「Ｘ」の存在に影響を受けない形でアノテーション位置をアノテーションＤＢ１４に保持する。
【００６９】
他のアノテーションに影響されない位置情報としては、他のアノテーションの存在を無視するものがある。本実施例では「Ｇ」と「Ｈ」との間の位置にアノテーション「Ｙ」を付与するとき、アノテーション「Ｘ」を無視して（７，Ｙ）と登録する。同様に、本実施例では「Ｅ」と「Ｆ」との間の位置にアノテーション「Ｚ」を付与するとき、アノテーション「Ｘ」，「Ｙ」を無視して（実質的にはＹは無関係）、（５，Ｚ）と登録する。
【００７０】
結果として、このＷｅｂ資源のアノテーションは（３，Ｘ）、（７，Ｙ）、（５，Ｚ）となる。このＷｅｂ資源へのアノテーションの復元では、まずアノテーション「Ｘ」が付与されて「ＡＢＣＸＤＥＦＧＨＩＪ」になる。付与されたアノテーション「Ｘ」の存在を無視するので、（７，Ｙ）はアノテーション「Ｘ」を無視して「Ｇ」と「Ｈ」との間を指すことになる。アノテーション「Ｘ」，「Ｙ」が付与されたＷｅｂページは「ＡＢＣＸＤＥＦＧＹＨＩＪ」となる。
【００７１】
また、付与されたアノテーション「Ｘ」，「Ｙ」の存在を無視するので、（５，Ｚ）はアノテーション「Ｘ」，「Ｙ」を無視して「Ｅ」と「Ｆ」との間を指すことになる。アノテーション「Ｘ」，「Ｙ」，「Ｚ」が付与されたＷｅｂページは「ＡＢＣＸＤＥＺＦＧＹＨＩＪ」となる。
【００７２】
その後、アノテーション「Ｘ」が削除されると、このＷｅｂ資源のアノテーションとしては、（７，Ｙ）、（５，Ｚ）になる。この時も、元々、アノテーション「Ｘ」は無視して位置計算されていたので、アノテーション「Ｘ」が削除されたとしても「ＡＢＣＤＥＺＦＧＹＨＩＪ」と正しく復元される。
【００７３】
以上により、本実施例のＷｅｂアノテーションシステムではアノテーションの一部が削除されても、残ったアノテーションの位置が元々、アノテーションの存在を無視して求められているので、残りのアノテーションを正しい位置に復元可能である。
【００７４】
なお、本実施例では説明を分かりやすくする為に位置を数字で示した。実際の位置は木構造としてＸＰａｔｈのような形式で示される。位置の表現は、例えば「Ｅという名前がついたノードの後」というように名前で表したり、ノード名の扱いや属性の扱いでＸＰａｔｈとは異なるＸＰａｔｈと類する方式で表したりすることができる。位置の表現の違いに本質的な差がない為、本実施例では基本的にＸＰａｔｈで位置を表現する例を示す。
【００７５】
図４は本実施例のＷｅｂアノテーションシステムの他の例の説明図である。図４のＷｅｂアノテーションシステムは、図３のＷｅｂアノテーションシステムに、同一位置順序関係保存部２１，同一位置アノテーション順序関係ＤＢ２２，同一位置順序関係復元部２３が新たに設けられている。
【００７６】
図３を用いて説明したように、アノテーションは他のアノテーションのない状態での位置を保持する。しかし、これだけでは、他のアノテーションのない状態で同一の位置に複数のアノテーションが付与された場合に、他のアノテーションのない状態で同一の位置に付与されたアノテーションの間の順序関係が保持されない。
【００７７】
そこで、同一位置順序関係保存部２１はアノテーションを付与する際、アノテーションがない状態での同一位置にある他のアノテーションとの順序関係を取得して同一位置アノテーション順序関係ＤＢ２２に保存する。
【００７８】
アノテーションを復元する際、同一位置順序関係復元部２３は同一位置アノテーション順序関係ＤＢ２２に保存した順序関係に従って、アノテーションがない状態での同一位置にある他のアノテーションとの順序関係を復元する。このように、図４のＷｅｂアノテーションシステムはアノテーションのない状態で同一位置にあるアノテーション間の順序関係を復元可能である。
【実施例１】
【００７９】
図５は、本実施例のＷｅｂアノテーションシステムの一実施例の構成図である。図５のＷｅｂアノテーションシステムは、アノテーション付与装置５０，アノテーション作用装置５１，アノテーション管理サーバ５２，同一位置アノテーション順序関係ＤＢ５３を有している。
【００８０】
アノテーション付与装置５０は、Ｗｅｂ閲覧器６１，アノテーション付与拡張部６２，アノテーション独立型構造位置取得部６３，同一位置順序関係保存部６４を有する。アノテーション作用装置５１は、アノテーション作用拡張部６５，アノテーション独立型構造位置取得部６６，同一位置順序関係復元部６７，Ｗｅｂ閲覧器６８を有する。アノテーション管理サーバ５２は、アノテーションＤＢ管理部６９，アノテーションＤＢ７０を有する。
【００８１】
図５のＷｅｂアノテーションシステムはＷｅｂアノテーションをＷｅｂ閲覧器６１，６８の拡張機能として実施する。アノテーション付与装置５０は、ユーザの特定の操作を受け、アノテーションを付与したり削除したりする。アノテーション作用装置５１は、Ｗｅｂ資源にアクセスした際にアノテーションを表示させるあるいは作用させる。
【００８２】
アノテーション付与装置５０およびアノテーション作用装置５１の一つの実施形態はＷｅｂ閲覧器６１，６８を拡張するものである。なお、アノテーション付与装置５０およびアノテーション作用装置５１は同時に一つの閲覧器を拡張することができる。
【００８３】
図３のＷｅｂアノテーションシステムの場合は、Ｗｅｂ資源取得部１０，Ｗｅｂ資源解析結果準備部１１，アノテーション復元部１６，アノテーション独立型構造位置取得部１７，アノテーションテキストフラグメント埋込部１８，アノテーション作用部２０が、図５のアノテーション作用装置５１に対応し、アノテーション付与構造位置取得部１２，アノテーション情報格納部１３，アノテーション独立型構造位置取得部１５が、図５のアノテーション付与装置５０に対応する。
【００８４】
図４のＷｅｂアノテーションシステムの場合は、Ｗｅｂ資源取得部１０，Ｗｅｂ資源解析結果準備部１１，アノテーション復元部１６，アノテーション独立型構造位置取得部１７，アノテーションテキストフラグメント埋込部１８，アノテーション作用部２０，同一位置順序関係復元部２３が、図５のアノテーション作用装置５１に対応し、アノテーション付与構造位置取得部１２，アノテーション情報格納部１３，アノテーション独立型構造位置取得部１５，同一位置順序関係保存部２１が、図５のアノテーション付与装置５０に対応する。
【００８５】
図５のアノテーション付与装置５０，アノテーション作用装置５１，アノテーション管理サーバ５２，同一位置アノテーション順序関係ＤＢ５３は、例えば図６に示すコンピュータシステムにより実現できる。
【００８６】
図６はコンピュータシステムの一例の構成図である。コンピュータシステムは、それぞれバスＢで相互に接続されている入力装置８１，出力装置８２，ドライブ装置８３，補助記憶装置８４，主記憶装置８５，演算処理装置８６およびインターフェース装置８７を有する。
【００８７】
入力装置８１はキーボードやマウス等である。入力装置８１は各種信号を入力するために用いられる。出力装置８２はディスプレイ装置等である。出力装置８２は各種ウインドウやデータ等を表示するために用いられる。インターフェース装置８７は、モデム，ＬＡＮカードなどであり、ネットワークに接続する為に用いられる。
【００８８】
本実施例のアノテーションプログラムはアノテーション付与装置５０，アノテーション作用装置５１を制御する各種プログラムの少なくとも一部である。アノテーションプログラムは例えば記録媒体８８の配布やネットワークからのダウンロードなどによって提供される。アノテーションプログラムを記録した記録媒体８８は、ＣＤ−ＲＯＭ、フレキシブルディスク、光磁気ディスク等の様に情報を光学的，電気的或いは磁気的に記録する記録媒体、ＲＯＭ、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリ等、様々なタイプの記録媒体を用いることができる。
【００８９】
また、アノテーションプログラムを記録した記録媒体８８がドライブ装置８３にセットされると、アノテーションプログラムは記録媒体８８からドライブ装置８３を介して補助記憶装置８４にインストールされる。ネットワークからダウンロードされたアノテーションプログラムは、インターフェース装置８７を介して補助記憶装置８４にインストールされる。補助記憶装置８４は、インストールされたアノテーションプログラムを格納すると共に、必要なファイル，データ等を格納する。
【００９０】
主記憶装置８５は、コンピュータの起動時に補助記憶装置８４からアノテーションプログラムを読み出して格納する。そして、演算処理装置８６は主記憶装置８５に格納されたアノテーションプログラムに従って、後述するような各種処理を実現している。
【００９１】
以下では、本実施例のＷｅｂアノテーションシステムにおいてアノテーションを表示する（作用させる）処理、アノテーションを付与する処理、アノテーションを削除する処理について説明する。
【００９２】
（アノテーション作用装置５１が図３の構成である例）
本実施例のアノテーションプログラムを組み込んだＷｅｂ閲覧器（あるいは一般にＷｅｂクライアント）６８は、一般のアノテーションプログラムを組み込んだＷｅｂ閲覧器と同様、図７に示すフローチャートのような動作を行う。図７はアノテーション作用装置のアノテーション表示処理を表したフローチャートである。
【００９３】
ステップＳ１に進み、Ｗｅｂ閲覧器６８は表示（作用）するＷｅｂ資源の所在情報（ＵＲＬ）を受け取る。ステップＳ２に進み、Ｗｅｂ閲覧器６８は受け取ったＵＲＬで指定されるＷｅｂ資源をネットワークから読み込む。ステップＳ３に進み、Ｗｅｂ閲覧器６８は読み込んだＷｅｂ資源（ＨＴＭＬなどで記述されたテキストファイル）をパーサによって解析し、構造を抽出する。抽出された構造は木構造（ツリー）の形をとる（例えばＤＯＭツリー）。
【００９４】
例えばＷｅｂ資源として以下のようなＨＴＭＬ<html><head><title>タイトル</title></head><body><h1>ヘッダー</h1><div>テキスト1</div><div>テキスト2</div><div>テキスト3</div></body></html>があったとすると、パージング結果である木構造は、図８に示すようになる。図８は木構造の一例を示す説明図である。
【００９５】
Ｗｅｂ閲覧器６８は図８に示すような木構造をレンダリングエンジンに送り、タグを解釈し（例えば<title>はタイトル、<h2>はヘッダー、<p>は段落など）、見える形に変換して表示する（あるいはレンダリングの代わりに何らかの作用が行われる）。
【００９６】
上記は静的なページの動きである。動的なページでは、Ｗｅｂ閲覧器６８がＷｅｂ資源をパーサによって解析したあと、例えばＪａｖａｓｃｒｉｐｔで記述されたプログラムをＪａｖａｓｃｒｉｐｔエンジンに送って実行し、木構造を変更する（動的に文書が作り出される）。
【００９７】
Ｗｅｂ閲覧器６８は木構造をレンダリングエンジンに送り、表示する。場合により、Ｗｅｂ閲覧器６８はユーザのアクションにより木構造を書き換え、新しい木構造をレンダリングエンジンに送り、表示するということを繰り返す。
【００９８】
本実施例のアノテーションプログラムを組み込んだＷｅｂ閲覧器６８は、一般のアノテーションプログラムを組み込んだＷｅｂ閲覧器と同様、読み込んだＷｅｂ資源をパーサで解析した結果（例えばＤＯＭツリー）を、Ｗｅｂ資源解析結果１９として、すぐにレンダリングエンジンに渡さずに以下の処理を行う。
【００９９】
ステップＳ４に進み、アノテーション作用拡張部６５は、アノテーション埋め込み処理を行う。アノテーション作用拡張部６５は、現在表示（作用）しようとしているＷｅｂ資源に関連するアノテーションデータを、アノテーション管理サーバ５２のアノテーションＤＢ７０からアノテーションＤＢ管理部６９を介して取り出し、アノテーションテキストフラグメントをＷｅｂ資源解析結果１９の指定された位置に埋め込んでいく（木構造上で接ぎ木する）。
【０１００】
例えばＷｅｂ閲覧器６８では、ＷｅｂページのＵＲＬ等を手がかりにアノテーションＤＢ７０からアノテーションデータを取り出し、アノテーションが付与された順に、Ｗｅｂ資源解析結果１９の指定された位置にアノテーションテキストフラグメントを埋め込んで行く。
【０１０１】
なお、削除されたアノテーションのアノテーションデータはアノテーションＤＢ７０に存在しないため、Ｗｅｂ資源解析結果１９に反映されない。ステップＳ５に進み、アノテーション作用拡張部６５はＷｅｂ資源解析結果１９をレンダリングエンジンに渡す（あるいはレンダリング以外の作用を起こす）。
【０１０２】
図９はアノテーション埋め込み処理の一例を表したフローチャートである。図９に示したアノテーション埋め込み処理は、アノテーションを埋め込んでいく時、与えられたアノテーションを埋め込む構造位置から、既に存在するアノテーションを無視した構造位置に対応する埋め込み位置を求めるというものである。
【０１０３】
ステップＳ１１に進み、アノテーション作用拡張部６５は現在表示（作用）しようとしているＷｅｂ資源に関連するアノテーションデータを、アノテーション管理サーバ５２のアノテーションＤＢ７０からアノテーションＤＢ管理部６９を介して取り出す。図１０はアノテーションＤＢから取り出したアノテーションデータのレコードを表した一例の構成図である。
【０１０４】
図１０に示すアノテーションデータのレコードは、所在情報（ＵＲＬ），構造位置情報及びアノテーション内容をフィールドとして持つ。所在情報（ＵＲＬ）はアノテーションが付与されたＷｅｂページを示す情報である。ステップＳ１１では、現在のＷｅｂ資源（ここでは仮に/bar/foo.htmlとしてある）に関連するアノテーションデータのレコードを取り出している。
【０１０５】
また、アノテーション内容フィールドは付与されたアノテーションに記述された情報であり、アノテーションテキストフラグメントの中に反映するものである。具体的には文字列やリンクであり、場合によってＨＴＭＬそのものが記述されてもよい。
【０１０６】
また、構造位置情報はアノテーションが付与されるべき位置を示したものである。通常のＷｅｂアノテーションではＷｅｂ資源解析結果１９における構造位置（ＸＰａｔｈ）で与えられる。本実施例のＷｅｂアノテーションシステムでは、他のアノテーションの存在とは独立な位置情報を構造位置情報に与える。
【０１０７】
他のアノテーションの存在とは独立な位置情報の一つの実施例は、他のアノテーションを無視した構造位置情報を与えるものであり、通常の構造位置情報と同じくＸＰａｔｈで与えることができる（ただし、その構造位置は従来のものと異なる）。また、他のアノテーションの存在とは独立な位置情報のもう一つの実施例は構造位置情報を文脈情報で与えるものである。なお、構造位置情報を文脈情報で与える実施例は後述する。
【０１０８】
ここでは他のアノテーションを無視したＸＰａｔｈ形式の構造位置情報を与える例を以下に示す。アノテーションデータのレコードを取り出した後、アノテーション作用拡張部６５はステップＳ１２に進み、現在のＷｅｂ資源に関連するアノテーションデータのレコードの中から最初のレコードに注目する。
【０１０９】
通常のＷｅｂアノテーションシステムでは、一番過去に付与したアノテーションから順に時系列に取り出す。本実施例のＷｅｂアノテーションシステムでは、一番過去に付与したアノテーションから順に時系列に取り出す必要がなく、任意の順番でよい。本実施例のＷｅｂアノテーションシステムでは、他のアノテーションの存在と独立に構造位置が求められているからである。なお、本実施例では通常のＷｅｂアノテーションシステムとの比較の意味も含めて付与時の時間順序に従って復元する例を説明する。
【０１１０】
ステップＳ１３に進み、アノテーション作用拡張部６５はアノテーションデータのレコードが存在する間、ステップＳ１４に進む。言い換えれば、アノテーション作用拡張部６５は未処理のアノテーションデータのレコードがある間、ステップＳ１４〜Ｓ１８の処理を繰り返し行う。
【０１１１】
なお、アノテーション作用拡張部６５は未処理のアノテーションデータのレコードが存在しなければ、図９に示すフローチャートの処理を終了する。ステップＳ１４に進み、アノテーション作用拡張部６５はアノテーションデータのレコードから、アノテーション情報（構造位置情報，アノテーション内容）を得る。
【０１１２】
ステップＳ１５に進み、アノテーション独立型構造位置取得部６６はステップＳ１４で得た構造位置情報（ＸＰａｔｈ）から、Ｗｅｂ資源解析結果１９におけるアノテーション独立型埋め込み位置を求める。本実施例では、ステップＳ１５が通常のアノテーション埋め込み位置の取得ではなく、アノテーション独立型埋め込み位置の取得であることが通常のアノテーション埋め込み処理と異なっている。
【０１１３】
なお、アノテーション独立型埋め込み位置の取得の詳細は後述する。ここでは通常のアノテーション埋め込み位置の取得について説明する。
【０１１４】
例えば図１０のアノテーションデータのレコードに含まれる/html/body/div[1]は、Ｗｅｂ資源解析結果１９の木構造を上から順にhtml、body、divというノードを辿ることを示している。ここでdiv[1]はdivの１番目を示している（特に数字を記述していないものも１番目を示している）。従って、/html/body/div[1]は図１１の木構造において矢印で示したノードを示すことになる。図１１は木構造とＸＰａｔｈが示す位置との関係を説明するための説明図である。
【０１１５】
他のアノテーションの埋め込みをしていない段階では、本実施例のアノテーション独立型埋め込み位置の取得結果も通常のアノテーション埋め込み位置の取得結果も同じノードを示す。
【０１１６】
なお、上記ではＷｅｂ資源解析結果１９を木構造として示している。しかし、木構造は元のＨＴＭＬと対応しているので、Ｗｅｂ資源解析結果１９として<html><head><title>タイトル</title></head><body><h1>ヘッダー</h1><div>テキスト1</div><div>テキスト2</div><div>テキスト3</div></body></html>のように元のテキストのまま保持してテキスト上で処理を進めることも可能である。
【０１１７】
ステップＳ１６に進み、アノテーション作用拡張部６５はアノテーション内容からアノテーションテキストフラグメントを作成する。アノテーションテキストフラグメントにはアノテーションテキストフラグメントであることが分かる属性値を与えておく。これによって、アノテーション独立型構造位置取得部６６はアノテーションテキストフラグメントを無視することもできるし、アノテーションテキストフラグメントを表示したり何らかの作用をさせたりすることもできるようになる。
【０１１８】
タグで囲まれた部分には、アノテーション内容（アノテーションＤＢ７０の対応するレコードに記述されている具体的なテキストや画像へのリンクを含むＨＴＭＬテキストなど）を与える。<div class="annotation">X</div>は、アノテーションテキストフラグメントの一例である。
【０１１９】
ステップＳ１７に進み、アノテーション作用拡張部６５はアノテーションテキストフラグメントをステップＳ１５で求めたＷｅｂ資源解析結果１９におけるアノテーション独立型埋め込み位置に埋め込む。埋め込む位置は指定されたノードの前、後、下など取り決めによって決めることができる。
【０１２０】
ここでは指定されたノードの後（弟）に埋め込むものとし、最初のアノテーションを埋め込んだＷｅｂ資源解析結果を図１２に示す。図１２は最初のアノテーションが埋め込まれたＷｅｂ資源解析結果を表す木構造の説明図である。なお、ＸＰａｔｈのツリー表現では本来属性もノードで表現される。図１２の木構造は簡略的に示したものである。
【０１２１】
図１２において「Ｘ」とした部分はＸＰａｔｈとして#text（文字列）であるが、他の#textとの区別を明確にするために「Ｘ」と示している。その他の木構造を示す説明図においても同様である。
【０１２２】
図１２のツリーのテキスト表現は、<html><head><title>タイトル</title></head><body><h1>ヘッダー</h1><div>テキスト1</div><div class="annotation">X</div><div>テキスト2</div><div>テキスト3</div></body></html>となる。以上で、注目しているアノテーションの付与操作の復元は終わる。
【０１２３】
ステップＳ１８に進み、アノテーション作用拡張部６５は次のアノテーションデータのレコードに注目を移してステップＳ１３に戻る。図９のフローチャートの処理はステップＳ１１で取り出した全てのアノテーションデータのレコードをＷｅｂ資源解析結果１９に反映させたあと、終了する。
【０１２４】
図１３はアノテーション独立型埋め込み位置取得処理の一例を表したフローチャートである。アノテーション独立型構造位置取得部６６は、アノテーションの位置情報として他のアノテーションの存在を無視しての位置情報が与えられた時に、他のアノテーションが存在するＷｅｂ資源解析結果１９での実際の位置を求めるものである。
【０１２５】
ここでは、アノテーションＸが埋め込まれているときにアノテーションＹを埋め込む例を使って説明する。ステップＳ２１に進み、アノテーション独立型構造位置取得部６６は構造位置情報とＷｅｂ資源解析結果（木構造）１９とを読み込む。
【０１２６】
アノテーションＹの構造位置情報は/html/body/div[2]である。アノテーションＸが埋め込まれている木構造は図１２に示したものになる。アノテーション独立型構造位置取得部６６は構造位置情報をルートから順に処理する。ステップＳ２２に進み、アノテーション独立型構造位置取得部６６はルートノードを注目ノードとし、ルートノードまでを処理済構造位置とする。木構造上ではhtmlノードを注目ノードとする。アノテーションＹの構造位置情報は/htmlまで処理済とする。
【０１２７】
ステップＳ２３に進み、アノテーション独立型構造位置取得部６６は構造位置情報の次の要素を取り出す。例えばアノテーションＹでは次の構造位置情報の要素として/bodyが取り出される。
【０１２８】
ステップＳ２４に進み、アノテーション独立型構造位置取得部６６は構造位置情報の探索が全て終了したか、言い換えればステップＳ２３の処理で構造位置情報の次の要素が取り出せたかどうか、を確認する。なお、アノテーションＹの例では/bodyが取り出せているので、ステップＳ２５に進む。
【０１２９】
ステップＳ２５に進み、アノテーション独立型構造位置取得部６６は何番目の要素を取り出すのかをセットする。[n]がないのは１番目ということなので、アノテーション独立型構造位置取得部６６は１をセットする。
【０１３０】
ステップＳ２６に進み、アノテーション独立型構造位置取得部６６は木構造で現在の注目ノードの子どもノードを左から順に調べ、ステップＳ２３で取り出した構造位置情報の注目要素（指定要素）を探す。図１２の木構造の場合はhtmlノードの子どもを順に調べてbodyノードを探す。なお、アノテーション独立型構造位置取得部６６は２番目の子どもでbodyノードが見つかる。
【０１３１】
アノテーションＹが付与されてから、アノテーションＹを復元する時までの間にＷｅｂ資源に変更が加えられていなければ、子ノードであるbodyノードはＷｅｂ資源解析結果１９から見つかるはずである。しかし、Ｗｅｂ資源に変更が加えられているなどの場合は子ノードであるbodyノードが見つからないこともある。
【０１３２】
Ｗｅｂ資源解析結果１９上で指定要素（指定された構造位置）が見つからなければ、アノテーション独立型構造位置取得部６６はステップＳ３１に進み、指定された構造位置が見つからなかったということで適宜処理する。Ｗｅｂ資源解析結果１９上で指定要素（指定された構造位置）が見つかれば、アノテーション独立型構造位置取得部６６はステップＳ２７に進む。
【０１３３】
ステップＳ２７に進み、アノテーション独立型構造位置取得部６６はステップＳ２６で見つかったノードがアノテーションノードかどうかをチェックする。ステップＳ２６で見つかったノードがアノテーションノードであれば、アノテーション独立型構造位置取得部６６はステップＳ２６で見つかったノードを無視してステップＳ２６に戻る。なお、アノテーションノードかどうかは、属性値annotationの有無等でチェックする。
【０１３４】
アノテーション独立型構造位置取得部６６はステップＳ２６で見つかったノードがアノテーションノードでなければ、ステップＳ２５でセットした個数番目のノードかどうかをチェックする。ステップＳ２５でセットした個数番目のノードであれば、アノテーション独立型構造位置取得部６６はステップＳ２９に進む。
【０１３５】
ステップＳ２９に進み、アノテーション独立型構造位置取得部６６はステップＳ２６で見つかったノードを新しい注目ノードとし、ステップＳ２３に戻る。図１２の木構造の場合はbodyノードが新しい注目ノードとなる。また、ステップＳ２５でセットした個数番目のノードでなければ、アノテーション独立型構造位置取得部６６はステップＳ３２に進み、個数のカウント（個数カウンタ）を１つあげた後、ステップＳ２６に戻る。
【０１３６】
ステップＳ２３に戻ると、アノテーション独立型構造位置取得部６６は構造位置情報の次の要素を取り出す。例えばアノテーションＹでは、/div[2]が次の構造位置情報の要素となる。
【０１３７】
ステップＳ２４に進み、アノテーション独立型構造位置取得部６６は/div[2]が取り出せているのでステップＳ２５に進む。ステップＳ２５に進み、アノテーション独立型構造位置取得部６６は２番目の要素を取り出すように２をセットする。
【０１３８】
この後、ステップＳ２６〜Ｓ２８，Ｓ３２の処理により、アノテーション独立型構造位置取得部６６は図１４に示す２番目のdivノードを見つけることができる。図１４は２番目のdivノードを示した木構造の説明図である。図１４では２番目のdivノードを矢印で示している。
【０１３９】
そして、アノテーション独立型構造位置取得部６６は構造位置情報の探索が全て終了したと判定すると、ステップＳ３０に進み、現在の木構造の注目ノード（注目位置）が求めるアノテーション独立型埋め込み位置であると判定する。
【０１４０】
図１５はアノテーション埋め込み処理の他の例を表したフローチャートである。図１５に示したアノテーション埋め込み処理は、付与するアノテーションを他のアノテーションに影響がないような順に並び替えてから付与するものである。
【０１４１】
すなわち、アノテーション位置が他のアノテーションのない状態での位置として保存されているので、アノテーション独立型構造位置取得部６６は、他のアノテーション位置に影響を及ぼさない順序でアノテーションを付与する。具体的に、アノテーション独立型構造位置取得部６６は木構造の場合、サブ木ごとに後ろから順にアノテーションを付与してやればよい。
【０１４２】
ステップＳ４１に進み、アノテーション作用拡張部６５は現在表示（作用）しようとしているＷｅｂ資源に関連するアノテーションデータを、アノテーション管理サーバ５２のアノテーションＤＢ７０からアノテーションＤＢ管理部６９を介して取り出す。ステップＳ４２に進み、アノテーション独立型構造位置取得部６６は通常の構造位置計算をしたときに、先に付与したアノテーションによって影響を及ぼさない順にアノテーションデータを並べ替える。
【０１４３】
図１６は他のアノテーション位置に影響を及ぼさない順序でアノテーションを付与する例を説明する為の説明図である。図１６ではノードＩによってノードＪ，Ｋ，Ｌ，Ｍ及びＮの構造位置計算が影響される。図１６の場合、先に付与したアノテーションによって影響を及ぼさない並べ方は色々あるが、例えば付与位置が木構造でノードＱ，Ｐ，Ｏ，Ｎ，Ｍ，Ｌ，Ｋ，Ｊ，Ｉ，Ｈ，Ｇ，Ｆ，Ｅ，Ｄ，Ｃ，Ｂ，Ａのような順（良く知られた深さ優先探索順の逆順）になるように並べればよい。
【０１４４】
なお、実際は/html/body/pと/html/body/divとのどちらが先にあろうが、構造位置計算に影響を受けない。問題になるのは、/html/body/div[2]と/html/body/div[4]あるいは/html/body/div[4]/pとのような同一のタグでの兄弟関係を含む場合だけであり、その間の順序関係をはっきりさせれば良い。並べ替えのアルゴリズム自身は様々な手法が良く知られているので具体的なフロー図は省略する。
【０１４５】
図１５のステップＳ４３に進み、アノテーション作用拡張部６５はステップＳ４２で並べ替えたアノテーションデータのレコードの中から最初のレコードに注目する。ステップＳ４４に進み、アノテーション作用拡張部６５はアノテーションデータのレコードが存在する間、ステップＳ４５に進む。なお、アノテーション作用拡張部６５は未処理のアノテーションデータのレコードが存在しなければ、図１５に示すフローチャートの処理を終了する。
【０１４６】
ステップＳ４５に進み、アノテーション作用拡張部６５はアノテーションデータのレコードからアノテーション情報（構造位置情報，アノテーション内容）を得て、構造位置情報（ＸＰａｔｈ）から、Ｗｅｂ資源解析結果１９におけるアノテーション埋め込み位置を求める。
【０１４７】
ステップＳ４６に進み、アノテーション作用拡張部６５はアノテーション内容からアノテーションテキストフラグメントを作成する。ステップＳ４７に進み、アノテーション作用拡張部６５はアノテーションテキストフラグメントをステップＳ４５で求めたＷｅｂ資源解析結果１９におけるアノテーション埋め込み位置に埋め込む。アノテーション作用拡張部６５はステップＳ４８に進み、次のアノテーションデータのレコードに注目を移してステップＳ４４に戻る。
【０１４８】
図１７はアノテーション埋め込み処理の他の例を表したフローチャートである。図１７に示したアノテーション埋め込み処理は、前から順に１回のトラバースでアノテーションを埋め込む方法である。
【０１４９】
図９，図１５に示したアノテーション埋め込み処理はアノテーションテキストフラグメントを１つずつ埋め込むことを前提としたものである。図１７に示したアノテーション埋め込み処理では、木構造全体を１回辿ることですべてのアノテーションを埋め込む。
【０１５０】
すなわち、図１７に示したアノテーション埋め込み処理では、前から順に木構造を辿りながら、各ノードに対して付与されたアノテーションがあるかを判定し、アノテーションがあるならば、そのアノテーションのテキストフラグメントを作成して、そのノードのところに埋め込む。ただし、図１７に示したアノテーション埋め込み処理では埋め込んだアノテーションテキストフラグメントをカウントせずに木構造を辿っていく。
【０１５１】
図９，図１５に示したアノテーション埋め込み処理は同一Ｗｅｂ資源のアノテーションの数に比例して実行時間が増加する。一方、図１７に示したアノテーション埋め込み処理ではアノテーションの数がいくら増えても、高々Ｗｅｂ資源の木構造を１回辿るだけですべてのアノテーションの付与が終了する。辿る順は木構造全体を辿れるのであれば、どのようなものでも良い。
【０１５２】
原理的には各ノードに対してアノテーションの有無を判定すれば良い。しかし、速度的な実用性から図１７に示したアノテーション埋め込み処理ではアノテーションＤＢ７０から関連するアノテーションを取り出して辿る順（例えば深さ優先探索順）に並べ替えてアノテーションのあるノードを探す。
【０１５３】
ステップＳ５１に進み、アノテーション作用拡張部６５は現在表示（作用）しようとしているＷｅｂ資源に関連するアノテーションデータを、アノテーション管理サーバ５２のアノテーションＤＢ７０からアノテーションＤＢ管理部６９を介して取り出す。ステップＳ５２に進み、アノテーション独立型構造位置取得部６６はステップＳ５１で取り出したアノテーションデータを辿る順に並び替える。
【０１５４】
ステップＳ５３に進み、アノテーション独立型構造位置取得部６６はステップＳ５２で並び替えたアノテーションデータから最初のアノテーションデータを取り出す。ステップＳ５４に進み、アノテーション独立型構造位置取得部６６は辿りポイントをルートノードにする。
【０１５５】
ステップＳ５５に進み、アノテーション独立型構造位置取得部６６はアノテーションデータのレコードが存在する間、ステップＳ５６に進む。なお、アノテーション独立型構造位置取得部６６は未処理のアノテーションデータのレコードが存在しなければ、図１７に示すフローチャートの処理を終了する。
【０１５６】
ステップＳ５６，Ｓ５７に進み、アノテーション独立型構造位置取得部６６は前から順に木構造を辿り、アノテーションのあるノードを見つける。アノテーションのあるノードを見つけると、アノテーション作用拡張部６５はステップＳ５８に進み、アノテーション内容からアノテーションテキストフラグメントを作成する。
【０１５７】
ステップＳ５９に進み、アノテーション作用拡張部６５はアノテーションテキストフラグメントをステップＳ５７で見つけたＷｅｂ資源解析結果１９上のアノテーションのあるノードの位置に埋め込む。アノテーション作用拡張部６５はステップＳ６０に進み、次のアノテーションデータのレコードに注目を移してステップＳ５５に戻る。
【０１５８】
図１７のアノテーション埋め込み処理では構造位置/html/body/pと/html/body/divとのそれぞれにアノテーションがあったとき、これらを辿る順に並べ替えるのが面倒かもしれない。そのとき、注目アノテーションは、構造位置/html/body/pまたは/html/body/divというようなｏｒの関係とし、どちらかが見つかるまで木構造を順に辿る。アノテーション独立型構造位置取得部６６はアノテーションのあるノードが見つかったら対応するノードをＯＲ関係から消すという処理をすればよい。
【０１５９】
図１８はアノテーション埋め込み処理の他の例を表したフローチャートである。図１８に示したアノテーション埋め込み処理はＷｅｂ資源解析結果１９（以後、Ｗｅｂ資源解析結果１９Ａと呼ぶ）をコピーしたＷｅｂ資源解析結果１９Ｂを用意する。
【０１６０】
アノテーション独立型構造位置取得部６６はＷｅｂ資源解析結果１９Ａの木構造の各ノードから、Ｗｅｂ資源解析結果１９Ｂの対応するノードへのリンクを用意する。アノテーション独立型構造位置取得部６６はＷｅｂ資源解析結果１９Ａの木構造にて埋め込み位置を求める。
【０１６１】
アノテーション独立型構造位置取得部６６は、Ｗｅｂ資源解析結果１９Ｂのノードへのリンクを辿ってＷｅｂ資源解析結果１９Ｂの木構造での対応するノードを求め、対応するノードに対してアノテーションテキストフラグメントを埋め込む。
【０１６２】
ステップＳ７１に進み、アノテーション独立型構造位置取得部６６は、Ｗｅｂ資源解析結果１９ＡのコピーであるＷｅｂ資源解析結果１９Ｂを作成する。アノテーション独立型構造位置取得部６６はステップＳ７２に進み、Ｗｅｂ資源解析結果１９Ａの木構造の各ノードから、Ｗｅｂ資源解析結果１９Ｂの対応するノードへのリンクを張る。
【０１６３】
ステップＳ７３に進み、アノテーション作用拡張部６５は現在表示（作用）しようとしているＷｅｂ資源に関連するアノテーションデータを、アノテーション管理サーバ５２のアノテーションＤＢ７０からアノテーションＤＢ管理部６９を介して取り出す。
【０１６４】
ステップＳ７４に進み、アノテーション作用拡張部６５はステップＳ７３で取り出したアノテーションデータのレコードの中から最初のレコードに注目する。ステップＳ７５に進み、アノテーション作用拡張部６５はアノテーションデータが存在する間、ステップＳ７６に進む。なお、アノテーション作用拡張部６５は未処理のアノテーションデータが存在しなければ、図１８に示すフローチャートの処理を終了する。
【０１６５】
ステップＳ７６に進み、アノテーション独立型構造位置取得部６６はＷｅｂ資源解析結果１９Ａの木構造にて埋め込み位置を求める。ステップＳ７７に進み、アノテーション独立型構造位置取得部６６はＷｅｂ資源解析結果１９Ｂのノードへのリンクを辿ってＷｅｂ資源解析結果１９Ｂの木構造での対応するノードを求める。
【０１６６】
ステップＳ７８に進み、アノテーション作用拡張部６５はアノテーションデータからアノテーション情報（構造位置情報，アノテーション内容）を得て、アノテーション内容からアノテーションテキストフラグメントを作成する。
【０１６７】
ステップＳ７９に進み、アノテーション作用拡張部６５は作成したアノテーションテキストフラグメントをステップＳ７７で求めたＷｅｂ資源解析結果１９Ｂのノードに対して埋め込む。アノテーション作用拡張部６５はステップＳ８０に進み、次のアノテーションデータに注目を移してステップＳ７５に戻る。
【０１６８】
図１９はアノテーション埋め込み処理の他の例を表したフローチャートである。図１９に示したアノテーション埋め込み処理はアノテーションをＷｅｂ資源解析結果１９に１つ埋め込むごとに、Ｗｅｂ資源解析結果１９に埋め込む残りのアノテーションの埋め込み位置を補正するものである。
【０１６９】
例えば/html/body/div/div[2]に対してアノテーションを付与した（注目ノードの弟としてannotation属性値を持つdivノードを作成した）とすると、/html/body/div/div[4]という位置が指定されたアノテーションの埋め込み位置は/html/body/div/div[5]という位置に変わる。図２０はアノテーションが付与されたＷｅｂ資源解析結果を表す木構造の説明図である。
【０１７０】
すなわち、図２０でノードＩにアノテーションが埋め込まれた（すなわち、ノードＸが追加された）とすると、ノードＩの弟ノードＬと、弟ノードＬの子孫ノードＭ，Ｎとを指定していたアノテーション埋め込み位置は、ノードＸのレベルで１つ、ずらす（補正する）必要がある。そこで、図１９に示したアノテーション埋め込み処理は、個々のアノテーションの埋め込みに対して、現在のＷｅｂ資源解析結果１９で、まだ埋め込みが済んでいないアノテーションデータに対して、必要に応じて埋め込み位置を補正する。
【０１７１】
ステップＳ９１に進み、アノテーション作用拡張部６５は現在表示（作用）しようとしているＷｅｂ資源に関連するアノテーションデータを、アノテーション管理サーバ５２のアノテーションＤＢ７０からアノテーションＤＢ管理部６９を介して取り出す。
【０１７２】
ステップＳ９２に進み、アノテーション作用拡張部６５はステップＳ９１で取り出したアノテーションデータのレコードの中から最初のレコードに注目する。また、ステップＳ９３に進み、アノテーション作用拡張部６５はアノテーションデータのレコードが存在する間、ステップＳ９４に進む。アノテーション作用拡張部６５は未処理のアノテーションデータのレコードが存在しなければ、図１９に示すフローチャートの処理を終了する。
【０１７３】
ステップＳ９４に進み、アノテーション作用拡張部６５はアノテーションデータからアノテーション情報（構造位置情報，アノテーション内容）を得て、構造位置情報（ＸＰａｔｈ）から、Ｗｅｂ資源解析結果１９におけるアノテーション埋め込み位置を求める。
【０１７４】
ステップＳ９５に進み、アノテーション作用拡張部６５はアノテーション内容からアノテーションテキストフラグメントを作成する。ステップＳ９６に進み、アノテーション作用拡張部６５はアノテーションテキストフラグメントをステップＳ９４で求めたＷｅｂ資源解析結果１９におけるアノテーション埋め込み位置に埋め込む。
【０１７５】
ステップＳ９７に進み、アノテーション独立型構造位置取得部６６はステップＳ９１で取り出したアノテーションデータに未処理のアノテーションデータ（埋め込みが済んでいないアノテーションデータ）が存在すれば、ステップＳ９８に進み、埋め込みが済んでいないアノテーションデータの埋め込み位置を補正したあと、ステップＳ９９に進む。
【０１７６】
また、アノテーション独立型構造位置取得部６６はステップＳ９１で取り出したアノテーションデータに未処理のアノテーションデータが存在しなければ、ステップＳ９９に進む。ステップＳ９９では、アノテーション作用拡張部６５が次のアノテーションデータのレコードに注目を移してステップＳ９３に戻る。
【０１７７】
なお、ここまでの例ではアノテーションがdiv要素（<div>から</div>まで）のような構造に対して付与される例を示してきた。しかし、アノテーションは文字列（#text）の一部に対して付与することもできる。
【０１７８】
例えば<html><head><title>タイトル</title></head><body><h1>ヘッダー</h1><p>テキスト1</p><p>abcde</p><p>テキスト3</p></body></html>は図２１のようにツリー表現される。図２１は木構造の一例を示す説明図である。
【０１７９】
ここでは、図２１のツリーのａｂｃｄｅという文字列のｂとｃとの間にＸ、ｄとｅとの間にＹというアノテーションを順に付与した場合について説明する。この場合のツリーのテキスト表現は、<html><head><title>タイトル</title></head><body><h1>ヘッダー</h1><p>テキスト1</p><p>ab<div class="annotation">X</div>cd<div class="annotation">Y</div>e</p><p>テキスト3</p></body></html>となる。この場合の木構造は図２２に示すようになる。図２２は文字列の一部に対してアノテーションが付与されたＷｅｂ資源解析結果を表す木構造の説明図である。
【０１８０】
ここで、アノテーションXの構造位置を単に/html/body/p[2]/#text[1]としてしまうのでは、#textの何文字目に挿入されているのかわからなくなってしまうので、/html/body/p[2]/#text [1]:2というように前の#textブロックの構造位置と、その何文字目の後に挿入されているかのオフセット（上記例では:の後の数字）を記録している。
【０１８１】
次にアノテーションYの構造位置は図２２の木構造において/html/body/p[2]/#text[2]:2となるが、他のアノテーションの存在を無視するため、/html/body/p[2]/#text[1]:4と記録する。アノテーションの復元時には/html/body/p[2]/#text[1]:4から木構造上の実際の位置を求める。
【０１８２】
図２３はアノテーションを文字列の一部に対して付与するときのアノテーション独立型埋め込み位置取得処理への追加処理の一例を表したフローチャートである。
【０１８３】
図１３に示したアノテーション独立型埋め込み位置取得処理では、アノテーション独立型構造位置取得部６６が、他のアノテーションの存在を無視してアノテーションを埋め込む位置（ノード）を探す。アノテーションを埋め込む位置（ノード）が#textノード（文字列）であるならば、アノテーション独立型構造位置取得部６６は探し求めたノードにおいて指定されたオフセットが存在するか（その文字列の長さが指定されたオフセットよりも長いか）を検査する。
【０１８４】
オフセットが存在すれば、アノテーション独立型構造位置取得部６６は指定されたオフセットの位置にアノテーションテキストフラグメントを埋め込む。オフセットが存在しなければ、#textノードにアノテーションが埋め込まれていることが原因なので（あるいは元のＷｅｂ資源の内容自身が変わったのかもしれない）、アノテーション独立型構造位置取得部６６は、まずオフセットを補正（指定されたオフセットの値から現在の#textの文字列長を減じる）し、続きの#textノードを探し（現在の#textの弟ノードで#textノードを探す）、その#textノード内でアノテーション埋め込み位置を探す。
【０１８５】
ステップＳ１０１に進み、アノテーション独立型構造位置取得部６６はアノテーションを埋め込む位置（#textノード）を探す。ステップＳ１０２に進み、アノテーション独立型構造位置取得部６６はステップＳ１０１で探した#textノードに埋め込む最初のアノテーションに注目する。
【０１８６】
ステップＳ１０３に進み、アノテーション独立型構造位置取得部６６は探した#textノード内に、オフセットで指定される位置が存在するかを判定する。オフセットで指定される位置が存在しなければ、アノテーション独立型構造位置取得部６６はステップＳ１０４に進み、オフセットを補正（指定されたオフセットの値から現在の#textの文字列長を減じる）する。ステップＳ１０５に進み、アノテーション独立型構造位置取得部６６は続きの#textノードを探し（現在の#textの弟ノードで#textノードを探す）、ステップＳ１０３に戻る。
【０１８７】
オフセットで指定される位置が存在すれば、アノテーション独立型構造位置取得部６６は指定されたオフセットの位置にアノテーションテキストフラグメントを埋め込む。
【０１８８】
一方、図１５及び図１７に示したアノテーション独立型埋め込み位置取得処理では前のアノテーション付与が後のアノテーション付与に影響を及ぼさないようにしている為、図２３のような追加処理が不要である。図１８に示したアノテーション独立型埋め込み位置取得処理では図２３に示した追加処理を行えばよい。
【０１８９】
図１９に示したアノテーション独立型埋め込み位置取得処理ではステップＳ９８の埋め込み位置の補正において、アノテーションが付与された#textノードと同一のノードを指定しているアノテーションに対して、必要に応じて#textノード位置の修正（ノード位置をアノテーションによって分割された後ろの#textノードにする）とオフセットの修正を行えばよい。なお、アノテーションが付与された#textの弟の#textノードにも影響あるが、それは#textに関係なく処理される。すなわち、#text[2]:5にアノテーションが付与されると、#text[2]:7と指定されているアノテーション位置は#text[2]:5の位置で#textが分割されるので、#text[3]:2に変わる。
【０１９０】
（アノテーション付与装置５０）
図５のアノテーション付与装置５０は、例えば図２４のフローチャートに示すような処理を行う。図２４はアノテーション付与装置の処理を表したフローチャートである。
【０１９１】
ステップＳ１１１に進み、アノテーション付与拡張部６２は、注目しているＷｅｂ資源に対して、Ｗｅｂ資源を表示する前に、そこに付与されているアノテーションを表示する処理を行って、アノテーションが付与されている状態でＷｅｂ資源の表示を行う。
【０１９２】
ステップＳ１１２に進み、アノテーション付与拡張部６２はユーザの操作を受ける。アノテーション付与拡張部６２はユーザの操作がＷｅｂ資源に対するアノテーション付与ならステップＳ１１３に進み、アノテーション付与部（図示せず）の呼び出しを行い、アノテーションの付与を行わせる。アノテーション付与拡張部６２はユーザの操作がＷｅｂ資源に対するアノテーション削除ならステップＳ１１４に進み、アノテーション削除部（図示せず）の呼び出しを行い、アノテーションの削除を行わせる。
【０１９３】
アノテーション付与拡張部６２はアノテーションの付与・削除が反映された結果をアノテーションＤＢ７０に記憶して、次のユーザ操作を待つ。
【０１９４】
図２５はアノテーション付与操作の処理を表したフローチャートである。アノテーション付与操作は、ユーザに画面上の適当な位置を指定させ、アノテーション内容となるテキストを入力、あるいはファイル上の画像を指定させることによって行われる。
【０１９５】
ステップＳ１２１に進み、アノテーション付与部はユーザに指定された画面上の位置が現在表示されているＷｅｂ資源のどの位置であるかを表すＸＰａｔｈを求める。このようにアノテーション付与部はＷｅｂ資源のＵＲＬ，ＸＰａｔｈ，アノテーション内容等をアノテーション情報として受け取る。
【０１９６】
ＸＰａｔｈは現在表示されているＷｅｂ資源に対して求められるため、アノテーションが既に付与されているならば、アノテーションを含めたＸＰａｔｈで求められる。ここまでの処理は従来のアノテーション付与装置５０と同様である。
【０１９７】
本実施例のアノテーション付与装置５０のアノテーション付与拡張部６２は、構造位置情報として他のアノテーションに影響されない構造位置情報をアノテーションＤＢ７０に保持する。すなわち、求まった構造位置(XPath）は他のアノテーションによって、アノテーションが無いときと違っているかもしれない。
【０１９８】
そこで、アノテーション独立型構造位置取得部６３は、求まった構造位置が、他のアノテーションが無かったとしたらどのような構造位置(XPath）になるのかを求め直すアノテーション独立型位置再計算をステップＳ１２２で行う。なお、アノテーション独立型位置再計算処理については後述する。
【０１９９】
ステップＳ１２３に進み、アノテーション独立型構造位置取得部６３はステップＳ１２２のアノテーション独立型位置再計算処理の結果を必要に応じて、ステップＳ１２１で受け取ったＸＰａｔｈに反映させる。アノテーション付与拡張部６２はステップＳ１２１で受け取ったＷｅｂ資源のＵＲＬ，ＸＰａｔｈ，アノテーション内容等をアノテーション情報としてアノテーションＤＢ７０に登録する。
【０２００】
アノテーション独立型位置再計算処理は、例えば以下のように行われる。図２６はアノテーション独立型位置再計算処理の一例を表したフローチャートである。なお、ここではアノテーションXが存在する状態でアノテーションYを付与する例を説明する。例えばユーザは図１４の矢印の位置（３番目のdivノード）を指定してアノテーションYを与えようとしたとする。このノードの構造位置(XPath）は、アノテーションXに関するdivノードがあるので、/html/body/div[3]となる。
【０２０１】
本実施例ではノードの構造位置(XPath）が、もし他のアノテーションが何もなかったらどのような構造位置になるのかを再計算する。このように、図２６のフローチャートは指定されたノードのアノテーション位置を再計算するものである。
【０２０２】
アノテーション付与された位置が/html/body/div[3]であったとすると、アノテーション独立型構造位置取得部６３は求めるＸｐａｔｈを空とする。ステップＳ１３２に進み、アノテーション独立型構造位置取得部６３は親ノードがアノテーションノードであるかを判定する。
【０２０３】
親ノードがアノテーションノードであれば、アノテーション独立型構造位置取得部６３はステップＳ１３６に進み、親ノードを新しい注目ノードとし、次の親ノードを辿り、ステップＳ１３２に戻る。親ノードがアノテーションノードでなければ、アノテーション独立型構造位置取得部６３はステップＳ１３３に進み、親ノードから見て他のアノテーションを無視したときの自分の位置（アノテーション独立の部分XPath）を求める。
【０２０４】
図１４の木構造の場合、アノテーション独立型構造位置取得部６３は、親ノードがbodyという一般ノードであり、アノテーションノードでないと判定し、ステップＳ１３３に進む。そして、アノテーション独立型構造位置取得部６３はbodyノードから見て他のアノテーションを無視したときの自分の位置（アノテーション独立の部分XPath）を求める。
【０２０５】
図１４の木構造の場合はdivノードの一つがannotation属性を持つので、annotation属性を持つdivノードを無視すると/div[2]が部分XPathになる。ステップＳ１３４に進み、アノテーション独立型構造位置取得部６３はステップＳ１３３で求めた部分XPathを、これまでのXPathの前（現在はまだ空）につなげて/div[2]とする。
【０２０６】
ステップＳ１３５に進み、アノテーション独立型構造位置取得部６３は親ノードがまだルートでないので、ステップＳ１３６に進み、親ノードを新しい注目ノードとし、次の親ノードを辿り、ステップＳ１３２に戻る。図１４の木構造の場合、アノテーション独立型構造位置取得部６３はbodyノードを新しい注目ノード、htmlノードを次の親ノードとして辿る。
【０２０７】
なお、この場合、親ノードはhtmlノードである。bodyノードはhtmlノードから見て最初のbodyノードなので部分XPathが/body[1]となる（以降[1]は省略する）。ステップＳ１３２〜Ｓ１３４の処理により、アノテーション独立型構造位置取得部６３は、これまで求めた/div[2]の前に、ステップＳ１３３で求めた部分/bodyをつなげて/body/div[2]とする。親ノードが/htmlというルートノードなので、アノテーション独立型構造位置取得部６３はステップＳ１３７に進み、/htmlを加えて/html/body/div[2]としたあと、再計算して求めたXPathとして返す。
【０２０８】
図２７はアノテーション独立の部分XPathを求める処理の一例を表すフローチャートである。アノテーションノードを無視して部分XPath求める処理は、同じテキスト要素に複数のアノテーションが付与されている場合、単純にアノテーションノードを無視するだけでなく、オフセットの再計算も必要になる。
【０２０９】
例えば#text[2]:5にアノテーションXが付与されているとき、アノテーションYの#text[3]:2への付与はアノテーションXがなければ#text[2]:7へのアノテーションYの付与のはずである（#text[2]:5にアノテーションが付与されたので、#text[2]のブロックが#text[2]と#text[3]に分割された）。
【０２１０】
すなわち、#textへのアノテーション付与の場合には、そのテキスト要素が他のアノテーションによって分割された要素（自分の前にアノテーション要素がいくつかあり、前がテキスト要素）であるかどうかを判定する。
【０２１１】
分割された要素ならば、アノテーションを取り除いた前のテキスト要素の位置が部分XPathになり、さらに現在のオフセットに前のテキスト要素の文字列長を加えたものが本来のオフセットになる。
【０２１２】
ステップＳ１４１に進み、アノテーション独立型構造位置取得部６３は部分XPathを求めるノードの名前をnodeとし、ノードカウンタを１とする。最下層ではnodeがアノテーションを付与したノード名ないしは#textである。
【０２１３】
ステップＳ１４２に進み、アノテーション独立型構造位置取得部６３はnodeが#textノードかを判定する。nodeが#textノードであれば、アノテーション独立型構造位置取得部６３はテキスト要素がアノテーションによって分割された場合の処理ステップＳ１４３〜Ｓ１４９の処理を行う。
【０２１４】
ステップＳ１４３に進み、アノテーション独立型構造位置取得部６３はオフセットをセットする。ステップＳ１４４に進み、アノテーション独立型構造位置取得部６３は自分の兄ノードがあれば、自分の兄ノードに注目ノードを移す。ステップＳ１４５に進み、注目ノードがアノテーションノードである間、アノテーション独立型構造位置取得部６３は注目ノードを無視し、ステップＳ１４４に戻る。
【０２１５】
注目ノードがアノテーションノードでなければ、アノテーション独立型構造位置取得部６３はステップＳ１４６に進み、注目ノードが#textノードであるかを判定する。注目ノードが#textノードであるならば、その注目ノードはアノテーションを除いた自分のすぐ上の兄ノードである#textノードである。
【０２１６】
注目ノードが#textノードであれば、nodeはアノテーションがなければ注目ノードの#textノードと一つになっていたはずである。アノテーション独立型構造位置取得部６３は部分XPathを求めるノードを兄ノードである#textノードとし、オフセットを現在のオフセットに兄ノードである#textノードの文字列長を足したものに更新する。
【０２１７】
さらに、兄ノードである#textノードが別のアノテーションによって分割されている可能性もあるので、アノテーション独立型構造位置取得部６３はステップＳ１４４〜Ｓ１４７の処理を繰り返す。
【０２１８】
アノテーションノード及び#textノード以外のノードがなければ、#text[1]が求める部分XPathであり、オフセットはステップＳ１４７で加算して求めたものになる。#textノード以外のノードがあれば、アノテーション独立型構造位置取得部６３はステップＳ１４９に進み、#textノード以外のノードが出てくる前に求めた#textノード，オフセットを求める#textノード，オフセットとして決定したあと、ステップＳ１５０に進む。
【０２１９】
なお、アノテーション独立型構造位置取得部６３はnodeが#textノードでなければステップＳ１５０に進む。テキスト要素の処理が終わったら、アノテーション独立型構造位置取得部６３はステップＳ１５０，Ｓ１５１の処理によりnodeと同じ名前の兄ノードがいくつあるかを数える（ノードカウントを求める）。
【０２２０】
そしてnodeと同じ名前の兄ノードがなくなったら、アノテーション独立型構造位置取得部６３は部分XPathと必要に応じてオフセットとを返す。なお、ステップＳ１４４において、アノテーション独立型構造位置取得部６３は自分の兄ノードがなければ、部分XPathと必要に応じてオフセットとを返す。
【０２２１】
図２８はアノテーション削除操作の処理を表したフローチャートである。アノテーション削除操作は、ユーザが画面上のアノテーションを指定した後のアノテーション削除アクション（例えば用意されたボタンやメニューなど）によって行われる。
【０２２２】
ステップＳ１６１に進み、アノテーション削除部は、どのアノテーションに対する削除アクションであるかを認識する。ステップＳ１６２に進み、アノテーション付与拡張部６２は、削除対象のアノテーションに対応するアノテーションＤＢ７０上のレコードを求める。そして、ステップＳ１６３に進み、アノテーション付与拡張部６２はステップＳ１６２で求めたレコードをアノテーションＤＢ７０から削除する。アノテーション削除操作の処理は従来のアノテーション付与装置５０と同様である。
【０２２３】
上記の実施例では、同一の位置に複数のアノテーションが付与されたり、あるいはアノテーションとして与えられたテキストに対してアノテーションが付与されたりした場合については何も言及していない。これらに対応するため、同一位置順序関係保存部６４がアノテーション付与装置５０に、同一位置順序関係復元部６７がアノテーション作用装置５１に追加される。
【０２２４】
同一位置順序関係は、アノテーションを除いたオリジナルのＷｅｂ資源上で同一位置に付与された複数のアノテーションの位置関係を保持するデータである。例えば、同一位置順序関係は、２つのアノテーションX，Yのどちらが前方にあるかの順序関係が(X,Y)あるいは(Y, X)として保存される。
【０２２５】
もう少し進んだ実施例では、アノテーションのテキスト自身にアノテーションする場合があり、アノテーションXのテキストの5文字目にアノテーションYを付与というような情報を残すかもしれない。実際にアノテーションはHTMLフラグメントとして表現されるので、XPathとして位置を表現することができる。
【０２２６】
図２９はアノテーションの順序関係及び内部位置を表現した同一位置アノテーション順序関係表の一例の構成図である。図２９の同一位置アノテーション順序関係表では、レコードに順序関係があるものとする。各アノテーションのレコードはアノテーションが付与されている構造位置情報を持っている。図２９の同一位置アノテーション順序関係表では、同一位置に付与されたアノテーションが３つあることを示している。
【０２２７】
アノテーションＩＤはアノテーションＤＢ７０のアノテーション情報と１対１に対応させる情報である。ここでは、３つのアノテーションX、Y、Zが、この順にあることを示している。内部位置フィールドはアノテーション間の関係を示すものである。内部位置フィールドの「-」は単に前のアノテーションの後にあることを示している。即ち、図２９の同一位置アノテーション順序関係表はアノテーションX、Yの順に並んでいることを示している。また、内部位置フィールドのY/#text:5は、アノテーションIDがYのアノテーションYの内部の#text:5という位置（文字列の５文字目）にあることを示す。
【０２２８】
図３０は同一位置順序関係復元部の処理の一例を表すフローチャートである。上記したようにアノテーション独立型構造位置取得部６６はアノテーションを復元するとき、Ｗｅｂ資源解析結果１９の木構造上でアノテーションテキストフラグメントの埋め込み位置を求める。同一位置順序関係復元部６７は、実際のアノテーションテキストフラグメントを埋め込む前に、求めた位置（ノード）に既にアノテーションが埋め込まれているのかどうかをチェックする。
【０２２９】
同一位置順序関係復元部６７は既に他のアノテーションが埋め込まれている場合に、同一位置アノテーション順序関係表に基づいて適切な順序に埋め込む。適切な順序に埋め込むために、同一位置順序関係復元部６７は、ａ）適当な順序で埋め込んでいき、埋め込むときに調整しながら埋め込む、ｂ）同一位置のアノテーション間で適切な順序で（例えば前から順に）アノテーションを処理する、ｃ）同一位置にあるアノテーションを同時に処理する、といった方法を用いる。
【０２３０】
アノテーション間の順序関係を問題にする場合にはａ），ｂ），ｃ）のどの手法も可能である。アノテーションのテキストに対してアノテーションを付与する場合には、先に埋め込み先のアノテーションが存在していないと後から付与されたアノテーションの処理ができないのでａ）の手法に問題がある。以下では、ｂ）の同一位置のアノテーション間で適切な順序でアノテーションを処理する方法の一例として、アノテーションの位置の順序関係と同じ順序でアノテーションが復元される例を説明する。
【０２３１】
ステップＳ１７１に進み、同一位置順序関係復元部６７は、まず復元しようとしているアノテーションの木構造レベルの埋め込み位置を見つける。ステップＳ１７２に進み、同一位置順序関係復元部６７はステップＳ１７１で見つけた埋め込み位置に既に他のアノテーションテキストフラグメントが埋め込まれているかを判定する。
【０２３２】
他のアノテーションテキストフラグメントが埋め込まれていなければ、同一位置順序関係復元部６７は、復元しようとしているアノテーションしか埋め込まないか、複数のアノテーションを埋め込むとしても自分が最初のアノテーションということなので、ステップＳ１７７に進み、何も気にせずアノテーションテキストフラグメントを埋め込み、図３０のフローチャートの処理を終了する。
【０２３３】
他のアノテーションテキストフラグメントが埋め込まれていれば、同一位置順序関係復元部６７はステップＳ１７３に進み、同一位置アノテーション順序関係表から関連するデータを取り出し、今処理しようとしているアノテーションのレコードに注目する。
【０２３４】
ステップＳ１７４に進み、同一位置順序関係復元部６７は注目したレコードの内部位置フィールドをチェックし、今処理しようとしているアノテーションが他のアノテーションの内部に埋め込むものなのか、単に他のアノテーションの後方に埋め込めば良いのかを判定する。
【０２３５】
今処理しようとしているアノテーションが他のアノテーションの内部に埋め込むものであれば、同一位置順序関係復元部６７はステップＳ１７５に進み、注目したレコードの内部位置フィールドに指定されているアノテーションテキストフラグメントを見つけ、そのテキストフラグメント内部の指定された位置を求めて、その位置をアノテーション埋め込み位置とする。
【０２３６】
ステップＳ１７７に進み、同一位置順序関係復元部６７はアノテーション埋め込み位置にアノテーションテキストフラグメントを作成して埋め込んだあと、図３０に示したフローチャートの処理を終了する。
【０２３７】
今処理しようとしているアノテーションが他のアノテーションの内部に埋め込むものでなければ、同一位置順序関係復元部６７はステップＳ１７６に進み、アノテーションの位置の順序関係の順に復元されようとしているので、ステップＳ１７１で見つけた埋め込み位置に埋め込まれているアノテーションテキストフラグメント群の一番最後を埋め込み位置とする。
【０２３８】
ステップＳ１７７に進み、同一位置順序関係復元部６７はアノテーション埋め込み位置にアノテーションテキストフラグメントを作成して埋め込んだあと、図３０に示したフローチャートの処理を終了する。
【０２３９】
上記したようにアノテーション独立型構造位置取得部６３はアノテーションが付与されるとき、アノテーションが付与された構造位置を取得する。このとき、同一位置順序関係保存部６４は呼び出される。同一位置順序関係保存部６４はアノテーションのない状態での同一位置に他のアノテーションが存在するかどうかを調べる。
【０２４０】
アノテーションのない状態での同一位置に他のアノテーションが存在する場合、同一位置順序関係保存部６４は他のアノテーションとの間の順序関係を同一位置アノテーション順序関係表として保存する。
【０２４１】
ここで、特に問題になるのはアノテーションの内部にアノテーションが付与された場合である。ここでは図１２に示した木構造のアノテーションXという文字列（XPathは/html/body/div[2]/#text）に対してアノテーションYを付与したとする(アノテーションXは何文字かの文字列であって、その中の任意の何文字かを指定することもできるが、ここではアノテーションX全体が選択されたとして説明する）。
【０２４２】
アノテーションXにアノテーションYを付与した結果は図３１に示すようになる。図３１はアノテーションXにアノテーションYを付与したＷｅｂ資源解析結果を表す木構造の説明図である。図３１のアノテーションYのテキスト表現は<html><head><title>タイトル</title></head><body><h1>ヘッダー</h1><div>テキスト1</div><div class="annotation" id="001">X<div class="annotation"  id="002">Y</div></div><div>テキスト2</div><div>テキスト3</div></body></html>となる。
【０２４３】
この時、アノテーションYのXPathは、アノテーションXを無視した位置が記録される。同一位置順序関係保存部６４はアノテーションYのXPathとして、アノテーションXと同様、/html/body/div[1]を記録する。そして、同一位置順序関係保存部６４は同一位置アノテーション順序関係表においてアノテーションYの内部位置フィールドにX/#text:n(nはXの文字数）と登録する。
【０２４４】
図３２は同一位置順序関係保存部の処理の一例を表すフローチャートである。上記のようにアノテーション独立型位置が再計算された後、同一位置順序関係保存部６４は図３２のフローチャートを実行し、同一位置にある他のアノテーションとの順序関係を同一位置アノテーション順序関係表に登録する。
【０２４５】
ステップＳ１８１に進み、同一位置順序関係保存部６４はアノテーションの付与を指定されたブロックがアノテーション要素全体か否かを判定する。指定されたブロックがアノテーション要素全体、言い換えれば他のアノテーション全体を指定してアノテーションが付与された場合、同一位置順序関係保存部６４はステップＳ１８６に進む。
【０２４６】
ステップＳ１８６に進み、同一位置順序関係保存部６４は付与されたアノテーションが指定されたアノテーション要素の直後に埋め込まれるものと判定する。同一位置順序関係保存部６４は同一位置アノテーション順序関係表で指定されたアノテーションのレコードの直後に新たなレコードを追加し、付与されたアノテーションの情報を埋め込む。
【０２４７】
指定されたブロックがアノテーション要素全体でなければ同一位置順序関係保存部６４はステップＳ１８２に進み、他のアノテーションの内部が指定されたかを判定する。他のアノテーションの内部が指定された場合、同一位置順序関係保存部６４はステップＳ１８４に進み、指定されたアノテーションの内部での構造位置を求める。
【０２４８】
ステップＳ１８５に進み、同一位置順序関係保存部６４は指定されたアノテーションのレコードの直後に新たなレコードを追加し、ステップＳ１８４で求めた情報を内部位置フィールドに埋め込んだアノテーション情報を同一位置アノテーション順序関係表に登録する。
【０２４９】
他のアノテーションの内部が指定されていない場合、同一位置順序関係保存部６４は新しいアノテーションが他のアノテーションに直接関与する位置でない為、ステップＳ１８３に進む。同一位置順序関係保存部６４は、同一位置アノテーション順序関係表の先頭に新たなレコードを作成して（その後方に他のアノテーションが有ろうが無かろうが）、アノテーションの情報を登録する。
【０２５０】
（アノテーションプログラムがブラウザに適用された例）
図３３は、本実施例のアノテーションプログラムを適用したブラウザの一例の構成図である。図３３のブラウザ２００は、典型的な構成を示したものであり、説明に不要なＣＳＳの処理やＰＤＦプラグイン等の細かい部分を省略している。
【０２５１】
ネットワークを経由して受信されたＨＴＭＬ文書１００をＨＴＭＬパーサ２０１は解析して、木構造（DOMツリー）２０２を生成する。これと同時に、Ｊａｖａｓｃｒｉｐｔプログラム２０５はＨＴＭＬ文書１００中にあったＪａｖａｓｃｒｉｐｔプログラム２０５を実行し、DOMツリー２０２の中身を書き換える。書き換えられたＤＯＭツリー２０２はレンダリングエンジン２０３に送られる。
【０２５２】
レンダリングエンジン２０３は送られてきたＤＯＭツリー２０２を画面で見える形に変換する。そして、ユーザインタフェース２０４を介したユーザの操作等によってＪａｖａｓｃｒｉｐｔプログラム２０５はDOMツリー２０２を書き換え、表示させる内容を変化させる。
【０２５３】
アノテーションプログラム２１０は、典型的にブラウザ２００の中に保持される（すなわち、ブラウザ２００に組込まれる、あるいは機能拡張として付け加えられる形で実現される）。
【０２５４】
そして、読み込まれたＨＴＭＬ文書１００のＪａｖａｓｃｒｉｐｔプログラム２０５が実行されるのに追加して、アノテーションプログラム２１０は実行され、ＤＯＭツリー２０２を書き換える。なお、アノテーションプログラム２１０が参照するアノテーションＤＢ等のデータはブラウザ２００の外部に保持される。
【０２５５】
アノテーションプログラム２１０を保持する別の実施形態としては、読み込まれるＨＴＭＬ文書に、アノテーションプログラム２１０を保持しておくことが考えられる。この実施形態では、適用できるＷｅｂページが限定されるが、ブラウザ２００にアノテーションプログラム２１０を保持するのと同じ効果を持たせることができる。
【０２５６】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【０２５７】
１    アノテーション
１０    Ｗｅｂ資源取得部
１１    Ｗｅｂ資源解析結果準備部
１２    アノテーション付与構造位置取得部
１３    アノテーション情報格納部
１４    アノテーションＤＢ
１５    アノテーション独立型構造位置取得部
１６    アノテーション復元部
１７    アノテーション独立型構造位置取得部
１８    アノテーションテキストフラグメント埋込部
１９    Ｗｅｂ資源解析結果
２０    アノテーション作用部
２１    同一位置順序関係保存部
２２    同一位置アノテーション順序関係ＤＢ
２３    同一位置順序関係復元部
５０    アノテーション付与装置
５１    アノテーション作用装置
５２    アノテーション管理サーバ
５３    同一位置アノテーション順序関係ＤＢ
６１    Ｗｅｂ閲覧器
６２    アノテーション付与拡張部
６３，６６    アノテーション独立型構造位置取得部
６４    同一位置順序関係保存部
６５    アノテーション作用拡張部
６７    同一位置順序関係復元部
６８  Ｗｅｂ閲覧器
６９    アノテーションＤＢ管理部
７０    アノテーションＤＢ
８１    入力装置
８２    出力装置
８３    ドライブ装置
８４    補助記憶装置
８５    主記憶装置
８６    演算処理装置
８７    インターフェース装置
１００    ＨＴＭＬ文書
２００    ブラウザ
２０１    ＨＴＭＬパーサ
２０２    ＤＯＭツリー
２０３    レンダリングエンジン
２０４    ユーザインタフェース
２０５    Ｊａｖａｓｃｒｉｐｔプログラム
２０６    Ｊａｖａｓｃｒｉｐｔエンジン
【図１】
2010257114.tif 000003
【図２】
2010257114.tif 000004
【図３】
2010257114.tif 000005
【図４】
2010257114.tif 000006
【図５】
2010257114.tif 000007
【図６】
2010257114.tif 000008
【図７】
2010257114.tif 000009
【図８】
2010257114.tif 000010
【図９】
2010257114.tif 000011
【図１０】
2010257114.tif 000012
【図１１】
2010257114.tif 000013
【図１２】
2010257114.tif 000014
【図１３】
2010257114.tif 000015
【図１４】
2010257114.tif 000016
【図１５】
2010257114.tif 000017
【図１６】
2010257114.tif 000018
【図１７】
2010257114.tif 000019
【図１８】
2010257114.tif 000020
【図１９】
2010257114.tif 000021
【図２０】
2010257114.tif 000022
【図２１】
2010257114.tif 000023
【図２２】
2010257114.tif 000024
【図２３】
2010257114.tif 000025
【図２４】
2010257114.tif 000026
【図２５】
2010257114.tif 000027
【図２６】
2010257114.tif 000028
【図２７】
2010257114.tif 000029
【図２８】
2010257114.tif 000030
【図２９】
2010257114.tif 000031
【図３０】
2010257114.tif 000032
【図３１】
2010257114.tif 000033
【図３２】
2010257114.tif 000034
【図３３】
2010257114.tif 000035