JP5535420B2 - Xmlドキュメントの効率的管理の方法及び装置 - Google Patents

Xmlドキュメントの効率的管理の方法及び装置 Download PDF

Info

Publication number
JP5535420B2
JP5535420B2 JP2002502637A JP2002502637A JP5535420B2 JP 5535420 B2 JP5535420 B2 JP 5535420B2 JP 2002502637 A JP2002502637 A JP 2002502637A JP 2002502637 A JP2002502637 A JP 2002502637A JP 5535420 B2 JP5535420 B2 JP 5535420B2
Authority
JP
Japan
Prior art keywords
virtual objects
xml
document
shared memory
memory system
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 - Fee Related
Application number
JP2002502637A
Other languages
English (en)
Other versions
JP2004515836A5 (ja
JP2004515836A (ja
Inventor
レイモンド・イー・オズィー
ケネス・ジー・ムーア
ランサム・エル・リチャードソン
エドワード・ジェイ・フィッシャー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2004515836A publication Critical patent/JP2004515836A/ja
Publication of JP2004515836A5 publication Critical patent/JP2004515836A5/ja
Application granted granted Critical
Publication of JP5535420B2 publication Critical patent/JP5535420B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/986Document structures and storage, e.g. HTML extensions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/123Storage facilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/221Parsing markup language streams

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Databases & Information Systems (AREA)
  • Multimedia (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)

Description

本発明は情報の格納と取り出しに関し、更に詳細には、拡張マークアップ言語(XML)で符号化された情報の格納と取り出しに関する。
最近のコンピュータ・システムは大量のデータの保存、取り出し、管理が可能である。しかし、コンピュータが数値データの処理で高速かつ効率的である一方、テキストデータの操作ではあまり効率的ではなく、人間に読み取り可能なテキストデータの解釈にあっては特に非効率である。一般に、今日のコンピュータは、人間に読み取り可能なテキスト・ドキュメントを含めた情報断片の理解と認識に必要とされる、微妙なコンテクスト情報を理解することができない。その結果、所定のテキスト順序又は断片、例えば画一的な(undifferentiated)テキスト・ドキュメントの単語などを検出できるものの、その情報を定義する単語又は単語群が特定の意味を有する特定の情報断片を、簡単に特定することはできない。例えば、人間の読者は”The attorney will read the text of Mark’s will”という文の中の”will”という単語の違いを識別するのに困難はないが、コンピュータにはこれらの二つの使用方法の識別や、こうした第2の使用方法だけの特定には大きな困難がある。
従って、ドキュメントを適切にコーディングすることにより、コンピュータがテキスト・ドキュメントを解釈するのを支援する目的でスキーマが開発された。これらのスキーマの多くは、ドキュメントに「マークアップ・タグ」と呼ばれる情報を付与することでテキスト・ドキュメントの選択した部分を識別するもので、これによりコンピュータが確実に情報を識別できる方法で、異なったドキュメント部分を識別する。このようなスキーマは一般に「マークアップ」言語と呼ばれる。
こうした言語のうちの一つが、SGML(汎用マークアップ言語規約)と呼ばれるもので、情報表現についての規格として国際的に合意が得られている。この言語規格は1970年代初頭に行われた、汎用コーディング及びマークアップ言語についての開発作業から発展したものである。様々な研究系統が国際標準化機構(ISO)の分科会であるテキスト記述及び処理言語に関する分科会に統合された。この分科会はSGML規格を1986年に作成した。
SGMLそれ自体はマークアップ・タグを定義しておらず、特定の種類のドキュメントに対してマークアップ・テンプレートを提供していない点でマークアップ言語ではない。その代わり、SGMLは汎用記述マークアップ・スキーマを記述し開発する方法を記載している。これらのスキーマが汎用化されているのは、マークアップが特定アプリケーションを指向していないためで、記述的なのはマークアップがテキストでどう表示されるべきかではなく、何を表現するかを記述しているためである。SGMLは規格に準拠して書かれたマークアップ・スキーマにより、ユーザがドキュメント用に自分自身のフォーマットを定義できること、また大量の複雑なドキュメントを扱えること、更に大量の情報リポジトリを管理できることから、非常に柔軟性がある。
最近、他の開発が一般的状況を変化させた。インターネットの類を見ない成長と、特にワールドワイドウェブは、簡単かつ安価に電子化文書を国際的な閲覧者に配布するための能力を、著作者又はコンテンツ・プロバイダに対して提供することにより推進された。SGMLは、ウェブ上のアプリケーションには必要のないオプションの機能を多く含み、コスト対利益比では現在のウェブ・ブラウザ・ベンダーにとって魅力がないことが証明された。結果的に、これは一般に使用されていない。その代わりとして、ウェブ上の大半のドキュメントはハイパーテキスト・マークアップ言語、又はHTMLと呼ばれるマークアップ言語で保存また送信されている。
HTMLは、SGMLをもとにした単純なマークアップ言語で、ハイパーテキスト、マルチメディア、及びウェブ上で一般的に送信される、小さく十分に単純なドキュメントの表示に好適である。定められた短いマークアップ・タグのセットを使用してドキュメント部分を記述するようになっている。これらのタグはドキュメントの構成を単純化し、アプリケーションの構築を大幅に簡略化する。しかし、タグが定められている為、HTMLは拡張性がなく非常に限られた構造と認証能力しか備えていない。電子化ウェブ・ドキュメントが肥大し更に複雑になるにつれ、HTMLが大規模商業出版に必要とされる能力を持っていないことがますます明らかになった。
このような大規模商業出版の要求に対処するためと、新しく勃興してきた分散ドキュメント処理技術を可能にするため、ワールドワイドウェブ・コンソーシアムと呼ばれる業界グループが、HTMLによって提供される能力を越えた能力を必要とするような用途向けに、拡張マークアップ言語(XML)と呼ばれる他のマークアップ言語を開発した。HTMLと同様に、XMLはSGMLの簡略版サブセットで、ウェブ・アプリケーション用に特に設計されており、学習、使用、実装が完全版SGMLより簡単である。HTMLとは異なり、XMLはSGMLの利点である拡張性、構造、認証を保持しているが、XMLではドキュメントの何らかのコンポーネントへのアクセスがインターネット上で現在可能ではない場合に、デフォルトが利用できることを保証するSGML構成の使用を制限している。XMLはまたインターネット統一資源識別子(URL)を使ってどのようにXMLドキュメントのコンポーネント部分を識別するかも定義している。
XMLドキュメントは、一連のエンティティ(実体)又はオブジェクトで構成される。各エンティティは1つ以上の論理要素を含み、各要素はこれを処理すべき方法を記述した何らかの属性又はプロパティを持つことができる。XMLはXMLを構成するエンティティ(実体)、要素、属性の間の関係を記述する正式なシンタックス(構文)を提供する。このシンタックスはコンピュータに、各ドキュメントのコンポーネント部分をどのように認識すべきかを伝える。
XMLでは一対になったマークアップ・タグを使ってドキュメント・コンポーネントを識別する。詳しくは、各論理要素のはじまりと終わりが要素の前の開始タグと要素の後の終了タグによって明確に識別される。例えば、タグ<to>と</to>は次のようにドキュメントの「受け手(レシピエント)」要素を識別するために使われる:
ドキュメントテキスト…<to>レシピエント…</to>ドキュメントテキスト
マークアップ・タグの様式と構造はユーザが定義できるが、ユーザ間の相互運用性を提供する目的で、それを使用する企業やそれと同様の団体が定義することが多い。タグの所定のセットで運用するためには、ユーザはどのようにマークアップ・タグが通常のテキストから分離されるか、また各種要素間での関連性を知る必要がある。例えば、XMLシステムで、要素とその属性はカギ括弧(<...>)の対の間に入力され、エンティティ(実体)の参照はアンパサンド(&)で始まりセミコロン(;)で終わる(&...;)。XMLタグのセットはドキュメントの論理構造に基づいているので、これらは読み易く理解し易い。
他のドキュメントは他のパート又はコンポーネントを持っていることから、全てのドキュメントの全ての要素についてタグをあらかじめ定義しておくのは実用的ではない。その代わり、ドキュメントを幾つかの要素を持った「タイプ」に分類することができる。ドキュメント・タイプ定義(DTD)は、あるドキュメント・タイプでどの要素が予想されるかを示し、ドキュメント内に見られる各要素が許容されないか、許容され要求されるか、又は許容されるが要求されないかのいずれかを表わす。各ドキュメント要素の役割をDTDで定義することにより、各要素がドキュメント内の有効な場所に現われることをチェックすることが可能である。例えば、XMLのDTDは第2レベルの見出しが存在しなければ第3レベルの見出しが入力されないことをチェックできるようにする。このような階層型チェックはHTMLでは行なうことができない。ある文書のDTDはドキュメント・ヘッダに挿入されるのが典型的で各要素は識別子例えば<!ELEMENT>でマークされる。
発明が解決しようとする課題
しかし、SGMLとは異なり、XMLはDTDの存在を必要としない。インターネット上でDTDの全部あるいは一部にアクセスできないか、又はドキュメント作者がDTDの作成に失敗したためのいずれかによって、あるドキュメントにDTDが利用できない場合、XMLシステムはドキュメント内で宣言されていない要素についてデフォルトの定義を割り当てることが可能である。
XMLは、ほとんどあらゆる論理テキスト構造、例えば手紙、レポート、メモ、データベース又は辞書などを記述するのに十分な柔軟性のあるコーディング・スキーマを提供する。しかし、XMLはどのようにXML準拠のデータ構造が保存され、表示されるべきかを規定せず、ましてやどのように効率的に保存及び表示されるべきかも規定しない。そのため、XML準拠のドキュメントを効率的に操作し保存することができるストレージ・メカニズムの必要性が存在する。
課題を解決するための手段
本発明の一つの実施態様によれば、インメモリ・ストレージ・マネージャはメモリ内のオブジェクト集合としてXML準拠ドキュメントを表現する。オブジェクトの集合であるため、ストレージ・マネージャは、ドキュメントあるいはドキュメントの一部を一貫したインタフェースで操作したり、従来のXMLドキュメントでは利用不可能な特徴、例えばテキスト以外のタイプの要素属性や、テキスト情報の代わりにバイナリを含むドキュメントなどの特徴を提供できる。更にストレージ・マネージャでは、XML準拠ドキュメントにスキーマ・ドキュメント(これもXMLドキュメントである)を関連させ、ドキュメント要素及び属性の構成をここで定義する。ストレージ・マネージャは、従来のストレージ・サービスを運用してXML準拠ドキュメントを存続させることができる。ストレージ・コンテナはストレージ・マネージャによって高速で検索できるドキュメント断片を内包する。
他の実施態様によれば、ストレージ・マネージャは一貫した方法でドキュメント・コンテンツの要素及び属性にアクセスして操作できるようにする定義済みのメソッドも持っている。例えば、スキーマ・データはドキュメント・コンテンツにアクセスして操作するのに使われるのと同じメソッドでアクセスされ操作出来る。
更に他の実施態様では、ドキュメントに関連付けられたスキーマ・データはドキュメント要素と各要素に関連付けられるべきプログラム・コードの間のマッピングを含むことができる。ストレージ・マネージャは、更に要素タグからコードを取り出すためのメソッドも持っている。取り出したコードは関連する要素からの属性と内容をつかって起動でき、要素は従来のオブジェクトと同様に振る舞う。
全ての実施態様で、ストレージ・マネージャは多数のコンテクストで多数のプロセスによりダイナミックで、リアルタイムのデータアクセスをクライアントに提供する。同じドキュメントにアクセスする多数のプロセス間の同期は、イベント駆動型キュー及びロックで調整される。ドキュメントを表現するのに使用されるオブジェクトは各プロセスでローカルに見られる共通コードから構築される。更に、オブジェクト内のデータも各プロセスにローカルなメモリ内に格納される。ローカル・メモリは他のプロセスの同じ要素のデータコピーを連続的に等価化する分散メモリシステムにより同期される。
更に他の実施態様では、クライアントが指定した集合は別個の集合マネージャにより管理される。集合マネージャはタブ・フォームでXMLデータ構造を表現する「ワッフル」と呼ばれるデータ構造を維持する。ユーザ・コマンドによって駆動されるレコード・セット・エンジンはあるコレクションの更新のセットを集合マネージャへ伝搬する。これらの更新に基づいて、集合マネージャはインデックス構造を更新し、通知システム経由でワッフル・ユーザに通知できる。ワッフル・ユーザもカーソルを用いて集合内を移動できる。
図1は、典型的なクライアント・コンピュータ100、例えばIBM社製THINKPAD600(R)などのシステム・アーキテクチャを示したもので、この上に本開示のドキュメント管理システムを実装できる。図1の典型的なコンピュータ・システムは説明の目的だけで議論され、本発明の制限と見なされるべきものではない。以下の説明では特定のコンピュータ・システムを説明する際に共通に使用される用語を参照するが、説明する概念は図1に示したアーキテクチャとは異なるアーキテクチャを持ったシステムを含め、他のコンピュータ・システム又コンピュータを内蔵した装置例えばゲーム機やケーブルテレビのセットトップ・ボックスなど、従来はコンピュータと見なされなかったものにも等しく適用される。
クライアント・コンピュータ100は、従来のマイクロプロセッサを含む中央演算処理装置(CPU)105、一時的な情報記憶用のランダム・アクセス・メモリ(RAM)110、永久的な情報記憶用のリード・オンリー・メモリ(ROM)115を含む。メモリ・コントローラ120は、システムRAM110を制御するために提供される。バス・コントローラ125は、バス130を制御するために提供されており、割り込みコントローラ135は、他のシステム・コンポーネントからの様々な割り込み信号を受信して処理するために使用される。
大容量ストレージは、ディスケット142、CD−ROM147又はハードディスク装置152によって提供できる。データやソフトウェアは、リムーバブル・メディア、例えばディスケット142やCD−ROM147を経由してクライアント・コンピュータ100と交換できる。ディスケット142は、ディスケットドライブ装置141に挿入することができ、ディスケットドライブ装置141は、コントローラ140によってバス130へ接続されている。同様に、CD−ROM147は、CD−ROMドライブ装置146に挿入することができ、CD−ROMドライブ装置146は、コントローラ145によってバス130へ接続されている。最後に、ハードディスク152は、固定ディスクドライブ装置151の一部であり、これはコントローラ150によってバス130へ接続されている。
クライアント・コンピュータ100へのユーザ入力は、多数のデバイスによって提供され得る。例えば、キーボード156とマウス157は、キーボード及びマウス・コントローラ155によってバス130へ接続される。オーディオ・トランスデューサ196は、マイクロホン及びスピーカの両者として機能することができるもので、オーディオ・コントローラ197を介してバス130へ接続されている。他の入力デバイス、例えばペン及び/又はタブレットや、音声入力用マイクロホンなどを適当なコントローラとバス130経由でクライアント・コンピュータ100へ接続することができるのは、当業者には明らかであろう。DMAコントローラ160はシステムRAM110へのダイレクト・メモリアクセスを実行するために提供される。視覚表示は、ビデオコントローラ165によって生成され、これがビデオ・ディスプレイ170を制御する。コンピュータ・システム100はまた、クライアント・コンピュータ100がバス191経由でネットワーク195へ相互接続できるようにするネットワーク・アダプタ190も含む。ネットワーク195は、ローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)、又はインターネットでよく、多数のネットワーク・デバイスを相互接続する汎用通信回線を使用出来る。クライアントコンピュータ・システム100は、一般にWINDOWS NT(登録商標)オペレーティングシステム(ワシントン州レドモンドのマイクロソフト社から入手可能)などのオペレーティング・システム・ソフトウェアによって制御調節される。コンピュータ・システム制御機能のなかでも、オペレーティング・システムはシステム資源の割り当てを制御し、プロセスのスケジュール、メモリ管理、ネットワーク及びI/Oサービスなどのタスクを実行する。
図2に更に詳細に示してあるように、ストレージ・マネージャ206は、RAM200(図1のRAM110と同等)に常駐し、XMLドキュメント228及び230を使用するアプリケーション・プログラム202と、ドキュメント228及び230が格納される永続的ストレージ208の間のインタフェースを提供する。アプリケーション・プログラム202は、オブジェクトの格納に使用される永続的ストレージ208の種類とは無関係に、一貫したアプリケーション・プログラミング・インタフェース204を用いて、ストレージ・マネージャ206と相互作用出来る。内部的には、ストレージ・マネージャ206は各ドキュメント210、218をオブジェクト212〜216と220〜224の階層列として、各々表現する。ストレージ・マネージャ206は、ドキュメント210及び218を様々なファイルシステム、例えばディレクトリ方式ファイル・サービス、オブジェクト・ストア、リレーショナル・ファイル・システムなどを用いて矢印226で模式的に示してあるようにストレージ208に格納できる。
本発明のシステムは、従来のXMLファイルで機能する。完全なXMLファイルは、通常3つのコンポーネントから構成されており、これらは特定のマークアップ・タグにより定義される。最初の二つのコンポーネントはオプションで、最後のコンポーネントは必須であり、コンポーネントは以下のように定義される。
1.使用するXMLバージョン、エンコードされた方法、他のファイルを参照しているかどうかを識別するXML処理ステートメント。そのようなステートメントは次のようなフォームになる:
<?xml version ="1.0" encoding="UTF-8" standalone="yes"?>
2.ファイル内に存在する要素とその関連性を定義するドキュメント・タイプ定義(DTD)。DTDは内部サブセットのファイル内のマークアップ・タグの形式と内容を記述する正式なマークアップ・タグ宣言(大括弧の間)、又は関連マークアップ宣言(外部サブセット)を含むファイルを参照するかのどちらかである。この宣言は次のような形になる:
<!DOCTYPE Appl SYSTEM "app. dat">
3.ルート要素で構成されるタグ付きドキュメントのインスタンス、これは要素タイプ名がドキュメントタイプ宣言のドキュメントタイプ名と一致しなければならない。他の全てのマークアップ要素はルート要素に入れ子にされる。
3つすべてのコンポーネントが存在していて、ドキュメント・インスタンスがDTDに定義されたドキュメント・モデルに適合していれば、ドキュメントは「有効である」とされる。最後のコンポーネントだけが存在していて、正式なドキュメント・モデルが存在しないが、各要素が親要素内に正しく入れ子になり、かつ各属性が属性名とそれに続く値指示子(=)と引用符つき文字列で指定されていれば、ドキュメント・インスタンスは「十分整形されている」と言われる。本発明のシステムは良く整形されたXMLドキュメントで動作しこれを生成できる。
ストレージ・マネージャ206内で、XMLドキュメントは、名称「グループ・ドキュメント」と集合的に呼ばれるデータ・ストレージ・パーティションにより表現されて、従来のXMLドキュメントとは表示が区別される。各グループ・ドキュメントはそのドキュメントを構成する各種要素の間の関連性を正しく識別するDTDによって記述できる。これらのDTDは標準XMLフォーマットに従う。更に、各グループ・ドキュメントは定義又はスキーマがあり、これはドキュメントの本体で要素と属性のパターンを記述する。XMLバージョン1.0はスキーマをサポートしていない。そのため、グループ・スキーマドキュメントをXMLデータ・ドキュメントに関連付けるには、スキーマへのURI参照を含む特別なXML処理命令をデータ・ドキュメントに含める。この処理命令は次の形である:
<?schema URI="groovedocument:///GrooveXSS/$PersistRoot/sample.xml"?>
幾つかの要素はコンテンツがないか必要とせず、どこで何らかのプロセスが行なわれることを示すプレースホルダーとして機能する。タグの特別なフォームをXMLで使用して何のコンテンツも持っていない、従って終了タグのない空の要素を示す。例えば、<ThumbnailBox>要素はテキスト行に埋め込まれた画像のプレースホルダーとして機能する空の要素で次のような宣言をDTDに行なう:
<!ELEMENT ThumbnailBox EMPTY>
要素が可変フォームを持つことができる場合、又は相互にリンクされる必要がある場合、適当な属性を与えてこれに適用されるべきプロパティを指定することができる。これらの属性はリストで指定する。例えば、<ThumbnailBox>要素がLocationとSize属性を含むことがあると決定されるとする。このような属性で適当と思われる属性リスト宣言は次のようになる:
<!ATTLIST ThumbnailBox
Location ENTITY #REQUIRED
Size CDATA #IMPLIED
>
これは<ThumbnailBox>要素が要求されたLocationエンティティ(実体)を含みSize属性を含むことがあることをコンピュータに伝える。キーワード#IMPLIEDは<ThumbnailBox>要素の幾つかのインスタンスで属性を除くことが許容されることを表わす。
XMLは、幾つかのコンパイラで使用される#DEFINEステートメントと類似のカスタム定義ステートメントも許容している。一般に使用される定義は「エンティティ(実体)」としてDTD内部で宣言できる。典型的なエンティティ(実体)定義は次の形をとれる:
<!ENTITY BinDoc3487 SYSTEM ”./3487.gif” NDATA>
これは”BinDoc3487”バイナリ・ドキュメントのファイルの場所を定義する。このような宣言をDTDで一度行なっておけば、ユーザは完全な値のかわりに参照を利用できる。例えば、先に説明した<ThumbnailBox>要素は
<ThumbnailBox Location = BinDoc3487 Size="Autosize"/>
として指定できる。この技術を使う利点は、後で定義された値を変更しなければならない場合に、エンティティ(実体)参照は自動的に現在の宣言の内容を使用するのでDTDのエンティティ(実体)宣言だけを更新すればよい点である。
ストレージ・マネージャ内部で、各ドキュメント部分は統一資源識別子(URI)で識別され、これはRFC2396に指定きれているような標準的フォーマットに準拠する。URIは絶対でも相対でも良いが、相対URIは基礎となる絶対URIのコンテキスト内でのみ使用する必要がある。ドキュメントが永続的ストレージに保存された場合、これの部分は使用している特定のファイルシステムによって割り当てられ、管理される他のSTORAGEURIにより識別できる。
本発明の原理によれば、ストレージ・マネージャでは、各ドキュメント部分の内部で、内部メモリがオブジェクトの集合により表現される。例えば、XMLドキュメント内部の他の要素はストレージ・マネージャ内の要素オブジェクトとして表現される。これにより図3に示してあるような構造が得られる。図3において、例示のXMLドキュメント300はストレージ・マネージャ302内のオブジェクト集合として表現されている。更に詳しくは、XMLドキュメント300は、前述したようなXMLバージョン、エンコード方法、及びファイル参照を表わす、従来のXML処理ステートメント304を含む。XMLドキュメント300は、XMLドキュメント300と関連付けられたストレージ・マネージャ302内のスキーマ・ドキュメント320を識別する、XML処理ステートメント306も含む。図示したXMLドキュメントは階層化要素のセットも含み、これには何らかのテキスト318を含むElementA308を含み、ElementAは関連付けられたテキストがないElementB310を含む。EIementBは更にElementC312を含み、これには更に二つの要素が含まれている。つまりElementCは属性(値”foo”の入ったID)を持っているElementD314とElementE316である。
ストレージ・マネージャ302では、要素群、ElementA〜ElementEが階層内に構成された要素オブジェクトとして表現される。更に詳しくは、ElementAはElementAオブジェクト322により表現される。各要素オブジェクトは、対応するXML要素に含まれるテキストと属性とを含む。そのため、要素オブジェクト322はテキスト318を含む。同様に、ElementB310は要素オブジェクト324で表現され、ElementC、ElementD、ElementEはそれぞれオブジェクト326、328、330で表現される。要素オブジェクト328は、要素ElementDを表現し、また対応する要素に含まれる属性IDも含む。各要素オブジェクトは、データベース・ポインタ(オブジェクト間の矢印で示す)により子要素オブジェクトを参照し、階層内に要素オブジェクトを構成する。また属性インデックス、例えば要素オブジェクト328内のID属性を表わすインデックス332などもある。
オブジェクト集合を用いることによるXMLドキュメント300の表現により、ストレージ・マネージャ302は、以下で詳細に説明するような一貫したインタフェースでXMLドキュメント300の内部表現を操作できる。ストレージ・マネージャ302も従来のXMLドキュメントでは利用できなかった特徴、例えばこれも詳細に以下で説明する集合マネージャ経由で利用できる集合サービスなどを提供する。
すでに説明したように、XMLデータを含むグループ・ドキュメントはドキュメント本体の要素と属性のパターンを記述した定義、又はスキーマ・ドキュメントを持っている。スキーマ・ドキュメントは、URIで識別される独立したXMLドキュメントに保存される。スキーマ・ドキュメントは標準XML DTD定義を持ち、これはメタ・スキーマと呼ばれ、次に示すようなものである:
<!-- ドキュメント要素はスキーマのルート要素である -->
<!ELEMENT Document (Registry*, AttrGroup*, ElementDecl*)>
<!ATTLIST Document
URL CDATA #REQUIRED
>
<!ELEMENT Registry TagToProgID *>
<!ELEMENT TagToProgID EMPTY>
<!ATTLIST TagToProgID
Tag CDATA #REQUIRED
ProgID CDATA #REQUIRED
>
<!ELEMENT AttrGroup AttrDef *>
<!ELEMENT AttrDef EMPTY>
<!ATTLIST AttrDef
Name CDATA #REQUIRED
Type CDATA #REQUIRED
Index CDATA #IMPLIED
DefaultValue CDATA #IMPLIED
>
<!ELEMENT ElementDecl (ElementDecl*|AttrGroup|ElementRef*)>
<!ATTLIST ElementDecl
Name CDATA #REQUIRED
>
<!ELEMENT EIementRef EMPTY>
<!ATTLIST ElementRef
Ref CDATA #REQUIRED
>
スキーマ内の要素の各々は、ドキュメント処理中にストレージ・マネージャによって使用される情報を定義する。レジストリ”Registry”セクションはXML要素タグをウィンドウズ(登録商標)のProgIDにマッピングする2カラムのテーブルのXML表現を構成する(マイクロソフト社により開発されたコモン・オブジェクト・モデル(COM)では、ProgIDはCOMシステム内でプログラム・コードのセクションに「結合(bound)」されたかあるいは関連づけられているオブジェクトのテキスト名である。任意のProgIDとプログラム・コードの間のマッピングは、ライブラリに格納されており、ウィンドウズ(登録商標)・レジストリなどの定義領域で指定される)。
この構造を図4Aに示し、XMLドキュメント400とこれに関連したスキーマ・ドキュメント402が示してある。これらのドキュメントはどちらもストレージ・マネージャ406に常駐し、実際には図3に示したようなオブジェクトによって表現される。しかし、図4では、ドキュメントは簡略化のため従来のXMLフォーマットで表現してある。図4はウィンドウズ(登録商標)環境で動作するストレージ・マネージャを示してあり、これはワシントン州レドモンドのマイクロソフト社が開発したコモン・オブジェクト・モデル(COM)に従って構築されたオブジェクトを使用するが、同じ原理が他のオペレーティングシステム環境にも適用される。
XMLドキュメント400は、XMLバージョン、エンコード方法とファイル参照を識別する通常のXML処理ステートメント414を含む。スキーマXML処理ステートメント416はスキーマ・ドキュメント402を参照し、このスキーマ・ドキュメントはドキュメント400に関連付けられており、名称ステートメント426で定義された名前”urn:groove.net:sample.xml”を持っている。また名称”doc.xml”と”urn:groove.net”として定義された”g”XMLネームスペースを定義しているルート要素418も含む。
ドキュメント400は、他に3つの要素があり、タグ”urn:groove.net:AAA”で定義された要素420と、タグ”urn:groove.net:BBB”で定義された要素422と、タグ”urn:groove.net:NoCode”で定義された要素424とを含む。要素424はスキーマ・ドキュメント402に対応する接合コードがなく、また対応するタグからProgIDへのマッピングもない単純要素である。
タグ428で定義された「レジストリ”registry”」セクション内でスキーマ・ドキュメント402には2つの要素からCOM ProgIDへのマッピングが定義してある。一方のマッピングはタグ”urn:groove.net:AAA”の要素について定義され、もう一方は”urn:groove.net:BBB”の要素について定義されている。結合コードは、クライアント・アプリケーション404がメソッド”OpenBoundCode()”を呼び出した時にアクセスされる。この呼び出しの書式は表15の下に示したようなもので関係するステップが図4Bに図示してある。OpenBoundCode()メソッドを単純な要素、例えば要素424で呼び出すことで例外を生成する。結合コードを取り出すプロセスは、ステップ434で始まりステップ436に進んでOpenBoundCode()を呼び出す。要素タグ”urn:groove.net:AAA” のついた要素でOpenBoundCode()メソッドを呼び出すとストレージ・マネージャ406にステップ438で説明するように要素タグのついたスキーマ・ドキュメント602のレジストリ要素428を参照させる。セクション430から、ストレージ・マネージャはステップ440に示したようにProgID ”Groove.Command” を取り出す。ステップ442で、ストレージ・マネージャはCOMマネージャ408を呼び出し、このProgIDを持ったオブジェクトを作成するように指示する。従来の周知の方法では、ステップ444で、COMマネージャがウィンドウズ(登録商標)・レジストリ410のキーを使ってProgIDからCSLIDに変換している。ステップ446では、COMマネージャがCSLIDを使ってそのオブジェクトのコードを持っているコード・データベース412でダイナミック・ローダブル・ライブラリ(DLL)ファイルを検索する。最後に、ステップ448で、COMマネージャはオブジェクトを作成してそのオブジェクトへのインタフェース・ポインタをストレージ・マネージャ406に返し、ストレージ・マネージャは更に、ポインタをクライアント・アプリケーション404に返す。ルーチンはこうしてステップ450で終了する。クライアント・アプリケーション404は、ポインタを使って属性と関連要素内のコンテンツを使用するコードでメソッドを起動する。要素は、そして他のCOMオブジェクトと同様に振る舞う。同様のプロセスが、タグ”urn:groove.net:BBB”のついた要素でOpenBoundCode()メソッドを起動した場合にも発生する。
”AttrGroup”セクションは、属性についての非XML特性を定義する。属性のデータ形式はテキスト以外の何らかの形式として定義でき、属性はこれを含む要素の高速取り出しを容易にするべくインデックスが付けられる。
”ElementDecl”セクションはDTD<!ELEMENT>宣言と同様の要素定義フォームを提供するが、拡張属性の特徴と非包含要素参照の定義を許容する。
以下の例では、すでに説明した「テレスペース」を定義するXMLドキュメントについてのスキーマ・ドキュメントのサンプル部分を示す。
<groove:Document URL="TelespaceSchema.xml"
xmlns:groove="urn:groove.net:schema.l">
<groove:Registry>
<groove:TagToProgID groove:Tag="g:Command"
groove:ProgID="Groove.Command"/>
<groove:TagToProgID groove:Tag="groove:PropertySetChanged"
groove:ProgID="Groove.PropSetChangeAdvise"/>
</groove:Registry>
<groove:AttrGroup>
<groove:AttrDef Name="ID" Index="true"/>
<!-- KEY EXCHANGE ATTRIBUTES -->
<groove:AttrDef Name="NKey" Type="Binary"/>
<groove:AttrDef Name="ReKeyld" Type="String"/>
<groove:AttrDef Name"T" Type="String"/>
<!-- AUTHENTICATION ATTRIBUTES -->
<groove:AttrDef Name="MAC" Type="Binary"/>
<groove:AttrDef Name="Sig" Type="Binary"/>
<!-- ENCRYPTION ATTRIBUTES -->
<groove:AttrDef Name="IV" Type="Binary"/>
<groove:AttrDef Name="EC" Type="Binary"/>
<!-- XML Wrapper Attributes -->
<groove:AttrDef Name="Rows" Type="Long"/>
<groove:AttrDef Name="Cols" Type="Long"/>
<groove:AttrDef Name="Items" Type="Long"/>
<groove:AttrDef Name="ItemID" Type="Bool" Index="true"/>
</groove:AttrGroup>
<groove:ElementDecl Name="groove:Telespace">
<AttrGroup>
<AttrDef Name="Persist" DefaultValue="True" Type="Bool"/>
<AttrDef Name="Access" DefaultValue="Identity" Type="String"/>
</AttrGroup>
<ElementRef Element="Dynamics"/>
<ElementRef Element="Members"/>
</groove:ElementDecl>
</groove: Document>
この例では、TagからProgIDへのマッピングテーブルに二つのエントリがある。最初のエントリはタグ”g:Command”(これはXML名前空間の拡張を使用し”urn:groove.net.schema.1:Command”である)からProgID ”Groove.Command” にマッピングする。属性を定義するセクションで、”ID”属性はインデックス化されていて、NKey属性のデータ形式がバイナリである、と言うように続く。
このスキーマ・データは要素オブジェクトによって表現され、以下で詳細に説明するようにドキュメントを操作するために使用するのと同じストレージ・マネージャ要素及び属性インタフェース・メソッドによってアクセス/操作できる。更に詳しくは、ドキュメントを記述する情報がドキュメント内容を操作するのに使用されるのと同じインタフェースを使用して操作できる。
本発明の他の態様によれば、サブドキュメントはプライマリ・ドキュメントに関連付けられる。あらゆるドキュメントが任意のドキュメントのサブドキュメントにできる。あるドキュメントが他のドキュメントへのサブドキュメント参照を含む場合、参照されたドキュメントはサブドキュメントである。二つのドキュメントが互いにサブドキュメント参照を含む場合には、各々のドキュメントが他方のドキュメントのサブドキュメントである。各サブドキュメントは、従来からのXMLXLink言語でプライマリ・ドキュメントから参照されるが、この言語はhttp://www.w3.org/TR/xlink/に詳細な説明がある。リンクは、又、完全テキストXMLドキュメントとバイナリ・サブドキュメントとの関連を策定する。バイナリ・ドキュメントはどのような種類のサブドキュメントへのリンクも持たない。リンクがドキュメントの一部への場合、サブドキュメントの関連性はその部分を含むドキュメントに対して設定される。ドキュメントとサブドキュメントとの関連性が図5に示してある。
例えば、主ドキュメント500はリンク502を内包し、リンク502は矢印510で示してあるドキュメント504へのリンクと、矢印508で示してあるバイナリ・ドキュメント506へのリンクを含む。従って、ドキュメント504と506は、ドキュメント500のサブドキュメントである。ドキュメント504は更にリンク512を含み、このリンクは矢印514で示されるようにコンテンツ518のあるドキュメント516へのリンクを含む。ドキュメント516はドキュメント500のサブドキュメントである。ドキュメント506はバイナリ・コンテンツ520を含み、そのためサブドキュメントへのリンクを持てない。
サブドキュメントのリンクは、単純なリンクについての標準定義に従属する。リンクについての代表的な要素定義は次のようなものである:
<!ELEMENT GrooveLink ANY>
<!ATTLIST GrooveLink
xml:link CDATA #FIXED "simple"
href CDATA #REQUIRED
role CDATA #IMPLIED "sub-document"
title CDATA #IMPLIED
show (parsed|replace|new) #IMPLIED
actuate (autoluser) #IMPLIED
serialize (byvalue|byreference|ignored) #IMPLIED
behavior CDATA #IMPLIED
content-role CDATA #IMPLIED
content-title CDATA #IMPLIED
inline (true|false) #IMPLIED "true">
上記の定義を使用せず、値”simple”のxml:link属性とhref属性とを持ったXMLリンクをドキュメントに追加することでサブドキュメントの関連性を構築することも可能である。このようなリンクはhref属性のURI値によって識別されるドキュメントへのサブドキュメントの関連性を構築する。
ドキュメントからこれのサブドキュメントへの関連性ができると、ドキュメントとサブドキュメントの任意のセットのコピーを作ることが可能になる。一つのストレージ・サービス内で、このようなコピーを直接実行することが可能である。ストレージサービスを横断する、あるいは複数ドキュメントを他のマシンへ送信するには、このようなドキュメントの階層全体をシリアル化した方法で「記述可能」にする必要がある。本発明のストレージ・マネージャは、集合ドキュメントのMIME封入(Encapsulation)の仕様に適合するテキスト表現へと、例えばftp://ftp.isi.edu/in−notes/rfc2557.tXt/で詳細に説明が見られるHTML(MHTML)などに、多数のドキュメントをシリアル化する。
以下のデータ・ストリーム断片はMHTML文字列に見られるようなドキュメントと参照されるサブドキュメントの一例である。本例では、”SP”は一つの空白文字が存在することを意味し、”CRLF”は復帰・改行のアスキー文字対を表わす。他の全ての文字はそのまま送信される。MIMEバージョン・ヘッダは通常のMIMEバージョンであり、グループ・プロトコルバージョンはRFC822のコメントにある。コメントは単に単語Grooveとそれに続く整数である。境界セパレータ文字列はユニークなものとし、MIMEとついで各本体部分をパースするシステムが正しく動作するようにする。シリアル化XMLテキストはUTF−8フォーマットで示してあるが、WBXMLフォーマットで送信することもできる。XMLドキュメントはXMLプレフィックスを持ち、これはバージョンならびに文字エンコード方法を含む。バイナリ・ドキュメントはbase64で符号化される。
MIME-Version : SP 1.0 SP (Groove SP 2) CRLF
Content-Type: SP multipart/related ; SP boundary="<<[[&&&]]>>" CRLF
CRLF
--<<[[&&&]]>> Content-Type : SP text/XML ; SP charset="UTF-8"
<?xml version="1.0" encoding='utf-8'?>
<rootelement>
.
.
.
</rootelement> CRLF
CRLF
--<<[[&&&]]>>
Content-ID : SP <URI> CRLF
Content-Type: SP application/octet-stream CRLF
Content-Transfer-Encoding: base64 CRLF
CRLF
ROIGODlhdQAgAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8V//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5mMzJnMmZnMZpnMM5nMAJmZ/5mZOG/qTMnzJUWQHoMKHUq0KEagRpMqXaoUaU6dG2IKIOqRKt0kTq9q3VrV5sd/XMOKZZp1rNmzGsuiXct2hNq2cMVmXdkzZ12LLe/ehYrXpsy/MPUGHvw04lzCdhFbzasYMd+aUxsnnrzTq1uwcTN3tVrxrebPWDGDHr3UM+nTHE2jXn1RNevXEl3Dfi179urDJrte5BzVcknNhyNHZiyzJnGvuWMuppu7uHLkyV1Kxe1ccOGZOCn/xshcu8/K2g2LQ8bJGPJj4eh3+/WNHb118PAtBn8aXTrn6s7tl2QP9b399fhNN55tbe31FYEITIRbgqAtvCBwAz5120MUVmjhhRgyFBAAOw==
--<<[[&&&]]>>--
文書エディタやインターネット・ブラウザなどの大半のXML処理装置とは異なり、ストレージ・マネージャは、同時的なドキュメント操作を提供する。ドキュメントは同時的に検索され、要素は同時的に作成、削除、更新又は移動される。要素の階層のコピーは、一つのドキュメントから他のドキュメントへ移動できる。大半のXML処理装置では、ドキュメントへの更新の全部が一人のユーザによって行なわれ、このユーザは一台のコンピュータ上の一つのプロセス内の一つのスレッドを制御するのが普通である。
ストレージ・マネージャは、多数のユーザが同一のドキュメントを更新する間もXMLドキュメントの完全性を保持するのに、多数のプロセスでの多数のスレッドを使用する。好適な実施態様では、更新の全部が一台のコンピュータ上で発生するが、他にも従来の異なるプロセッサ間通信メカニズムを用いる他の動作実施態様が可能である。図6はストレージ・マネージャの基本構造を示しプロセス間通信の問題からアプリケーション・プログラムをいかに隔離するかを示している。例えば、二つの独立したプロセス600と602が同時に、同じコンピュータ上で又は他のコンピュータ上で動作している。プロセス600は後述するように「ホーム」プロセスで、一方プロセス602はプロセスNとして指定される他のプロセスである。プロセス600内部で、マルチスレッド・クライアント・アプリケーション・プログラム606が動作しており、プロセス602の内部ではマルチスレッド・クライアント・アプリケーション・プログラム616が動作している。
各アプリケーション・プログラム606、616は各々参照番号605、615で指定されたストレージ・マネージャとインタフェースする。プロセス600では、ストレージ・マネージャはアプリケーション・プログラム608が使用してストレージ・マネージャを制御し、これとインタフェースするストレージ・マネージャ・インタフェース層608を含む。これは実際にアプリケーションによって操作されるデータベース、ドキュメント、要素、スキーマ・オブジェクトを含む。この層からエクスポートされるAPIについては、以下で詳細に説明する。ストレージ・マネージャ605は分散仮想オブジェクト(DVO)データベース・メソッド610、基本データ形式のためのDVOメソッド612、DVOコモン・システム・メソッド609、分散共有メモリ614も含む。同様に、プロセス602で動作しているストレージ・マネージャはトランザクション層618、DVOデータベースメソッド620、基本データ形式のためのDVOメソッド622,DVOコモン・システム・メソッド617、分散共有メモリ624を含む。
二つのプロセス600と602は、従来のメッセージ受け渡しプロトコル又はプロセス間通信(IPC)システム604を介して通信する。一台のコンピュータ上で動作するプロセスでは、このようなシステムは共有メモリバッファを用いてウィンドウズ(登録商標)(R)オペレーティングシステムに実装できる。プロセスが他のコンピュータ上で動作している場合、他のメッセージ受け渡しプロトコル、例えばTCP/IPなどを使用できる。他の従来のメッセージング又は通信システムも本発明の動作を改変することなく使用できる。しかし、図6に示してあるように、アプリケーション・プログラム606と616はメッセージ受け渡しシステム604と直接相互作用しない。その代わり、アプリケーション・プログラム606と616は、各々ストレージ・マネージャ605、615と相互作用し、ストレージ・マネージャ605、615は、分散共有メモリ(DSM)システム614と624が一部を構成するDSMシステムを介してメッセージ受け渡しシステム604と相互作用する。
多数の周知のDSMシステムが存在し、本発明での使用に適当である。好適な実施態様において、ストレージ・マネージャで使用されるDSMシステムは、Cリージョン・ライブラリ(CRL)システムと呼ばれる。CRLシステムは全ソフトウェア分散共有メモリシステムで、メッセージ受け渡しマルチコンピュータ分散とシステム上での使用を想定している。CRLシステムとこのようなシステムを実装するためのコードは、”CRL: High−Performance All Software Distributed Memory System”, K. L. Johnson, M. F. Kaashoek and D. A. Wallach, Proceedings of the Fifteenth Symposium on Operating Systems Principles, ACM, December 1995; 及び”CRL version 1.0 User Documentation”, K. L. Johnson, J. Adler and S. K. Gupta, MIT Laboratory for Computer Science, Cambridge, MA 02139, August 1995に詳細に説明されている。どちらの論文も以下のウェブアドレスから入手可能である: http://www.pdos.lcs.mit.edu/crl/。
CRLの上に構築される並列アプリケーション、例えばストレージ・マネージャなどはメモリの「リージョン(regions)」からデータを共有する。各リージョンは任意の大きさで、連続したメモリ領域(area)である。共有メモリのリージョンは、DSMシステムの各種関数により作成され、他のプロセスにマッピングされ、マッピング解除され、削除される。本発明で使用するDSMシステムは、CRLDSMシステムで使用されている関数のスーパーセットを提供する。メモリリージョンのユーザは、あるリージョンに対して読み取り又は書き込みが必要な時に、DSMに対して宣言し、リージョンの使用後は、読み込み又は書き込みの完了を宣言することによりアクセスを同期する。書き込み動作の影響は、リージョンを共有している他のプロセスがそれの必要性を宣言するまで伝播されない。基本的共有メモリと同期動作に加えて、DSMはエラー処理とトランザクションの信頼性も提供する。本発明のDSMの全部のインタフェースが表1に示してある:
Figure 0005535420
各ストレージ・マネージャ605、615は、対応するプロセス600、602のアドレス空間内にある1つ以上のDSMリージョン(図6には図示していない)を使用するDSMノードを含む。これらのリージョンはDVOオブジェクトとクラスを含み、ストレージ・マネージャにより管理されるドキュメント、要素、XMLデータのスキーマを表現するために使用できる。ドキュメントの一部、通常は、要素とインデックスセクションがリージョン内部に全体として含まれる。DSMシステムはリージョン共有のための概念的に均一なノード空間を提供するが、特別なタスクを実行する特定ノード又はプロセスを選抜する必要が出て来るという問題がある。
結果として、DSM同期プロトコル内で、一つのノードが各リージョンについての「ホーム・ノード」として識別される。1台のコンピュータ上でストレージ・マネージャを動作させている多数のプロセスのうち、「ホーム・プロセス」と呼ばれる一つのプロセスが全てのディスクI/O動作を実行するプロセスである。プロセス間でのデータ移動量を減少するため、ホーム・プロセスは全リージョンについてのホーム・ノードである。全てのノードが全てのリージョンのホームになることができ、全てのプロセスがディスクI/Oを実行するような他の実装も可能である。しかし、1台のディスク・ドライブを持ったパーソナル・コンピュータでは、多数のプロセスにディスクI/Oを実行できるようにすることでI/O同期の必要が発生し、同時にディスク1台であるという主なパフォーマンス上のボトルネックを緩和しなければならない。
DSM動作によると、プロセスがあるリージョンの最新コピーを持っている場合、そのリージョンを読み書きできる。それ以外、プロセスはリージョンの読み書きをする前にホーム・プロセスから最新コピーを取り寄せる必要がある。各DSMシステム614、624はノード間通信層(615、625)と呼ばれるインタフェース層を介してメッセージ受け渡しシステム604とインタフェースしており、ノード間通信層が基盤となる伝送メカニズムからDVMシステムを隔離する。これはブロードキャスト・グループへメッセージを送信し、対応するプロセスとホーム・プロセスのアドレスを操作するメソッドを含む。
本発明のストレージ・マネージャは、XMLオブジェクトの基礎として共有オブジェクトを使用する。プロセス間やコンピュータ間でオブジェクトを共有する多くのシステムが存在する。このようなオブジェクト共有モデルの一つはオペレーティング・システムにより提供される、共有メモリ機能の使用に基づくものである。このような共有メモリ・モデルで最大の欠点の一つは、メモリへの書き込み失敗による信頼性の欠如で、これは他のプロセスの完全性に影響を与える。例えば、一つのプロセスがオブジェクトの状態を更新するプロセスで、そのプロセスが分かっている良好な状態にオブジェクトをセットする前に失敗すると、他のプロセスからはオブジェクトが無効な状態に見えるか、ブロックされてしまい失敗したプロセスが同期ロックを解除するまで無限に待機することになる。共有メモリ・モデルも緊密に結合したマルチ・コンピュータでの共有メモリのローカリティ制約に苦しめられ、ネットワーク上でオブジェクトを共有する方法が何も提供できない。
分散オブジェクト共有及びリモート・メソッドの呼び出しを提供する他のモデルは、Java(登録商標)あるいはObject Management GroupのCORBAシステムで分散オブジェクト管理機能を基盤にしている。コンピュータ・ネットワーク上でオブジェクトを共有する能力が提供されるものの、このようなシステムのクライアントはオブジェクトがローカルなのか、リモートなのかに注意を払う必要がある――オブジェクトはロケーションに依存しない。このアプローチでは、パフォーマンスが他の欠点である。オブジェクトに対する全ての動作はオブジェクト・サーバへ送信する必要があるが、これは、サーバがオブジェクト状態の唯一のコピーを含んでいてそのデータについての同期ポイントとして機能するためである。
これらの欠点を克服するため、本発明のストレージ・マネージャは分散仮想オブジェクト(DVO)システムを使用してXMLオブジェクト形式を構築すべきプリミティブ・データ形式を提供する。DVOシステムはまた、データが多数のコンピュータ上の多数のプロセスにある場合でも、又は本当は一つのコンピュータ・ノード上の一つのプロセスに存在していても、全てのデータが一つのコンピュータ・ノード上の一つのプロセスに確実に含まれていると言う錯覚を呼び出し側に提供する。
DVOオブジェクト共有モデルを図7に示す。オブジェクトを共有している全てのコンピュータ上の全てのプロセスは、同じメソッド・コードを持っている。例えば、図7のプロセス700とプロセス702は同じオブジェクトのコピーを持っている。つまり、プロセス700、702の各々が同じメソッド・コードのコピー704、706を各々のプロセス・アドレス空間に持っている。あるオブジェクトについて揮発性のデータ状態がDSMリージョンに格納される。つまりプロセス700のオブジェクト・コピーについてオブジェクト・データ708はプロセス700のアドレス空間のリージョン710に格納されている。同様に、プロセス702のオブジェクトコピーについて、オブジェクトデータ712は、プロセス702のアドレス空間のリージョン714に格納される。オブジェクト・メソッドはDSM同期機能を使ってオブジェクトのデータへのアクセスを同期させ、同期機能が矢印716で示したようにリージョンを同期させる。この方法だと、DVOオブジェクトはロケーションに依存せず、失敗は一つのプロセス内部に含まれ、ローカル・オブジェクトに対する多数の変更がノード間伝送によるデータ移動を必要としなくなる。
DVOシステムは構築ブロックとして使用され、ストレージ・マネージャ用にXMLドキュメントを管理し、3つの機能部分に分割される基本的オブジェクトを提供する。DVOデータベース610は、各プロセスにローカルなDVOコンテクストを取り扱うオブジェクトと、開いているデータベースに関する情報と、これらのデータベース内に含まれるドキュメントに関する情報を含む共有テーブルとを含む。DVOでは、「データベース」は概念的なストレージ・コンテナであり、何らかのストレージ・サービス609に最終的に保存されるオブジェクトを伝送する。DVOドキュメントにはXML又はバイナリ・ドキュメントが関連し、これらはストレージ・マネージャのクライアントから見ることができる。DVOドキュメントはまた集合に関連付けられたインデックス及びメタデータを内包するためにも使用される。
DVOタイプ612は、DVOドキュメント内で使用できるオブジェクト・クラスのセットで、もっと高レベルなデータ・モデル構造を実装する。DVOタイプは単純なデータ包含オブジェクトから複雑なスケーラブルインデックス構造まで範囲が広がる。各DVOタイプは二つのクラスで実装される――そのひとつは「非共有クラス」で、これはオブジェクト参照にメモリ・ポインタを使用するもの、またもう一つは「共有クラス」で、これはオブジェクト参照にデータベース・ポインタと呼ばれる論理アドレスを使用する。「共有クラス」は二つのサブフォームがある―――つは共有DSMリージョンにあるオブジェクトの表現で、他方はオブジェクト格納データベースにディスク上で保存される、あるオブジェクトの表現である。DVOシステム607はこれらの共有と非共有実装の間でオブジェクトを転送するメソッドを提供する。
様々なDVOタイプを表2に示す。
Figure 0005535420
DVOシステム607は、物理ストレージとプロセスの局在問題からDVOの上位レベルを隔離する。DVOシステム・オブジェクトはDSMを使用してホーム・プロセスへ/からの要求を起動し処理する。要求にはデータベースを開く、閉じる、消去する、データベース内でドキュメントを検索する、データベース・ドキュメントを開く、閉じる、消去する、書き込むなどの動作を含む。マスター・プロセス600のDVOシステム607はストレージ・サービス609からDVOオブジェクトを取り出すこともできる。ストレージ・サービス、例えばサービス609などは永久媒体から情報を保存したり取り出すユーティリティ・プログラムで、コンテナ、データベース、又はファイルの物理的完全性について責任を担っている。全ての更新が永続的であり全ての内部データ構造(例えばリダイレクト・テーブル、空間割り当てマップ)が常にディスク上で一貫していることを保証する。他のプロセス、例えばプロセス602は直接ストレージ・サービス609にアクセスできないが、DSMリージョン624経由で間接的にシステムへアクセスできる。
ストレージ・マネージャ605は他の種類の物理ストレージ・システムで動作でき、これには、コンテナやオブジェクト・ストア、ストリーム・ファイルシステムとZIPファイルを含む。アトム的なコミットを実現するため、オブジェクト・ストア・ストレージ・サービスはページ指向の入出力動作とピンポン・シャドー頁・テーブルを用いて実装できる。
個別のストレージ・マネージャ・メソッドはアトム的である。複数のストレージ・マネージャ動作は、異なるドキュメントに対する動作であっても、「トランザクション」にグループ化される。トランザクションはXMLデータの完全性を保護する以外にも、ストレージ・マネージャがリージョンロック動作の個数を減少できるようにしたり、メッセージ受け渡しシステム上でのデータ移動量を減少できるようにするため性能を改善する。
ストレージ・マネージャは、上記で参照したDSM文書に記載されているDSM同期プリミティブの上に構築された、読み書き可能及び読み取り専用トランザクションの両方をサポートし、このプリミティブは、多数のプロセス又はコンピュータでの一貫性を保証する。読み書き可能なトランザクションは、データベース読み取りと書き込み動作のセットのアトム性と一貫性を提供する。トランザクションの一部として変更される各リージョンは、トランザクションがコミットされるか中断されるまで「ロック」状態に保持される。これによりトランザクションの一部を構成しない動作で変更されないようにする。更に、各トランザクションは、変更するリージョンの「以前のイメージ」を格納しておき、トランザクションが中断された場合(明示的なAPIコール又は例外の結果として)、トランザクションの影響を取消しできるようにする。性能要求によっては、他の実装で完全な「以前のイメージ」を保存するのではなく、取り消し情報を書き込むことができる。読み取り専用トランザクションは、読み取り書き込みトランザクションと同じインタフェースを使用する。読み取り専用トランザクションは多数の読み取り動作が一貫することを保証する。他のトランザクションと同様に、DSM関数を使って全ての読み取りリージョンを終了まで「読み取り中状態」に保持する。
更に、チェックポイントを使って変更が永続的であることを確認し、ストレージ・マネージャ動作の耐久性を提供できる。チェックポイントは何時でも実行できる。チェックポイントはデータ復旧ロギングと組み合わせて使用する。全ての動作がコミット時にシーケンシャルな復旧ログファイルへ「やり直し」情報を書き込む。チェックポイントがコミットされると、復旧ログファイルが永続的ストレージへフラッシュされて動作が復旧できることを保証する。トランザクションはコミットされるまで「やり直し」情報を書き込まないので、チェックポイント動作がトランザクションの半ばで開始されると、トランザクション動作はフラッシュされない。
トランザクションは、スレッドとデータベースに範囲が限定される。トランザクションが特定データベースのスレッドで開始されると、そのトランザクションはそのデータベースとスレッドで後続の全てのストレージ・マネージャ動作に自動的に使用される。従来のオペレーティング・システム・スレッドの拡張を使用し、トランザクションが他のスレッド、例えばユーザ・インタフェース・スレッドに整理される必要があるコールを、Grooveシステムの、簡単なmarshalerを使って、正しく処理できるようにする。トランザクションを開始しないスレッドとデータベースに対して行なわれたストレージ・マネージャのコールは、ストレージ・マネージャにコール終了の直前にコミットされる「デフォルト・トランザクション」を作成させる。これ以外に、すでに既存のトランザクションが進行中のスレッドとデータベースに対する新しいトランザクションを開始することで、この新規トランザクションが自動的に既存のトランザクションに「入れ子」にされる。入れ子トランザクションは、外側のトランザクション内にシステムをロールバックする能力を提供する。更に詳しくは、内側の入れ子になったトランザクションは一番外側のトランザクションがコミットされるまで最終的にコミットされない。例えば、入れ子トランザクションがコミットされる場合でこれを内包するトランザクションが後に中止されると、入れ子になったトランザクションも中断される。
本発明の好適な実施態様において、ストレージ・マネージャはオブジェクト指向環境で実装される。従って、ストレージ・マネージャそれ自体と、ドキュメントコンポーネント全部、例えばドキュメント、要素、エンティティ(実体)などがオブジェクトとして実装される。これらのオブジェクト、そのインタフェース、基盤となる構造とストレージ・マネージャとのインタフェースに使用されるAPIが図8に示してある。APIは図9から図11との関連で更に詳細に説明する。図8を参照すると、ストレージ・マネージャはドキュメント操作API802経由でドキュメントへの共有アクセスを開始するが、クライアント・アプリケーションの完全なプログラミング・モデルを有効にするため、ドキュメントのコンテキスト内で追加の通信及び同期動作が提供される。例えば、ストレージ・マネージャは待ち行列要素の動作を提供し、これにより一つのプロセスがQueueAPI804経由で他のプロセスへ要素を送信できるようにする。要素は値(要素全体のコピー)又は要素への参照により送信できる。同期動作も1つ以上のスレッドに任意の待ち行列へ入れる要素を待機させるために提供される。ストレージ・マネージャは、またRPCAPI804経由でRPCスタイルの要素通信及び同期を提供する。
他のクライアント・コンポーネントは、いつドキュメントがストレージ・マネージャに作成されたか、又は削除されたかを注意する必要がある。そのため、ストレージ・マネージャは通知API800経由でこれらのクライアント・コンポーネントに対して重要性に基づく通知システムへのインタフェースを提供する。通知システム806はドキュメントが作成又は削除された時の重要性を登録したクライアント・コンポーネントへ通知を提供する。
ドキュメント・データは、データベースオブジェクト、ドキュメントオブジェクト、要素オブジェクト、スキーマオブジェクト808を含むオブジェクト集合により表現される。オブジェクトはドキュメント操作API802経由で直接操作される。
ドキュメント関連オブジェクト808は、上記で詳細に説明した分散仮想オブジェクト・システム810により実際に実装される。分散仮想オブジェクト・システム810はまた要素キューとRPCオブジェクト812により、キュー及びRPCAPI804の制御下に操作することもできる。
分散仮想オブジェクト・システム810は、インタフェース814経由で分散共有メモリと通信し、インタフェース816経由でロギング動作と通信する。同様に、分散仮想オブジェクト・システムは、インタフェース818経由でストレージ・サービスと相互作用できる。
以下は、本発明のストレージ・マネージャの好適な実施態様を実装するために使用されるオブジェクトの各々についてのインタフェースの説明である。これらのオブジェクトはワシントン州レドモンドのマイクロソフト社から配布されているコモン・オブジェクト・モデル(COM)に準拠して設計されており、COMオブジェクトとしてメモリ内で操作できる。しかし、COMは一つのオブジェクト・モデルと一組のインタフェース方法論に過ぎない。本発明は他のスタイルのインタフェースやオブジェクト・モデルを使って実装することもでき、これにはJava(登録商標)やCORBA オブジェクト・モデルも含みこれに限定されない。
図9はストレージ・マネージャ・オブジェクトへのオブジェクトインタフェースを示す。インタフェース900(IGrooveStorageManager)はストレージ・マネージャ用の基本的枠組を内包する。このインタフェースはCOMモデルによって定義された共通クラスであるIDispatchインタフェースのサブクラスである。表3はストレージ・マネージャ・インタフェースに含まれるメソッドの定義である。
Figure 0005535420
他のインタフェース902(IGrooveStorageURISyntax)は、統一資源識別子(URI)の形になっている標準名の一部について演算を実行する必要があるストレージ・マネージャのクライアントが使用する。表4はIGrooveStorageURISyntaxインタフェース用のメソッドを含む。
Figure 0005535420
図10は通知システムインタフェースを示す。インタフェース1000(IGrooveLinkCallback)はXMLドキュメント又は要素の入力処理中にリンクへの定義が見付かった場合通知される必要のあるストレージ・マネージャのクライアントで使用するインタフェースである。インタフェースは表5に定義されているメソッドを含む。
Figure 0005535420
他のインタフェース1002(IGrooveRPCSerVerCallback)は、XMLドキュメント内の要素についてリモート・プロシージャ・コール(RPC)を扱う必要があるストレージ・マネージャのクライアントで使用される。RPCサーバのコールバックは「util」ベースクラスのサブクラスである(後述する)。つまり、IGrooveElementUtilBaseのメソッド全部もIGrooveRPCServerCallbackに適用される。表6はストレージ・マネージャRPCサーバ・コールバック・インタフェースで使用されるメソッドを定義したものである。
Figure 0005535420
図11、図12、図13はドキュメント操作インタフェース、待ち行列、RPCインタフェースを示す。更に詳しくは、図11にはデータベースを操作するために使用するインタフェースを示す。インタフェース1100(IGrooveDatabase)はドキュメントを格納するデータベースを管理する必要があるストレージ・マネージャのクライアントによって使用される。これは表7のメソッドを含む。
Figure 0005535420
表8はプロセス間のアクセスを同期する必要があるストレージ・マネージャのクライアント用インタフェース1102(IGrooveCrossProcessSemaphore)のメソッドを示す。
Figure 0005535420
表9は、データベース内での動作をグループ化する必要があるストレージ・マネージャクライアント用のインタフェース1104(IGrooveTransaction)を示す。トランザクションはプロセス間セマフォのサブクラス、つまりIGrooveCrossProcessSemaphoreのメソッドの全てにもIGrooveTransactionが適用される。ストレージ・マネージャトランザクションインタフェースは次のようなメソッドを含む。
Figure 0005535420
図12は、ストレージ・マネージャのクライアントが、ドキュメントとこれらのドキュメント内の要素を操作できるようにするインタフェースを示す。表10には、データベース内のドキュメントを管理する必要があるストレージ・マネージャのクライアント用インタフェース1200(IGrooveDocument)を示す。ストレージ・マネージャ・ドキュメント・インタフェースは次のようなメソッドを含む。
Figure 0005535420
表11は、データベース内のXMLドキュメントを管理する必要があるストレージ・マネージャのクライアント用インタフェース1202(IGrooveXMLDocumenp)を示す。XMLドキュメントは、ドキュメントのサブクラス、つまりIGrooveDocumentのメソッドの全部がIGrooveXMLDocumentにも適用される。ストレージ・マネージャXMLドキュメント・インタフェースは次のようなメソッドを含む。
Figure 0005535420
表12はデータベース内でバイナリ・ドキュメントを管理する必要があるストレージ・マネージャのクライアント用インタフェース1204(IGrooveBinaryDocument)のメソッドを示す。バイナリ・ドキュメントはドキュメントのサブクラス、つまりIGrooveDocumentのメソッドの全部もまたIGrooveBinaryDocumentに適用される。
Figure 0005535420
表13はXSLTと呼ばれる仕様に定義されている、ロケータ・クエリを使用して要素を検索する必要があるストレージ・マネージャのクライアント用インタフェース1206(IGrooveLocator)を示す。XSLT仕様の詳細はhttp://www.w3.org/TR/xsltにある。ストレージ・マネージャのロケータ・インタフェースは次のようなメソッドを含む。
Figure 0005535420
表14は、XSLTに定義されているXMLドキュメント変換を実行する必要があるストレージ・マネージャのクライアント用インタフェース1208(IGrooveTransform)を示す。ストレージ・マネージャ変換インタフェースは次のようなメソッドを含む。
Figure 0005535420
表15は、ストレージ・マネージャクライアントがXMLドキュメント内の要素を操作できるようにするインタフェース1210(IGrooveElement)を示す。ストレージ・マネージャの要素インタフェースは次のようなメソッドを含む。
Figure 0005535420
Figure 0005535420
Figure 0005535420
Figure 0005535420
表16は、XMLドキュメント内の読み取り専用要素を操作する必要があるストレージ・マネージャのクライアント用インタフェース1212(IGrooveReadOnlyElement)のメソッドを示してある。読み取り専用要素は要素のサブクラス、すなわちIGrooveElementのメソッドの全部がIGrooveReadOnlyElementにも適用される。
Figure 0005535420
表17は、XMLドキュメント内の要素参照を操作する必要があるストレージ・マネージャのクライアント用インタフェース1214(IGrooveElementReference)を示したものである。ストレージ・マネージャの要素参照インタフェースは次のようなメソッドを含む。
Figure 0005535420
ストレージ・マネージャの他のインタフェース内で使用するインタフェース1216(IGrooveElementUtilBase)を、表18に示す。IGrooveElementUtilBaseは、一般に使用されるオブジェクトのためのインタフェースではないが、共通に使用されるオブジェクトを持っている他のサブクラスについてのベースクラスとして用いることを想定している。”util”インタフェースの全てが要素に関連する。ストレージ・マネージャ要素utilベースインタフェースは次のようなメソッドを含む。
Figure 0005535420
表19は、XMLドキュメント内の要素に関連付けられた実行可能コードを処理する必要があるストレージ・マネージャクライアント用インタフェース1218(IGrooveBoundCode)を示す。ストレージ・マネージャ・バインドコード・インタフェースは次のようなメソッドを含む。
Figure 0005535420
図13は、前述のIGrooveElementUtilBaseベースクラス1300のサブクラスであるインタフェースを示している。表20には、XMLドキュメント内の要素に対するキューを操作する必要があるストレージ・マネージャのクライアント用インタフェース1302(IGrooveElementQueue)を示す。要素キューは”util”ベースクラスのサブクラス、すなわちIGrooveElementUtilBaseのメソッド全部がIGrooveElementQueueにも適用される。ストレージ・マネージャ要素キューインタフェースは次のようなメソッドを含む。
Figure 0005535420
表21は、XMLドキュメント内部の要素参照に対するキューを操作する必要があるストレージ・マネージャのクライアント用インタフェース1306(IGrooveElementReferenceQueue)を示す。要素参照キューは”util”ベースクラスのサブクラス、すなわちIGrooveElementUtilBaseのメソッド全部がIGrooveElementReferenceQueueにも適用される。ストレージ・マネージャ要素キュー参照インタフェースは次のようなメソッドを含む。
Figure 0005535420
表22は、XMLドキュメント内の要素に対するマルチリーダー/キューから要素を除去する必要があるストレージ・マネージャのクライアント用インタフェース1310(IGrooveMultiReaderElementQueueReader)を示す。マルチリーダー要素キューは”util”ベースクラスのサブクラス、すなわちIGrooveElementUtilBaseのメソッド全部がIGrooveMultiReaderElementQueueReaderにも適用される。ストレージ・マネージャ・マルチリーダー要素キュー・リーダーインタフェースは次のようなメソッドを含む。
Figure 0005535420
表23は、XMLドキュメント内の要素についてマルチリーダー・キューへ要素を追加する必要があるストレージ・マネージャのクライアント用インタフェース1314(IGrooveMultiReaderElementQueueWriter)を示す。マルチリーダー要素キューは”util”ベースクラスのサブクラス、すなわちIGrooveElementUtilBaseのメソッド全部がIGrooveMultiReaderElementQueueWriterにも適用される。ストレージ・マネージャ・マルチリーダー要素キュー・ライター・インタフェースは次のようなメソッドを含む。
Figure 0005535420
表24は、XMLドキュメント内の要素についてマルチリーダー・キューへの要素参照を追加する必要があるストレージ・マネージャのクライアント用インタフェース1318(IGrooveMultiReaderElementReferenceQueueWriter)を示す。マルチリーダー要素参照キューは”util”ベースクラスのサブクラス、すなわちIGrooveElementUtilBaseのメソッド全部がIGrooveMultiReaderElementReferenceQueueWriterにも適用される。ストレージ・マネージャ・マルチリーダー要素参照キューライター・インタフェースは次のようなメソッドを含む。
Figure 0005535420
表25は、XMLドキュメント内の要素についてマルチリーダー・キューから要素参照を除去する必要があるストレージ・マネージャのクライアント用インタフェース1316(IgrooveMultiReaderElementReferenceQueueReader)を示す。マルチリーダー要素参照キューは”util”ベースクラスのサブクラス、すなわちIGrooveElementUtilBaseのメソッド全部がIGrooveMultiReaderElementReferenceQueueReaderにも適用される。ストレージ・マネージャ・マルチリーダー要素参照キューリーダー・インタフェースは次のようなメソッドを含む。
Figure 0005535420
表26は、XMLドキュメント内の要素についてリモート・プロシージャ・コール(RPC)を実行する必要があるストレージ・マネージャのクライアント用インタフェース1304(IGrooveRPCClient)を示す。RPCクライアントは”util”ベースクラスのサブクラス、すなわちIGrooveElementUtilBaseのメソッド全部がIGrooveRPCClientにも適用される。ストレージ・マネージャRPCクライアント・インタフェースは次のようなメソッドを含む。
Figure 0005535420
XMLドキュメント内の要素についてリモート・プロシージャ・コール(RPC)を処理する必要があるストレージ・マネージャのクライアント用インタフェース1308(IGrooveRPCServerThread)を、表27に示す。RPCサーバ・スレッドは”util”ベースクラスのサブクラス、すなわちIGrooveElementUtilBaseのメソッド全部がIGrooveRPCServerThreadにも適用される。ストレージ・マネージャRPC サーバ・コールバック・インタフェースは、それ自体のメソッドを持っておらず、IGrooveElementUtilBaseから継承したメソッドのみである。タイプをチェックするための独立したインタフェースとして提供される。
Figure 0005535420
表28は、XMLドキュメント内の要素についてリモート・プロシージャ・コール(RPC)を処理する必要があるストレージ・マネージャのクライアント用インタフェース1312(IGrooveRPCServer)を示す。RPCサーバは”util”ベースクラスのサブクラス、すなわちIGrooveElementUtilBaseのメソッド全部がIGrooveRPCServerにも適用される。ストレージ・マネージャRPCサーバ・インタフェースは次のようなメソッドを含む。
Figure 0005535420
以下の表は、上記インタフェースにリストアップした列挙データタイプについて許容される値を示したものである。とくに、表29はGrooveSerializeTypeに列挙したデータタイプで許容される値を示す。
Figure 0005535420
表30は、GrooveSerializeOptionsで列挙したデータタイプで許容される値を示す。
Figure 0005535420
表31は、GrooveParseOptionsに列挙したデータタイプで許容される値を示す。
Figure 0005535420
表32は、GrooveContentTypeで列挙したデータタイプで許容される値を示す。
Figure 0005535420
表33は、GrooveXLinkShowで列挙したデータタイプに許容される値である。
Figure 0005535420
表34は、GrooveXLinkActuateで列挙したデータタイプに許容される値である。
Figure 0005535420
表35は、GrooveXLinkSerializeで列挙したデータタイプに許容される値である。
Figure 0005535420
表36は、GrooveMultiReaderQueueOptionsで列挙したデータタイプに許容される値である。
Figure 0005535420
ストレージ・マネージャの基本的データ・モデルはXMLである。XMLは半構造型、階層型、ハイパーリンク型データ・モデルである。多くの実世界の問題はこのような複雑な構造で良く表現されず、タブ型フォームでよりよく表現される。例えば、スプレッドシートやリレーショナル・データベースは単純なタブ型インタフェースを提供する。本発明の1つの態様では、表現を簡単にするため、XML構造は一般に「ワッフル」と呼ばれるタブ型ディスプレイにマッピングされる。ワッフルはデータの集合を表現する。このマッピングはストレージ・マネージャのコンポーネントである集合マネージャにより実行される。
集合は集合記述子により定義され、記述子はXMLドキュメントタイプの記述である。ドキュメント・スキーマと同様に、集合記述子は特殊なドキュメントで、集合データそれ自体とは別に保存される。集合データのソースは多く存在するが、集合データの主なソースはレコード・セット・エンジンと呼ばれるソフトウェア・ルーチンである。ユーザのコマンドにより駆動されて、レコード・セット・エンジンは集合の更新の組を集合マネージャへ伝播する。これらの更新に基づいて、集合マネージャはインデックス構造を更新し、通知システムを介してワッフル・ユーザに通知する。ワッフル・ユーザが更新された、あるいは新規の集合データを必要とする場合、ワッフル・ユーザは、集合マネージャを呼び出して更新データを含む新しい結果配列を返してもらう。ワッフル・ユーザはカーソルを使って集合内を移動することもできる。
以下のリストは集合記述子ドキュメントのXMLDTDコンテンツを示す。
<!ELEMENT Collection ANY>
<!ATTLIST Collection
Name CDATA #REQUIRED
Start (record|index) "record" #REQUIRED
Version CDATA #REQUIRED
Location CDATA #IMPLIED
>
<!ELEMENT Level (Column|Sorting|Level)*>
<!ATTLIST Level
Mapping (Flatten|Direct)
Links (Embed|Traverse) "Traverse"
>
<!ELEMENT Column EMPTY>
<!ATTLIST Column
Source CDATA #REQUIRED
Output CDATA #REQUIRED
MultiValue (OnlyFirst|MultiLine|Concatenate)" OnlyFirst"
MultiValueSeparator CDATA #IMPLIED","
>
<!ELEMENT Sorting SortDescription+>
<!ELEMENT SortDescription Group?|SortColumn+|lnterval?>
<!ATTLIST SortDescription
Name CDATA #REQUIRED
>
<!ELEMENT SortColumn EMPTY>
<!ATTLIST SortColumn
Source CDATA #REQUIRED
Order (Ascending|Descending) #REQUIRED
DataType CDATA #REQUIRED
Strength (Primary|Secondary|Tertiary|Identical) "Identical"
Decomposition (None|Canonical|Full) "None"
>
<!ELEMENT Group Group?|GroupColumn+>
<!ATTILIST Group
Grouping (Unique|Units) #REQUIRED
GroupUnits (Years|Months|Days|Hours)
AtGroupBreak (None|Count|Total) "None"
Order (Ascending|Descending) #REQUIRED
Strength (Primary|Secondary|Tertiary|Identical) "Identical"
Decomposition (None|Canonical|Full) "None"
>
<!ELEMENT GroupColumn EMPTY>
<!ATTLIST GroupColumn
Source CDATA #REQUIRED
>
<!ELEMENT Interval EMPTY>
<!ATTLIST Interval
Start CDATA #REQUIRED
End CDATA #REQUIRED
>
全ての集合Collectionは、集合を参照するのに使用する名前を持っている。Start属性は集合の「ルート(root)」をどのように発見するかを指定する。レコード・ルートのある集合は、丁度一組のレコードで、一方インデックスで始まる集合はインデックス、更にレコードの組を経由して移動される。インデックスは一致(conconrdance)又は完全にテキストである。オプションのLocation属性はルートのどこで実際に開始するかを識別する相対URLである。
レベル(Level)は出力階層の一部のコンテンツを定義する。あるレベルはそのレベルのカラム、そのレベルにあるレコードの順序又はグループ化、サブレベルの定義で構成される。レベルはマッピング(Mapping)属性を介してソース・レコード・ストリームのレコードに関連付けられる。マッピングがダイレクト(Direct)の場合には、レベルは一つのソースレコード・タイプを表わす。マッピングが水平(Flatten)の場合には、レベルはソースレコード・タイプとそのレコードの全ての子孫を含む。水平(Flatten)マッピングは集合内のそのレベルだけ、又は最低レベルにのみ指定される。リンク(Link)属性は、リンク属性のあるレコードをどのように処理するかを指定する。リンクがTraversedの場合、レコードは独立したレベルとして出力される。リンクがEmbeddedの場合、ソースレコードの子供レコードはちょうどこれがソースレコードの一部であるかのように見える。
カラム(Column)は、ソースフィールドと出力配列カラムの間のマッピングを定義する。ソース(Source)属性は、ソースレコードでのXSLTパス表現である。結果(Result)属性は、結果配列のフィールドの名前である。多値(MultiValue)及び多値セパレータ(MultiValueSeparator)属性は、多値ソース値が結果にどのように返されるかを定義する。
全ての集合は、少なくとも一つの定義済み順序を持つ必要がある。順序はソート済みcollationか、集合関数による多レベルグループ化ができる。
SortColumn要素は、SortDescription内の集合特性を定義する。ソース(Source)属性は、ソートしようとする出力カラムの名前を定義する。順序(Order)は、昇順又は降順のどちらかでなければならない。強度(Strength)と分解(Decomposition)の値は、ユニコード(Unicode)に定義されているのと同じ意味を持つ入力パラメータである。
2種類のグループ化は、ユニーク値によるものと単位によるものである。集合がユニーク値によりグループ化された場合、同じGroupColumn値の全部のレコードが同じグループに統合される──グループ間の境界はGroupColumn値の変化で起こる。集合が単位でグループ化される場合、同じGroupColumn値を持つ全てのレコードは、GroupUnitsの値で解決され、同じグループに一緒にされる。例えば、GroupUnitsが”Days”の場合、任意の日(day)についての全レコードが同じグループになる。AtGroupBreakが指定された場合、各々の値又は単位区切り(unit brake)の値で集合関数の結果を含む合成された行が返される。
GroupColumnは、グループ化しようとする結果カラムを識別する。
インターバル(Interval)は、範囲を定義する各レコードの二つのフィールドを識別する。開始(Start)と終了(End)のデータタイプは数値か日時のどちらかでなければならない。
以下の例は6つのソート順序で簡単な文書説明レコード・ビューについての集合記述子文書を示したものである。
<Collection Name="Main" Start="Record" Version="0,1,0,0">
<Level Mapping="Flatten">
<Column Source="Title" Output="Title"/>
<Column Source="_Modified" Output="_Modified"/>
<Column Source="_Created By" Output="_CreatedBy"/>
<Sorting>
<SortDescription Name="ByAscModified">
<SortColumn Source="_Modified" Order="Ascending"
DataType="DateTime"/>
</SortDescription>
<SortDescription Name="ByDescModified">
<SortColumn Source="_Modified"
Order="Descending' DataType="DateTime"/>
</SortDescription>
<SortDescription Name="ByAscAuthor">
<SortColumn Source="_CreatedBy"
Order="Ascending" DataType="String"/>
</SortDescription>
<SortDescription Name='ByDescAuthor">
<SortColumn Source="_CreatedBy"
Order="Descending" DataType="String"/>
</SortDescription>
<SortDescription Name="ByAscTitle">
<SortColumn Source="Title" Order="Ascending"
DataType="String"/>
</SortDescription>
<SortDescription Name="ByOrdinal">
<SortColumn Source="" Order="Ordinal"
DataType="Long"/>
</SortDescription>
</Sorting>
</Level>
</Collection>
以下の例は、カレンダー・ビューの集合記述子を示す。上の例と同様だが、ソート記述に多少の変化があり、集合は日付間隔の範囲で順序付けられることに注意する。
<Collection Name="Main" Start="Record" Version="0,1,0,0">
<Level Mapping="Flatten">
<Column Source="from-attributes(Subject)"
Output="Subject"/>
<Column Source="from-attributes(Start)"
output="Start"/>
<Column Source="from-attributes(End)"
Output="End"/>
<Column Source="from-attributes(RecurrenceEnd)"
Output="RecurrenceEnd"/>
<Column Source="from-attributes(IsAllDay)"
Output="IsAllDay"/>
<Column Source="from-attributes(IsRecurrent)"
Output="IsRecurrent"/>
<Sorting>
<SortDescription Name="DateRanges">
<Interval Start="Start" End="End"/>
</SortDescription>
</Sorting>
</Level>
</Collection>
基本的ストレージ・マネージャと同様、集合マネージャは、オブジェクト指向環境で実装される。従って、集合マネージャそれ自体と、集合、ワッフル、カーソル、結果配列、レコードセット・エンジンを含む、集合コンポーネントの全部がオブジェクトとして実装される。これらのオブジェクト、そのインタフェース、基盤となる構造や集合マネージャとのインタフェースに使用されるAPIは図14に示してある。APIは図15との関連で更に詳細に説明する。図14を参照すると、集合マネージャは集合操作API1402経由で集合への共有アクセスを提供するが、クライアント・アプリケーションの完全なプログラミング・モデルを有効にするため、集合のコンテクスト内部に追加の通信及び同期動作が提供される。例えば、ユーザはエンジンAPI1404を用いてレコードセット・エンジン1412を制御できる。エンジンAPI1404のコマンド制御下で、レコードセット・エンジン1412は、すでに説明した分散仮想オブジェクト・システム1410へ集合の更新セットを伝播する。これらの更新に基づいて、分散仮想オブジェクト・システム1410はインデックスとやその他の構造を更新する。
他のクライアント・コンポーネントは、例えば集合マネージャによって管理されているワッフルなど、コンポーネント内部の変更に注意する必要がある。そのため、集合マネージャはこれらのクライアント・コンポーネントのために重要性に基づく通知システム1406へのインタフェース1400を提供する。通知システム1406は集合を表わすオブジェクト内の値1408が変化したときの重要度を登録してあるクライアント・コンポーネント・リスナーのために通知を提供する。
集合データは、集合オブジェクト、レコード・オブジェクト、ワッフル・オブジェクト、カーソル・オブジェクト、結果配列オブジェクトを含む、一組のオブジェクト1408によって表現される。オブジェクトは、集合操作API1402によって直接操作することが可能である。集合関連オブジェクト1408は、実際には、上記で詳細に説明した分散仮想オブジェクト・システム1410によって実装される。
図15と以下の表は、本発明の集合マネージャの好適な実施態様を実装するのに使用されるオブジェクトの各々についてのインタフェースの記述を含む。ストレージ・マネージャの実装と同様に、これらのオブジェクトは、コモン・オブジェクト・モデル(COM)に準拠して設計されているが、他のインタフェースのスタイルやオブジェクト・モデルを使用して実装することも可能である。
表37は、集合で実行される主要な動作についての基本的枠組み(framework)を内包する集合マネージャについてのインタフェース1500(IGrooveCollectionManager)を示している。集合マネージャのインタフェースは次のようなメソッドを含む。
Figure 0005535420
表38は、集合について実行される主な動作についての基本的枠組み(framework)を内包する集合のためのインタフェース1502(IGrooveCollection)を示したものである。集合インタフェースは次のようなメソッドを含む。
Figure 0005535420
Figure 0005535420
Figure 0005535420
表39は、「有意な」イベントが集合内で発生した場合に通知するように希望している集合マネージャのクライアント用インタフェース1504(IGrooveCollectionListener)を示す。有意なイベントはどの時点でも発生することがあり、更新、追加、削除、親再設定、又は集合要素の順列位置での変更を含む。集合マネージャ・リスナー・インタフェースは次のようなメソッドを含む。
Figure 0005535420
表40は、集合内のカーソルを移動したい集合マネージャのクライアント用インタフェース1506(IGrooveCollectionCursor)を示す。集合はあらゆる時点で1つ以上のカーソルをアクティブにして持つことができる。集合マネージャ・カーソル・インタフェースは次のようなメソッドを含む。
Figure 0005535420
以下の表は、上記のインタフェースにリストした列挙データ・タイプについて許容される値を示したものである。更に詳しくは、表41ではGrooveCollationOrderで列挙されたデータ・タイプで許容される値を示す。
Figure 0005535420
表42は、GrooveCollectionNavigationOpで列挙したデータ・タイプについて許容される値を示す。
Figure 0005535420
表43は、GrooveCollectionCursorPosition に列挙したデータタイプで許容される値を示す。
Figure 0005535420
表44は、GrooveCollectionRowType に列挙したデータタイプで許容される値を示す。
Figure 0005535420
表45は、GrooveCollectionSynthTypeで列挙したデータタイプで許容される値を示す。
Figure 0005535420
表46は、GrooveCollectionUpdateOp で列挙したデータタイプに許容きれる値を示す。
Figure 0005535420
表47は、GrooveCollectionWaffleSystemに列挙したデータタイプで許容される値を示す。
Figure 0005535420
表48は、GrooveCollectionRecordIDに列挙したデータタイプで許容される値を示す。
Figure 0005535420
表49は、GrooveSortOrderに列挙したデータタイプで許容される値を示す。
Figure 0005535420
上記の実施態様のソフトウェアによる実装は、例えばコンピュータで読み取り可能な媒体、例えばディスケットや、CD−ROM、ROMメモリ又は固定ディスクなどの有形媒体上に固定されているか、媒体上でモデムを介してあるいは他のインタフェース装置を介して、コンピュータ・システムへ伝送可能な一連のコンピュータ命令を含む。媒体は、光又はアナログ通信線を含み、これに制限されない有形媒体としたり、赤外線又はその他の伝送技術を含み、これに制限されない無線技術で実装することができる。これはインターネットとすることもできる。一連のコンピュータ命令は、本発明に関して本明細書ですでに説明した機能の全部又は一部を実現する。このようなコンピュータ命令が、多くのコンピュータ・アーキテクチャ、あるいはオペレーティング・システムで使用する多数のプログラミング言語で書けることは、当業者には理解されよう。更に、このような命令は、半導体、磁気、光、又はその他のメモリ装置を含み、これに制限されない現在又は将来の何らかのメモリ技術、を用いて保存したり、又は光、赤外線、マイクロ波、あるいはその他の通信技術を含み、これに制限されない現在又は将来の他の通信技術を用いて伝送することができる。このようなコンピュータ・プログラム製品が、印刷した又は電子化された説明を伴ったリムーバブル媒体、例えばシュリンクラップ・ソフトウェアとして配布される、コンピュータ・システムの、例えばシステムのROM又は固定ディスク上にプリロードされる、又は例えばインターネット又はWWW(World Wide Web)などのネットワーク上のサーバ又は電子掲示板システムから配布されることを想定している。本発明の代表的実施態様を開示したが、本発明の利点の幾つかを実現する様々な変化や変更を本発明の精神と範囲から逸脱することなく成し得ることは、当業者には明らかであろう。例えば、説明は特定のハードウェア・システムとオペレーティング・システムを指向したものだったが、他のハードウェアやオペレーティング・システム・ソフトウェアを説明したのと同じ方法で使用できることは、当業者には自明であろう。特定の関数を実現するために使用される特定の命令などの他の態様や、本発明の概念に対するその他の変更は添付の請求の範囲に含まれることを意図している。
図1は、本発明のストレージ・マネージャ・システムを実行できるコンピュータ・システムの略図である。 図2は、インメモリ・ストレージ・マネージャと永続的ストレージの関連性を示す略ブロック図である。 図3は、オブジェクト集合としてストレージ・マネージャ・メモリ上のXMLドキュメント表現を示す略ブロック図である。 図4Aは、XML要素にコードを結合する際に関係するコンポーネントを示す略ブロック図である。 図4Bは、要素に結合されたプログラム・コードを取り出す際に関係するステップを示すフローチャートである。 図5は、XMLテキスト・ドキュメントとバイナリ・サブドキュメントとの関連を示す。 図6は、他のプロセスでのストレージ・マネージャの主要な内部パーツを示す略ブロック図である。 図7は、プロセス間のオブジェクトを同期するためのメカニズムを示す。 図8は、ストレージ・マネージャの主要内部パーツを介してストレージ・マネージャAPIからの主制御パスを示す略図である。 図9は、本発明のオブジェクト指向実装により構築されたストレージ・マネージャインタフェースの略図である。 図10は、ストレージ・マネージャにより定義され、リンクの処理中又は要素RPC処理中に呼び出される、本発明のオブジェクト指向実装により構築されたインタフェースの略図である。 図11は、本発明のオブジェクト指向実装により構築されたデータベース及びトランザクション・インタフェースの略図である。 図12は、本発明のオブジェクト指向実装により構築されたドキュメント及び要素のインタフェースの略図である。 図13は、本発明のオブジェクト指向実装により構築された要素通信及び同期インタフェースの略図である。 図14は、集合の主要な内部パーツとストレージ・マネージャを介した集合マネージャAPIからの主制御パスを示す略図である。 図15は、本発明のオブジェクト指向実装により構築された集合マネージャ・インタフェースの略図である。

Claims (12)

  1. 永続性メモリ内のXML準拠ドキュメントを表現管理するための装置であって、前記装置は、処理装置と、ホーム・プロセスである第1のプロセスで実行する第1のアプリケーション・プログラムと、第2のプロセスで実行する第2のアプリケーション・プログラムと、複数のプロセスからオブジェクトに対するアクセスを同期するように適合された分配共有メモリ・システムとを備え、前記XML準拠ドキュメントのコピーが第1の複数の仮想オブジェクトおよび第2の複数の仮想オブジェクトとしてそれぞれ、前記分配共有メモリ・システムの一部を構成する前記第1のプロセスに関連付けられた第1の分散共有メモリ・システムおよび前記第2のプロセスに関連付けられた第2の分散共有メモリ・システムに格納され、
    前記装置は、さらに、
    前記第1のアプリケーションから呼び出されることが可能なメソッドを含む第1のストレージ・マネージャ・インタフェース・プログラムであって、前記第1のプロセスに関連づけられた処理装置が、該メソッドの実行を介して、前記第1の分散共有メモリ・システムに前記第1の複数の仮想オブジェクトとして格納された前記XML準拠ドキュメントのコピー上で読み取り及び/又は書き込み動作を実行し、前記第1の複数の仮想オブジェクトにアクセスする、第1のストレージ・マネージャ・インタフェース・プログラムと、
    前記第2のアプリケーションから呼び出されることが可能なメソッドを含む第2のストレージ・マネージャ・インタフェース・プログラムであって、前記第2のプロセスに関連付けられた処理装置が、該メソッドの実行を介して、前記第2の分散共有メモリ・システムに前記第2の複数の仮想オブジェクトとして格納された前記XML準拠ドキュメントのコピー上で読み取り及び/又は書き込み動作を実行し、前記第2の複数の仮想オブジェクトにアクセスする、第2のストレージ・マネージャ・インタフェース・プログラムと
    を備え、
    前記第1のアプリケーションおよび第2のアプリケーションはそれぞれ、XML準拠ドキュメントのコピー上の読み取り及び/又は書き込み動作を実行することができ、
    前記第1のプロセスに関連づけられた処理装置が前記第1のストレージ・マネージャ・インタフェース・プログラム中のメソッドを実行して、前記第1の分散共有メモリ・システムに前記第1の複数の仮想オブジェクトとして格納された前記XML準拠ドキュメントのコピー上で読み取り及び/又は書き込み動作を実行し、
    前記第2のプロセスは前記装置で提供されるメッセージ通信プロトコルに対するノード間通信インタフェースを有し前記ノード間通信インタフェースは前記第1のプロセスと第2のプロセスのアドレスを操作するメソッドを含み、前記第2のプロセスに関連付けられた第2の分散共有メモリ・システムが第2の複数の仮想オブジェクトの最新のコピーを保有していない場合、前記第2のプロセスに関連づけられた処理装置が前記ノード間通信インタフェースを介して前記第1のプロセスに関連付けられた第1の分散共有メモリ・システムから第1の複数の仮想オブジェクトのコピーを要求することを特徴とする装置。
  2. 前記分散共有メモリ・システムは、前記第1の複数の仮想オブジェクトと前記第2の複数の仮想オブジェクトとの間の一貫性を維持することを特徴とする請求項1に記載の装置。
  3. 前記第1のプロセスは、前記第1のプロセスに関連づけられた処理装置が第1の複数の仮想オブジェクトを変更している場合に、前記第1の分散共有メモリ・システムが第1の複数の仮想オブジェクトをロックすることを要求するメソッドを含むこと、を特徴とする請求項2に記載の装置。
  4. 前記第2のプロセスは、前記第2のプロセスに関連づけられた処理装置が第2の複数の仮想オブジェクトを変更している場合に、前記第2の分散共有メモリ・システムが第2の複数の仮想オブジェクトをロックすることを要求するメソッドを含むこと、を特徴とする請求項2に記載の装置。
  5. 前記永続性メモリは、不揮発性記憶を備えることを特徴とする請求項1に記載の装置。
  6. 前記第1および第2のストレージ・マネージャ・インタフェース・プログラムの双方は、前記第1および第2の複数の仮想オブジェクトを操作するための同等なプログラム・コードを含むこと、を特徴とする請求項1に記載の装置。
  7. 永続性メモリ内のXML準拠ドキュメントを表現管理するための方法であって、前記XML準拠ドキュメントは、第1のアプリケーション・プログラムを実行するためのホーム・プロセスである第1のプロセスに関連づけられた処理装置によって、および第2のアプリケーション・プログラムを実行するための第2のプロセスに関連づけられた処理装置によって更新される、前記方法は、
    (a)前記第1のプロセスに関連づけられた処理装置および前記第2のプロセスに関連づけられた処理装置が、前記XML準拠ドキュメントのコピーである第1の複数の仮想オブジェクトおよび第2の複数の仮想オブジェクトをそれぞれ、前記第1のプロセスに関連付けられた第1の分散共有メモリ・システムおよび前記第2のプロセスに関連付けられた第2の分散共有メモリ・システムに格納するステップと、
    (b)前記第1のプロセスに関連づけられた処理装置が、前記第1のアプリケーションから呼び出されることが可能なメソッドを含む第1のストレージ・マネージャ・インタフェース・プログラムを使用するステップであって、前記第1のプロセスに関連づけられた処理装置が、該メソッドの実行を介して、前記第1の分散共有メモリ・システムに格納された前記XML準拠ドキュメントのコピー上で読み取り及び/又は書き込み動作を実行し、前記第1の複数の仮想オブジェクトにアクセスする、ステップと、
    (c)前記第2のプロセスに関連づけられた処理装置が、前記第2のアプリケーションから呼び出されることが可能なメソッドを含む第2のストレージ・マネージャ・インタフェース・プログラムを使用するステップであって、前記第2のプロセスに関連づけられた処理装置が、該メソッドの実行を介して、前記第2のプロセスに関連付けられた第2の分散共有メモリ・システムに格納された前記XML準拠ドキュメントのコピー上で読み取り及び/書き込み動作を実行し、前記第2の複数の仮想オブジェクトにアクセスし、前記第2のプロセスに関連づけられた第2の分散共有メモリ・システムが第2の複数の仮想オブジェクトの最新のコピーを保有していない場合、前記第2にプロセスが有するメッセージ通信プロトコルに対するノード間通信インタフェースを使用して前記第2のプロセスに関連づけられた処理装置が前記第1のプロセスに関連づけられた前記第1の分散共有メモリ・システムから第1の複数の仮想オブジェクトのコピーを要求する、ステップであって、前記ノード間通信インタフェースは前記第1のプロセスと前記第2のプロセスのアドレスを操作するメソッドを有する、ステップ
    を備え、
    前記第1のアプリケーションおよび第2のアプリケーションのそれぞれは、XML準拠ドキュメントのコピー上の読み取り及び/又は書き込み動作を実行することができることを特徴とする方法。
  8. 前記第1および第2の分散共有メモリ・システムは、前記第1の複数の仮想オブジェクトと前記第2の複数の仮想オブジェクトとの間の一貫性を維持することを特徴とする請求項7に記載の方法。
  9. 前記ステップ(b)は、前記第1のプロセスに関連づけられた処理装置が第1の複数の仮想オブジェクトを変更している場合に、第1の複数の仮想オブジェクトをロックするステップを含むこと、を特徴とする請求項7に記載の方法。
  10. 前記ステップ(c)は、前記第2のプロセスに関連づけられた処理装置が第2の複数の仮想オブジェクトを変更している場合に、第2の複数の仮想オブジェクトをロックすることを含むこと、を特徴とする請求項7に記載の方法。
  11. (e)第1のプロセスの制御下で、不揮発性記憶に前記第1の複数の仮想オブジェクトのコピーを格納するステップを更に備えること、を特徴とする請求項7に記載の方法。
  12. 永続性メモリ内のXML準拠ドキュメントを表現管理するためのコンピュータ・プログラムであって、前記XML準拠ドキュメントは、第1のアプリケーション・プログラムを実行するためのホーム・プロセスである第1のプロセスに関連づけられた処理装置によって、および第2のアプリケーション・プログラムを実行する第2のプロセスに関連付けられた処理装置によって、更新され、前記コンピュータ・プログラムは、
    前記第1のプロセスに関連づけられた処理装置および前記第2のプロセスに関連づけられた処理装置に、前記XML準拠ドキュメントのコピーである第1の複数の仮想オブジェクトおよび第2の複数の仮想オブジェクトをそれぞれ、前記第1のプロセスに関連付けられた第1の分散共有メモリ・システムおよび前記第2のプロセスに関連付けられた第2の分散共有メモリ・システムに格納させ、
    前記第1のプロセスに関連づけられた処理装置に、前記第1のアプリケーションから呼び出されることが可能なメソッドを含む第1のストレージ・マネージャ・インタフェース・プログラム内の該メソッドの実行を介して、前記第1の分散共有メモリ・システムに前記第1の複数の仮想オブジェクトとして格納された前記XML準拠ドキュメントのコピー上で読み取り及び/又は書き込み動作を実行させ、前記第1の複数の仮想オブジェクトにアクセスさせ、
    前記第2のプロセスに関連づけられた処理装置に、前記第2のアプリケーションから呼び出されることが可能なメソッドを含む第2のストレージ・マネージャ・インタフェース内の該メソッドの実行を介して、前記第2の分散共有メモリ・システムに前記第2の複数の仮想オブジェクトとして格納された前記XML準拠ドキュメントのコピー上で読み取り及び/書き込み動作を実行させ、前記第2の複数のオブジェクトにアクセスさせ、前記第2のプロセスに関連づけられた第2の分散共有メモリ・システムが第2の複数の仮想オブジェクトの最新のコピーを保有していない場合、前記第2のプロセスに関連づけられた処理装置に、前記第2にプロセスが有するメッセージ通信プロトコルに対するノード間通信インタフェースであり前記第1のプロセスと前記第2のプロセスのアドレスを操作するメソッドを有するノード間通信インタフェースを使用して、前記第1のプロセスに関連づけられた前記第1の分散共有メモリ・システムから第1の複数の仮想オブジェクトのコピーを要求させ、
    前記第1のアプリケーションおよび第2のアプリケーションのそれぞれは、XML準拠ドキュメントのコピー上の読み取り及び/又は書き込み動作を実行することができることを特徴とするコンピュータ・プログラム。
JP2002502637A 2000-06-06 2001-06-01 Xmlドキュメントの効率的管理の方法及び装置 Expired - Fee Related JP5535420B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/588,195 US6941510B1 (en) 2000-06-06 2000-06-06 Method and apparatus for efficient management of XML documents
US09/588,195 2000-06-06
PCT/US2001/017726 WO2001095155A2 (en) 2000-06-06 2001-06-01 Method and apparatus for efficient management of xml documents

Publications (3)

Publication Number Publication Date
JP2004515836A JP2004515836A (ja) 2004-05-27
JP2004515836A5 JP2004515836A5 (ja) 2008-09-04
JP5535420B2 true JP5535420B2 (ja) 2014-07-02

Family

ID=24352866

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002502637A Expired - Fee Related JP5535420B2 (ja) 2000-06-06 2001-06-01 Xmlドキュメントの効率的管理の方法及び装置

Country Status (8)

Country Link
US (3) US6941510B1 (ja)
EP (1) EP1366431B1 (ja)
JP (1) JP5535420B2 (ja)
KR (1) KR100836350B1 (ja)
AU (1) AU2001265288A1 (ja)
CA (2) CA2713439C (ja)
IL (2) IL153265A0 (ja)
WO (1) WO2001095155A2 (ja)

Families Citing this family (184)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7203491B2 (en) 2001-04-18 2007-04-10 Space Data Corporation Unmanned lighter-than-air safe termination and recovery methods
US7356390B2 (en) 1999-06-29 2008-04-08 Space Data Corporation Systems and applications of lighter-than-air (LTA) platforms
US7000230B1 (en) 2000-06-21 2006-02-14 Microsoft Corporation Network-based software extensions
US7155667B1 (en) 2000-06-21 2006-12-26 Microsoft Corporation User interface for integrated spreadsheets and word processing tables
US7346848B1 (en) 2000-06-21 2008-03-18 Microsoft Corporation Single window navigation methods and systems
US7624356B1 (en) 2000-06-21 2009-11-24 Microsoft Corporation Task-sensitive methods and systems for displaying command sets
US6948135B1 (en) 2000-06-21 2005-09-20 Microsoft Corporation Method and systems of providing information to computer users
US6883168B1 (en) 2000-06-21 2005-04-19 Microsoft Corporation Methods, systems, architectures and data structures for delivering software via a network
US7191394B1 (en) 2000-06-21 2007-03-13 Microsoft Corporation Authoring arbitrary XML documents using DHTML and XSLT
US6832215B2 (en) * 2000-07-21 2004-12-14 Microsoft Corporation Method for redirecting the source of a data object displayed in an HTML document
US7613810B2 (en) * 2000-09-27 2009-11-03 Nokia Inc. Segmenting electronic documents for use on a device of limited capability
US9600842B2 (en) * 2001-01-24 2017-03-21 E-Numerate Solutions, Inc. RDX enhancement of system and method for implementing reusable data markup language (RDL)
US9908608B2 (en) 2001-04-18 2018-03-06 Space Data Corporation Systems and applications of lighter-than-air (LTA) platforms
US9643706B2 (en) 2001-04-18 2017-05-09 Space Data Corporation Systems and applications of lighter-than-air (LTA) platforms
US9632503B2 (en) 2001-04-18 2017-04-25 Space Data Corporation Systems and applications of lighter-than-air (LTA) platforms
US20030093565A1 (en) * 2001-07-03 2003-05-15 Berger Adam L. System and method for converting an attachment in an e-mail for delivery to a device of limited rendering capability
EP1280054A1 (en) * 2001-07-27 2003-01-29 Sap Ag Method and computer system for separating and processing layout information and data of a document
EP1280053B1 (en) * 2001-07-27 2010-02-24 Sap Ag Method and computer system for providing and processing a human interface description
EP1280055B1 (en) * 2001-07-27 2010-04-14 Sap Ag Method and computer system for creating and processing a browser compliant human interface description
US7353287B2 (en) * 2001-09-26 2008-04-01 Adobe Systems Incorporated Marked foreign data blocks
US20030120758A1 (en) * 2001-12-21 2003-06-26 Koninklijke Philips Electronics N.V. XML conditioning for new devices attached to the network
US7007024B2 (en) * 2002-03-29 2006-02-28 Panasas, Inc. Hashing objects into multiple directories for better concurrency and manageability
KR20040000894A (ko) * 2002-06-26 2004-01-07 공용해 온톨로지를 바탕으로 한 포괄적 디티디 생성 방법
US7650566B1 (en) 2002-06-28 2010-01-19 Microsoft Corporation Representing list definitions and instances in a markup language document
US7562295B1 (en) 2002-06-28 2009-07-14 Microsoft Corporation Representing spelling and grammatical error state in an XML document
US7584419B1 (en) 2002-06-28 2009-09-01 Microsoft Corporation Representing non-structured features in a well formed document
US7565603B1 (en) 2002-06-28 2009-07-21 Microsoft Corporation Representing style information in a markup language document
US7533335B1 (en) * 2002-06-28 2009-05-12 Microsoft Corporation Representing fields in a markup language document
US7523394B2 (en) 2002-06-28 2009-04-21 Microsoft Corporation Word-processing document stored in a single XML file that may be manipulated by applications that understand XML
US7607081B1 (en) 2002-06-28 2009-10-20 Microsoft Corporation Storing document header and footer information in a markup language document
US20040034622A1 (en) * 2002-08-13 2004-02-19 Espinoza Danny Javier Applications software and method for authoring and communicating multimedia content in a multimedia object communication and handling platform
RU2316048C2 (ru) 2002-08-23 2008-01-27 Эл Джи Электроникс Инк. Способ запроса/доставки электронного документа, основанный на расширяемой спецификации языка (xml)
US20040054969A1 (en) * 2002-09-16 2004-03-18 International Business Machines Corporation System and method for generating web services definitions for MFS-based IMS applications
US7130893B2 (en) 2003-05-19 2006-10-31 International Business Machines Corporation System and method for representing MFS control blocks in XML for MFS-based IMS applications
US7421701B2 (en) 2002-09-16 2008-09-02 International Business Machines Corporation System for facilitating transactions between thin-clients and message format service (MFS)-based information management system (IMS) applications
US20040103370A1 (en) * 2002-11-27 2004-05-27 International Business Machines Corporation System and method for rendering MFS XML documents for display
US7397468B2 (en) * 2002-09-30 2008-07-08 Pitney Bowes Inc. Method and system for creating a document having metadata
US7167586B2 (en) * 2002-09-30 2007-01-23 Pitney Bowes Inc. Method and system for remote form completion
US7343042B2 (en) * 2002-09-30 2008-03-11 Pitney Bowes Inc. Method and system for identifying a paper form using a digital pen
US7417773B2 (en) * 2002-09-30 2008-08-26 Pitney Bowes Inc. Method and system for creating and sending a facsimile using a digital pen
KR100636909B1 (ko) 2002-11-14 2006-10-19 엘지전자 주식회사 확장성 표기 언어 기반의 전자문서 버전 매김 및 버전을이용한 갱신 문서 제공 방법
WO2004059505A1 (en) * 2002-12-17 2004-07-15 Systemauto System, method and computer program product for sharing information in a distributed framework
US7949937B2 (en) * 2002-12-31 2011-05-24 Business Objects Software Ltd Apparatus and method for delivering portions of reports
US7480657B1 (en) * 2003-01-06 2009-01-20 Cisco Technology, Inc. Caching information for multiple service applications
JP4077329B2 (ja) * 2003-01-31 2008-04-16 株式会社東芝 トランザクション処理システム、並行制御方法及びプログラム
US7827480B2 (en) * 2003-02-28 2010-11-02 Hewlett-Packard Development Company, L.P. System and method of using a transactional unit comprised of transactional subunits
US7418659B2 (en) * 2003-02-28 2008-08-26 Microsoft Corporation System and method for declaring a resource within a markup document
US7120618B2 (en) * 2003-02-28 2006-10-10 Microsoft Corporation System and method for defining and using subclasses declaratively within markup
US9164750B2 (en) * 2003-02-28 2015-10-20 Hewlett-Packard Development Company, L.P. Managing target computer using encapsulated file
US7213201B2 (en) 2003-03-03 2007-05-01 International Business Machines Corporation Meta editor for structured documents
US20040177315A1 (en) 2003-03-03 2004-09-09 International Business Machines Corporation Structured document bounding language
US7275216B2 (en) * 2003-03-24 2007-09-25 Microsoft Corporation System and method for designing electronic forms and hierarchical schemas
US7415672B1 (en) 2003-03-24 2008-08-19 Microsoft Corporation System and method for designing electronic forms
US7370066B1 (en) 2003-03-24 2008-05-06 Microsoft Corporation System and method for offline editing of data files
US7296017B2 (en) 2003-03-28 2007-11-13 Microsoft Corporation Validation of XML data files
US7913159B2 (en) 2003-03-28 2011-03-22 Microsoft Corporation System and method for real-time validation of structured data files
US7653876B2 (en) * 2003-04-07 2010-01-26 Adobe Systems Incorporated Reversible document format
GB2401215A (en) * 2003-05-02 2004-11-03 David Nicholas Rousseau Digital Library System
US7562081B2 (en) * 2003-05-19 2009-07-14 Teradata Us, Inc. Storing element-based descriptions of documents in a database
US20040243559A1 (en) * 2003-05-30 2004-12-02 Brundege Mark Andrew Client-side search engines
US7526753B2 (en) * 2003-06-18 2009-04-28 Microsoft Corporation System and method for creating, managing and using code segments
US7296223B2 (en) * 2003-06-27 2007-11-13 Xerox Corporation System and method for structured document authoring
US7451392B1 (en) 2003-06-30 2008-11-11 Microsoft Corporation Rendering an HTML electronic form by applying XSLT to XML using a solution
US7406660B1 (en) 2003-08-01 2008-07-29 Microsoft Corporation Mapping between structured data and a visual surface
US7334187B1 (en) 2003-08-06 2008-02-19 Microsoft Corporation Electronic form aggregation
US7370280B2 (en) * 2003-09-23 2008-05-06 International Business Machines Corporation Apparatus, system, and method for defining a web services interface for MFS-based IMS applications
US8055907B2 (en) * 2003-10-24 2011-11-08 Microsoft Corporation Programming interface for a computer platform
US8640090B2 (en) * 2003-11-10 2014-01-28 Sap Ag Active and modifiable data dictionary
US7617447B1 (en) 2003-12-09 2009-11-10 Microsoft Corporation Context free document portions
US7418508B2 (en) 2004-01-26 2008-08-26 International Machines Corporation System and method to facilitate XML enabled IMS transactions between a remote client and an IMS application program
US8819072B1 (en) 2004-02-02 2014-08-26 Microsoft Corporation Promoting data from structured data files
US20050172217A1 (en) * 2004-02-04 2005-08-04 Yiu-Ming Leung System and method for schemaless data mapping with nested tables
US7430711B2 (en) * 2004-02-17 2008-09-30 Microsoft Corporation Systems and methods for editing XML documents
US7496837B1 (en) 2004-04-29 2009-02-24 Microsoft Corporation Structural editing with schema awareness
US8661332B2 (en) 2004-04-30 2014-02-25 Microsoft Corporation Method and apparatus for document processing
US7383500B2 (en) 2004-04-30 2008-06-03 Microsoft Corporation Methods and systems for building packages that contain pre-paginated documents
KR100627587B1 (ko) * 2004-05-14 2006-09-25 김영근 웹브라우저 상에서 xml 문서를 생성하는 방법
US7774620B1 (en) 2004-05-27 2010-08-10 Microsoft Corporation Executing applications at appropriate trust levels
US20070182990A1 (en) * 2004-06-17 2007-08-09 Objective Systems Pty Limited Reproduction of documents into requested forms
US7108433B2 (en) * 2004-06-24 2006-09-19 Eastman Kodak Company Thermal processor employing varying roller spacing
US7627589B2 (en) * 2004-08-10 2009-12-01 Palo Alto Research Center Incorporated High performance XML storage retrieval system and method
US7730041B2 (en) * 2004-08-25 2010-06-01 Microsoft Corporation Data abstraction based serialization
US7692636B2 (en) 2004-09-30 2010-04-06 Microsoft Corporation Systems and methods for handwriting to a screen
US7617450B2 (en) * 2004-09-30 2009-11-10 Microsoft Corporation Method, system, and computer-readable medium for creating, inserting, and reusing document parts in an electronic document
US7957723B2 (en) * 2004-10-01 2011-06-07 Nokia Corporation Sharing information feed data
GB2419436A (en) 2004-10-25 2006-04-26 Digitalml Ltd Extensible object-modelling mechanism
US8487879B2 (en) 2004-10-29 2013-07-16 Microsoft Corporation Systems and methods for interacting with a computer through handwriting to a screen
US7712022B2 (en) 2004-11-15 2010-05-04 Microsoft Corporation Mutually exclusive options in electronic forms
US7721190B2 (en) 2004-11-16 2010-05-18 Microsoft Corporation Methods and systems for server side form processing
US7904801B2 (en) 2004-12-15 2011-03-08 Microsoft Corporation Recursive sections in electronic forms
US7620889B2 (en) * 2004-12-20 2009-11-17 Microsoft Corporation Method and system for linking data ranges of a computer-generated document with associated extensible markup language elements
US7614000B2 (en) * 2004-12-20 2009-11-03 Microsoft Corporation File formats, methods, and computer program products for representing presentations
US7617451B2 (en) * 2004-12-20 2009-11-10 Microsoft Corporation Structuring data for word processing documents
US7617444B2 (en) * 2004-12-20 2009-11-10 Microsoft Corporation File formats, methods, and computer program products for representing workbooks
US7770180B2 (en) 2004-12-21 2010-08-03 Microsoft Corporation Exposing embedded data in a computer-generated document
US7752632B2 (en) 2004-12-21 2010-07-06 Microsoft Corporation Method and system for exposing nested data in a computer-generated document in a transparent manner
US7945590B2 (en) 2005-01-06 2011-05-17 Microsoft Corporation Programmability for binding data
US7937651B2 (en) 2005-01-14 2011-05-03 Microsoft Corporation Structural editing operations for network forms
US7668873B2 (en) * 2005-02-25 2010-02-23 Microsoft Corporation Data store for software application documents
US7752224B2 (en) 2005-02-25 2010-07-06 Microsoft Corporation Programmability for XML data store for documents
US7725834B2 (en) 2005-03-04 2010-05-25 Microsoft Corporation Designer-created aspect for an electronic form template
US8010515B2 (en) 2005-04-15 2011-08-30 Microsoft Corporation Query to an electronic form
US7739611B2 (en) * 2005-04-25 2010-06-15 Aol Inc. User interface with connectable elements
US9141402B2 (en) 2005-04-25 2015-09-22 Aol Inc. Providing a user interface
US7739691B2 (en) * 2005-04-29 2010-06-15 Microsoft Corporation Framework for declarative expression of data processing
EP1722307A1 (fr) * 2005-05-09 2006-11-15 Amadeus s.a.s Méthode dynamique de génération de documents XML à partir d'une base de données
US20060259854A1 (en) * 2005-05-10 2006-11-16 Microsoft Corporation Structuring an electronic document for efficient identification and use of document parts
US20060271509A1 (en) * 2005-05-24 2006-11-30 Ju Wu Apparatus and method for augmenting a report with parameter binding metadata
JP4110154B2 (ja) * 2005-06-10 2008-07-02 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、コンピュータプログラム、記憶媒体
WO2007007529A1 (ja) * 2005-06-24 2007-01-18 Justsystems Corporation 文書処理装置および文書処理モジュール
US8200975B2 (en) 2005-06-29 2012-06-12 Microsoft Corporation Digital signatures for network forms
US7490300B2 (en) 2005-08-12 2009-02-10 Microsoft Corporation Copying and updating files
KR101159341B1 (ko) 2005-08-19 2012-06-25 삼성전자주식회사 Xdm 서비스 정보 관리 시스템 및 방법
US7953696B2 (en) 2005-09-09 2011-05-31 Microsoft Corporation Real-time synchronization of XML data between applications
US20070118495A1 (en) * 2005-10-12 2007-05-24 Microsoft Corporation Inverse hierarchical approach to data
JP2007148944A (ja) * 2005-11-30 2007-06-14 Ricoh Co Ltd 通信端末装置
US7574449B2 (en) * 2005-12-02 2009-08-11 Microsoft Corporation Content matching
US8001459B2 (en) 2005-12-05 2011-08-16 Microsoft Corporation Enabling electronic documents for limited-capability computing devices
US8984397B2 (en) * 2005-12-15 2015-03-17 Xerox Corporation Architecture for arbitrary extensible markup language processing engine
US7921367B2 (en) * 2005-12-20 2011-04-05 Oracle International Corp. Application generator for data transformation applications
US9207917B2 (en) 2005-12-20 2015-12-08 Oralce International Corporation Application generator for data transformation applications
US9286272B2 (en) * 2005-12-22 2016-03-15 Xerox Corporation Method for transformation of an extensible markup language vocabulary to a generic document structure format
US20070162848A1 (en) * 2006-01-09 2007-07-12 Apple Computer, Inc. Predictive styling
US7779343B2 (en) 2006-01-30 2010-08-17 Microsoft Corporation Opening network-enabled electronic documents
US7567956B2 (en) * 2006-02-15 2009-07-28 Panasonic Corporation Distributed meta data management middleware
US7869585B2 (en) 2006-03-17 2011-01-11 Microsoft Corporation Declarations for transformations within service sequences
US9460064B2 (en) * 2006-05-18 2016-10-04 Oracle International Corporation Efficient piece-wise updates of binary encoded XML data
WO2008020932A2 (en) * 2006-07-10 2008-02-21 Elephantdrive, Llc Abstracted and optimized online backup and digital asset management service
US8230332B2 (en) * 2006-08-30 2012-07-24 Compsci Resources, Llc Interactive user interface for converting unstructured documents
US20090300482A1 (en) * 2006-08-30 2009-12-03 Compsci Resources, Llc Interactive User Interface for Converting Unstructured Documents
AU2007290496A1 (en) * 2006-08-30 2008-03-06 Compsci Resources, Llc Dynamic information retrieval system for XML-compliant data
US20090064040A1 (en) * 2007-08-30 2009-03-05 Compsci Resources, Llc Dynamic Multi-Lingual Information Retrieval System for XML-Compliant Data
US8255790B2 (en) * 2006-09-08 2012-08-28 Microsoft Corporation XML based form modification with import/export capability
US9183321B2 (en) 2006-10-16 2015-11-10 Oracle International Corporation Managing compound XML documents in a repository
CN101170540A (zh) * 2006-10-24 2008-04-30 华为技术有限公司 一种xml文档管理方法和客户端、服务器
US20080104203A1 (en) * 2006-10-31 2008-05-01 Microsoft Corporation Viewing Digital Information Over a Network
JP5003131B2 (ja) * 2006-12-04 2012-08-15 富士ゼロックス株式会社 文書提供システム及び情報提供プログラム
US20070150494A1 (en) * 2006-12-14 2007-06-28 Xerox Corporation Method for transformation of an extensible markup language vocabulary to a generic document structure format
US7676524B2 (en) * 2007-01-31 2010-03-09 Microsoft Corporation Hierarchical cursor-based object model
US8745075B2 (en) 2007-03-26 2014-06-03 Xerox Corporation Notification method for a dynamic document system
US8279865B2 (en) * 2007-04-20 2012-10-02 John Giacomoni Efficient pipeline parallelism using frame shared memory
WO2009020260A1 (en) * 2007-08-03 2009-02-12 Electronics And Telecommunications Research Institute Apparatus and method for a query express
US8291310B2 (en) * 2007-08-29 2012-10-16 Oracle International Corporation Delta-saving in XML-based documents
WO2009043030A2 (en) 2007-09-28 2009-04-02 Xcerion Aktiebolag Network operating system
US7831540B2 (en) * 2007-10-25 2010-11-09 Oracle International Corporation Efficient update of binary XML content in a database system
US20090119415A1 (en) * 2007-11-02 2009-05-07 Chiang Chenhuei J System and method for representing mfs control blocks in xml for mfs-based ims applications
US8589788B2 (en) * 2007-12-19 2013-11-19 International Business Machines Corporation Methods, systems, and computer program products for automatic parsing of markup language documents
US8352509B2 (en) * 2007-12-19 2013-01-08 International Business Machines Corporation Methods, systems, and computer program products for accessing a multi-format data object
US8527867B2 (en) * 2008-01-18 2013-09-03 Oracle International Corporation Enabling users to edit very large XML data
US9058407B2 (en) * 2008-01-22 2015-06-16 Oracle International Corporation Persistent multimedia content versioning
US20110029587A1 (en) * 2008-03-31 2011-02-03 Fujii John M Updating Retrieval Codes In Response To File Transfers
US8195707B1 (en) * 2008-09-30 2012-06-05 Adobe Systems Incorporated Identifying and reacting to changes in an extensible automatic runtime object management system
US10114840B2 (en) * 2009-09-29 2018-10-30 Sap Se Customer data separation in a service provider scenario
US8255372B2 (en) 2010-01-18 2012-08-28 Oracle International Corporation Efficient validation of binary XML data
US8417714B2 (en) * 2010-01-22 2013-04-09 Oracle International Corporation Techniques for fast and scalable XML generation and aggregation over binary XML
US9141344B2 (en) * 2010-02-05 2015-09-22 Red Hat, Inc. Hover help support for application source code
US8631284B2 (en) * 2010-04-30 2014-01-14 Western Digital Technologies, Inc. Method for providing asynchronous event notification in systems
US8762682B1 (en) 2010-07-02 2014-06-24 Western Digital Technologies, Inc. Data storage apparatus providing host full duplex operations using half duplex storage devices
CN101945156B (zh) * 2010-09-01 2014-04-16 惠州Tcl移动通信有限公司 一种移动终端数据信息的备份方法及装置
US8819056B2 (en) * 2010-11-19 2014-08-26 International Business Machines Corporation Facilitation of search, list, and retrieval operations on persistent data set using distributed shared memory
US10756759B2 (en) 2011-09-02 2020-08-25 Oracle International Corporation Column domain dictionary compression
US8515904B1 (en) * 2012-03-29 2013-08-20 Emc Corporation Providing file sytem quota support for a file system having separated data and metadata
US8812523B2 (en) 2012-09-28 2014-08-19 Oracle International Corporation Predicate result cache
GB2507722A (en) * 2012-09-28 2014-05-14 Barclays Bank Plc Document management system taking actions based on extracted data
US10438169B2 (en) 2013-03-14 2019-10-08 Google Llc Systems and methods for providing binary data files for real-time collaboration
US10222953B2 (en) * 2014-04-30 2019-03-05 Disney Enterprises, Inc. Systems and methods for editing virtual content of a virtual space
US9560136B2 (en) * 2014-08-07 2017-01-31 Sap Se High speed communication protocol
WO2016032500A1 (en) * 2014-08-29 2016-03-03 Hewlett Packard Enterprise Development Lp Resource trees by management controller
US9703813B2 (en) * 2014-09-30 2017-07-11 Sap Se Data aging in hana using grading attributes
WO2016079602A1 (en) * 2014-11-17 2016-05-26 Morphisec Information Security Ltd. Malicious code protection for computer systems based on process modification
CA2972348C (en) 2014-12-24 2023-03-14 Space Data Corporation Breaking apart a platform upon pending collision
MX2017008552A (es) 2014-12-24 2018-03-15 Space Data Corp Tecnicas para lanzamiento de globo/aeronave inteligente y ubicación de ventana de recuperacion.
US10059421B2 (en) 2014-12-30 2018-08-28 Space Data Corporation Multifunctional balloon membrane
US10275430B2 (en) * 2015-06-29 2019-04-30 Microsoft Technology Licensing, Llc Multimodal sharing of content between documents
CN105302789B (zh) * 2015-12-03 2018-06-26 万达信息股份有限公司 一种卫生信息共享文档模板缓冲存储的编辑方法
CN107239264B (zh) 2016-03-28 2020-06-23 阿里巴巴集团控股有限公司 代码提示信息的生成方法及装置
US11010361B1 (en) * 2017-03-30 2021-05-18 Amazon Technologies, Inc. Executing code associated with objects in a hierarchial data structure
CN107463668B (zh) * 2017-08-02 2019-03-26 湖南新航动力信息科技有限公司 序列化和反序列化的方法及装置、计算机设备及存储介质
US11061880B2 (en) * 2018-01-25 2021-07-13 Hewlett-Packard Development Company, L.P. Data structure with identifiers
US11693832B2 (en) * 2018-03-15 2023-07-04 Vmware, Inc. Flattening of hierarchical data into a relational schema in a computing system
US11175919B1 (en) * 2018-12-13 2021-11-16 Amazon Technologies, Inc. Synchronization of concurrent computation engines
US11100075B2 (en) * 2019-03-19 2021-08-24 Servicenow, Inc. Graphical user interfaces for incorporating complex data objects into a workflow
US11392263B2 (en) * 2020-08-26 2022-07-19 Immersive Wisdom, Inc. Real-time geospatial collaboration system
US20230018387A1 (en) * 2021-07-06 2023-01-19 metacluster lt, UAB Dynamic web page classification in web data collection

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1888162A (en) 1932-11-15 eklund
US1626844A (en) 1925-09-08 1927-05-03 Graham Brothers Finger guard for foldable bus doors
US2557716A (en) 1945-12-07 1951-06-19 Moynahan Bronze Company Safety hinge
US2641792A (en) 1950-01-17 1953-06-16 Noble E Peeler Hinge guard
US2694234A (en) 1953-06-26 1954-11-16 Stanley Works Finger guard for swinging doors
US2910741A (en) 1956-11-02 1959-11-03 George W Houlsby Jr Safety device for swinging doors
US3302690A (en) 1964-05-04 1967-02-07 Raymond M Hurd Guard for multiple sectioned doors
US3359594A (en) 1965-04-02 1967-12-26 Pastoor Beno Johannes Folding closures
US3319697A (en) 1965-06-22 1967-05-16 John M Krohn Garage door guard
FR2282032A1 (fr) 1974-08-13 1976-03-12 Ippolito Marceau Dispositif de securite notamment pour feuillure de porte
US3941180A (en) 1974-12-30 1976-03-02 Winnebago Industries, Inc. Sectional door and guard rail assembly
US4269253A (en) 1979-06-13 1981-05-26 Ziegler Robert J Garage door and safety guard therefor
DE3726699C5 (de) 1987-08-11 2009-05-28 Hörmann KG Brockhagen Sektionaltorblatt
US5001862A (en) 1987-12-18 1991-03-26 Abraham Albenda Safety attachment for hinged side of doors
US4878267A (en) 1988-10-11 1989-11-07 Roach James F Resisting entry of an object into a space between the hinged edge of a door member hingedly attached to a associated jamb member and a surface of the jamb member
US5002114A (en) 1988-11-25 1991-03-26 Hormann Kg Brockhagen Overhead door
US5117350A (en) * 1988-12-15 1992-05-26 Flashpoint Computer Corporation Memory address mechanism in a distributed memory architecture
US5129441A (en) 1989-05-01 1992-07-14 Clopay Corporation Sectional doors and compressible flexible hinge assemblies
US5435108A (en) 1993-12-07 1995-07-25 Clopay Building Products Company Insulated garage door panel
US5522446A (en) 1994-06-15 1996-06-04 Wayne-Dalton Corp. Sectional overhead door
CA2152528C (en) * 1994-07-29 2000-04-18 Chung-Hwa Herman Rao Distributed systems with replicated files
US5819306A (en) * 1995-02-14 1998-10-06 General Magic Shadow mechanism for a modifiable object oriented system
US5761499A (en) * 1995-12-21 1998-06-02 Novell, Inc. Method for managing globally distributed software components
US5892946A (en) * 1995-09-12 1999-04-06 Alcatel Usa, Inc. System and method for multi-site distributed object management environment
GB2312766A (en) * 1996-05-01 1997-11-05 Ibm Transactional layer for object management system
US6061697A (en) 1996-09-11 2000-05-09 Fujitsu Limited SGML type document managing apparatus and managing method
US6026474A (en) * 1996-11-22 2000-02-15 Mangosoft Corporation Shared client-side web caching using globally addressable memory
US5782283A (en) 1997-04-03 1998-07-21 Raynor Garage Doors Garage door construction
US6044438A (en) * 1997-07-10 2000-03-28 International Business Machiness Corporation Memory controller for controlling memory accesses across networks in distributed shared memory processing systems
US6049853A (en) * 1997-08-29 2000-04-11 Sequent Computer Systems, Inc. Data replication across nodes of a multiprocessor computer system
US5974470A (en) * 1997-09-03 1999-10-26 Chicago-Soft, Ltd. System for reducing conflicts among dynamic link library modules by aliasing modules
US6633924B1 (en) * 1997-10-02 2003-10-14 Charles Wu Object synchronization between objects stores on different computers
US6442570B1 (en) * 1997-10-27 2002-08-27 Microsoft Corporation Object identification and data communication during an object synchronization process
US6067551A (en) * 1997-11-14 2000-05-23 Microsoft Corporation Computer implemented method for simultaneous multi-user editing of a document
US6219672B1 (en) * 1997-12-11 2001-04-17 Kabushiki Kaisha Toshiba Distributed shared memory system and method of controlling distributed shared memory
US6012098A (en) 1998-02-23 2000-01-04 International Business Machines Corp. Servlet pairing for isolation of the retrieval and rendering of data
JPH11238011A (ja) * 1998-02-23 1999-08-31 Nippon Telegr & Teleph Corp <Ntt> オブジェクト移動方法及びシステム及び分散オブジェクト管理装置及び分散オブジェクト管理プログラムを格納した記憶媒体
US6240429B1 (en) * 1998-08-31 2001-05-29 Xerox Corporation Using attached properties to provide document services
US6389589B1 (en) * 1998-09-21 2002-05-14 Microsoft Corporation Class store schema
US6523166B1 (en) * 1998-09-21 2003-02-18 Microsoft Corporation Method and system for on-demand installation of software implementations
US6324544B1 (en) * 1998-10-21 2001-11-27 Microsoft Corporation File object synchronization between a desktop computer and a mobile device
US6590589B1 (en) * 1998-11-30 2003-07-08 International Business Machines Corporation Automatic generation of fastpath applications
US6381605B1 (en) * 1999-05-29 2002-04-30 Oracle Corporation Heirarchical indexing of multi-attribute data by sorting, dividing and storing subsets
US7472349B1 (en) * 1999-06-01 2008-12-30 Oracle International Corporation Dynamic services infrastructure for allowing programmatic access to internet and other resources
US6446113B1 (en) * 1999-07-19 2002-09-03 Groove Networks, Inc. Method and apparatus for activity-based collaboration by a computer system equipped with a dynamics manager
US6640241B1 (en) * 1999-07-19 2003-10-28 Groove Networks, Inc. Method and apparatus for activity-based collaboration by a computer system equipped with a communications manager
US6675353B1 (en) * 1999-07-26 2004-01-06 Microsoft Corporation Methods and systems for generating XML documents
US6564377B1 (en) * 1999-07-26 2003-05-13 Microsoft Corporation Self-describing components within a software catalog
US6718516B1 (en) * 1999-09-30 2004-04-06 International Business Machines Corporation Method for verifying context between multiple related XML tags in document object model (DOM)
US7134072B1 (en) * 1999-10-13 2006-11-07 Microsoft Corporation Methods and systems for processing XML documents
US7120863B1 (en) * 1999-11-15 2006-10-10 International Business Machines Corporation Method, system, and program for interfacing with elements in a document
US6854120B1 (en) * 2000-01-14 2005-02-08 International Business Machines Corporation Accessing a ERP application over the internet using strongly typed declarative language files
US6810414B1 (en) * 2000-02-04 2004-10-26 Dennis A. Brittain System and methods for easy-to-use periodic network data capture engine with automatic target data location, extraction and storage
US7072896B2 (en) * 2000-02-16 2006-07-04 Verizon Laboratories Inc. System and method for automatic loading of an XML document defined by a document-type definition into a relational database including the generation of a relational schema therefor
US6490591B1 (en) * 2000-03-13 2002-12-03 Cisco Technology, Inc. Apparatus and method for storing complex structures by conversion of arrays to strings
US6883137B1 (en) * 2000-04-17 2005-04-19 International Business Machines Corporation System and method for schema-driven compression of extensible mark-up language (XML) documents
US7287259B2 (en) * 2000-04-24 2007-10-23 Microsoft Corporation Isolating assembly versions for binding to application programs
US6871344B2 (en) * 2000-04-24 2005-03-22 Microsoft Corporation Configurations for binding software assemblies to application programs
US6957439B1 (en) * 2000-05-09 2005-10-18 International Business Machines Corporation Method, system, and program for mapping objects in different language formats
US6675178B1 (en) * 2000-11-09 2004-01-06 Accenture Llp Method and system for enhancing a commercial transaction conducted via a communications network

Also Published As

Publication number Publication date
CA2713439C (en) 2013-04-23
US7581172B2 (en) 2009-08-25
US7721194B2 (en) 2010-05-18
WO2001095155A3 (en) 2003-10-02
KR20030047895A (ko) 2003-06-18
US20050165815A1 (en) 2005-07-28
AU2001265288A1 (en) 2001-12-17
EP1366431B1 (en) 2018-04-25
IL153265A (en) 2011-04-28
IL153265A0 (en) 2003-07-06
JP2004515836A (ja) 2004-05-27
CA2713439A1 (en) 2001-12-13
CA2412318A1 (en) 2001-12-13
CA2412318C (en) 2011-05-03
US20050171970A1 (en) 2005-08-04
WO2001095155A2 (en) 2001-12-13
KR100836350B1 (ko) 2008-06-09
EP1366431A2 (en) 2003-12-03
US6941510B1 (en) 2005-09-06

Similar Documents

Publication Publication Date Title
JP5535420B2 (ja) Xmlドキュメントの効率的管理の方法及び装置
CA2522309C (en) Retaining hierarchical information in mapping between xml documents and relational data
Seligman et al. XML's impact an databases and data sharing
Abiteboul et al. Data on the web: from relations to semistructured data and XML
JP4782017B2 (ja) 拡張可能なファイルシステムメタデータの作成及びファイルシステムコンテンツ処理のためのシステムと方法
US20030135825A1 (en) Dynamically generated mark-up based graphical user interfaced with an extensible application framework with links to enterprise resources
US7409636B2 (en) Lightweight application program interface (API) for extensible markup language (XML)
Bangalore et al. The UMLS Knowledge Source Server: An object model for delivering UMLS data
Maluf et al. Netmark: A schema-less extension for relational databases for managing semi-structured data dynamically
Bhowmick et al. Representation of web data in a web warehouse
US20040143577A1 (en) System and method for hierarchically invoking re-entrant methods on XML objects
Brahmia et al. An approach for schema versioning in multi-temporal XML databases
Wang XML Parsing Technique
Pokorný XML in enterprise systems
Stoica et al. Interoperability issues in accessing databases through Web Services
Phan et al. From Extensional Data to Intensional Data: AXML for XML
Zafar BS Computer and Information Science
Nirmal Efficient storage of XML: A comparative study
Seidel Metadata support for connecting application components asynchronously
Zeyao Review of XML Based on Patent Documents
Geetha Increasing Concurrency in XML Documents Using Semantic Locks
Maharry et al. Using XML and ADO. NET
Davis X-Databases-The Integration of XML into Enterprise Database Management Systems
Majcen et al. Architectural Design Document
Hata et al. XML, WHAT’S IT ALL ABOUT?

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20080516

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080602

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080602

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20080516

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080710

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110412

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120309

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120921

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130121

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20130122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130122

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130213

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20130329

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130701

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130913

RD15 Notification of revocation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7435

Effective date: 20130913

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140423

R150 Certificate of patent or registration of utility model

Ref document number: 5535420

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees