JP3725084B2 - 構造化文書編集システム、構造化文書編集方法及びプログラム - Google Patents
構造化文書編集システム、構造化文書編集方法及びプログラム Download PDFInfo
- Publication number
- JP3725084B2 JP3725084B2 JP2002046899A JP2002046899A JP3725084B2 JP 3725084 B2 JP3725084 B2 JP 3725084B2 JP 2002046899 A JP2002046899 A JP 2002046899A JP 2002046899 A JP2002046899 A JP 2002046899A JP 3725084 B2 JP3725084 B2 JP 3725084B2
- Authority
- JP
- Japan
- Prior art keywords
- editing
- structured document
- stored
- information
- storage means
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Landscapes
- Document Processing Apparatus (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【発明の属する技術分野】
本発明は、サーバ上に格納されている構造化文書を、複数のクライアント上で並行して編集するための構造化文書編集システム及び構造化文書編集方法に関する。
【0002】
【従来の技術】
同一の文書を複数のユーザが並行して編集する際には、現在CVS(Concurrent Versions System)と呼ばれる文書のバージョン管理をシステムを用いて文書管理する方法が一般的に用いられている。CVSには、これからシステムに登録しようとしている文書と現在システムに登録されている文書を行単位で比較し、両者において一貫性が取れていない部分を行単位でユーザに通知するという機能が備わっている。そこで、この機能を使うことにより、文書の一貫性を維持することが可能である。構造化文書も文書であるから、CVSを用いて構造化文書の一貫性を維持することも可能である。
【0003】
【発明が解決しようとする課題】
しかしながら、CVSには、以下に述べるような問題点がある。
【0004】
サーバ上で一元管理している構造化文書を、複数のユーザが各自のクライアント上で並行して編集するシステムでは、ユーザがつじつまが合わない編集を行った場合であっても、システムがコンフリクトしないと判定してサーバに反映した結果、構造化文書の一貫性を壊すことや、逆にユーザがつじつまが合う編集を行った場合であっても、システムがコンフリクトすると判定した結果、サーバに反映することが不可能なことが多い。
【0005】
例えば、構造化文書を用いて記述される同一の論文を複数の執筆者が並行して編集するとき、ある執筆者が他の執筆者の編集内容とつじつまが合わない編集を行った場合であっても、常に論文全体の一貫性を維持するシステムを実現することや、お互い他の執筆者の編集内容とつじつまが合う編集を行っている場合には、常にすべての執筆者の編集内容を忠実に反映するシステムを実現することは困難である。
【0006】
同一の文書を複数のユーザが並行して編集する際は、現在CVSを用いて文書管理する方法が一般的に用いられている。しかしながら、CVSを構造化文書を管理する際に用いると、CVSは文書の行単位でコンフリクト判定を行うために、構造化文書が持っている構造情報を反映した単位でのコンフリクト判定を行わず、望ましい結果が得られない。
【0007】
例えば、CVSを使って構造化文書を管理するシステムで、図31(a)に示した構造化文書をユーザ1とユーザ2が並行して編集する場合を考える。手続き(1−1)でユーザ1が図31(b)に示すように節の順番を入れ替える編集を行い、手続き(1−2)でユーザ2が図31(c)に示すように段落の順番を入れ替える編集を行ったとする。節の順番を入れ替える編集と、段落の順番を入れ替える編集とは独立であるので、2人のユーザが行った編集内容は両方とも反映されるべきである。しかし、編集結果につき、第1に手続き(2)においてユーザ1が同期を取り、続いて手続き(3)においてユーザ2が同期を取ると、システムはコンフリクトが発生したと判断し、最終的な編集結果は図31(d)に示した文書になる。
【0008】
そこで、すべてあるいはより多くのユーザの編集意図をより豊富に柔軟に取り込むことを可能とする一貫性維持方式が望まれる。
【0009】
本発明は、上記事情を考慮してなされたもので、サーバ上に格納されている構造化文書を、複数のクライアント上で並行して編集する場合でも、ユーザの編集意図をより豊富に柔軟に取り込むことを可能にした構造化文書編集システム及び構造化文書編集方法を提供することを目的とする。
【0010】
【課題を解決するための手段】
本発明は、サーバ装置上の構造化文書格納手段に格納されている、階層的に結合された構造を持つ複数のエレメントを含み且つ各エレメントには文字情報が付随する構造化文書を対象として、エレメント間の結合関係に係る構造を変更する編集及び又はエレメントに付随する文字情報を変更する編集を複数のクライアント装置上で並行して行うための構造化文書編集システムにおいて、
前記構造化文書格納手段に格納されている構造化文書に含まれる複数のエレメントの各々について、当該エレメントに係る文字情報に対して最後に行われた編集に関する情報を含む第1の管理情報を記憶する第1の記憶手段と、
前記構造化文書格納手段に格納されている構造化文書に含まれる複数のエレメントの各々について、当該エレメントの他のエレメントとの結合関係に係る構造に対して最後に行われた編集に関する情報を含む第2の管理情報を記憶する第2の記憶手段と、
前記複数のクライアント装置のうちの1つのクライアント装置上で行われた編集全体を、文字情報に関する第1の編集と構造に関する第2の編集とに分けて得るための取得手段と、
前記第1の編集について、前記第1の記憶手段に記憶されている第1の管理情報との比較に基づいて、前記構造化文書格納手段に格納されている構造化文書の一貫性維持に関する判定を行い、この判定結果に基づいて、該第1の編集を前記構造化文書格納手段に格納されている構造化文書へ反映させるとともに、前記第1の記憶手段に記憶されている第1の管理情報のうち該第1の編集に係る部分を更新するための第1の処理手段と、
前記第2の編集について、前記第2の記憶手段に記憶されている第2の管理情報との比較に基づいて、前記構造化文書格納手段に格納されている構造化文書の一貫性維持に関する判定を行い、この判定結果に基づいて、該第2の編集を前記構造化文書格納手段に格納されている構造化文書へ反映させるとともに、前記第2の記憶手段に記憶されている第2の管理情報のうち該第2の編集に係る部分を更新するための第2の処理手段とを備えたことを特徴とする。
【0013】
なお、装置に係る本発明は方法に係る発明としても成立し、方法に係る本発明は装置に係る発明としても成立する。
また、装置または方法に係る本発明は、コンピュータに当該発明に相当する手順を実行させるための(あるいはコンピュータを当該発明に相当する手段として機能させるための、あるいはコンピュータに当該発明に相当する機能を実現させるための)プログラムとしても成立し、該プログラムを記録したコンピュータ読取り可能な記録媒体としても成立する。
【0014】
本発明によれば、サーバ上に格納されている構造化文書を、複数のクライアント上で並行して編集する場合でも、ユーザの編集意図をより豊富に柔軟に取り込むことが可能になる。
【0015】
【発明の実施の形態】
以下、図面を参照しながら発明の実施の形態を説明する。
【0016】
まず、本実施形態の概要について説明する。
【0017】
本実施形態では、ユーザがクライアントで行った編集を適切な単位に分割し、この単位ごとに、コンフリクト判定、サーバへの反映をする。ユーザが行った編集の分割は、以下に示した2段階で行うことにより、適切な単位へ分割することが可能である。
【0018】
ここで、構造化文書の編集が適切な単位に分割されているとは、具体的には、以下の2つの性質を満たしていることを指す。
独立性:編集の単位全体のうち任意の一部を省略し、さらに編集の単位を任意の順番に入れ替えてサーバに反映した場合、得られる文書が必ず(well−formedな)構造化文書になる。
極小性:独立性を満たしながらこれ以上小さな編集の単位に分割することが困難である。
【0019】
前述の通り、編集全体を適切な単位に分割し、この単位ごとにコンフリクト判定、サーバへの反映を行うことから、分割した編集の単位のうち一部がサーバに反映され、一部はサーバに反映されない。その場合でも、文書が構造化文書の形式を満たしているという性質が「独立性」である。
【0020】
また、コンフリクト判定時に、個々の編集の単位がなるべく小さくなっていればいるほど、コンフリクトが起こっていると判定される確率を低く抑えることが可能である。個々の編集の単位がこれ以上小さな単位に分割することが難しいという性質が「極小性」である。
【0021】
2段階の分割とは、具体的には、以下の2つの手続きである。
1つは、文字情報編集と構造情報編集への分割の手続きである。
図30に示すように、構造化文書の持つ情報には、文字情報と構造情報の2種類があるが、これら2種類の情報が多くの場合において互いに独立であるととらえると、これに対応して、構造化文書の編集には、文字情報に関する編集と構造情報に関する編集との2種類があり、これら2種類の編集も互いに独立であるととらえることが可能である。例えば、論文の編集の例で言うと、ある段落の内容を変更すること(文字情報の編集)と、この段落の位置を移動すること(構造情報の編集)とは、互いに独立であるととらえる。この性質を利用して、構造化文書の編集全体を文字情報の編集と構造情報の編集とに分割し、分けられた単位ごとに、コンフリクト判定し、サーバへの反映を行う。
もう1つは、構造情報編集の分割の手続きである。
もし、構造化文書の編集全体を文字情報に関する編集と構造情報に関する編集とに分割しただけでは、適切な編集の単位に分割されていない場合には、さらに、構造情報に関する編集を適切な単位に分割し、分けられた単位ごとに、コンフリクト判定し、サーバへ反映する。
【0022】
構造化文書の構造情報の編集を、適切な単位に分割する際には、以下の3つの手順で行う。
第1に、編集前の構造化文書の構造情報と編集後の構造化文書の構造情報とから(後述する編集前後のXTグラフ(XML topology グラフ orXML tree グラフ)から)、構造化文書の構造情報に関する編集全体を表現するデータ構造(後述する編集グラフ)を求める。
第2に、上記データ構造を、構造情報に関する編集のアトミックな単位を表現するデータ構造(後述するオルターネイティング・リング)に分割する。この手続きは、構造化文書に対して行われた構造情報に関する編集を小さな単位に分割することに相当する。
第3に、アトミックなデータ構造いくつかをまとめて、アトミックなデータ構造のグループを作成する。この手続きは、小さく分け過ぎてしまった編集の小さな単位をまとめ、適切な編集の単位を作成することに相当する。
【0023】
構造化文書の編集全体を、第1に文字情報の編集と構造情報の編集とに分割し、第2に必要に応じて構造化文書の構造情報の編集を適切な単位に分割を行う、という2段階の分割を用いると、従来の一貫性維持方式と比較して、より適切な編集の単位に分割することが可能である。この結果、本実施形態の構造化文書の一貫性維持方式は、従来の一貫性維持方式と比較して、より適切な編集の単位で、コンフリクト判定、サーバへの反映を行うため、ユーザの編集意図をより豊富に柔軟に取り込むことが可能になる。
【0024】
以下では、本実施形態をより詳しく説明する。
【0025】
図1に、本発明の一実施形態に係る構造化文書の一貫性維持システムの構成例を示す。このように、本システムは、大きく分けて、サーバ3とクライアント1からなる。図1では、1つのクライアントのみ示しているが、複数のクライアントが存在して構わない。また、サーバ3とクライアント1とは、ネットワークを通じて結合される別々の装置でもよいし、サーバ3とクライアント1とが同一の装置に搭載されたものとして存在していてもよい。
【0026】
図1に示されるように、本実施形態のサーバ3は、格納部31、通信部32、編集抽出部33、編集分割部34、構造情報編集表現部35、構造情報編集分割部36、構造情報編集併合部37、構造情報編集一貫性判定部38、文字情報編集一貫性判定部39を備えている。また、図1に示されるように、本実施形態のクライアント1は、表示・編集部11、通信部12を備えている。
【0027】
なお、図1の構成例では、編集抽出部33、編集分割部34、構造情報編集表現部35、構造情報編集分割部36および構造情報編集併合部37の全てがサーバ中に配置されるシステム構成を取っているが、その代わりに、それらの全部又は一部をクライアント中に配置するシステム構成も可能である。例えば、(1)編集抽出部33がクライアント中に配置されるシステム構成、(2)編集抽出部33および編集分割部34がクライアント中に配置されるシステム構成、(3)編集抽出部33、編集分割部34、構造情報編集表現部35、構造情報編集分割部36および構造情報編集併合部37の全てがクライアント中に配置されるシステム構成なども可能である。さらに、構造情報編集併合部37を設けないシステム構成も可能である。
【0028】
図1のクライアントの各構成要素の機能は、以下の通りである。
【0029】
表示・編集部11は、表示編集を行うためのものである。
【0030】
通信部12は、サーバ3との間で通信を行うためのものである。
【0031】
図1のサーバの各構成要素の機能は、以下の通りである。
【0032】
格納部31は、構造化文書を格納するためのものである。
【0033】
通信部32は、クライアント1との間で通信を行うためのものである。
【0034】
編集抽出部33は、編集を行う前の構造化文書と編集を行った後の構造化文書とを比較し、構造化文書のどの部分に対してどのような編集が行われたかを求める。なお、この手続きを行う際には、編集を行う前と編集を行った後の構造化文書において、どのエレメントとどのエレメントが対応するかを見付けなければならない。本実施形態では、構造化文書は、編集の前後で値が変わらない識別子を保持しているものとし、この識別子を用いて上記の対応を見付けるものとする。
【0035】
編集分割部34は、編集全体を文字情報に関する編集と構造情報に関する編集とに分割する。
【0036】
構造情報編集表現部35は、編集前の構造化文書の「構造情報を表現するグラフ」と編集後の構造化文書の「構造情報を表現するグラフ」とから、構造化文書の「構造情報に関する編集全体を表現するグラフ」を求める。なお、「構造情報を表現するグラフ」を、XTグラフと呼ぶものとする。また、「構造情報に関する編集全体を表現するグラフ」を、編集グラフと呼ぶものとする。
【0037】
構造情報編集分割部36は、構造化文書に対して行われた構造情報に関する編集を、アトミックな単位に分割する。なお、本実施形態では、「構造情報に関する編集のアトミックな単位」として、後述するオルターネイティング・リングを用いる。以下では、構造情報に関する編集のアトミックな単位を、オルターネイティング・リングと呼んで説明する。
【0038】
構造情報編集併合部37は、構造情報編集分割部36によって求められた、構造化文書に対して行われた構造情報に関する編集のアトミックな単位すなわちオルターネイティング・リングを、適切なグループにまとめる。
【0039】
構造情報編集一貫性判定部38は、構造化文書に対して行われた個々の構造情報に関する編集が一貫性を維持しているか、それとも一貫性を崩しているか判定する。一貫性を維持すると判定された構造情報に関する編集は、格納部31に格納されている構造化文書に反映し、一貫性を崩していると判定された構造情報に関する編集は、格納部31に格納されている構造化文書に反映しない。
【0040】
文字情報編集一貫性判定部39は、構造化文書に対して行われた個々の文字情報に関する編集が一貫性を維持しているか、それとも一貫性を崩しているか判定する。一貫性を維持すると判定された文字情報に関する編集は、格納部31に格納されている構造化文書に反映し、一貫性を崩していると判定された構造情報に関する編集は、格納部31に格納されている構造化文書に反映しない。
【0041】
以下では、図1のサーバの構造情報編集表現部35、構造情報編集分割部36、構造情報編集併合部37、文字情報編集一貫性判定部39、および構造情報編集一貫性判定部38における処理に関する詳細な説明を順番に行う。
【0042】
まず、構造情報編集表現部35における処理に関して説明する。
【0043】
構造情報編集表現部35は、前述のように、編集前の構造化文書の構造情報を表現するXTグラフと編集後の構造化文書の構造情報を表現するXTグラフとから、構造化文書の構造情報に関する編集全体を表現する編集グラフを求める。
【0044】
ここでは、最初に、構造化文書のXTグラフについて説明を行い、次いで、構造化文書のXTグラフを用いて構造情報に関する編集全体を表現するグラフすなわち編集グラフについて説明を行う。
【0045】
まず、構造化文書のXTグラフについて説明する。
【0046】
構造化文書のエレメントのローカルな構造情報は、このエレメントの「左隣のエレメント」、「右隣のエレメント」、「親エレメント」によって決まる。よって、構造化文書の編集によって、構造化文書中のエレメントに関するローカルな構造情報が編集されたかどうかは、編集の前後においてこのエレメントの左隣のエレメント、右隣のエレメント、親エレメントが変化したかどうかによって決まる。
【0047】
図2(a)に例示した構造化文書の構造情報を表現する方法は何通りか考えられるが、本実施形態では、編集の前後において構造化文書のエレメントに関するローカルな構造情報が編集されたかどうかを検出する目的に適した、図2(b)に例示したようなグラフ(XTグラフ)を用いる。
【0048】
グラフの各頂点は、構造化文書の各エレメントに1対1に対応する。もしエレメントが右側に兄弟エレメントを持つ場合には、グラフはこのエレメントを開始頂点とし隣り合う右の兄弟エレメントを終了頂点とする「右向き辺」(この辺ラベルを2つの頂点の親頂点の識別子とする)を持ち、右側に兄弟エレメントを持たない場合には、このエレメントを開始頂点とし親エレメントを終了頂点とする「上向き辺」(この辺ラベルを終了頂点の識別子とする)を持つ。また、もしエレメントが子エレメントを持つ場合には、このエレメントを開始頂点とし一番左の子エレメントを終了頂点とする「下向き辺」(この辺ラベルを開始頂点の識別子とする)を持ち、エレメントが子エレメントを持たない場合には、このエレメントを開始頂点とし自分自身を終了頂点とする「下上向き辺」(この辺ラベルを開始頂点の識別子とする)を持つ。
【0049】
このような構造化文書の構造情報を表現するXTグラフにおいて各頂点に接続する辺が変化したかどうかをチェックするだけで、この頂点に関するローカルな構造情報が編集されたかどうかを判定することが可能である。
【0050】
次に、構造化文書のXTグラフを用いて構造情報に関する編集全体を表現する編集グラフについて説明する。
【0051】
より具体的には、本実施形態では、構造化文書のXTグラフを用いて、構造化文書の構造情報の編集をシミュレートするグラフを導入する。すなわち、実際に構造化文書におけるどの部分にどのような編集がどのような順番に行われたかは、編集開始前と終了後の構造化文書を比較しただけでは分からない。そこで、編集前後の構造化文書を比較することにより、編集をシミュレートする。
【0052】
編集前の構造化文書と編集後の構造化文書とから、以下に示す手順で編集グラフを作成する。
【0053】
第1に、編集前の構造化文書のXTグラフを作成する。ただし、ここで、グラフ中のすべての辺は黒で彩色する。したがって、編集前の構造化文書のXTグラフ中の各辺は、以下に示す5つの情報を保持する。
(1)辺の開始頂点
(2)辺の終了頂点
(3)辺の向き
(4)辺のラベル
(5)辺の色(黒)
なお、辺の色=黒の情報を保持するとは、実際には、例えば、辺の色を示す属性情報として、0または1のうちの予め定められた一方(例えば、0)を保持することである。なお、後に参照する各図では、「辺の色」=黒の情報を持つ辺は、実線で表すものとする。
【0054】
第2に、編集後の構造化文書のXTグラフを作成する。ただし、ここで、グラフ中のすべての辺は赤で彩色する。したがって、編集後の構造化文書のXTグラフ中の各辺は、以下に示す5つの情報を保持する。
(1)辺の開始頂点
(2)辺の終了頂点
(3)辺の向き
(4)辺のラベル
(5)辺の色(赤)
なお、辺の色=赤の情報を保持するとは、実際には、例えば、辺の色を示す属性情報として、0または1のうちから上記の辺の色=黒に割り当てたものとは異なる値(例えば、1)を保持することである。なお、後に参照する各図では、「辺の色」=赤の情報を持つ辺は、点線で表すものとする。
【0055】
第3に、編集前のXTグラフと編集後のXTグラフとを重ねて新しいグラフ(編集グラフ)を作成する。編集前のXTグラフと編集後のXTグラフとを重ねて編集グラフを作成するとは、より具体的には、編集前の構造化文書のXTグラフ中のすべての頂点と辺、および編集後の構造化文書のXTグラフ中のすべての頂点と辺を含むグラフを作成することである。
【0056】
図3に、編集前のXTグラフGb(図中の(b))と、編集後のXTグラフGa(図中の(a))と、編集前後のXTグラフGbおよびGaから作成される編集グラフGc(図中の(c))を示す。なお、上記のように、図3では、黒辺を実線で表し、赤辺を点線で表している。
【0057】
ここで、構造化文書の構造情報に関する編集全体を表現する編集グラフについて、グラフの辺の色の交換という手続きを考える。この色の交換には、以下の2通りの手続きが存在する。
(1)現在辺の色が黒の場合には、赤で再彩色する(例えば、辺が保持する「辺の色」の値を、0から1に変更する)。
(2)現在辺の色が赤の場合には、黒で再彩色する(例えば、辺が保持する「辺の色」の値を、1から0に変更する)。
【0058】
なお、以下では、「色の交換」を、スイッチと呼ぶものとする。
【0059】
図3(c)に示した構造化文書の編集グラフGcにおいて、黒の辺(図中の実線の辺がこれに相当する)のみから構成されるグラフは、編集前の構造化文書のXTグラフGbに等しい。また、編集グラフGcにおいて、すべての辺をスイッチした結果得られる編集グラフG’ cを考えると、編集グラフG’ cにおいて黒の辺(図中の編集グラフGcにおける点線の辺がこれに相当する)のみから構成されるグラフは、(辺の色の違いを除いて)編集後の構造化文書のXTグラフGaに等しい。したがって、構造化文書の構造情報の編集は、構造化文書の構造情報に関する編集全体を表現する編集グラフGcにおける辺のスイッチによってシミュレートすることが可能であり、編集全体は編集グラフGc中すべての辺のスイッチによってシミュレートされる。
【0060】
なお、「黒の辺のみから構成されるグラフ」を、黒サブグラフと呼ぶものとする(「赤の辺のみから構成されるグラフ」は、同様に、赤サブグラフと呼ばれる)。
【0061】
次に、構造情報編集分割部36における処理に関して説明する。
【0062】
構造情報編集分割部36は、前述のように、構造化文書に対して行われた構造情報に関する編集を、アトミックな単位(オルターネイティング・リング)に分割する。
【0063】
前述のように、構造化文書の構造情報に関する編集は、編集前後の構造化文書から作成される編集グラフ中のすべての辺のスイッチによってシミュレートされる。そこで、構造化文書の構造情報に関する編集の分割は、構造化文書の編集グラフ中のすべての辺を(より厳密には、構造化文書の編集グラフ中のすべての辺のスイッチを)いくつかのグループに分けることに帰着される。
【0064】
構造化文書の文字情報に関する編集全体を適切な単位に分割し、この単位ごとに、コンフリクト判定、サーバへの反映を行うことから、分割した編集の単位のうち一部がサーバに反映され、一部はサーバに反映されない。その場合でも文書が構造化文書の形式を満たす分割を求めなければならない。
【0065】
上記の内容を構造化文書の編集グラフを用いて説明すると、構造化文書の編集グラフ中のすべての辺を(より厳密には、構造化文書の編集グラフ中のすべての辺のスイッチを)いくつかのグループに分けたもののうち、「独立性」を満たしているもの(グループ全体のうち任意の一部のグループを省略し、さらにグループを任意の順番に入れ替えスイッチを行った結果得られる編集グラフにおける黒サブグラフが、構造化文書になっているもの)を求めなければならないということである。
【0066】
構造化文書の編集グラフを分割する方法は一般に複数あるが、構造化文書の編集グラフの辺全体の集合は自明な構造化文書の編集グラフの分割である。
【0067】
次に、構造化文書の構造情報に関する編集の分割を用いて、構造化文書の構造情報に関する編集の「適切な」分割を定義する。
【0068】
構造化文書の編集グラフの分割(構造化文書の編集グラフ中のすべての辺を「独立性」を満たすグループに分けたもの)のうち、「極小性」を満たしているもの(これ以上小さな辺のグループに分割することが困難であるもの)が、適切な分割である。
【0069】
構造化文書の構造情報に関する編集の分割は、自明なものも含めて一般的に複数存在するが、個々の辺のグループが小さければ小さいほど、グループ単位で、コンフリクト判定、サーバへの反映を行う際に、他のユーザが行った編集とコンフリクトしないと判定される確率が高くなるため、ユーザの編集意図をより豊富に柔軟に取り込むことが可能である。
【0070】
図4(a)に示した構造化文書の編集グラフにおいて(ただし、図4では、グラフが煩雑にならないように下上向き辺は省略している)、
辺(1,2,下向き,1,黒)
をスイッチした結果得られる図4(b)に示した構造化文書の編集グラフにおける黒サブグラフは、構造化文書の構造情報を表現しない(図4(c)参照)。
【0071】
明らかに、ある構造化文書の編集グラフにてただ1つの辺のスイッチを行った結果得られる編集グラフは、常にその黒サブグラフが構造化文書を表現するわけではないことがわかる。
【0072】
これは、
辺(1,2,下向き,1,黒)
をスイッチした結果、頂点1を開始頂点とし頂点1の子頂点を終了頂点とする黒辺がなくなったからであり、この編集グラフにおける黒サブグラフが構造化文書の構造情報を表現するように保つためには、
辺(1,2,下向き,1,黒)
をスイッチするのと同時に、
辺(1,3,下向き,1,赤)
もスイッチしなければならない。
【0073】
すると、今度は、
辺(1,3,下向き,1,赤)
をスイッチした結果、頂点3を終了頂点とする黒辺が2本になったので、この編集グラフにおける黒サブグラフが構造化文書の構造情報を表現するように保つためには、
辺(1,3,下向き,1,赤)
をスイッチするのと同時に、
辺(2,3,右向き,1,黒)
もスイッチしなければならない。
【0074】
このようなスイッチの連鎖は、「この構造化文書の編集グラフにおける黒サブグラフが構造化文書の構造情報を表現するように保つためには、
辺(3,2,下向き,1,赤)
をスイッチするのと同時に、
辺(1,2,下向き,1,黒)
もスイッチしなければならない」、というように、一番目にスイッチした辺に戻るまで続く。
【0075】
上記の通り、構造化文書の構造情報に関する編集全体を表現する編集グラフにおける黒サブグラフが、構造化文書の構造情報を表現するように保つためには、常に同時にスイッチしなければならない辺のグループが存在することが分かる。この辺のグループが、「構造情報に関する編集のアトミックな単位」としての「オルターネイティング・リング」である。
【0076】
構造化文書の編集グラフのすべての辺は、構造情報に関する編集のアトミックな単位すなわちオルターネイティング・リングに分割することができ、図4(a)の構造化文書の編集グラフのすべての辺は、図5に示した7つの構造情報に関する編集のアトミックな単位すなわちオルターネイティング・リングに分割される。
【0077】
色以外が同一な2つの辺(開始頂点、終了頂点、辺向き、辺ラベルが同一な2つの辺)からなるオルターネイティング・リングは、自明なオルターネイティング・リングである。自明なオルターネイティング・リングをスイッチする前後において、構造化文書の編集グラフは不変である。図5には、5つの自明なオルターネイティング・リングが含まれている。
【0078】
次に、構造情報編集併合部37における処理に関して説明する。
【0079】
構造情報編集併合部37は、前述のように、構造情報編集分割部36によって求められた構造情報に関する編集のアトミックな単位すなわちオルターネイティング・リングを、適切なグループにまとめる。
【0080】
オルターネイティング・リングより小さな辺グループが「極小性」を満たさないことは、上記の内容から明らかである。ただし、オルターネイティング・リングの中には、編集の単位として小さすぎて「独立性」を満たさないものが存在する。そこで、「独立性」を満たさないオルターネイティング・リングをまとめて、構造情報に関する編集のアトミックな単位のグループすなわちオルターネイティング・リングのグループを作成する。この手続きは、小さく分け過ぎてしまった編集の小さな単位をまとめ適切な編集の単位を作成することに相当する。オルターネイティング・リングが編集の単位として小さ過ぎる場合とは、オルターネイティング・リングが「独立性」を満たさないために、スイッチを実行した結果得られる編集グラフにおける黒サブグラフが構造化文書を表現しない場合のことを意味し、具体的には、黒サブグラフが、
(1)複数の親頂点を持つ頂点を含む
(2)親頂点を持たない頂点を含む
(3)祖先・子孫頂点が自分自身になる頂点を含む
という3通りの場合が存在する。
【0081】
以下、3通りのそれぞれについて、オルターネイティング・リングをまとめるアルゴリズムについて説明する。
【0082】
<複数の親頂点を持つ場合>
まず、(1)の複数の親頂点を持つ頂点を含む場合にオルターネイティング・リングをまとめるアルゴリズム例について説明する。
【0083】
図3に示した構造化文書の編集グラフは、
(1){(4,3,右向き,2,黒),(6,3,右向き,5,赤),(6,5,上向き,5,黒),(4,5,上向き,2,赤)}と、
(2){(2,4,下向き,2,黒),(2,7,下向き,2,赤),(5,7,下向き,5,黒),(5,6,下向き,5,赤),(7,6,右向き,5,黒),(7,2,上向き,2,赤),(3,2,上向き,2,黒),(3,4,右向き,5,赤)}、
の2つの自明でないオルターネイティング・リングを持つ。
【0084】
オルターネイティング・リング(1)をスイッチした結果得られる構造化文書の編集グラフを図6(a)に示し、図6(a)の編集グラフにおける黒サブグラフを図6(b)に示す。
【0085】
図6(b)の黒サブグラフの頂点4に注目すると、この頂点は、辺(4,5,上向き,5)の開始頂点であることから、頂点4は頂点5の子頂点であり、辺(2,4,下向き,2)の終了頂点であることから、頂点4は頂点2の子頂点である。頂点4は複数の親頂点を持つため、図6(b)に示した黒サブグラフは、構造化文書の構造情報を表現していない。
【0086】
図6(b)の黒サブグラフ中のある頂点に注目した際に、この頂点を終了頂点とする右向きまたは下向き辺のラベルと、この頂点を開始頂点とする右向きまたは上向き辺のラベルが異なることが原因で、黒サブグラフが複数の親頂点を持つ頂点を含む(具体的には、この例の場合、頂点3を終了頂点とする右向き辺のラベル5と頂点3を開始頂点とする上向き辺のラベル2が異なり、頂点4を終了頂点とする下向き辺のラベル2と頂点4を開始頂点とする右向き辺のラベル5が異なる)。この場合には、下記の方法を用いて複数のオルターネイティング・リングを同一グループにまとめることで、適切な編集の単位を構成することができる。
【0087】
図7(a)に示した通り、黒サブグラフが構造化文書を表現するような編集グラフの各頂点は、
(1)この頂点を開始頂点とし右向きまたは上向きの辺を含むオルターネイティング・リング、
(2)この頂点を終了頂点とし右向きまたは下向きの辺を含むオルターネイティング・リング、
の2つのオルターネイティング・リングを持つ。
【0088】
例えば、図3に示した構造化文書の編集グラフの頂点4は、前述の2つのオルターネイティング・リングを持つ(図7(b)参照)。
【0089】
図7(b)に示すように、オルターネイティング・リング(1)において、この頂点を開始頂点とする2つの辺の辺ラベルが異なる場合に(オルターネイティング・リング(2)において、この頂点を終了頂点とする2つの辺の辺ラベルが異なる場合に)、オルターネイティング・リング(1)とオルターネイティング・リング(2)を同一グループにまとめる。
【0090】
オルターネイティング・リングを上記方法で同一グループにまとめることにより、複数の親頂点を持つことを防ぐことができる。
【0091】
<親頂点を持たない場合>
次に、(2)の親頂点を持たない頂点を含む場合にオルターネイティング・リングをまとめるアルゴリズム例について説明する。
【0092】
図8(a)に示した構造化文書の編集グラフは(ただし、図8(a)では、グラフが煩雑にならないように下上向き辺は省略している)、
(1){(4,1,上向き,1,赤),(6,1,上向き,1,黒),(6,3,右向き,1,赤),(2,3,右向き,1,黒),(2,5,右向き,1,赤),(4,5,右向き,1,黒)}と、
(2){(1,4,下向き,1,黒),(1,2,下向き,1,赤),(5,2,右向き,1,黒),(5,6,右向き,1,赤),(3,6,右向き,1,黒),(3,4,右向き,1,赤)}、
の2つの自明でないオルターネイティング・リングを持つ。
【0093】
オルターネイティング・リング(1)をスイッチした結果得られる構造化文書の編集グラフを図8(b)に示し、図8(b)の編集グラフにおける黒サブグラフを図8(c)に示す。
【0094】
図8(c)の黒サブグラフの頂点2に注目すると、この頂点は、親頂点を持たないため、黒サブグラフは、構造化文書の構造情報を表現していない。
【0095】
図8(c)に示した黒サブグラフ中のあるループがループを構成する辺のラベルと同一の頂点を含まないことが原因で、この黒サブグラフが親頂点を持たない頂点を含む(具体的には、この例の場合、ループ(3,6,右向き,1),(6,3,右向き,1)が頂点1を含まず、ループ(2,5,右向き,1),(5,2,右向き,1)が頂点1を含まない)。この場合には、下記の方法を用いて複数のオルターネイティング・リングを同一グループにまとめることで、適切な編集の単位を構成することができる。
【0096】
ここで、構造化文書の編集グラフ中のループが単一の辺ラベルのみを含む場合、このループのことを、「水平ループ」と呼ぶものとする(図9(a)参照)。
【0097】
第1に、編集グラフの各頂点nについて、
(1)頂点nを含み辺ラベルnを保持する黒の辺のみから構成される水平ループ、
(2)頂点nを含み辺ラベルnを保持する赤の辺のみから構成される水平ループ、
の2つの水平ループを探し出す。
【0098】
例えば、図8(a)に示した構造化文書の編集グラフの頂点1は、図9(b)に示した2つの水平ループを持つ。
【0099】
第2に、2つの水平ループの各々に関して、頂点を順番に並べた頂点列を求め(ただし、頂点列の第1頂点と最終頂点は、ともに、上記頂点nとする)、2つの文字列の最大共通部分列を求める。
【0100】
例えば、図9(b)に示した2つの水平ループ{1,4,5,2,3,6,1}と{1,2,5,6,3,4,1}の最大共通部分列には、{1,5,3,1}がある。
【0101】
最大共通部分列の隣り合う2つの頂点ni-1,niに注目すると、図10(a)に示した通り、
(1)第1の水平ループの辺のみを使って頂点ni-1と頂点niを結ぶパス、
(2)第2の水平ループの辺のみを使って頂点ni-1と頂点niを結ぶパス、
の2つのパスが存在する。
【0102】
例えば、図9(b)の最大共通部分列{1,5,3,1}の隣り合う2つの頂点5,6は、図10(b)に示した2つのパスを持つ。
【0103】
編集グラフのオルターネイティング・リングをスイッチした結果得られる構造化文書の編集グラフにおける黒サブグラフにおいて、頂点ni-1と頂点niとを結ぶパスが、上記パス(1)またはパス(2)のいずれにもなっていない場合には、スイッチした結果得られる構造化文書の編集グラフは、必ずしもその黒サブグラフが構造化文書を表現するものになっているとは限らない。
【0104】
そこで、第3に、上記2つのパス上の辺を含むオルターネイティング・リングを常に同時にスイッチさせる目的で、上記2つのパス上の辺を含むオルターネイティング・リングをすべて同一グループにまとめる。
【0105】
オルターネイティング・リングを上記方法で同一グループにまとめることにより、親頂点を持たないことを防ぐことができる。
【0106】
<祖先・子孫頂点が自分自身になる場合>
次に、(3)の祖先・子孫頂点が自分自身になる頂点を含む場合にオルターネイティング・リングをまとめるアルゴリズム例について説明する。
【0107】
図11(a)に示した構造化文書の編集グラフは、
(1){(3,5,上向き,5,赤),(5,5,下上向き,5,黒),(5,3,下向き,5,赤),(2,3,右向き,1,黒),(2,4,右向き,1,赤),(3,4,右向き,1,黒)}と、
(2){(3,5,下向き,3,黒),(4,5,下向き,4,赤),(4,4,下上向き,4,黒),(5,4,上向き,4,赤),(5,3,上向き,3,黒),(3,3,下上向き,3,赤)}、
の2つの自明でないオルターネイティング・リングを持つ。
【0108】
オルターネイティング・リング(1)をスイッチした結果得られる構造化文書の編集グラフを図11(b)に示し、図11(b)の編集グラフにおける黒サブグラフを図11(c)に示す。
【0109】
図11(c)の黒サブグラフの頂点3に注目すると、この頂点は、辺(3,5,上向き,5)の開始頂点であることから、頂点3は頂点5の子頂点であり、辺(5,3,上向き,3)の終了頂点であることから、頂点3は頂点5の親頂点である。頂点3の祖先・子孫頂点が自分自身であるため、図11(c)に示した黒サブグラフは、構造化文書の構造情報を表現していない。
【0110】
図11(c)に示した黒サブグラフ中のある頂点がこの頂点を開始頂点とする上向きまたは右向き辺とこの頂点を終了頂点とする上向き辺を含むループを持つことが原因で、黒サブグラフが子孫・祖先頂点が自分自身になる頂点を含む。この場合には、下記の方法を用いて複数のオルターネイティング・リングを同一グループにまとめることで、適切な編集の単位を構成することができる。
【0111】
ここで、構造化文書の編集グラフ中のあるループが複数の辺ラベルを含む場合、このループのことを、「垂直ループ」と呼ぶものとする(図12(a)参照)。
【0112】
第1に、編集グラフにおいて、垂直ループをすべて探し出す。
【0113】
例えば、図11(a)に示した構造化文書の編集グラフは、図12(b)に示す垂直ループを持つ。この編集グラフにおける黒サブグラフと赤サブグラフがともに構造化文書を表現するものであることから、この垂直ループは、黒辺と赤辺の両方を含んでいる。
【0114】
もし、この垂直ループ中のすべての赤辺がスイッチされてすべての色が黒になった場合は、この構造化文書の編集グラフは、黒サブグラフが構造化文書を表現するものではなくなる。
【0115】
そこで、第2に、オルターネイティング・リングのスイッチを行った結果、この垂直ループ中の辺がすべて黒になることを避けるために、垂直ループ上の辺を含むオルターネイティング・リングを常に同時にスイッチさせる目的で、垂直ループ上の辺を含むオルターネイティング・リングをすべて同一グループにまとめる。
【0116】
オルターネイティング・リングを上記方法で同一グループにまとめることにより、祖先・子孫頂点が自分自身になることを防ぐことができる。
【0117】
次に、文字情報編集一貫性判定部39における処理に関して説明する。
【0118】
文字情報編集一貫性判定部39は、前述のように、編集分割部34から与えられた文字情報に関する編集をもとにして、構造化文書に対して行われた個々の文字情報に関する編集が一貫性を維持しているか、それとも一貫性を崩しているか判定する。一貫性を維持すると判定された文字情報に関する編集は、格納部31に格納されている構造化文書に反映し、一貫性を崩していると判定された構造情報に関する編集は、格納部31に格納されている構造化文書に反映しない。
【0119】
さて、以下では、個々の文字情報に関する編集が一貫性を維持しているか、それとも一貫性を崩しているか判定するための構成・動作について説明する。
【0120】
ここで、本実施形態で扱う構造化文書は、図30に示すように、エレメント名とエレメント値の2種類の文字情報を保持する(図2(a)の例では、例えば、id=3のエレメントのエレメント名=“段落”であり、エレメント値=“システムの概要”である)。
【0121】
本実施形態において、サーバ3は、現在格納している構造化文書の各エレメントのエレメント名に関する情報と、各エレメントのエレメント値に関する情報とのそれぞれを、管理テーブルに格納して管理する。
【0122】
なお、エレメント値の管理テーブルとエレメント名の管理テーブルとは基本的には同様であるので、ここでは、エレメント値の管理テーブルに関して説明し、エレメント値の管理テーブルに関する説明は省略する。
【0123】
図13に、現在サーバ3に格納されている構造化文書のエレメントのエレメント値に関する管理テーブルの構成例を示す。
【0124】
図13において、「エレメント識別子」は、サーバに格納されているエレメント値ごとに一意に付与される識別子である。
「現在のバージョン」は、サーバに格納されているエレメント値の現在のバージョンである。
「前のバージョン」は、現在サーバに格納されているエレメント値の直前にサーバに格納されていたエレメント値のバージョンである。
「クライアントの識別子」は、サーバに格納されているエレメント値を現在の値に更新したクライアントの識別子である。
「最終更新時刻」は、サーバに格納されているエレメント値をクライアントが現在の値に更新した時刻である。この時刻は、クライアントが実際に編集を行った時刻のことであり、クライアントが行った編集をサーバに反映した時刻のことではない。
「エレメント値」は、現在サーバに格納されているエレメント値である。
【0125】
さて、上記のように、本実施形態で扱う構造化文書は、エレメント名とエレメント値の2種類の文字情報を保持するが、これに対応して、文字情報に関する編集は、エレメント名編集とエレメント値編集の2種類が存在する。
【0126】
本実施形態において、クライアント1は、構造化文書のエレメント名の編集に関する情報と、エレメント値の編集に関する情報とのそれぞれを、管理テーブルに格納して管理する。
【0127】
なお、エレメント値の管理テーブルとエレメント名の管理テーブルのフォーマットやそれらに関する処理等は基本的には同様であるので、ここでは、エレメント値の管理テーブルに関して説明し、エレメント値の管理テーブルに関する説明は省略する。
【0128】
図14に、現在クライアント1に格納されている構造化文書のエレメントのエレメント値の編集に関する管理テーブルの構成例を示す。
【0129】
図14において、「エレメント識別子」は、クライアントで編集を行ったエレメント値の識別子である。
「前のバージョン」は、サーバから読み出しを行った際にエレメント値にサーバで付与されていた「現在のバージョン」である。「前のバージョン」は、クライアントでエレメント値を変更した場合であっても不変である。
「クライアントの識別子」は、エレメント値の編集を行ったクライアントの識別子である。
「更新時刻」は、エレメント値の更新を行った時刻である。クライアントでエレメント値が更新されるごとに、「更新時刻」も更新される。この時刻は、クライアントが実際に編集を行った時刻のことであり、クライアントが行った編集をサーバに反映した時刻のことではない。
「エレメント値」は、エレメントの値である。
【0130】
なお、エレメント名の管理テーブルの場合には、上記フォーマットにおいて「エレメント値」フィールドを、エレメント名を保持する「エレメント名」フィールドにすればよい。
【0131】
ここで、あるエレメント値の編集が一貫性を維持しているか、崩しているかの判定の手続きについて説明する。
【0132】
図15及び図16に、この判定手続きの処理手順の一例を示す。
【0133】
まず、図13に示した管理テーブルと、図14に示した管理テーブルにおいて、一貫性判定を行おうとしているエレメント値に対応する行を見付ける(ステップS11)。
【0134】
次に、クライアント上でエレメント値が保持する「前のバージョン」とサーバ上でエレメント値が保持する「現在のバージョン」を比較する(ステップS12)。
【0135】
両者が等しい場合は(ステップS13)、一貫性が維持されていると判定して(ステップS20)、終了する。
ステップS12の比較で両者が異なっている場合(ステップS13)、クライアント上でエレメント値が保持する「前のバージョン」とサーバ上でエレメント値が保持する「前のバージョン」を比較する(ステップS14)。
【0136】
そして、両者が等しいならば(ステップS15)、さらに、クライアント上でエレメント値が保持する「クライアントの識別子」とサーバ上でエレメント値が保持する「クライアントの識別子」を比較する(ステップS17)。
【0137】
そして、両者が等しいならば(ステップS17)、さらに、クライアント上でエレメント値が保持する「更新時刻」とサーバ上でエレメント値が保持する「最終更新時刻」を比較する(ステップS18)。
【0138】
「更新時刻」が「最終更新時刻」よりも遅いまたは等しい場合には(ステップS19)、一貫性が維持されていると判定して(ステップS20)、終了する。一方、「更新時刻」が「最終更新時刻」よりも早い場合には(ステップS19)、一貫性が維持されていないと判定して(ステップS21)、終了する。
なお、ステップS14またはステップS16の比較で両者が異なっていたならば(ステップS15またはステップS17)、一貫性が維持されていないと判定して(ステップS21)、終了する。
【0139】
エレメント名の編集が一貫性を維持しているか、崩しているかの判定の手続きも基本的には同様であり、図15及び図16の手順例の場合には、エレメント値をエレメント名と置き換えればよい。
【0140】
そして、前述したように、一貫性を維持すると判定された文字情報に関する編集は、格納部31に格納されている構造化文書に反映し、一貫性を維持しないと判定された文字情報に関する編集は、格納部31に格納されている構造化文書に反映しないで終了する。
【0141】
なお、文字情報に関する編集が一貫性を維持しないと判定された場合に、サーバに反映せず、サーバ上のログに残す、あるいは通信部を通じてユーザに通知する、あるいはサーバに反映し、一貫性が崩れていることをコメントとして付加するなどの処理を行ってもよい。もちろん、これらの他にも種々のバリエーションが可能である。
【0142】
また、本実施形態で示した一貫性判定方式は一例であり、これ以外にも、バージョン、クライアントの識別子、更新時刻を比較する順番が異なる方式も可能である(本実施形態で一貫性が維持すると判定している場合に一貫性が維持されていないと判定する(またはその逆)方式なども可能である)。
【0143】
次に、構造情報編集一貫性判定部38における処理に関して説明する。
【0144】
ところで、前述したように、編集分割部34は、編集全体を文字情報に関する編集と構造情報に関する編集とに分割し、構造情報編集表現部35は、編集前の構造化文書の構造情報を表現するXTグラフと編集後の構造化文書の構造情報を表現するXTグラフとから、構造化文書の構造情報に関する編集全体を表現する編集グラフを求め、構造情報編集分割部36は、構造化文書に対して行われた構造情報に関する編集を、構造情報に関する編集のアトミックな単位すなわちオルターネイティング・リングに分割し、構造情報編集併合部37は、必要に応じて、構造情報に関する編集のアトミックな単位すなわちオルターネイティング・リングを、適切なグループにまとめる。
【0145】
そして、この構造情報編集一貫性判定部38は、構造情報編集併合部37から出力されるグラフ(または、構造情報編集分割部36から出力されるグラフ)をもとにして、構造化文書に対して行われた個々の構造情報に関する編集(すなわち、オルターネイティング・リングのグループ)が一貫性を維持しているか、それとも一貫性を崩しているか判定する。一貫性を維持すると判定された構造情報に関する編集は、格納部31に格納されている構造化文書に反映し、一貫性を崩していると判定された構造情報に関する編集は、格納部31に格納されている構造化文書に反映しない。
【0146】
さて、以下では、構造情報に関する個々の編集が一貫性を維持しているか、それとも一貫性を崩しているか判定するための構成・動作について説明する。
【0147】
本実施形態において、サーバ3は、現在格納している構造化文書のXTグラフに関する情報を、管理テーブルに格納して管理する。
【0148】
図17に、現在サーバ3に格納されている構造化文書のXTグラフに関する管理テーブルの構成例を示す。
【0149】
図17に示した管理テーブルは、構造化文書のXTグラフの各頂点ごとに、当該頂点を開始頂点または終了頂点とする4つの辺(左辺、右辺、左下辺、右下辺)の情報を格納する。
【0150】
ただし、ここで、
「左辺」とは、当該頂点を終了頂点とする右向き又は下向きの辺のことであり、
「右辺」とは、当該頂点を開始頂点とする右向き又は上向きの辺のことであり、
「左下辺」とは、当該頂点を開始頂点とする下向き又は下上向きの辺のことであり、
「右下辺」とは、当該頂点を終了頂点とする上向き又は下上向きの辺のことである。
【0151】
図17では、頂点10の情報のみ例示しているが、実際には、管理テーブルは、XTグラフ中のすべての頂点に関する情報を保持する。
【0152】
図17において、「頂点識別子」は、サーバに格納されているXTグラフの頂点ごとに一意に付与される識別子である。
「辺タイプ」は、管理テーブルの列が情報を格納する辺のタイプである。
「辺ラベル」は、管理テーブルの列が情報を格納する辺のラベルである。
「辺向き」は、管理テーブルの列が情報を格納する辺の向きである。
「現在のバージョン」は、サーバに格納されている辺の現在のバージョンである。
「前のバージョン」は、現在のサーバに格納されている辺の直前にサーバに格納されていた辺のバージョンである。
「クライアントの識別子」は、サーバに格納されている辺を現在の値に更新したクライアントの識別子である。
「最終更新時刻」は、サーバに格納されている辺をクライアントが現在の値に更新した時刻である。この時刻は、クライアントが実際に編集を行った時刻のことであり、クライアントが行った編集をサーバに反映した時刻のことではない。
【0153】
一方、本実施形態において、クライアント1は、編集した構造化文書のXTグラフに関する情報を、管理テーブルに格納して管理する。
【0154】
図18に、現在サーバ3に格納されている構造化文書のXTグラフに関する管理テーブルの構成例を示す。
【0155】
図18に示した管理テーブルは、図17に示した管理テーブルと同様に、構造化文書のXTグラフの各頂点ごとに、当該頂点を開始頂点または終了頂点とする4つの辺(左辺、右辺、左下辺、右下辺)の情報を格納する。図18では、頂点10の情報のみ例示しているが、実際には、管理テーブルは、XTグラフ中のすべての頂点に関する情報を保持する。
【0156】
図17に示した管理テーブルと図18に示した管理テーブルとはほとんど同様の構成であるが、ただし、図17に示した管理テーブルでは「現在のバージョン情報」と「前のバージョン情報」の2通りのバージョン情報が存在するのに対して、図18に示した管理テーブルでは「前のバージョン情報」のみが存在する点において相違するものとなっている。
【0157】
クライアントの管理テーブル(図18)の「前のバージョン」は、どのバージョンの辺に対してクライアントで編集を行ったかを表している。つまり、サーバから構造化文書を読み出した際にサーバの管理テーブルに格納されている「現在のバージョン」が、クライアントの管理テーブル(図17)の「前のバージョン」に等しい(サーバ管理テーブルの「前のバージョン」とクライアント管理テーブルの「前のバージョン」とが対応する訳ではない)。「前のバージョン」は、クライアントで構造情報の編集を行った場合であっても不変である。
【0158】
なお、図17の管理テーブルと図18の管理テーブルとを比較して分かるように、図18の管理テーブルは、編集において頂点10の右辺が変更された場合を例示している。
【0159】
さて、前述したように、構造化文書の構造情報に関する編集は、編集前の構造情報を表現するXTグラフと編集後の構造情報を表現するXTグラフとから構成される編集グラフの辺のスイッチで表現され、構造情報に関する編集の「適切な単位」は、編集グラフの辺(オルターネイティング・リング)の集合で表現される。
【0160】
構造情報に関する編集の「適切な単位」が、一貫性を維持しているか、崩しているかについて判定する際には、第1に、この編集の単位を構成する各辺が一貫性を維持するか、それとも崩すかを判定する。具体的には、辺の開始頂点と終了頂点の両方に注目し、下記に示した方法を用いて、この辺のスイッチが一貫性を維持するか、崩すか判定する。開始頂点と終了頂点の両方において一貫性を維持すると判定された場合に限って、この辺のスイッチは一貫性を維持すると判定される。
【0161】
第2に、構造情報に関する編集の適切な単位の中の全ての辺が一貫性を維持すると判定された場合に限って、構造情報に関する編集の適切な単位全体が一貫性を維持すると判定し、構造情報に関する編集の適切な単位の中に1つでも一貫性を崩すと判定された辺が存在する場合には、構造情報に関する編集の適切な単位全体が一貫性を崩すと判定する。
【0162】
求めた編集の単位は、XTグラフの辺集合である。編集の単位を構成する全ての辺の編集が一貫性を維持していると判定された場合に限り、編集の単位が一貫性を維持していると判定し、サーバに、この編集を反映する。
【0163】
また、辺の編集(スイッチ)が一貫性を維持しているか、崩しているかの判定は、辺の開始頂点、終了頂点それぞれに関して、以下の手続きを用いて行う。両方とも一貫性を維持していると判定された場合に、また、辺の編集(スイッチ)が一貫性を維持していると判定される。
【0164】
ここで、ある辺の編集が一貫性を維持しているか、崩しているかの判定の手続きについて説明する。
【0165】
図19及び図20に、この判定手続きの処理手順の一例を示す。
【0166】
まず、図17に示した管理テーブルと、図18に示した管理テーブルにおいて、一貫性判定を行おうとしている辺に対応する行を見付ける(ステップS31)。
【0167】
次に、クライアント上で辺が保持する「前のバージョン」とサーバ上で辺が保持する「現在のバージョン」を比較する(ステップS32)。
【0168】
両者が等しい場合は(ステップS33)、一貫性が維持されていると判定して(ステップS40)、終了する。
ステップS32の比較で両者が異なっている場合(ステップS33)、クライアント上で辺が保持する「前のバージョン」とサーバ上で辺が保持する「前のバージョン」を比較する(ステップS34)。
【0169】
そして、両者が等しいならば(ステップS35)、さらに、クライアント上で辺が保持する「クライアントの識別子」とサーバ上で辺が保持する「クライアントの識別子」を比較する(ステップS37)。
【0170】
そして、両者が等しいならば(ステップS37)、さらに、クライアント上で辺が保持する「更新時刻」とサーバ上で辺が保持する「最終更新時刻」を比較する(ステップS38)。
【0171】
「更新時刻」が「最終更新時刻」よりも遅いまたは等しい場合には(ステップS39)、一貫性が維持されていると判定して(ステップS40)、終了する。一方、「更新時刻」が「最終更新時刻」よりも早い場合には(ステップS39)、一貫性が維持されていないと判定して(ステップS41)、終了する。
なお、ステップS34またはステップS36の比較で両者が異なっていたならば(ステップS35またはステップS37)、一貫性が維持されていないと判定して(ステップS41)、終了する。
【0172】
なお、構造情報に関する編集が一貫性を維持しないと判定された場合に、サーバに反映せず、サーバ上のログに残す、あるいは通信部を通じてユーザに通知するなどの処理を行ってもよい。もちろん、これらの他にも種々のバリエーションが可能である。
【0173】
また、本実施形態で示した一貫性判定方式は一例であり、これ以外にも、バージョン、クライアントの識別子、更新時刻を比較する順番が異なる方式も可能である(本実施形態で一貫性が維持すると判定している場合に一貫性が維持されていないと判定する(またはその逆)方式なども可能である)。
【0174】
以下では、本実施形態の各種手順について説明する。
【0175】
まず、読み出し時の手順例を示す。
【0176】
サーバ3に格納されている構造化文書は、以下の手順でクライアント1に呼び出される。
【0177】
(1)サーバの格納部31は、構造化文書を読み出し、サーバの通信部32に送信する。
(2)サーバの通信部32は、格納部31から送信される構造化文書を受信し、クライアントの通信部12に送信する。
(3)クライアントの通信部12は、サーバの通信部32から送信される構造化文書を受信し、クライアントの表示・編集部11に送信する。
(4)クライアントの表示・編集部11は、クライアントの通信部12から送信される構造化文書を受信し、表示を行う。
【0178】
次に、書き込み時の手順例を示す。
【0179】
クライアントの表示・編集部11で編集を行った構造化文書は、以下の手順でサーバに書き込まれる(反映される)。
【0180】
(1)クライアントの表示・編集部11は、編集が終了した構造化文書をクライアントの通信部12に送信する。
(2)クライアントの通信部12は、クライアントの表示・編集部11から送信される構造化文書を受信し、サーバの通信部32に送信する。
【0181】
(3)サーバの通信部32は、クライアントの通信部12から送信された構造化文書を受信し、サーバの編集抽出部33に送信する。
(4)サーバの編集抽出部33は、サーバの通信部32から送信された構造化文書を受信し、編集前後の構造化文書を比較して、どの部分にどんな編集が行われたかを求める。求められた編集をサーバの編集分割部34に送信する。
(5)サーバの編集分割部34は、サーバの編集抽出部33で求め、送信された編集全体を受信し、文字情報に関する編集と構造情報に関する編集とに分割する。その後、文字情報に関する編集は、文字情報編集一貫性判定部39に、構造情報に関する編集は、構造情報編集表現部35に、それぞれ送信する。
【0182】
以下、(6−1)と、(6−2−1)〜(6−2−4)とは、いずれを先に行ってもよいし、並行して行ってもよい。
【0183】
(6−1)文字情報編集一貫性判定部39は、編集分割部34から送信された文字情報に関する編集を受信し、構造化文書に対して行われた個々の文字情報に関する編集が一貫性を維持しているか、それとも一貫性を崩しているか判定する。文字情報に関する編集が一貫性を維持している場合、文字情報に関する編集を格納部31に送信する。文字情報に関する編集が一貫性を維持していない場合、文字情報に関する編集を破棄する。
【0184】
(6−2−1)構造情報編集表現部35は、編集分割部34から送信された構造情報に関する編集を受信し、構造化文書の構造情報に関する編集全体を表現する編集グラフを作成する。作成した構造化文書の編集グラフを、構造情報編集分割部36に送信する。
(6−2−2)構造情報編集分割部36は、構造情報編集表現部35から送信された構造化文書の編集グラフを受信し、構造化文書の編集グラフを、構造情報に関する編集のアトミックな単位すなわちオルターネイティング・リングに分割する。つまり、構造化文書の構造情報に関する編集を、アトミックな単位に分割する。この結果得られるすべてのオルターネイティング・リングを、構造情報編集併合部37に送信する。
(6−2−3)構造情報編集併合部37は、構造情報編集分割部36から送信されたオルターネイティング・リングを受信し、オルターネイティング・リングを適切なグループにまとめる。つまり、構造情報編集分割部36で小さく分け過ぎてしまった編集をまとめて、適切な編集の単位を作成する。この結果得られるすべてのオルターネイティング・リングのグループを、構造情報編集一貫性判定部38に送信する。
(6−2−4)構造情報編集一貫性判定部38は、構造情報編集併合部37から送信された構造情報に関する編集を受信し、構造化文書に対して行われた個々の構造情報に関する編集(つまり、オルターネイティング・リングのグループ)が一貫性を維持しているか、それとも一貫性を崩しているか判定する。構造情報に関する編集が一貫性を維持している場合、構造情報に関する編集を格納部31に送信する。構造情報に関する編集が一貫性を維持していない場合、構造情報に関する編集を破棄する。
【0185】
(7)サーバの格納部31は、文字情報編集一貫性判定部39、構造情報編集一貫性判定部38から送信された編集を受信し、編集内容を格納する。
【0186】
さて、以下では、具体例を用いて本実施形態を説明する。
【0187】
ここで、サーバ3に、図21に示した構造化文書と図22に示したエレメント値の管理テーブルが格納されていたとする。
【0188】
なお、ここでは、説明を簡略化するために、エレメント名の編集は、なされなかった場合を考える。
【0189】
編集の具体例としては、ユーザ1がクライアントAを使用し、ユーザ2がクライアントBを使用し、それらユーザが互いに異なるクライアントであるクライアントAとクライアントBから同一文書を並行して編集する場合を考え、クライアントAが17:00に、クライアントBが17:20に、それぞれ上記構造化文書を読み出し、
引き続き、クライアントAが、以下のように各時刻に各編集を行い、
“17:40” : 「alternating ring とは…」を「構造情報に関する編集のアトミックな単位とは…」に編集した。
“18:00” : 「並行編集システムとは…」を「一貫性維持方式とは…」に編集した。
“18:20” : id=“2”を保持する節と、id=“4”を保持する節の入れ替え編集を行った。
【0190】
一方、クライアントBが、以下のように各時刻に各編集を行ったものとする。
“18:40” : 「alternating ring とは…」を「アトムとは…」に編集した。
“19:00” : 「XTグラフとは…」を「構造化文書の構造情報を表現するグラフとは…」に編集した。
“19:20” : id=“5”を保持する節と、id=“6”を保持する段落の入れ替え編集を行った。
【0191】
なお、図27に、編集から得られる、構造化文書の構造情報を表現するXTグラフ、構造化文書の構造情報に関する編集全体を表現する編集グラフ、構造情報に関する編集のアトミックな単位すなわちオルターネイティング・リングを示す。図27において、(a)は、図21の編集前の構造化文書のXTグラフである。また、(b)は、図23のクライアントA(ユーザ1)による編集後の構造化文書のXTグラフであり、(c)は、(a)と(c)のXTグラフから得られた編集グラフであり、(d)は、(c)の編集グラフから得られた非自明なオルターネイティング・リングである。一方、(e)は、図24のクライアントB(ユーザ2)による編集後の構造化文書のXTグラフであり、(f)は、(a)と(e)のXTグラフから得られた編集グラフであり、(g)は、(f)の編集グラフから得られた非自明なオルターネイティング・リングである。
【0192】
ここで、“19:30”にクライアントAの編集結果が、サーバに対して送信されたものとする。すると、構造化文書は図23に示した通りになり、エレメント値の管理テーブルは図24に示した通りになる(エレメント名の管理テーブルは、変化しない)。この場合、編集は、すべてサーバに反映される。
【0193】
次いで、“19:40”にクライアントBの編集結果を、サーバに対して送信されたものとする。すると、構造化文書は図25に示した通りにない、エレメント値の管理テーブルは図26に示した通りになる(エレメント名の管理テーブルは、変化しない)。この場合、クライアントBが“18:40”に行った編集は、クライアントAにより“17:40”に行われた編集との間でコンフリクトが発生しているのでサーバには反映されないが、それ以外の編集は、すべてサーバに反映される。
【0194】
以下では、構造化文書の構造情報を表現するXTグラフの拡張した実施形態について説明する。
【0195】
これまで、構造化文書の構造情報に関する編集例をいくつか説明したが、それらの例においては、構造化文書のルートエレメントの構造情報は、変更されていないものであった。構造化文書のルートエレメントは親エレメントを持たないため、ルートエレメントの構造情報を変更する場合には、これまで説明してきた構造化文書の構造情報を表現するXTグラフを拡張し、構造化文書のルートエレメントが仮想的に親エレメントを持つとみなすことによって、これまで説明してきた構造化文書の一貫性維持方式を適用することが可能である。
【0196】
図2の構造化文書のXTグラフに仮想ルート頂点を追加する拡張を行った結果を図28に示す。図28において、頂点0が仮想ルートである。
【0197】
また、これまで説明した例においては、実際に行っている構造化文書の構造情報に関する編集は、エレメントの移動のみであった。構造化文書の構造情報に関する編集の主なものには、作成、削除、移動の3つがあるが、構造化文書のXTグラフの拡張を行うことで、作成、削除は、移動に帰着することが可能である。
【0198】
ここで、具体例を用いて説明する。
【0199】
図29(a)に示した構造化文書のXTグラフにおいて、頂点4を作成し、頂点3を削除する編集を行って図29(b)に示した構造化文書のXTグラフが得られたとする。
【0200】
このとき、編集前後の構造化文書のXTグラフに対して以下に説明する拡張を行えばよい(図29(c),(d)参照)。
【0201】
第1に、構造化文書のすべてのエレメントに1対1に対応する仮想頂点1’,2’,3’,4’を、編集前後の構造化文書のXTグラフの仮想ルート頂点0の子頂点として追加する。
【0202】
第2に、構造化文書の編集によって作成された頂点4を、編集前の構造化文書のXTグラフの仮想頂点4’の子頂点として追加する。
【0203】
第3に、構造化文書の編集によって削除された頂点3を、編集後の構造化文書のXTグラフの仮想頂点3’の子頂点として追加する。
【0204】
構造化文書の構造情報を表現するXTグラフに対して以上の拡張を行うことにより、作成、削除は、移動に帰着することが可能であることは、明らかである。
【0205】
なお、以上の各機能は、ソフトウェアとして実現可能である。
また、本実施形態は、コンピュータに所定の手段を実行させるための(あるいはコンピュータを所定の手段として機能させるための、あるいはコンピュータに所定の機能を実現させるための)プログラムとして実施することもでき、該プログラムを記録したコンピュータ読取り可能な記録媒体として実施することもできる。
【0206】
なお、この発明の実施の形態で例示した構成は一例であって、それ以外の構成を排除する趣旨のものではなく、例示した構成の一部を他のもので置き換えたり、例示した構成の一部を省いたり、例示した構成に別の機能あるいは要素を付加したり、それらを組み合わせたりすることなどによって得られる別の構成も可能である。また、例示した構成と論理的に等価な別の構成、例示した構成と論理的に等価な部分を含む別の構成、例示した構成の要部と論理的に等価な別の構成なども可能である。また、例示した構成と同一もしくは類似の目的を達成する別の構成、例示した構成と同一もしくは類似の効果を奏する別の構成なども可能である。
また、この発明の実施の形態で例示した各種構成部分についての各種バリエーションは、適宜組み合わせて実施することが可能である。
また、この発明の実施の形態は、個別装置としての発明、関連を持つ2以上の装置についての発明、システム全体としての発明、個別装置内部の構成部分についての発明、またはそれらに対応する方法の発明等、種々の観点、段階、概念またはカテゴリに係る発明を包含・内在するものである。
従って、この発明の実施の形態に開示した内容からは、例示した構成に限定されることなく発明を抽出することができるものである。
【0207】
本発明は、上述した実施の形態に限定されるものではなく、その技術的範囲において種々変形して実施することができる。
【0208】
【発明の効果】
本発明によれば、サーバ上に格納されている構造化文書を、複数のクライアント上で並行して編集する場合に、ユーザの編集意図をより豊富に柔軟に取り込むことが可能になる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係る構造化文書の一貫性維持システムの構成例を示す図
【図2】構造化文書の構造化を表現するグラフについて説明するための図
【図3】構造化文書の構造情報に関する編集全体を表現するグラフ(編集グラフ)について説明するための図
【図4】ただ1つの辺のスイッチ(辺の色の交換)について説明するための図
【図5】構造情報に関する編集のアトミックな単位(オルターネイティング・リング)について説明するための図
【図6】複数の親頂点を持つ場合について説明するための図
【図7】複数の親頂点を持つ場合の解決法について説明するための図
【図8】親頂点を持たない場合について説明するための図
【図9】親頂点を持たない場合の解決法について説明するための図
【図10】親頂点を持たない場合の解決法について説明するための図
【図11】祖先・子孫頂点が自分自身になる場合について説明するための図
【図12】祖先・子孫頂点が自分自身になる場合の解決法について説明するための図
【図13】サーバ側で管理される文字情報に関する管理テーブルの構成例を示す図
【図14】クライアント側で管理される文字情報に関する管理テーブルの構成例を示す図
【図15】エレメント値の編集が一貫性を維持しているか否かを判定する手順の一例を示すフローチャート
【図16】エレメント値の編集が一貫性を維持しているか否かを判定する手順の一例を示すフローチャート
【図17】サーバ側で管理される構造情報に関する管理テーブルの構成例を示す図
【図18】クライアント側で管理される構造情報に関する管理テーブルの構成例を示す図
【図19】辺の編集が一貫性を維持しているか否かを判定する手順の一例を示すフローチャート
【図20】辺の編集が一貫性を維持しているか否かを判定する手順の一例を示すフローチャート
【図21】構造化文書の具体例を示す図
【図22】管理テーブルの具体例を示す図
【図23】構造化文書の具体例を示す図
【図24】管理テーブルの具体例を示す図
【図25】構造化文書の具体例を示す図
【図26】管理テーブルの具体例を示す図
【図27】構造情報に関する編集の具体例を示す図
【図28】構造化文書の構造情報を表現するグラフへの仮想ルート頂点の追加について説明するための図
【図29】構造化文書の構造情報を表現するグラフへの仮想頂点の追加について説明するための図
【図30】文字情報と構造情報への分割について説明するための図
【図31】CVSを用いた構造化文書管理について説明するための図
【符号の説明】
1…クライアント
3…サーバ
11…表示・編集部
12,32…通信部
31…格納部
33…編集抽出部
34…編集分割部
35…構造情報編集表現部
36…構造情報編集分割部
37…構造情報編集併合部
38…構造情報編集一貫性判定部
39…文字情報編集一貫性判定部
Claims (14)
- サーバ装置上の構造化文書格納手段に格納されている、階層的に結合された構造を持つ複数のエレメントを含み且つ各エレメントには文字情報が付随する構造化文書を対象として、エレメント間の結合関係に係る構造を変更する編集及び又はエレメントに付随する文字情報を変更する編集を複数のクライアント装置上で並行して行うための構造化文書編集システムにおいて、
前記構造化文書格納手段に格納されている構造化文書に含まれる複数のエレメントの各々について、当該エレメントに係る文字情報に対して最後に行われた編集に関する情報を含む第1の管理情報を記憶する第1の記憶手段と、
前記構造化文書格納手段に格納されている構造化文書に含まれる複数のエレメントの各々について、当該エレメントの他のエレメントとの結合関係に係る構造に対して最後に行われた編集に関する情報を含む第2の管理情報を記憶する第2の記憶手段と、
前記複数のクライアント装置のうちの1つのクライアント装置上で行われた編集全体を、文字情報に関する第1の編集と構造に関する第2の編集とに分けて得るための取得手段と、
前記第1の編集について、前記第1の記憶手段に記憶されている第1の管理情報との比較に基づいて、前記構造化文書格納手段に格納されている構造化文書の一貫性維持に関する判定を行い、この判定結果に基づいて、該第1の編集を前記構造化文書格納手段に格納されている構造化文書へ反映させるとともに、前記第1の記憶手段に記憶されている第1の管理情報のうち該第1の編集に係る部分を更新するための第1の処理手段と、
前記第2の編集について、前記第2の記憶手段に記憶されている第2の管理情報との比較に基づいて、前記構造化文書格納手段に格納されている構造化文書の一貫性維持に関する判定を行い、この判定結果に基づいて、該第2の編集を前記構造化文書格納手段に格納されている構造化文書へ反映させるとともに、前記第2の記憶手段に記憶されている第2の管理情報のうち該第2の編集に係る部分を更新するための第2の処理手段とを備えたことを特徴とする構造化文書編集システム。 - 前記第1の処理手段は、前記第1の編集が前記一貫性維持を維持しているか否かを判定し、維持していると判定された場合には、該第1の編集を前記構造化文書に反映し、維持していないと判定された場合には、該第1の編集を破棄しまたは一貫性が崩れていることをコメントとして付加して該第1の編集を前記構造化文書に反映することを特徴とする請求項1に記載の構造化文書編集システム。
- 前記第2の処理手段は、前記第2の編集が前記一貫性維持を維持しているか否かを判定し、維持していると判定された場合には、該第2の編集を前記構造化文書に反映し、維持していないと判定された場合には、該第2の編集を破棄することを特徴とする請求項1に記載の構造化文書編集システム。
- 前記第1の処理手段及び前記第2の処理手段は、前記サーバ装置に組み込まれていることを特徴とする請求項1に記載の構造化文書編集システム。
- 前記取得手段は、前記サーバ装置又は前記クライアント装置のいずれか一方に組み込まれていることを特徴とする請求項1に記載の構造化文書編集システム。
- 前記第1の編集を、さらに、独立性及び極小性を有する単位に分割するための分割手段を更に備え、
前記第2の処理手段は、前記第1の編集が、さらに、前記独立性及び極小性を有する単位に分割された場合には、該独立性及び極小性を有する単位ごとに、前記判定並びに前記反映及び前記更新を行うことを特徴とする請求項1ないし5のいずれか1項に記載の構造化文書編集システム。 - 前記分割手段は、前記第1の編集を、一旦、複数のアトミックな単位に分割する手段と、該複数のアトミックな単位のうち、独立性及び極小性を有しないものを、独立性及び極小性を有するものになるように取り纏めて、独立性及び極小性を有する単位を作成する手段とを含むものであることを特徴とする請求項6に記載の構造化文書編集システム。
- 前記取得手段及び前記分割手段がいずれも前記クライアント装置に組み込まれているか、前記取得手段が前記クライアント装置に組み込まれており且つ前記分割手段が前記サーバ装置に組み込まれているか、又は前記取得手段及び前記分割手段がいずれも前記サーバ装置に組み込まれていることを特徴とする請求項6または7に記載の構造化文書編集システム。
- 前記第1の管理情報及び又は前記第2の管理情報は、前記最後に行われた編集に関する情報として、当該編集が最後に行われたクライアント装置を示すクライアント情報を含み、
前記第1の処理手段及び又は前記第2の処理手段は、前記判定にあたって、当該編集が行われた今回のクライアント装置が、前記クライアント情報により示されるクライアント装置と同一である場合と同一でない場合とで、相異なる判定基準を用いることを特徴とする請求項1ないし7のいずれか1項に記載の構造化文書編集システム。 - 前記第1の処理手段及び又は前記第2の処理手段は、前記判定にあたって、前記今回のクライアント装置が、前記クライアント情報により示されるクライアント装置と同一である場合には、より遅い時刻における編集を前記構造化文書格納手段に格納されている構造化文書に反映させる判定基準を用い、同一でない場合には、より早い時刻における編集を前記構造化文書格納手段に格納されている構造化文書に反映させる判定基準を用いることを特徴とする請求項9に記載の構造化文書編集システム。
- 前記エレメントに付随する文字情報は、エレメントのエレメント値及びエレメントのエレメント名であり、
前記第1の編集は、エレメントのエレメント値を変更する編集と、エレメントのエレメント名を変更する編集に分けられ、
前記第1の処理手段は、前記判定並びに前記反映及び前記更新を、エレメント値に関する編集と、エレメント名に関する編集とに分けて行うことを請求項1に記載の構造化文書編集システム。 - 前記構造化文書に含まれる複数のエレメントの各々には固有のエレメント識別子が割り当てられており、
編集前の構造化文書のエレメントと編集後の構造化文書のエレメントとの対応は、前記エレメント識別子に基づいて特定されることを特徴とする請求項1ないし11のいずれか1項に記載の構造化文書編集システム。 - サーバ装置上の構造化文書格納手段に格納されている、階層的に結合された構造を持つ複数のエレメントを含み且つ各エレメントには文字情報が付随する構造化文書を対象として、エレメント間の結合関係に係る構造を変更する編集及び又はエレメントに付随する文字情報を変更する編集を複数のクライアント装置上で並行して行うための構造化文書編集システムであって、取得手段、第1の処理手段及び第2の処理手段、並びに前記構造化文書格納手段に格納されている構造化文書に含まれる複数のエレメントの各々について、当該エレメントに係る文字情報に対して最後に行われた編集に関する情報を含む第1の管理情報を記憶する第1の記憶手段、及び前記構造化文書格納手段に格納されている構造化文 書に含まれる複数のエレメントの各々について、当該エレメントの他のエレメントとの結合関係に係る構造に対して最後に行われた編集に関する情報を含む第2の管理情報を記憶する第2の記憶手段を備えた構造化文書編集システムにおける構造化文書編集方法において、
前記取得手段により、前記複数のクライアント装置のうちの1つのクライアント装置上で行われた編集全体を、文字情報に関する第1の編集と構造に関する第2の編集とに分けて得るためのステップと、
前記第1の処理手段により、前記第1の編集について、前記第1の記憶手段に記憶されている第1の管理情報との比較に基づいて、前記構造化文書格納手段に格納されている構造化文書の一貫性維持に関する判定を行い、この判定結果に基づいて、該第1の編集を前記構造化文書格納手段に格納されている構造化文書へ反映させるとともに、前記第1の記憶手段に記憶されている第1の管理情報のうち該第1の編集に係る部分を更新するためのステップと、
前記第2の処理手段により、前記第2の編集について、前記第2の記憶手段に記憶されている第2の管理情報との比較に基づいて、前記構造化文書格納手段に格納されている構造化文書の一貫性維持に関する判定を行い、この判定結果に基づいて、該第2の編集を前記構造化文書格納手段に格納されている構造化文書へ反映させるとともに、前記第2の記憶手段に記憶されている第2の管理情報のうち該第2の編集に係る部分を更新するためのステップとを有することを特徴とする構造化文書編集方法。 - サーバ装置上の構造化文書格納手段に格納されている、階層的に結合された構造を持つ複数のエレメントを含み且つ各エレメントには文字情報が付随する構造化文書を対象として、エレメント間の結合関係に係る構造を変更する編集及び又はエレメントに付随する文字情報を変更する編集を複数のクライアント装置上で並行して行うための構造化文書編集システムであって、取得手段、第1の処理手段及び第2の処理手段、並びに前記構造化文書格納手段に格納されている構造化文書に含まれる複数のエレメントの各々について、当該エレメントに係る文字情報に対して最後に行われた編集に関する情報を含む第1の管理情報を記憶する第1の記憶手段、及び前記構造化文書格納手段に格納されている構造化文書に含まれる複数のエレメントの各々について、当該エレメントの他のエレメントとの結合関係に係る構造に対して最後に行われた編集に関する情報を含む第2の管理情報を記憶する第2の記憶手段を備えた構造化文書編集システムとしてコンピュータを機能させるためのプログラムにおいて、
前記プログラムは、
前記取得手段により、前記複数のクライアント装置のうちの1つのクライアント装置上で行われた編集全体を、文字情報に関する第1の編集と構造に関する第2の編集とに分けて得るためのステップと、
前記第1の処理手段により、前記第1の編集について、前記第1の記憶手段に記憶されている第1の管理情報との比較に基づいて、前記構造化文書格納手段に格納されている構造化文書の一貫性維持に関する判定を行い、この判定結果に基づいて、該第1の編集を前記構造化文書格納手段に格納されている構造化文書へ反映させるとともに、前記第1の記憶手段に記憶されている第1の管理情報のうち該第1の編集に係る部分を更新するためのステップと、
前記第2の処理手段により、前記第2の編集について、前記第2の記憶手段に記憶されている第2の管理情報との比較に基づいて、前記構造化文書格納手段に格納されている構造化文書の一貫性維持に関する判定を行い、この判定結果に基づいて、該第2の編集を前記構造化文書格納手段に格納されている構造化文書へ反映させるとともに、前記第2の記憶手段に記憶されている第2の管理情報のうち該第2の編集に係る部分を更新するためのステップとをコンピュータに実行させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002046899A JP3725084B2 (ja) | 2002-02-22 | 2002-02-22 | 構造化文書編集システム、構造化文書編集方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002046899A JP3725084B2 (ja) | 2002-02-22 | 2002-02-22 | 構造化文書編集システム、構造化文書編集方法及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003248679A JP2003248679A (ja) | 2003-09-05 |
JP3725084B2 true JP3725084B2 (ja) | 2005-12-07 |
Family
ID=28660146
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002046899A Expired - Lifetime JP3725084B2 (ja) | 2002-02-22 | 2002-02-22 | 構造化文書編集システム、構造化文書編集方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3725084B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5169505B2 (ja) * | 2008-06-05 | 2013-03-27 | 富士ゼロックス株式会社 | 文書合成システム及びプログラム |
JP7044967B2 (ja) * | 2017-07-21 | 2022-03-31 | 富士通株式会社 | 格納制御プログラム、格納制御装置及び格納制御方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03240866A (ja) * | 1990-02-19 | 1991-10-28 | Nippon Telegr & Teleph Corp <Ntt> | 構造化文書処理装置 |
JP3831085B2 (ja) * | 1996-09-11 | 2006-10-11 | 富士通株式会社 | 文書管理装置,サーバ装置,クライアント装置およびそれらのプログラム記憶媒体 |
JP4141556B2 (ja) * | 1998-12-18 | 2008-08-27 | 株式会社日立製作所 | 構造化文書管理方法及びその実施装置並びにその処理プログラムを記録した媒体 |
JP3692054B2 (ja) * | 2001-05-21 | 2005-09-07 | 株式会社東芝 | 文書構造変換方法および文書構造変換装置およびプログラム |
-
2002
- 2002-02-22 JP JP2002046899A patent/JP3725084B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2003248679A (ja) | 2003-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4141556B2 (ja) | 構造化文書管理方法及びその実施装置並びにその処理プログラムを記録した媒体 | |
KR100833538B1 (ko) | Xml 문서의 검증 및 스키마 위반을 보고하기 위한시스템 및 방법 | |
US9152631B2 (en) | Document management system, method for controlling the same, and storage medium | |
JP4886693B2 (ja) | 情報処理方法、情報処理装置および情報処理プログラム | |
JP4796185B2 (ja) | 業務フロー図生成プログラム、業務フロー図生成装置および業務フロー図生成方法 | |
KR20020025762A (ko) | 구조편집장치, 영상구조편집장치, 오브젝트의내용구조관리방법, 오브젝트의 내용구조표시방법,컨텐츠관리방법 및 기록매체 | |
CN112652371A (zh) | 一种用于智慧医疗领域的护理文书设计器及生成装置 | |
JP2009205190A (ja) | ソフトウェア自動構成装置 | |
JP2007048009A (ja) | 作業支援システム、そのデータベースサーバ、作成管理装置、プログラム | |
JP5412995B2 (ja) | プログラムモデル検査におけるデータベース制御装置、データベース制御方法、データベース制御プログラム | |
JP2005141663A (ja) | イベントログ解析支援装置、イベントログ表示方法 | |
JP2011159118A (ja) | 情報処理装置、情報処理装置の制御方法、プログラム及び記憶媒体 | |
JP3725084B2 (ja) | 構造化文書編集システム、構造化文書編集方法及びプログラム | |
JP2012173780A (ja) | ファイルの構成管理システム | |
WO2012083613A1 (zh) | 一种用户自定义的性能指标多版本升级的方法及装置 | |
US7702769B2 (en) | Data transfer method, apparatus, and recording medium for use in hierarchical system | |
JPH05225185A (ja) | 文書処理装置 | |
JP2006031608A (ja) | 計算機、ストレージシステム、計算機が行うファイル管理方法、およびプログラム | |
Appeldorn et al. | Delta-driven collaborative modeling. | |
US20050165787A1 (en) | Management computer and method of managing data storage apparatus | |
JPWO2017043664A1 (ja) | 情報管理装置並びにファイル管理方法 | |
JP6638053B1 (ja) | ドキュメント作成支援システム | |
JP2001134424A (ja) | システムパラメタ作成方法、システムパラメタ作成装置、システムパラメタ作成プログラムを記録したコンピュータ読み取り可能な記録媒体及びシステムパラメタ作成データを格納したコンピュータ読み取り可能な記録媒体 | |
JP2006065364A (ja) | 情報管理方法、情報管理プログラム、及び情報管理装置 | |
JP2019211827A (ja) | 支援装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040414 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040420 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040621 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050913 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050920 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 3725084 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080930 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090930 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090930 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100930 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110930 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110930 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120930 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120930 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130930 Year of fee payment: 8 |
|
EXPY | Cancellation because of completion of term |