(57)【要約】  本発明は、データ記憶システムに関連するデータの操作を容易にするシステムおよび／または方法を提供し、データ記憶システムは、データモデルに関連する特徴および制約のうちの少なくとも一方を有する。データモデルは、データ記憶システムがデータベースに基づいたファイルシステムとなるようにデータ記憶システムを表すことができる。データ操作コンポーネントは、データモデルに関連するデータを操作することができ、そのようなシステムの完全性を保証するように制約および特徴の少なくとも一方を実施する。さらに、ＡＰＩコンポーネントを起動して、データ記憶システム内のデータの操作を実現することができる。
2008538632.tif 000002
【特許請求の範囲】
【請求項１】
データの操作を容易にするシステムであって、
タイプの複合インスタンスを部分的に表し、制約および特徴のうちの少なくとも一方を含むデータモデルと、
前記データモデルに関連するデータを操作し、前記制約および前記特徴のうちの少なくとも一方を実施するデータ操作コンポーネントと
を備えることを特徴とするシステム。
【請求項２】
前記データモデルは、少なくとも１つの永続エンティティと各エンティティごとの０個以上のサブエンティティとの階層モデルを定義して情報を複合タイプとして表すデータベースに基づいたシステムであるデータ記憶システムを表すことを特徴とする請求項１に記載のシステム。
【請求項３】
前記データの操作は、コピー、更新、置換、取得、設定、作成、削除、移動、および修正のうちの少なくとも１つであることを特徴とする請求項１に記載のシステム。
【請求項４】
前記データの操作に対応するセキュリティ技法を使用して前記データ記憶システム上で起動することのできるセキュリティコンポーネントをさらに備えることを特徴とする請求項１に記載のシステム。
【請求項５】
前記セキュリティ技法は、ユーザに関連するログイン、パスワード、生体的特徴、音声認識、およびセキュリティレベルのうちの少なくとも１つであることを特徴とする請求項４に記載のシステム。
【請求項６】
データベース内の前記データ記憶システムに関連するデータを永続させるＡＰＩコンポーネントをさらに備え、少なくとも１つの手続きが、前記データモデル制約および特徴のうちの少なくとも一方を実施するために使用されることを特徴とする請求項２に記載のシステム。
【請求項７】
前記データ記憶システムに関連する前記制約および特徴のうちの少なくとも一方に従ってデータを操作するための少なくとも１つの手続きを提供する手続きコンポーネントをさらに備えることを特徴とする請求項２に記載のシステム。
【請求項８】
前記データ記憶システムの特徴および制約のうちの少なくとも一方を前記データの操作と共に組み込むエンフォーサコンポーネントをさらに備えることを特徴とする請求項２に記載のシステム。
【請求項９】
複合ロッキング論理を提供して、個々の要求が原子的に成功すること、および個々の要求が原子的に失敗することのうちの一方を保証するロッキングコンポーネントをさらに備えることを特徴とする請求項２に記載のシステム。
【請求項１０】
楽観的同時性技法を使用する楽観的同時性コンポーネントをさらに備え、前記楽観的同時性技法は、第２のプロセスとほぼ同様の時間に第１のプロセスが変更を行う可能性が低いことを仮定し、前記変更が前記データ記憶システムに対してコミットされるまでロックが使用されないことを特徴とする請求項２に記載のシステム。
【請求項１１】
前記データ操作が前記特徴および制約のうちの少なくとも一方を実施しないときにエラーコードを提供することのできるエラーコンポーネントをさらに備え、前記エラーコードは、エラーを記述するテキストに対応することができ、手続きは実行されないことを特徴とする請求項２に記載のシステム。
【請求項１２】
前記ＡＰＩコンポーネントよって実装されるべき少なくとも１つのデータ構造を使用することのできるデータ構造コンポーネントをさらに備えることを特徴とする請求項３に記載のシステム。
【請求項１３】
前記データ構造コンポーネントは、シノニムタイプおよび汎用リストタイプのうちの少なくとも一方を使用することを特徴とする請求項１２に記載のシステム。
【請求項１４】
前記データ構造コンポーネントは、グラニュラ更新を提供する変更定義タイプを使用し、ユーザは、変更後データを更新メソッドに渡すことができると共に、手続きのサイズを変更されたデータのサイズに比例して保つことを特徴とする請求項１２に記載のシステム。
【請求項１５】
前記ＡＰＩコンポーネントと共に使用すべき、１）作成項目、２）作成複合項目、３）作成リンク、４）作成項目拡張、５）更新項目、６）更新リンク、７）更新項目拡張、８）削除項目、９）削除リンク、１０）削除項目拡張、１１）作成項目フラグメント、１２）更新項目フラグメント、１３）削除項目フラグメント、１４）取得項目セキュリティ、１５）設定項目セキュリティ、１６）移動項目、および１７）置換項目の各手続きのうちの少なくとも１つを定義するＡＰＩ定義コンポーネントをさらに備えることを特徴とする請求項３に記載のシステム。
【請求項１６】
前記ＡＰＩコンポーネントは、ユーザから入力を受け取ってデータを操作することを特徴とする請求項３に記載のシステム。
【請求項１７】
請求項１に記載の前記システムの前記コンポーネントが格納されていることを特徴とするコンピュータ可読媒体。
【請求項１８】
データの操作を容易にする、コンピュータに実装される方法であって、
データモデルを使用して、データベースに基づいたファイルシステムであるデータ記憶システムを表すこと、
前記データ記憶システムに関連する特徴および制約のうちの少なくとも一方を求めること、
前記データ記憶システム内のデータを操作すると共に、前記特徴および制約のうちの少なくとも一方を実施すること、および
ユーザが前記データを操作することが可能となるようにＡＰＩを起動すること
を含むことを特徴とする方法。
【請求項１９】
データ操作コンポーネントとインターフェースとの間で通信するデータパケットであって、請求項１８に記載の方法を容易にすることを特徴とするデータパケット。
【請求項２０】
データの操作を容易にする、コンピュータに実装されるシステムであって、
特徴および制約のうちの少なくとも一方を有するデータ記憶システムをデータモデルで表す手段と、
前記データモデルに関連するデータを操作し、前記制約および前記特徴のうちの少なくとも一方を実施する手段と、
ＡＰＩを起動してデータを操作する手段と
を備えることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、データベースに関し、より詳細には、それぞれのデータ記憶システムに関連する、データモデルおよび／またはセキュリティ実装に基づくデータの操作を容易にするシステムおよび／または方法に関する。
【背景技術】
【０００２】
コンピュータ技術の進歩（例えば、マイクロプロセッサの速度、メモリ容量、データ転送帯域幅、ソフトウェア機能など）は、一般に、様々な産業でのコンピュータの利用の増大に寄与した。サーバのアレイとしてしばしば構成される、より強力なサーバシステムさえも、例えば、ワールドワイドウェブなどの外部ソースから生じる要求に対するサービスを提供するために、一般的に提供される。
【０００３】
利用可能な電子データ量が増大するにつれて、ユーザフレンドリかつ迅速なデータ検索および抽出を容易にする管理可能な方式で、そのようなデータを格納することがより重要となる。今日、一般的な手法は、電子データを１つまたは複数のデータベースに格納することである。一般には、典型的なデータベースは、例えばコンピュータプログラムがデータの所望の部分を迅速に検索および選択することができるようにデータが構築された、編成された情報の集合と呼ぶことができる。一般には、データベース内のデータが、１つまたは複数のテーブルを介して編成される。そのようなテーブルは、行および列の配列として構成される。
【０００４】
さらに、テーブルは１組のレコードを含むことができ、レコードは１組のフィールドを含む。レコードは一般に、テーブル内の行として索引付けされ、レコードフィールドは一般に、列として索引付けされ、それによって添字の行／列対が、テーブル内の特定のデータを参照することができる。例えば、行は、販売取引、個人、またはプロジェクトに関する完全なデータレコードを格納することができる。同様に、テーブルの列は、同一の一般的データフォーマットを有する行の離散的部分を定義することができ、レコードのフィールドを定義することができる。
【０００５】
独立したデータのそれぞれの個々の部分は、一般にあまり情報を与えるものではない。データベースアプリケーションがデータをより有用なものとする。データベースアプリケーションは、ユーザがデータを編成および処理する助けとなるからである。データベースアプリケーションは、ユーザがデータを比較、ソート、配列、結合、分離、および相互接続することを可能にし、その結果、有用な情報をデータから生成することができる。データベースの容量および汎用性が信じられないほど向上し、データベースを使用するほぼ無限の記憶容量が可能となった。しかし、典型的なデータベースシステムの提供する照会能力は、時間、ファイル拡張子、位置、およびサイズに基づく限られたものである。例えば、データベースに関連する膨大な量のデータを探索するために、典型的な探索は、ファイル名、ファイルサイズ、作成日などに限定され、そのような技法は不十分で不適切である。
【０００６】
エンドユーザからのデータの作成は引き続き増大し、そのようなデータの発見、関係付け、操作、および格納を取り巻く問題および困難が増大している。エンドユーザは、文書を書き、写真を格納し、コンパクトディスクから音楽をリッピングし、Ｅメールを受信し、送信したＥメールのコピーを保持したりする。例えば、音楽コンパクトディスクを作成する単純なプロセスでは、エンドユーザは数メガバイトのデータを作成することがある。コンパクトディスクから音楽をリッピングし、ファイルを適切なフォーマットに変換し、ジュエルケースカバーを作成し、コンパクトディスクラベルをデザインすることはすべて、データの作成を必要とする。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ユーザを取り巻く問題だけでなく、開発者もデータに伴う同様な問題を抱えている。開発者は、パーソナルアプリケーションから高度に開発された企業アプリケーションにわたる無数のアプリケーションを作成する。作成および／または開発中に、開発者は、常にではないとしても頻繁にデータを集める。そのようなデータを得るときに、データを格納する必要がある。言い換えると、データの発見、関係付け、操作、および格納を取り巻く問題および困難は、開発者とエンドユーザのどちらにも影響を及ぼす。具体的には、従来のシステムおよび／またはデータベース内で、混乱させ、かつ／またはどんな不安定な条件も引き起こすことなく、そのようなデータをどう操作してもデータの完全性を保証しなければならない。
【課題を解決するための手段】
【０００８】
以下に、本発明のいくつかの態様の基本的理解を与えるために、単純化した本発明の概要を提示する。この概要は、本発明の包括的な概要ではない。本発明の主要な要素または重要な要素を識別するものではなく、本発明の範囲を概略するものではない。その唯一の目的は、後で提示するより詳細な説明の前置きとして、本発明のいくつかの概念を単純化した形で提示することである。
【０００９】
本発明は、特徴および／または制約に関連するデータモデルに少なくとも部分的に基づくデータの操作を容易にするシステムおよび／または方法に関する。データモデルは、データ記憶システム（例えば、データベースに基づいたファイル記憶システム）を表すことができ、そのようなモデルは、データ記憶システム内の情報を複合タイプのインスタンスとして表すことのできる、永続エンティティおよびサブエンティティの階層モデルである。データを操作することを容易にするために、データ操作コンポーネントは、特徴および／または制約のうちの少なくとも１つを実施および／または実装しながら、データ記憶システムに関連するデータ操作手続きを提供することができる。言い換えれば、データ操作コンポーネントは、任意の適切なデータ操作中にデータ記憶システム内のデータを永続させる。
【００１０】
本発明の一態様によれば、データ操作コンポーネントは、少なくとも１つの手続き（procedure）を提供する手続きコンポーネントを含むことができ、この手続きはデータを操作する。データに対する手続きは、コピー、更新、置換、取得、設定、作成、削除、移動、修正などを実装することができる。さらに、データ操作コンポーネントは、データ記憶システムを表すデータモデルに関連する特徴および／または制約を実施および／または実装するエンフォーサコンポーネント（enforcer component）を含むことができる。データ操作に関連する特徴および／または制約を使用することにより、データモデルの完全性がデータ記憶システム全体にわたって維持される。
【００１１】
本発明の別の態様によれば、データ操作コンポーネントは、アプリケーションプログラミングインターフェース（ＡＰＩ）を使用することができる。ＡＰＩは、クライアント（例えば、呼出し元）に対して公開することができ、１つまたは複数のプライベート実装ルーチンを呼び出してクライアント要求を実施することのできるパブリックサーフェスエリア（public surface area）である。一態様では、ＡＰＩは、ルーチン（例えば、サブルーチンを含むことができない）を提供することができる。ユーザがデータ記憶システム内のデータを操作することに関連する少なくとも１つの手続きを呼び出し、かつ／または使用すると共に、それに関連する少なくとも１つの特徴および／または制約を維持することを可能にするように、ＡＰＩを使用することができる。ＡＰＩは、データ記憶システム内で適切なオペレーションを実施することを可能にする様々な関数および／または手続きを定義することのできるＡＰＩ定義コンポーネントをさらに使用することができる。
【００１２】
さらに別の態様によれば、データ操作コンポーネントは、複数の同時呼出し元をサポートすると同時にデッドロックをなくすことを容易にするロッキングコンポーネント（locking component）を含むことができる。例えば、各呼出し元が他の呼出し元を待ち続けているのでどの要求も満たすことができず、したがってデッドロックが生じ得る形で共通の１組の資源の所有権を要求する複数の同時呼出し元があるというシナリオを仮定する。そのような場合、ロッキングコンポーネントはロックアップ（lock up）することができ（例えば、呼出し元がブロックされる）、そのようなケースから外れる唯一の方法は、呼出し元の１つを去らせることである。ロッキングコンポーネントは、個々の要求が原子的に成功または失敗することを複合ロッキングロジックが保証することができるように、複数の同時呼出し元もサポートすることができる。さらに、データ操作コンポーネントは、楽観的同時性（optimistic concurrency）技法を使用する楽観的同時性コンポーネントを含むことができ、そのような技法は、第１プロセスが第２プロセスとほぼ同様の時間に変更を行う可能性は低く、変更がデータ記憶システムにコミットされるまでロックが使用されないと仮定する。複数の呼出し元による同時アクセスが、ストアの状態についての特定の呼出し元の仮定を無効にした場合、無効な仮定を検出することができ、呼出し元がシステム状態の理解を再同期し、要求を再サブミットするまで、データ変更要求がシステムによって拒絶される。この技法は、命令を実行してロックを取り出す必要をなくすことによって、システムの性能を改善することができる。さらに、この技法は、長期ロックを取り出す必要をなくすことによって、システムのデッドロックを低減することができる。
【００１３】
本発明の別の態様によれば、データ操作コンポーネントは、そのようなシステムで使用される様々なデータ操作に対応することのできるセキュリティ技法を提供する、セキュリティコンポーネントを含むことができる。セキュリティコンポーネントは、限定はしないが、ログイン、パスワード、生体的特徴（例えば、指紋、網膜走査、インダクタンスなど）、音声認識などのユーザプロファイルおよび／または様々なセキュリティ手段を使用して、データを操作する特定のエンティティの完全性および有効性を保証することができる。さらに、データ操作コンポーネントは、データ操作により特徴および／または制約が実施されないことになる場合にエラーコードを提供する、エラーコンポーネントを含むことができる。データ操作が不完全であることを知らせるようにエラーコードを実装することができ、エラーコードは、エラーを記述するテキストに対応することができる。本発明の他の態様では、データモデルに準拠しながら、データの操作を容易にする方法が提供される。
【００１４】
以下の説明および添付の図面において、本発明のいくつかの例示的態様を詳細に説明する。しかし、こうした態様は、本発明の原理を利用することができる様々な方式のうちのいくつかを示すにすぎず、本発明は、そのようなすべての態様およびその均等物を含むものとする。本発明の他の利点および新規な特徴は、以下の本発明の詳細な説明を図面と共に考慮すると明らかになるだろう。
【発明を実施するための最良の形態】
【００１５】
本明細書では、「コンポーネント」、「システム」、「インターフェース」などの用語は、ハードウェア、（例えば実行中の）ソフトウェア、および／またはファームウェアのいずれかのコンピュータ関連のエンティティを指すものとする。例えば、コンポーネントは、プロセッサ上で実行中のプロセス、プロセッサ、オブジェクト、実行可能ファイル、プログラム、および／またはコンピュータでよい。例えば、サーバ上で実行中のアプリケーションとサーバは、どちらもコンポーネントでよい。１つまたは複数のコンポーネントがプロセス内に存在することができ、コンポーネントを１つのコンピュータ上に配置し、かつ／または２つ以上のコンピュータ間に分散させることができる。
【００１６】
全体を通して同様の要素を指すのに同様の参照番号が使用される図面を参照しながら、本発明を説明する。以下の説明では、説明の都合上、本発明の完全な理解を与えるために多数の特定の詳細を記載している。しかし、こうした特定の詳細なしに本発明を実施できることは明らかである。他の例では、本発明を説明しやすくするために、周知の構造および装置をブロック図形式で示す。
【００１７】
次に図を参照すると、図１は、それぞれの特徴を有するデータモデルに少なくとも基づくデータの操作を容易にするシステム１００を示す。データモデル１０２は、データベース構造に少なくとも基づく複合モデル（complex model）でよく、複合タイプのインスタンスとしてのデータ記憶システム内の情報の表現が可能となるように項目、副項目、プロパティ、および関係が定義される。データモデル１０２は、リッチ永続オブジェクトおよびオブジェクト間のリンクを作成し、管理するために、１組の基本ビルディングブロックを使用することができる。データモデル１０２内の整合性の最小単位として項目を定義することができ、整合性の最小単位を個々に保護、シリアル化、同期、コピー、バックアップ／復元することなどができる。項目はタイプのインスタンスであり、データモデル１０２内のすべての項目を、項目の単一グローバル範囲内に格納することができる。データモデル１０２は、少なくとも１つの項目および／またはコンテナ構造に基づくことができる。さらに、データモデル１０２は、ファイル内に項目として埋め込まれるリッチメタデータを公開する記憶プラットフォーム（storage platform）でよい。データモデル１０２は、上述の機能をサポートするためのデータベースに基づいたファイル記憶システムを表すことができ、任意の適切な特徴および／または属性を実装することができることを理解されたい。さらに、データモデル１０２は、コンテナ階層構造を使用するデータベースに基づいたファイル記憶システムを表すことができ、コンテナは、０個以上の項目を含むことのできる項目である。包含概念（containment concept）は、関連するクラス内部のコンテナＩＤプロパティを介して実装される。ストアが物理的組織的管理可能ユニットとなることができるように、ストアはコンテナでもよい。さらに、ストアは、階層構造内のコンテナのツリーに対するルートコンテナを表す。さらに、データモデル１０２は、少なくとも１つの永続エンティティと各エンティティごとの０個以上のサブエンティティの階層モデルを定義して情報を複合タイプとして表すデータベースに基づいたシステムであるデータ記憶システムを表すことができる。
【００１８】
データ操作コンポーネント１０４は、データモデル１０２に関するデータを操作することができ、データモデル１０２の特徴に関連するデータの完全性および安定性を保証する。データモデル１０２は、データベースに基づいたファイル記憶システムに関連する任意の適切な特徴および／またはガイドラインを含むことができる。データ操作コンポーネント１０４は、安定システムを保証しながら（例えば、データモデル１０２によって表されるデータベースに基づいたファイル記憶システムに関連する任意の特徴に準拠しながら）、少なくとも１つのオブジェクトに対する移動、削除、コピー、作成、更新、置換などを実現することができる。例えば、データモデル１０２は、コンテナに関する各ＩＤが固有であるような、特徴を有するデータベースに基づいたファイル記憶システムを表すことができる。この例を進めると、データ操作コンポーネント１０４は、コンテナに関するＩＤの固有性を実施および／または維持しながら、任意の適切なデータ操作（例えば、コピー、更新、置換、取得、設定、作成、削除、移動など）を使用することができる。上述した関数を本発明に関する制限とみなすべきではなく、データモデル１０２に関する任意の適切なデータ操作を使用すると共に、それに関する任意の適切な特徴を維持することができることを理解されたい。さらに、データ操作コンポーネント１０４は、データモデル１０２に基づいて（例えば、ストア、コンテナなどの少なくとも１つを使用して）階層構造に対応するデータを操作できることを理解されたい。
【００１９】
本発明の一態様によれば、データの操作は、例えばアプリケーションプログラミングインターフェース（ＡＰＩ）（図示せず）を使用することにより、ユーザからの入力に少なくとも部分的に基づくことができる。ＡＰＩを使用することにより、データモデル１０２および対応するデータベースに基づいたファイル記憶システムに関する対話および／または操作を実装し、それに関連する任意の適切な特徴を維持／実施することができる。データ操作コンポーネント１０４、データ操作コンポーネント１０４に組み込まれた別々のコンポーネント、および／またはそれらの任意の組合せによって、ＡＰＩを起動（invoke）することができる。
【００２０】
システム１００は、データ操作コンポーネント１０４をほぼ任意のオペレーティングシステムおよび／またはデータベースシステムに統合するために様々なアダプタ、コネクタ、チャネル、通信経路などを提供する、インターフェースコンポーネント１０６をさらに含む。さらに、インターフェースコンポーネント１０６は、データおよびデータ操作コンポーネント１０４との対話を実現する様々なアダプタ、コネクタ、チャネル、通信経路などを提供することができる。インターフェースコンポーネント１０６はデータ操作コンポーネント１０４に組み込まれるが、そのような実装はそのように限定されるわけではないことを理解されたい。例えば、インターフェースコンポーネント１０６は、システム１００に関連してデータを受信または送信するためのスタンドアロンコンポーネントでよい。
【００２１】
図２に、データ記憶システムの特徴内のデータの操作を容易にするシステム２００を示す。データ記憶システム２０２は、少なくとも階層構造を使用することによってデータのインスタンスを複合タイプとして表す、データベースに基づいたファイル記憶システムでよい。データ記憶システム２０２は、データの操作中にデータ記憶システム２０２の特徴を保証するように実施される、少なくとも１つの特徴を含むことができる。データモデル（図示せず）はデータ記憶システム２０２を表すことができることを理解されたい。さらに、複合タイプのインスタンスとしての情報の表現が可能となるように、データ記憶システム２０２内で項目、副項目、プロパティ、および関係を定義することができる。データ記憶システム２０２は、データの形を記述することができ、データに関する一定の意味整合性を示唆する制約を宣言することができ、データ間の意味関連（semantic consistency）を定義することのできるデータモデルでよい。データ記憶システム２０２は、リッチ永続オブジェクトおよびオブジェクト間のリンクを作成し、管理するために、１組の基本ビルディングブロック（building block）を使用することができる。
【００２２】
例えば、ビルディングブロックは、「Ｉｔｅｍ」、「ＩｔｅｍＥｘｔｅｎｓｉｏｎ」、「Ｌｉｎｋ」、および「ＩｔｅｍＦｒａｇｍｅｎｔ」を含むことができる。「Ｉｔｅｍ」は、データ記憶システム２０２内の整合性の最小単位として定義することができ、整合性の最小単位を個々に保護、シリアル化、同期、コピー、バックアップ／復元することなどができる。例えば、項目（item）は、整合性の最小単位でよいが、項目の周りに引かれる境界は、項目によって論理的に所有することのできるリンク、項目拡張（item extension）、項目フラグメント（item fragment）を含むことができる。したがって、項目は、テーブル内の行でよいが、項目行およびその２次部分のすべても参照する。言い換えれば、項目の削除、コピーなどを行うことができると共に、そのようなオペレーションが項目およびその部分のすべてに原子的に適用されることが保証される。項目はタイプのインスタンスであり、データ記憶システム２０２内のすべての項目を、項目の単一グローバル範囲内に格納することができる。「ＩｔｅｍＥｘｔｅｎｓｉｏｎ」は、エンティティ拡張を使用して拡張される項目タイプである。エンティティ拡張は、それぞれの属性（例えば、名前、拡張される項目タイプ、プロパティ宣言など）と共にスキーマ内に定義することができる。「ＩｔｅｍＥｘｔｅｎｓｉｏｎ」は、拡張される項目タイプに適用することのできる１組のプロパティをグループ化するように実装することができる。「Ｌｉｎｋ」は、２つの項目インスタンス間の関連を定義するエンティティタイプであり、リンクが指示される（例えば、１つの項目がリンクのソースであり、他の項目がリンクのターゲットである）。「ＩｔｅｍＦｒａｇｍｅｎｔ」は、項目タイプおよび／または項目拡張での大きな集合の宣言を可能とするエンティティタイプであり、集合の要素はエンティティでよい。データ記憶システム２０２は、複合タイプのインスタンスとしてのデータの表現を提供する、任意の適切なデータベースに基づいたファイル記憶システムを表すことができ、上記の記述を本発明の制限とみなすべきではないことを理解されたい。データ記憶システム２０２は、図１に示すデータモデル１０２の表現とほぼ同様でよい。
【００２３】
データ操作コンポーネント２０４は、データ記憶システム２０２内のデータの操作を実現すると共に、そのようなデータ記憶システム２０２に関連する少なくとも１つの特徴を実施することができる。データ操作コンポーネント２０４は、限定はしないが、（例えば、複合タイプのインスタンスによって表される）データに対するコピー、更新、置換、取得、設定、作成、削除、移動などの操作を実現することができる。データ操作コンポーネント２０４は、図１に示すデータ操作コンポーネント１０４とほぼ同様でよいことを理解されたい。
【００２４】
データ操作コンポーネント２０４は、データ記憶システム２０２に関連する特徴に従ってデータを操作するための特定の関数を提供する手続きコンポーネント２０６を含むことができる。言い換えれば、手続きコンポーネント２０６は、データ記憶システム２０２に関する操作技法を提供することができる。例えば、手続きコンポーネント２０６は、データおよび／または複合タイプのインスタンスとしてのデータの表現に対するコピー、移動、置換、設定、削除、作成、取得、更新を含むことができる。手続きコンポーネント２０６は、データ記憶システム２０２と共に実装することのできる任意の適切なデータ操作技法および／または関数を提供することができる。手続きコンポーネント２０６がデータ操作コンポーネント２０４に組み込まれているように示されているが、本発明はそのように限定されない。手続きコンポーネント２０６は、スタンドアロンコンポーネントでよく、またはデータ記憶システム２０２に組み込むことができる（例えば、データモデル概念のインスタンス化でよい）。
【００２５】
データ操作コンポーネント２０４は、データの操作と共にデータ記憶システム２０２の少なくとも１つの特徴を組み込むためのエンフォーサコンポーネント２０８をさらに含むことができる。上述したように、データ記憶システム２０２は、データ記憶システム２０２内のデータの操作に関するガイダンスを提供することのできる任意の適切な数の特徴を含むことができる。言い換えれば、エンフォーサコンポーネント２０８は、データ記憶システム２０２に関するデータモデル制約を乱すことなくデータ記憶システム２０２内のデータの操作を可能にする。（図示するように）エンフォーサコンポーネント２０８はデータ操作コンポーネント２０４内に組み込むことができ、スタンドアロンコンポーネントでもよく、データ記憶システム２０２に組み込むこともでき、それらの任意の組合せでもよいことを理解されたい。
【００２６】
例えば、データ記憶システム２０２は、（上述したように）項目、コンテナ、およびストア構造階層を使用することができる。エンフォーサコンポーネント２０８は、データ記憶システム２０２に関連するコンテナＩＤに関する特徴を実装することができる。例えば、エンフォーサコンポーネント２０８は、以下のうちの少なくとも１つを提供することができる。（１）項目の非ヌル項目ＩＤをストアに含めるためのコンテナＩＤ（例えば、これは、以下で説明する操作関数および／または技法「ＣｒｅａｔｅＩｔｅｍ」、「ＣｒｅａｔｅＣｏｍｐｌｅｘＩｔｅｍｓ」、「ＭｏｖｅＩｔｅｍ」、および「ＲｅｐｌａｃｅＩｔｅｍ」で実装することができる）、（２）コンテナＩＤが（以下で説明する）操作関数および／または技法「ＵｐｄａｔｅＩｔｅｍ」を使用して更新されない、（３）コンテナＩＤを「ＭｏｖｅＩｔｅｍ」への呼出しを介して変更することができる。本発明は、上記の関数および／または技法の参照名に限定されないことを理解されたい。
【００２７】
別の例では、エンフォーサコンポーネント２０８は、データの操作と共に、トランザクションセマンティックス（transaction semantics）を実装することができる。エンフォーサコンポーネント２０８は、以下のトランザクションセマンティクスを実装することができる。（１）トランザクションがアクティブでない場合、エラーコードを返すことができ、バッチ（batch）が処理されない。（２）オペレーションを検証および適用する試みが行われる。オペレーションを検証することおよび適用することが成功した場合、オペレーションが呼出し元によって供給されるトランザクションでコミットされないという効果と共に、制御を呼出し元に返すことができる。オペレーションを検証することまたは適用することが失敗した場合、トランザクションは失敗し、エラーが生じ、制御を呼出し元に返すことができる。失敗したトランザクションは、呼出し元がそのトランザクションに関する照会を発行することができるが、トランザクションをコミットできない（例えば、コミットに対する呼出しの結果がエラーとなることができる）ことを意味する。ＡＰＩ要求が原子的に成功することができ、または完全に失敗することができることを理解されたい。複合ＡＰＩは、基礎となる記憶テーブルに対する少なくとも１つの変更を行うことができ、複合の１組の整合性および／または完全性テストを実装することができる。さらに、システム２００は、矛盾する状態および／または無効な状態のままには決してされないことを理解されたい。
【００２８】
図３は、データ記憶システムに関連するデータの操作を用いたデータ完全性およびセキュリティの実施を容易にするシステム３００を示す。データ記憶システム３０２は、少なくとも部分的にデータモデルに基づくデータベースに基づいたファイル記憶システムでよく、データは複合タイプのインスタンスとして表される。データ操作コンポーネント３０４は、データ記憶システム３０２に関連するデータ操作を提供することができる。データ操作コンポーネント３０４は、データ記憶システム３０２内のデータを操作することに関する少なくとも１つの関数および／または技法を提供することのできる手続きコンポーネント３０６を含むことができる。さらに、データ操作コンポーネント３０４は、それぞれのデータ記憶システム３０２についての少なくとも１つの特徴および／またはガイドラインを設けるエンフォーサコンポーネント３０８を含むことができ、そのような特徴は、データモデル制約をデータの操作と共に実装することを保証する。データ記憶システム３０２、データ操作コンポーネント３０４、手続きコンポーネント３０６、およびエンフォーサコンポーネント３０８は、図３のデータ記憶システム２０２、データ操作コンポーネント２０４、手続きコンポーネント２０６、およびエンフォーサコンポーネント３０８とほぼ同様でよいことを理解されたい。
【００２９】
データ操作コンポーネント３０４は、データ記憶システム３０２内のデータを操作することに関連する少なくとも１つの手続きを格納し、かつ／またはそれにアクセスすることを容易にするためにデータストア３１０を含むことができる。例えば、データストア３１０は、ＡＰＩで使用することのできる手続き（例えばコード）を格納することができ、データ記憶システム３０２に関連する少なくとも１つの特徴を維持しながら、データ操作をユーザが受信し、起動することができる。別の例では、データストア３１０は、データ記憶システム３０２および／または様々なＡＰＩデータ（例えばサブルーチンなど）に関連する様々な特徴を格納することができる。１つの例では、データストア３１０はハードドライブでよい。データストア３１０は、例えば揮発性メモリまたは不揮発性メモリでよく、あるいは揮発性メモリと不揮発性メモリのどちらも含むことができる。例えば、限定はしないが、不揮発性メモリは、読取り専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、またはフラッシュメモリを含むことができる。揮発性メモリはランダムアクセスメモリ（ＲＡＭ）を含むことができ、これは外部キャッシュメモリとして働く。例えば、限定はしないが、ＲＡＭは、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、拡張ＳＤＲＡＭ（ＥＳＤＲＡＭ）、シンクリンクＤＲＡＭ（ＳＬＤＲＡＭ）、ラムバスダイレクトＲＡＭ（ＲＤＲＡＭ）、ダイレクトラムバスダイナミックＲＡＭ（ＤＲＤＲＡＭ）、ラムバスダイナミックＲＡＭ（ＲＤＲＡＭ）などの多くの形態で入手可能である。このシステムおよび方法のデータストア３１０は、限定はしないが、上記およびその他の任意の適切なタイプのメモリを含むものとする。さらに、データストア３１０は、サーバおよび／またはデータベースでよいことを理解されたい。
【００３０】
データ操作コンポーネント３０４は、少なくとも１つのセキュリティ属性をシステム３００に与えるために、セキュリティコンポーネント３１２をさらに含むことができる。例えば、セキュリティコンポーネント３０４は、特定のデータ操作関数および／または技法がユーザプロファイルと関連付けられるように、ユーザプロファイルを使用することができる。さらに、セキュリティコンポーネント３０４は、限定はしないが、ログイン、パスワード、生体的特徴（例えば、指紋、網膜走査、インダクタンスなど）、音声認識などの様々なセキュリティ手段を使用して、データを操作する特定のエンティティの完全性および有効性を保証することができる。セキュリティコンポーネント３１２はさらに、データ記憶システム３０２に関連する任意の適切なセキュリティ属性を使用することができる。言い換えれば、セキュリティコンポーネント３１２は、データ記憶システム３０２のセキュリティ制約が実施されるように、セキュリティ規定を実装することができる。
【００３１】
図４に、データ記憶システムに関連するデータを操作するＡＰＩの実装を容易にするシステム４００を示す。データ記憶システム４０２は、それに関連する少なくとも１つの特徴を有するデータベースに基づいたファイル記憶システムでよく、データ記憶システム４０２をデータモデル（図示せず）によって表現することができる。データ操作コンポーネント４０４は、限定はしないが、それぞれデータ記憶システム４０２に対するコピー、移動、置換、設定、削除、作成、取得、データに対する更新を含むデータ操作を可能にする。データ記憶システム４０２およびデータ操作コンポーネント４０４は、それぞれ図３および２のデータ記憶システム３０２、データ記憶システム２０２、データ操作コンポーネント３０４、データ操作コンポーネント２０４とほぼ同様の機能を使用することができることを理解されたい。
【００３２】
データ操作コンポーネント４０４は、エンティティがデータ記憶システム４０２内のデータを操作することを可能にする、ＡＰＩコンポーネント４０６（本明細書では「ＡＰＩ４０６」と呼ぶ）をさらに含むことができる。エンティティは、限定はしないが、ユーザ、コンピュータ、データベースなどでよい。ＡＰＩ４０６は、ユーザ入力がデータ記憶システム４０２内のデータの操作に関するコマンドおよび／または関数であるようなユーザ入力を少なくとも受け取ることができる。データ操作コンポーネント４０４に組み込まれるように示したが、ＡＰＩ４０６は、データ記憶システム４０２に組み込まれたスタンドアロンコンポーネント、および／またはそれらの組合せでよいことを理解されたい。さらに、ＡＰＩ４０６は、上述した様々なコンポーネントを使用して、特定の手続きを使用するデータの操作を実現すると共に、それぞれデータ記憶システム４０２に対する特徴を実施することができる。
【００３３】
図５に、データ記憶システムの特徴内のデータを操作するアプリケーションプログラミングインターフェース（ＡＰＩ）の起動を容易にするシステム５００を示す。データ記憶システム５０２は、少なくとも１つの定義特徴（defining characteristic）を有するデータベースに基づいたファイル記憶システムでよく、データ記憶システム５０２は、少なくとも部分的にデータモデル（図示せず）に基づくことができる。データ操作コンポーネント５０４は、それぞれデータ記憶システム５０２に対するコピー、移動、置換、設定、削除、作成、取得、データに対する更新を含むデータ操作を可能にする。データ記憶システム５０２およびデータ操作コンポーネント５０４は、それぞれ図４、図３、および図２のデータ記憶システム４０２、データ記憶システム３０２、データ記憶システム２０２、データ操作コンポーネント４０４、データ操作コンポーネント３０４、データ操作コンポーネント２０４とほぼ同様でよいことを理解されたい。
【００３４】
データ操作コンポーネント５０４は、ＡＰＩコンポーネント５０６（「ＡＰＩ５０６」と呼ぶ）を含むことができる。ＡＰＩ５０６は、ストアドプロシージャを実行することによってデータ操作（例えば、ストア内のデータの作成、更新、削除）を実現することができる。ＡＰＩ５０６は、ユーザがデータ操作を実行することを可能にすると共に、データ記憶システム５０２に関連する特徴の完全性および／または純度（purity）を保証することができる。データの操作は、例えばＡＰＩ５０６を使用することにより、少なくとも部分的にユーザからの入力に基づくことができる。ＡＰＩ５０６を使用することにより、データ記憶システム５０２に関する対話および／または操作を実装することができると共に、それに関連する任意の適切な特徴が維持／実施される。ＡＰＩ５０６をデータ操作コンポーネント５０４、データ操作コンポーネント５０４に組み込まれた別々のコンポーネント、および／またはそれらの任意の組合せによって起動することができることを理解されたい。
【００３５】
データ操作コンポーネント５０４は、完全性を保証する適切なロッキング戦略を使用することにより、１つまたは複数のアプリケーションでデータに同時にアクセスすることを容易にするロッキングコンポーネント５０８をさらに含むことができる。例えば、各呼出し元が他の呼出し元を待っている（例えば、デッドロックが生じる可能性がある）ので単一の要求も満たすことができないように共通の１組の資源の所有権を要求する複数の呼出しがあるというシナリオを仮定する。そのような場合、ロッキングコンポーネント５０８は、呼出し元をブロック（例えばロックアップ）することを可能にし、そのようなケースから外れる唯一の方法は、呼出し元の１つを去らせることである。この状況を回避するために、ロッキングコンポーネント５０８は、個々の要求が自動的に成功または失敗することを複合ロッキングロジックが保証することができるように、複数の同時呼出し元をサポートすることができる。さらに、ロッキングコンポーネント５０８は、デッドロックを検出し、それに反応することができる。ロッキングコンポーネント５０８は、ロッキングを介するデータ記憶システムのある部分（例えばストア）へのシリアル化アクセスを使用することにより、データの整合性を保つことができる。ロッキングは、グラニュラ（granular）レベルに対して行うことができ、所与の操作および／またはオペレーションによって影響を受けるデータ記憶システム内の資源（例えばストア）を、そのような操作および／またはオペレーションの期間中にロックすることができる。異なるオペレーションおよび／またはほぼ同様のオペレーションが異なる順序でロックする可能性があり、デッドロッキングが生じる可能性があることを理解されたい。例えば、ロッキングコンポーネント５０８は、性能に対する著しい損失を有するデッドロックを回避することができる。さらに、ロッキングコンポーネント５０８は、ＡＰＩ５０６にデッドロックエラーコードを提供して、そのような状況を通知することができる。
【００３６】
データ操作コンポーネント５０４は、楽観的同時性コンポーネント５１０を含むことができる。ＡＰＩ５０６は、データ記憶システム５０２内のデータに対する操作および／または変更を適用するために楽観的同時性（optimistic concurrency）を使用することができる。同時性は、少なくとも２つのプロセスがほぼ同様のデータをほぼ同様の時間に更新しようと試みるときに生じる。楽観的同時性コンポーネント５１０は楽観的同時性を使用し、楽観的同時性は、別のプロセスがほぼ同様の時間に変更を行う可能性が低いことを仮定し、したがって、変更をデータ記憶システム（例えばストア）に対してコミットする準備ができるまで、ロックを行わない。そのような技法を使用することにより、楽観的同時性コンポーネント５１０はロック時間を削減し、より良好なデータベース性能を提供する。複数の呼出し元による同時アクセスが、ストアの状態についての特定の呼出し元の仮定を無効にさせる場合、無効仮定を検出することができ、呼出し元がシステム状態の理解を再同期し、要求を再サブミットするまで、データ変更要求がシステムによって拒絶される。
【００３７】
例えば、楽観的同時性コンポーネント５１０は、各修正に伴って変化する項目に関連するトークン（token）を追跡することができる。トークンは、データがメモリに読み取られるときに呼出し元に渡される。呼出し元は、更新オペレーションに対するパラメータとしてトークンをストアに戻すことができる。ストアは、渡されたトークンをストア内の現トークン値と比較することができる。トークンが等しい場合、書込みが成功し、実施される。しかし、メモリ内の呼出し元のバージョンがストア内のものとは異なる値である場合、項目が別のアプリケーションによって修正されたことを知らせ、書込みは失敗する。
【００３８】
別の例では、２つのアプリケーションによる同時アクセスによる失敗が検査される。以下の表では、項目を修正しようと試みるデータ記憶システム５０２上で同時に動作する２つのアプリケーションが存在する。
【００３９】
【表１】
2008538632.tif 000003
【００４０】
ＡＰＩ５０６は、それぞれの作成および／または更新オペレーションに関するトークン情報を返すことにより、この技法をサポートすることができる。例えば、ｃｒｅａｔｅ関数からの出力トークンパラメータを、「ｃｏｎｃｕｒｒｅｎｃｙＴｏｋｅｎ」と命名することができる。ＡＰＩ５０６は、更新および／または削除オペレーションに関する入力パラメータとして、トークン情報を取得することもできる。更新および／または削除オペレーションに渡されるトークン情報も、「ｃｏｎｃｕｒｒｅｎｃｙＴｏｋｅｎ」と呼ぶことができる。パラメータは、入力パラメータと出力パラメータの両方でよいことを理解されたい。入力において、「ｃｏｎｃｕｒｒｅｎｃｙＴｏｋｅｎ」は、オブジェクトがキャッシュ内に読み取られ、作成され、かつ／または更新されたときに受け取られる値である。これは、オブジェクトへの書込みがない場合のストア内の「期待値」でよい。出力において、ストアは、オペレーションが首尾よく完了した後に、オブジェクトの新しい「ｃｏｎｃｕｒｒｅｎｃｙＴｏｋｅｎ」を返すことができる。
【００４１】
「ｃｏｎｃｕｒｒｅｎｃｙＴｏｋｅｎ」」パラメータは、ＢＩＧＩＮＴ（例えば、６４ビット整数）としてタイプ付けすることができる。パラメータは、データベースのタイムスタンプでよいが、値が増加することはできないことを理解されたい。バックアップから項目を回復することにより、時間に関して過去のステータスを引き起こすことができる。２つの「ｃｏｎｃｕｒｒｅｎｃｙＴｏｋｅｎ」間のサポートされる唯一のオペレーションは、等号（equality）および／または不等号（inequality）に関するものである。この値は、ストアによってサポートされる様々なビューでも利用可能である。ビュー内の列名は、項目、項目拡張、リンク、および項目フラグメントに関する「ＬａｓｔＵｐｄａｔｅＬｏｃａｌＴＳ」である。セキュリティ記述子について、列名は「ＳＤＬａｓｔＵｐｄａｔｅＬｏｃａｌＴＳ」である。
【００４２】
図６に、データ記憶システムの特徴内のデータを操作するＡＰＩの起動を容易にするシステム６００を示す。データ記憶システム６０２は、データモデルに少なくとも部分的に基づくデータベースに基づいたファイル記憶システムでよく、データが複合タイプのインスタンスとして表される。データ操作コンポーネント６０４は、データ記憶システム６０２に関連するデータ操作を提供することができる。データ操作コンポーネント６０４は、ＡＰＩコンポーネント６０６（本明細書では「ＡＰＩ６０６」と呼ぶ）を起動することができる。ＡＰＩ６０６は、ストアドプロシージャを実行することによってデータ操作（例えば、ストア内のデータの作成、更新、および削除）を提供することができる。ＡＰＩ６０６は、例えば、ユーザがデータ操作を実行することを可能にすると共に、データ記憶システム６０２に関連する特徴の完全性および／または純度を保証する。データ記憶システム６０２、データ操作コンポーネント６０４、およびＡＰＩ６０６は、それぞれ図５、４、３および２のデータ記憶システム５０２、４０２、３０２、および２０２、データ操作コンポーネント５０４、４０４、３０４、および２０４、ＡＰＩ５０６、４０６とほぼ同様でよい。
【００４３】
データ操作コンポーネント６０４は、ＡＰＩ６０６によって使用される少なくとも１つのデータ構造を使用することのできる、データ構造コンポーネント６０８を含むことができる。例えば、データ構造コンポーネント６０８は、様々なシノニムおよび／または汎用リストタイプを使用することができる。１つの例では、以下の表が、シノニムおよび構造化照会言語（ＳＱＬ）タイプと、リストタイプと、対応する共通言語ランタイム（ＣＬＲ）とを定義することができる。以下の表は例であり、本発明はそのように限定されないことを理解されたい。
【００４４】
【表２】
2008538632.tif 000004
【００４５】
【表３】
2008538632.tif 000005
【００４６】
データ構造コンポーネント６０８は、変更定義（change definition）タイプを使用することができる。ＡＰＩ６０６およびデータ操作コンポーネント６０４は、プロパティグラニュラリティレベル（property granularity level）において更新オペレーションおよび／または修正を提供することができる。そのような技法を使用することにより、呼出し元は、変更後データを更新メソッドに渡すことができると共に、オペレーションのサイズを、変更されたデータのサイズに比例して保つ。グラニュラ更新は、ＣｈａｎｇｅＤｅｆｉｎｉｔｉｏｎタイプを使用して記述することができる。データ記憶システム６０２においては、オブジェクトがストア内に永続し、テーブルの特定のセルが、Ｃｏｎｔａｃｔの格納インスタンス、または複合でよいプロパティを有するその他の複合タイプである。ＣｈａｎｇｅＤｅｆｉｎｉｔｉｏｎタイプは、構造化オブジェクトに適用することのできる１組の変更をモデル化することができることを理解されたい。
【００４７】
例えば、コンタクトの名前フィールドを更新するために、呼出し元は、ＣｈａｎｇｅＤｅｆｉｎｉｔｉｏｎオブジェクトのインスタンスを作成し、オブジェクトに２つのノード（例えば、項目タイプを記述するノードと、フィールド名を含むノード）をポピュレートすることができる。次いで、クライアントは、ＣｈａｎｇｅＤｅｆｉｎｉｔｉｏｎのコンパイル済みバージョンおよび対応する値のリストうちの少なくとも１つを、ストア内の修正を行うＵｐｄａｔｅＩｔｅｍメソッドに渡すことができる。ほぼ同様のパターンを、項目拡張および／またはリンク内のフィールドを修正することに適用できることを理解されたい。
【００４８】
ＣｈａｎｇｅＤｅｆｉｎｉｔｉｏｎインスタンスは、ツリー構造を使用して各プロパティの変更をモデル化し、ツリー内の各レベルは、オブジェクトタイプ内のプロパティのネストされたレベルに対応することができる。プロパティ値に対する変更は、割当てノードと呼ばれるリーフノード（leaf node）によって表される。割当てノードタイプは割当てでよい。これらのノードは、プロパティへの割当てを表すことができ、プロパティ名を含むことができる。非リーフノード（ルートを除く）は、トップレベルプロパティおよび／または別のネストされたタイプのプロパティのメンバであるネストされたタイプを表す。これをトラバーサルノード（traversal node）と呼ぶことができる。トラバーサルノードは、ノードのリスト（割当てまたはトラバーサル）と、任意選択で、適切なキャストを実装するためにストアによって使用されるタイプとを含む。トラバーサルノードタイプは、ＰａｔｈＣｏｍｐｏｎｅｎｔである。
【００４９】
データ構造コンポーネント６０８は、トラバーサルノードおよび割当てノードを作成することによってＣｈａｎｇｅＤｅｆｉｎｉｔｉｏｎを構築することができる。例えば、ＣｈａｎｇｅＤｅｆｉｎｉｔｉｏｎによってノードを追加することができ、ＣｈａｎｇｅＤｅｆｉｎｉｔｉｏｎクラスは、ノードを作成し、ツリーをウォークするメソッドを有する。１つの例では、ＣｈａｎｇｅＤｅｆｉｎｉｔｉｏｎクラスはユーザ定義タイプ（ＵＤＴ）ではない。別の例では、以下が定義済み割当てタイプである。１）スカラ値を深さにおいて割り当てる、２）ネストされたタイプのインスタンスを深さにおいて割り当てる、３）集合（例えば、マルチセットおよび／またはｓｑｌＬｉｓｔ）を深さにおいて割り当てる。スカラプロパティ（例えば、ＸＭＬおよびＦｉｌｅＳｔｒｅａｍプロパティ）を置換できることを理解されたい。別の例では、そのようなスカラプロパティが部分的に更新される。ツリーが完了すると、データ構造コンポーネント６０８は、コンパイルメソッドを使用することができ、コンパイルメソッドは、バイナリフォーマットに変更することのできるプロパティの記述を返すことができる（例えば、コンパイル済み変更定義とも呼ばれる）。１つの例では、更新メソッド内のｃｈａｎｇｅＤｅｆｉｎｉｔｉｏｎパラメータとして値を渡すことができる。
【００５０】
以下は、データ構造コンポーネント６０８の実装の一例であり、本発明の限定とみなすべきではない。呼出し元は、ＣｈａｎｇｅＤｅｆｉｎｉｔｉｏｎツリー内に記述されたプロパティに対応する値のリストを構築することに関与することができる。呼出し元が割当てノードをＣｈａｎｇｅＤｅｆｉｎｉｔｉｏｎツリーに追加するとき、索引を割当てノードに割り当てることができる。索引はｎ−１に等しくすることができる（ただし、ｎはそれまでのツリーへの挿入数である）。例えば、第１割当てノードは索引０を得、第２割当てノードは索引１を得、というようにすることができる。索引をａｄｄＡｓｓｉｇｎｍｅｎｔの呼出し元に返すこともできる。次いで、呼出し元は、ＣｈａｎｇｅＤｅｆｉｎｉｔｉｏｎツリーに追加されるプロパティの値を含むＡｓｓｉｇｎｍｅｎｔＶａｌｕｅオブジェクトを構築する。次いでＡｓｓｉｇｎｍｅｎｔＶａｌｕｅがＡｓｓｉｇｎｍｅｎｔＶａｌｕｅＬｉｓｔに追加され、それによってＡｓｓｉｇｎｍｅｎｔＶａｌｕｅＬｉｓｔ内のその位置をＣｈａｎｇｅＤｅｆｉｎｉｔｉｏｎツリーの割当てノード内の索引にマッピングすることができる。割当てノードをＣｈａｎｇｅＤｅｆｉｎｉｔｉｏｎに追加することができ、ＡｓｓｉｇｎｍｅｎｔＶａｌｕｅオブジェクトをリストの最後に付加する追加メソッドを使用して、対応するＡｓｓｉｇｎｍｅｎｔＶａｌｕｅオブジェクトをＡｓｓｉｇｎｍｅｎｔＶａｌｕｅリストに追加することができる。得られるＡｓｓｉｇｎｍｅｎｔＶａｌｕｅＬｉｓｔは、更新メソッドのｖａｌｕｅＬｉｓｔパラメータに渡される値である。
【００５１】
データ操作コンポーネント６０４は、データ記憶システム６０２の特徴と矛盾するオペレーションおよび／またはデータ操作に関連するエラーを処理するためのエラーコンポーネント６１０をさらに含むことができる。例えば、ＡＰＩ６０６は、現項目ドメインを保証する。項目ドメインとは、関連するプロパティ、エンティティ、および／またはサブエンティティと共に項目が定義し、かつ／または含む論理エリアである。項目ドメイン外部の項目が参照される場合（例えば、項目を介して、あるいはリンク、項目拡張、または項目フラグメントを介して）、項目が存在しないかのように見える。言い換えれば、「項目が存在しない」というエラーコードを使用することができる。
【００５２】
エラーコンポーネント６１０は、エラーコードを起動することができる。エラーコードは、不完全なデータ操作を知らせるように実装することができ、エラーを記述するテキストに対応することができる。データ記憶システム６０２内のデータの操作に関する手続きおよび／またはオペレーションは、関数（例えば、削除、コピー、移動、取得、設定、更新など）に関するリターンコードとすることができる整数値を返すことができる。１つの例では、オペレーションが成功した場合には値は０でよく、オペレーションが失敗した場合には非０値でよい。それぞれの操作手続き／オペレーションおよび／または関数をエラーコードと関連付けることができる。例えば、ＡＰＩ６０６は、テキストを表示するのではなく、エラーコードを返すことができる。エラーコードは、次いで、対応するテキストメッセージにリンクすることができ、必要なら、データベース内のテーブルからテキストメッセージを取り出すことができる。
【００５３】
図７に、ＡＰＩコンポーネントを使用してデータ記憶システム内のデータの操作を容易にするシステム７００を示す。データ記憶システム７０２は、データモデルに少なくとも部分的に基づくデータベースに基づいたファイル記憶システムでよく、データは、複合タイプのインスタンスとして表される。データ操作コンポーネント７０４は、データ記憶システム７０２に関連するデータ操作を提供することができると共に、データ記憶システム７０２に関連する少なくとも１つの特徴の実施を保証する。データ操作コンポーネント７０４は、ＡＰＩコンポーネント７０６（本明細書では「ＡＰＩ７０６」と呼ぶ）を起動することができる。ＡＰＩ７０６は、それぞれ受け取ったユーザ入力に対するストアドプロシージャを実行することによって、データ操作（コピー、更新、置換、取得、設定、作成、削除、移動など）を提供することができる。ＡＰＩ７０６は、それぞれデータ操作要求／コマンドに対するユーザ入力を受け取ることができ、そのようなユーザ入力が実行されると共に、データ記憶システム７０２に関連する特徴の完全性および／または純度が保証される。データ記憶システム７０２、データ操作コンポーネント７０４、およびＡＰＩ７０６は、それぞれ図６、５、４、３、２のデータ記憶システム６０２、５０２、４０２、３０２、および２０２、データ操作コンポーネント６０４、５０４、４０４、３０４、および２０４、ＡＰＩ６０６、５０６、４０６とほぼ同様でよいことを理解されたい。
【００５４】
データ操作コンポーネント７０４は、（データ記憶システム７０２を開発するために使用される）どんなデータモデルの制約も無効にすることなく、ユーザがデータ記憶システム７０２に関連するデータを操作することを可能にする手続きおよび／またはオペレーションを定義する、ＡＰＩ定義コンポーネント７０８を含むことができる。ＡＰＩ定義コンポーネント７０８は、データ記憶システム７０２内のデータの操作に関連して任意の適切な関数および／または手続きを実装することができる。手続きについての以下の説明は一例であり、本発明はそのように限定されないことを理解されたい。さらに、以下の手続きは、名前、機能、プロパティを参照し、説明は、本発明を限定するべきではない。
【００５５】
ＡＰＩ定義コンポーネント７０８は手続きを使用して、データ記憶システム７０２内の項目を作成することができ、より具体的には、データ記憶システム７０２内のストア内の項目を作成することができる。例えば、以下の表は、作成項目手続きに関連するパラメータを示す。
【００５６】
【表４】
2008538632.tif 000006
【００５７】
【表５】
2008538632.tif 000007
【００５８】
上記で示されるように、作成項目手続きは、データ記憶システム７０２に関する制約を保証することに少なくとも部分的に基づいて、作成項目手続きに関連する様々なエラーコードを有することができる。そのようなエラーコードは任意の適切なフォーマットでよく、コードは、対応するエラーを記述するテキストメッセージを表すことができる。例えば、ユーザがｆｉｌｅ−ｂａｃｋｅｄフォルダを作成しようと試みるときにエラーコードを生成することができる。別の例では、タイプ汎用ファイルの項目がｆｉｌｅ−ｂａｃｋｅｄでない場合に、エラーコードを生成することができる。
【００５９】
作成項目の例示的手続きに続いて、各項目は、コンテナ項目のＩｔｅｍＩｄであるＣｏｎｔａｉｎｅｒＩｄと呼ばれるプロパティを有する。コンテナ項目は、ストア内に既に存在していなければならず、クライアントの接続ポイントから到達可能でなければならない。呼出し元が項目に関するＣｒｅａｔｉｏｎＴｉｍｅを提供しない（例えば、値ヌルを提供する）場合、ストアは、ＣｒｅａｔｉｏｎＴｉｍｅを現在時間に設定する。呼出し元が項目に関するＬａｓｔＭｏｄｉｆｉｃａｔｉｏｎＴｉｍｅを提供しない（例えば、値ヌルを提供する）場合、ストアは、ＬａｓｔＭｏｄｉｆｉｃａｔｉｏｎＴｉｍｅを現在時間に設定する。両方の値が提供されない場合、ストアは、ｉｔｅｍ．ＣｒｅａｔｉｏｎＴｉｍｅを提供し、生成されるｉｔｅｍ．ＬａｓｔＭｏｄｉｆｉｃａｔｉｏｎ時間はほぼ同様となる。
【００６０】
別の例では、ＡＰＩ定義コンポーネント７０８は、ＳｅｃｕｒｉｔｙＤｅｓｃｒｉｐｔｏｒを使用することができる。任意選択のＳｅｃｕｒｉｔｙＤｅｓｃｒｉｐｔｏｒを含むことは、クライアントが新しい項目を自動的に作成することができ、セキュリティおよび検証パラメータを明示的に設定することができるための要件を満たす。ＳｅｃｕｒｉｔｙＤｅｓｃｒｉｐｔｏｒは、上述したセキュリティコンポーネント（図示せず）と共に機能できることを理解されたい。さらに、ＡＰＩ定義コンポーネント７０８は、ツームストーン化項目（tombstoned item）の実装を定義することができる。手続きに渡されたものと厳密に同じ項目ｉｄを有するツームストーン化項目がストア内に存在する場合、手続きは失敗する。ツームストーン化項目が復活し、ＣｒｅａｔｅＩｔｅｍに対するこの呼出しに渡された新しいデータが、復活した項目内に置かれる。
【００６１】
上述したように、ｃｏｎｃｕｒｒｅｎｃｙＴｏｋｅｎが返され、項目に対する後続の更新時に、クライアントが楽観的同時性検出を使用することが可能となる。返されるｃｏｎｃｕｒｒｅｎｃｙＴｏｋｅｎは、項目に関するトークンである。別の例では、ファイルシステムエージェントがＣｒｅａｔｅＩｔｅｍを呼び出したとき、ＡＰＩコンポーネント７０６は監査（audit）を生成しない。呼出しは、ユーザのコンテキストで行われ（例えば、ｅｘｅｃ＿ａｓ＿ｈｔｏｋｅｎ）、アクセスチェックが、ＡＰＩ７０６において行われる。このイベントに対するファイルシステム（例えば、従来型ファイル記憶システムであり、ビットベースのシステムが、同様のビットサイズのＡＰＩをオペレーティングシステムと共に使用する）監査が、ファイルシステムエージェントによって生成される。さらに、ＡＰＩ定義コンポーネント７０８は、ｆｉｌｅ−ｂａｃｋｅｄ項目に関して様々な実施を実現することができる。例えば、項目がｆｉｌｅ−ｂａｃｋｅｄ項目である（例えば、「ｉｓＦｉｌｅＢａｃｋｅｄ」フラグが真に設定される）場合、以下が当てはまる。１）ＦｉｌｅＢａｃｋｅｄＩｔｅｍを別のｆｉｌｅｂａｃｋｅｄ項目ツリー内に含めることができず（例えば、親項目について、ＥｎｔｉｔｙＳｔａｔｅ．ＲｏｏｔＦｉｌｅＢａｃｋｅｄＩｔｅｍＩｄはＮＵＬＬであるべきである）、２）「ＣｏｍｐｏｕｎｄＩｔｅｍ」タイプとなるように宣言される項目のみをｆｉｌｅ  ｂａｃｋすることができる。
【００６２】
ＡＰＩ定義コンポーネント７０８は、少なくとも１つの複合項目を作成するための手続きを実装することができる。この手続きは、データ記憶システム７０２に関連するストア内の複数の項目を作成することができる。ＡＰＩ定義コンポーネント７０８は１組の項目拡張と、各項目との１組のリンクを作成できることを理解されたい。タイプＣｏｍｐｌｅｘＩｔｅｍは、不変のＵＤＴである。これは本質的には、オペレーション／手続きに関連するデータを渡すためのコンテナである。以下は、ＣｏｍｐｌｅｘＩｔｅｍの例示的定義である。  
public class ComplexItem
{
Public ComplexItem(Item item,
SqlInt32promotionStatus,
SqlBoolean isFileBacked,
SqlString namespaceName,
SqlBoolean isGhost,
SyncEntityVersion syncInfo,
ItemSyncMetadata syncMetadata);
public void AddLink(Link link,
SyncEntityInformation syncInfo,
LinkSyncMetadata syncMetadata);
public void AddItemExtension(ItemExtension itemExtension,
SyncEntityVersion syncInfo);
public void AddItemFragment(ItemFragment itemFragment,
SyncEntityVersion syncInfo);
}
さらに、以下の表に、作成複合項目手続きに関連するパラメータの一例を示す。
【００６３】
【表６】
2008538632.tif 000008
【００６４】
ＡＰＩ定義コンポーネント７０８は、以下の機能を提供できることを理解されたい。トランザクションセマンティクスは、すべての項目が原子的に追加されるようなものとなる。関数の間に何らかの障害があった場合、複合項目はストアに挿入されない。ｃｏｍｐｌｅｘＩｔｅｍｓリストが空である場合、オペレーションはノーオペレーション（noop）であり、成功を返す。手続きに渡されるもののうちのいずれかと同じ項目ＩＤを有するツームストーン化項目がストア内に存在する場合、手続きは失敗する。項目拡張リストは、ヌル、または０個以上のエントリを有する非ヌルでよい。リンクリストは、ヌル、または０個以上のエントリを有する非ヌルでよい。項目フラグメントリストは、ヌル、または０個以上のエントリを有する非ヌルでよい。ｃｏｎｃｕｒｒｅｎｃｙＴｏｋｅｎが返され、後続の更新時にクライアントが楽観的同時性検出を使用することが可能となる。ｃｏｎｃｕｒｒｅｎｃｙＴｏｋｅｎ値は、このオペレーションの結果として作成されるすべての項目、リンク、および項目拡張に適用する。ｆｉｌｅ−ｂａｃｋｅｄ項目に関して、以下を適用することができる。１）ＦｉｌｅＢａｃｋｅｄＩｔｅｍを別のｆｉｌｅｂａｃｋｅｄ項目ツリー内に含めることができず（例えば、親項目について、ＥｎｔｉｔｙＳｔａｔｅ．ＲｏｏｔＦｉｌｅＢａｃｋｅｄＩｔｅｍＩｄはＮＵＬＬであるべきである）、２）「ＣｏｍｐｏｕｎｄＩｔｅｍ」タイプとなるように宣言される項目のみをｆｉｌｅ  ｂａｃｋすることができる。
【００６５】
ＡＰＩ定義コンポーネント７０８は、データ記憶システム７０２内のストア内にリンクを作成するための手続きを実装することができる。例えば、以下の表は、リンクを作成するために使用される手続きに関連する様々なパラメータを示す。
【００６６】
【表７】
2008538632.tif 000009
【００６７】
ＡＰＩ定義コンポーネント７０８は、データ記憶システム７０２に関連する様々な特徴を保証することを理解されたい。例えば、ターゲット項目ｉｄは、（このリンクタイプについてのスキーマで指定されるような）正しいタイプの有効な項目を指すことができ、かつ／またはターゲット項目ｉｄは、ヌルでなければならない。ＣｒｅａｔｅＬｉｎｋを使用して、既存のデータ記憶システム７０２項目間の１つのリンクを作成することができる。手続きに渡されたものとほぼ同様のリンクｉｄおよびソース項目ｉｄを有するツームストーン化リンクがストア内に存在する場合、手続きは失敗しないことを理解されたい。ツームストーン化リンクが復活することができ、ＣｒｅａｔｅＬｉｎｋに対するこの呼出しに渡された新しいデータが、復活したリンク内に置かれる。さらに、このリンクに対する後続の更新時にクライアントが楽観的同時性検出を使用することが可能となるようにｃｏｎｃｕｒｒｅｎｃｙＴｏｋｅｎを返すことができる。
【００６８】
ＡＰＩ定義コンポーネント７０８は、ストア内の項目拡張を作成するために手続きを使用することができる。例えば、以下の表は、項目拡張を作成するために使用される手続きに関連する様々なパラメータを示す。
【００６９】
【表８】
2008538632.tif 000010
【００７０】
この項目拡張に対する後続の更新時にクライアントが楽観的同時性検出を使用することができるように、上記で使用されるｃｏｎｃｕｒｒｅｎｃｙＴｏｋｅｎを返すことができる。
【００７１】
ＡＰＩ定義コンポーネント７０８は、ストア内の項目を修正するための手続きを起動することができ、ストアは、データ記憶システム７０２に関する永続データである。以下の表は、項目手続きの修正に対応するパラメータおよび説明の一例である。
【００７２】
【表９】
2008538632.tif 000011
【００７３】
ＡＰＩ定義コンポーネント７０８は、ストア内のリンクを修正するための手続きを起動することができる。以下の表は、リンク手続きの修正に対応するパラメータおよび説明の一例である。
【００７４】
【表１０】
2008538632.tif 000012
【００７５】
リンクのソースは不変であり、このストアドプロシージャを使用することによって変更することはできない。リンクのターゲットは可変であり、ＵｐｄａｔｅＬｉｎｋを呼び出すことによって変更することができる。ターゲット項目ｉｄのタイプは、ヌルまたは非ヌルでよい。非ヌルである場合、ストア内に存在する項目を指すことができ、リンクに対して宣言されたタイプと合致することができる。
【００７６】
さらに、ＡＰＩ定義コンポーネント７０８は、ストア内のＩｔｅｍＥｘｔｅｎｓｉｏｎを修正することができる。以下の表は、ＡＰＩ定義コンポーネント７０８で使用される手続きの一例であり、様々なプロパティおよび／またはそれに関連する説明を示す。
【００７７】
【表１１】
2008538632.tif 000013
【００７８】
さらに、ＡＰＩ定義コンポーネント７０８は、ストア内の項目を削除することを可能にするＡＰＩ７０６で、手続きを起動することができる。以下は、ストアから項目を削除する手続きの例示的パラメータおよび説明を伴う表である。
【００７９】
【表１２】
2008538632.tif 000014
【００８０】
項目が見つからなかった場合、手続きは成功を返す。項目をターゲットとするストア内の任意のリンクが、ヌルに設定されたＴａｒｇｅｔＩｔｅｍＩｄプロパティを有することができる。ＴａｒｇｅｔＩｔｅｍＩｄをヌルに設定することは、呼出し元がリンクに対して有する有効な許可の如何に関わらず、成功することができる。項目を削除するとき、項目をソースとするリンク、項目に関連するＩｔｅｍＥｘｔｅｎｓｉｏｎおよびＩｔｅｍＦｒａｇｍｅｎｔを削除することができる。項目が子を有さない（例えば、ｉｔｅｍｉｄに等しいコンテナｉｄを有する項目が存在しない）場合、削除は成功することができる。１つの例では、項目のツリーのカスケード削除を強制する方法はない。このことは、呼出し元のみによって実装することができる。項目ｉｄがツームストーン化される場合、ｃｏｎｃｕｒｒｅｎｃｙＴｏｋｅｎ／ＬａｓｔＵｐｄａｔｅＴＳ値の状態の如何に関わらず、成功が返される。ｃｏｎｃｕｒｒｅｎｃｙＴｏｋｅｎが合致せず、項目がツームストーン化されない場合、エラーコードを返すことができる。ファイルシステムエージェントは、それ自体のコンテキストでＤｅｌｅｔｅＩｔｅｍを呼び出すことができる。ＡＰＩ７０６ではアクセスチェックまたは監査は行われない。
【００８１】
ＡＰＩ定義コンポーネント７０８は、ストア内のリンクを削除する手続きを起動することができる。以下の表は、リンク手続きの削除に対応するパラメータおよび説明の一例である。
【００８２】
【表１３】
2008538632.tif 000015
【００８３】
ＡＰＩ定義コンポーネント７０８は、データ記憶システム７０２内のストア内の項目拡張を削除するための手続きを使用することができる。以下の表は、本発明と共に使用される項目拡張手続きの削除に対応するパラメータおよび説明の一例である。
【００８４】
【表１４】
2008538632.tif 000016
【００８５】
さらに、ＡＰＩ定義コンポーネント７０８は、ストア内にＩｔｅｍＦｒａｇｍｅｎｔを作成するための手続きを使用することができる。以下の表は、ユーザがＩｔｅｍＦｒａｇｍｅｎｔを作成することを可能にする手続きに対応するパラメータおよび説明の一例である。
【００８６】
【表１５】
2008538632.tif 000017
【００８７】
ＡＰＩ定義コンポーネント７０８は、ストア内のＩｔｅｍＦｒａｇｍｅｎｔを修正するための手続きを起動することができる。このストアドプロシージャを、タイプの名前およびＩｔｅｍＦｒａｇｍｅｎｔプロパティの名前がストアドプロシージャの名前に含まれるように、タイプごとに生成することができる。より明確には、上述した「ＣｒｅａｔｅＩｔｅｍＦｒａｇｍｅｎｔ」を参照されたい。以下の表は、ストア内のＩｔｅｍＦｒａｇｍｅｎｔの修正に対応するパラメータおよび説明の一例である。
【００８８】
【表１６】
2008538632.tif 000018
【００８９】
ＡＰＩ定義コンポーネント７０８は、ストア内のＩｔｅｍＦｒａｇｍｅｎｔを削除するための手続きを定義および／または実装することができる。以下は、データ記憶システム７０２内のＩｔｅｍＦｒａｇｍｅｎｔを削除するための手続きの一例として様々なパラメータを示す表である。
【００９０】
【表１７】
2008538632.tif 000019
【００９１】
さらに、ＡＰＩ定義コンポーネント７０８は、項目のセキュリティ記述子を得る手続きを使用することができる。以下の表は、データ記憶システム７０２内の項目のセキュリティ記述子を取得するための手続きに関連する様々なパラメータの一例である。
【００９２】
【表１８】
2008538632.tif 000020
【００９３】
ｃｏｎｃｕｒｒｅｎｃｙＴｏｋｅｎが返され、セキュリティ記述子に対する後続の更新時にクライアントが楽観的同時性検出を使用することが可能となる。ｃｏｎｃｕｒｒｅｎｃｙＴｏｋｅｎをセキュリティ記述子と関連付けることができる。１つの例では、セキュリティ記述子に関するｃｏｎｃｕｒｒｅｎｃｙＴｏｋｅｎが、ｉｔｅｍＩｄに対応する項目のｃｏｎｃｕｒｒｅｎｃｙＴｏｋｅｎ値に関係付けられない。ファイルシステムエージェントは、それ自体のコンテキストでＧｅｔＩｔｅｍＳｅｃｕｒｉｔｙを呼び出すことができる。
【００９４】
ＡＰＩ定義コンポーネント７０８は、ストア内の項目のセキュリティ記述子を設定することができる。以下の表は、ＡＰＩ７０６で使用されるセキュリティ記述子を設定するための手続きの一例であり、それに関連する様々なプロパティおよび／または説明を示す。
【００９５】
【表１９】
2008538632.tif 000021
【００９６】
ＡＰＩ定義コンポーネント７０８は、項目をあるコンテナから別のコンテナに移動し、かつ／または項目のｎａｍｅｓｐａｃｅＮａｍｅを変更する手続きを使用することができる。以下の表は、そのような手続きに関連する様々なパラメータの一例である。
【００９７】
【表２０】
2008538632.tif 000022
【００９８】
移動すべき項目または新しいコンテナのいずれかが現在の接続ポイントから到達可能でない場合、手続きはエラーを返すことができる。同じ名前を有する項目がターゲットコンテナ内に既に存在している場合、このオペレーションは失敗する。この関数を使用するための３つの有効な方法がある。これらの使用法は、以下の表に示される。
【００９９】
【表２１】
2008538632.tif 000023
【０１００】
ＭｏｖｅＩｔｅｍがどのように呼び出されるかに関わらず（例えば、項目を移動し、かつ／または項目をリネームする）、項目に関する（ｃｏｎｃｕｒｒｅｎｃｙＴｏｋｅｎで返される）ＬａｓｔＵｐｄａｔｅＴＳ値を更新することができる。ファイルシステムエージェントは、ユーザのコンテキストでＭｏｖｅＩｔｅｍを呼び出すことができる。リネームされるファイル／ディレクトリに関するアクセスチェックまたは監査はない。新しい親に関して行われるアクセスチェックおよび監査が、ユーザが項目を新しい宛先に移動するためのアクセスを有するかどうかを判定する。
【０１０１】
ＡＰＩ定義コンポーネント７０８は、項目を新しい項目で置換する手続きを使用することができ、新しい項目は異なるタイプでよい。以下の表は、そのような手続きに関連する様々なパラメータの一例である。
【０１０２】
【表２２】
2008538632.tif 000024
【０１０３】
ＲｅｐｌａｃｅＩｔｅｍオペレーションを使用して、項目オブジェクトを別の項目オブジェクトで置換することができる。こうしたオブジェクトをＯｌｄＩｔｅｍおよびＮｅｗＩｔｅｍと呼ぶことができる。ＯｌｄＩｔｅｍおよびＮｅｗＩｔｅｍは同じＩｔｅｍＩｄを有することができるが、異なるタイプを有することもできる。例えば、オペレーションが使用されるあるアプリケーションは、プロパティプロモーションである。以下の説明をＲｅｐｌａｃｅＩｔｅｍオペレーションと関連付けることができる。１）コンテナＩＤを変更することができない（この機能を取得するために、呼出し元はＭｏｖｅＩｔｅｍを呼び出さなければならない）。２）既存のｎａｍｅｓｐａｃｅＮａｍｅは変化しない。３）項目がｆｉｌｅ−ｂａｃｋｅｄである場合、置換される項目をソースとするすべての項目を常に削除する。４）置換項目オペレーションが（ターゲットタイプ制約がもはや有効ではないので）無効とすべき項目をターゲットとするリンクを引き起こす場合、ＲｅｐｌａｃｅＩｔｅｍは失敗する。５）置換項目オペレーションが（ソースタイプ制約がもはや有効でないので）無効とすべき項目をソースとするリンクを引き起こす場合、ＲｅｐｌａｃｅＩｔｅｍは失敗する。６）新しい項目の変更ユニットがすべてデフォルト値に設定される。少なくとも２つの例外が存在することができる。項目がｓｙｎｃに関与する場合、ＣｈａｎｇｅＩｎｆｏｒｍａｔｉｏｎ．ＳｙｎｃＩｎｆｏｒｍａｔｉｏｎ．ＣｒｅａｔｉｏｎＳｙｎｃＶｅｒｓｉｏｎ値を古い項目から新しい項目に持ち越すことができる。さらに、項目がｓｙｎｃに関与し、ｆｉｌｅ  ｂａｃｋｅｄである場合、ファイルストリームに関する変更ユニットが、古い項目から新しい項目に持ち越される。７）すべてのファイルベースのプロパティを指定しなければならない。ＣｒｅａｔｅＩｔｅｍとは異なり、ユーザによって設定されない場合、親フォルダからのＦｉｌｅプロパティの継承はない。８）ｆｉｌｅ  ｂａｃｋｅｄ項目について、ＤｅｌｅｔｅＩｔｅｍＯｗｎｅｄＣｏｎｔｅｎｔフラグが指定されない限り、どんなファイルストリームデータも修正されない（以下の表を参照）。
【０１０４】
【表２３】
2008538632.tif 000025
【０１０５】
さらに、９）ＲｅｐｌａｃｅＩｔｅｍは、項目がＧｅｎｅｒｉｃ  ＩｔｅｍタイプからＣｏｍｐｏｕｎｄ  Ｉｔｅｍタイプに切り替わることを許可せず、逆もまた同様である（以下の表を参照）。
【０１０６】
【表２４】
2008538632.tif 000026
【０１０７】
図８に、インテリジェンスを使用して、それぞれの特徴を有するデータモデルに少なくとも部分的に基づくデータの操作を容易にするシステム８００を示す。システム８００は、上述した図で説明したそれぞれのコンポーネントとすべてほぼ同様でよい、（データモデル表現によって表すことのできる）データ記憶システム８０２、データ操作コンポーネント８０４、およびインターフェース１０６を含むことができる。システム８００は、インテリジェントコンポーネント８０６をさらに含む。インテリジェントコンポーネント８０６はデータ操作コンポーネント８０４によって使用され、データ記憶システム８０２に関連する少なくとも１つの特徴に従うデータの操作（例えば、コピー、更新、置換、取得、設定、作成、削除、移動など）を容易にすることができる。例えば、インテリジェントコンポーネント８０６を使用して、データ記憶システム８０２に関連する特徴を分析することができ、かつ／またはそれぞれデータ記憶システム８０２に対する各特徴の完全性を保証することができる。
【０１０８】
インテリジェントコンポーネント８０６は、イベントおよび／またはデータを介して取り込まれる１組の観測（observation）から、システム、環境、および／またはユーザの状態についての推理を与えること、またはその状態について推論できることを理解されたい。例えば、推論を使用して、特定の状況またはアクションを識別することができ、または各状態にわたる確率分布を生成することができる。推論は、確率的、すなわちデータおよびイベントの考慮に基づく注目の各状態にわたる確率分布の計算でよい。推論は、１組のイベントおよび／またはデータからより高いレベルのイベントを構成するために使用される技法を参照することもできる。そのような推論の結果、各イベントが時間的に近接して相関されようとそうでなかろうと、またイベントおよびデータが１つの、またはいくつかのイベントおよびデータソースに由来しようと、１組の観測されたイベントおよび／または格納されたイベントデータから、新しいイベントまたはアクションが構築される。様々な（明示的および／または暗黙的に訓練された）分類方式および／またはシステム（例えば、サポートベクトルマシン、ニューラルネットワーク、エキスパートシステム、ベイズの信念ネットワーク（Bayesian belief network）、ファジィ論理、データフュージョンエンジンなど）を、本発明に関連する自動および／または推定アクションを実施することに関連して使用することができる。
【０１０９】
クラシファイア（classifier）は、入力属性ベクトルｘ＝（ｘ１，ｘ２，ｘ３，ｘ４，ｘｎ）を、入力がクラスに属する信頼度に対応付ける関数であり、すなわち、ｆ（ｘ）＝ｃｏｎｆｉｄｅｎｃｅ（クラス）である。そのような分類は、確率および／または統計に基づいた分析（例えば、分析効用およびコストへの分解（factoring））を使用して、ユーザが自動的に実施することを望むアクションを予測または推論することができる。サポートベクトルマシン（ＳＶＭ）は、使用することのできるクラシファイアの一例である。ＳＶＭは、可能な入力の空間内の超曲面を見つけることによって動作し、その超曲面は、非トリガリングイベントからトリガリング基準を分割しようと試みる。直感的に、これにより、トレーニングデータに近いが同一ではないテストデータに関して正しい分類が行われる。他の有向および無向モデル分類手法は、例えば、独立性の様々なパターンを与えるナイーブベイズ、ベイズのネットワーク、デシジョンツリー、ニューラルネットワーク、ファジィ論理モデルおよび確率分類モデルを含む。本明細書で使用される分類は、優先順位のモデルを開発するために使用される統計的回帰も含む。
【０１１０】
図９〜１０に、本発明による方法を示す。話を簡単にするために、本発明による方法を一連の動作として図示し、説明する。本発明は図示される動作および／または動作の順序によって限定されず、例えば動作は、本明細書で提示および説明されていない他の動作と共に、様々な順序で、かつ／または同時に行うことができることを理解されたい。さらに、本発明による方法を実装するために、図示されるすべての動作が必要であるわけではない。さらに、状態ダイアグラムまたはイベントを介して、一連の相互に関係する状態として本発明による方法を表すことができることも当業者には理解されよう。
【０１１１】
図９に、少なくとも１つのモデル制約を実施しながら、データベースに基づいたシステム内のデータ操作の起動を容易にする方法９００を示す。参照番号９０２においては、データモデルを使用してデータ記憶システムを表すことができる。データモデルは、データベース構造に少なくとも部分的に基づく複合モデルでよく、複合タイプのインスタンスとしてのデータ記憶システム内の情報の表現が可能となるように項目、副項目、プロパティ、および関係が定義される。データモデルは、リッチ永続オブジェクトおよびオブジェクト間のリンクを作成し、管理するために、１組の基本ビルディングブロックを使用することができる。データモデルは、表現されるデータ記憶システムの構造および／または機能を反映する少なくとも１つの特徴を含むことができることを理解されたい。言い換えれば、データモデルは、データモデル、データ記憶システム、およびそれに関連するデータの完全性を保証するように実施することのできる制約を含むことができる。
【０１１２】
参照番号９０４においては、（データモデルに基づく）データ記憶システムに関連する特徴を求めることができる。例えば、特徴は、そのような特徴に従ってデータ記憶システムを提供するためのガイドライン、制限、青写真などからなることができる。そのような特徴を使用することにより、対応するデータモデルの完全性および精度を保証することができる。参照番号９０６においては、少なくとも１つの手続きを実装することによってデータ操作を起動することができる。データ記憶システムに関連する任意の適切なデータ操作を提供する間、そのようなデータ記憶システムの特徴が実施され、安定な環境が得られる。１つの例では、データ記憶システムと共に任意の適切なデータ操作を可能とするためにＡＰＩを使用することができる。例えば、ユーザはＡＰＩを使用することができ、データを修正することができる。データ操作は、限定はしないが、コピー、更新、置換、取得、設定、作成、削除、移動などを含むことができることを理解されたい。例えば、データ記憶システムはコンテナ階層システムを含むことができ、そのような特徴が、データ記憶システム内のデータを操作するのに使用される任意の手続き中に実施される。
【０１１３】
図１０に、それぞれの特徴が実施される、データモデルに少なくとも部分的に基づいてデータを操作する方法１０００を示す。参照番号１００２においては、データモデルを使用してデータ記憶システムを表すことができる。データ記憶システムはデータベースに基づいたファイルシステムでよく、情報がタイプの複合インスタンスとして表される。参照番号１００４においては、表現されるデータ記憶システムに関連する特徴が求められる。特徴は、限定はしないが、制限、ガイドライン、規則、目標、青写真、および／または正確な実装を促進するデータ記憶システムに関連する任意のその他の適切な要素を含むことができる。
【０１１４】
参照番号１００６においては、少なくとも１つの手続きを使用することによってデータの操作を起動することができる。データ操作は、ＡＰＩによって提供することができ、ユーザは少なくとも１つの手続きを呼び出すことができ、手続きは少なくとも１つのデータ操作に対応することができる。データ記憶システムに関連する特徴の維持および／または実施中に、データ操作が起動されることを理解されたい。参照番号１００８においては、エラーコードを使用することができ、かつ／またはセキュリティを使用することができる。例えば、データ操作がデータ記憶システムの特徴に違反するとき、エラーコードを生成し、使用することができる。ＡＰＩを介してユーザにエラーコードを表示することができ、コードは、コードをテキストメッセージに関係付けるルックアップテーブルに対応することができることを理解されたい。データ操作および／またはＡＰＩに関連するセキュリティは、様々な許可レベルおよび／またはログインおよび／またはパスワードを含むことができる。言い換えれば、各データ操作をセキュリティレベルに関係付けることができ、一定のセキュリティレベルのみが手続きを実行することができ、かつ／またはログインおよびパスワードが必要とされる。
【０１１５】
参照番号１０１０においては、データ記憶システム内のデータ操作に関連して楽観的同時性および／またはデッドロッキングを実装することができる。楽観的同時性は、ほぼ同様の時間に別のプロセスが変更を行う可能性が低いことを仮定し、したがってデータ記憶システム（例えばストア）に変更をコミットする準備ができるまでロックを行わない。そのような技法を使用することにより、ロック時間が削減され、より良好なデータベース性能が提供される。１つの例では、項目の各修正に伴う変化を項目と関連付けるようにトークンを保つことができる。言い換えれば、楽観的同時性は、２つの同時アプリケーション間のデータのアクセスを容易にすることができる。さらに、ロッキングは、複数の同時呼出し元のサポートを容易にすることができる。例えば、各呼出し元が他の呼出し元を待っているのでどの要求も満たすことができないように、共通の１組の資源の所有権を要求する複数の同時呼出し元が存在するシナリオを想定する。そのような場合、システムは呼出し元をブロックする（例えば、呼出し元をロックアウトする）ことができ、そのようなケースから外れる唯一の方法は、呼出し元の１つを去らせることである。この状況を回避するために、個々の要求が自動的に成功または失敗することを複合ロッキング論理が保証することができるように、ロッキングは複数の同時呼出し元をサポートすることができる。さらに、個々の要求が原子的に成功または失敗することを複合ロッキング論理が保証することができるように、複数の同時呼出し元をサポートすることができる。
【０１１６】
本発明の様々な態様を実装する追加の状況を示すために、図１１〜１２および以下の説明は、本発明の様々な態様を実装することのできる適切なコンピューティング環境を簡潔、かつ一般的に示す。上述した説明では、ローカルコンピュータおよび／またはリモートコンピュータ上で動作するコンピュータプログラムのコンピュータ実行可能命令の一般的な文脈において本発明を説明したが、本発明を他のプログラムモジュールと組み合わせて実施できることが当業者には理解されよう。一般に、プログラムモジュールは、特定のタスクを実施し、かつ／または特定の抽象データタイプを実装するルーチン、プログラム、コンポーネント、データ構造などを含む。
【０１１７】
さらに、単一プロセッサまたはマルチプロセッサコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、ならびにパーソナルコンピュータ、ハンドヘルドコンピューティング装置、マイクロプロセッサベースの、および／またはプログラム可能な家庭用電子機器などを含む他のコンピュータシステム構成と共に本発明の方法を実施することができ、それぞれを１つまたは複数の関連する装置に動作可能に結合することができることを当業者は理解されよう。本発明の図示される態様を、いくつかのタスクが通信ネットワークを介してリンクされるリモート処理装置で実行される分散コンピューティング環境でも実施することができる。しかし、本発明のすべてではないとしても、一部の態様をスタンドアロンコンピュータ上で実施することができる。分散コンピューティング環境では、プログラムモジュールをローカルおよび／またはリモートメモリ記憶装置に配置することができる。
【０１１８】
図１１は、本発明が相互に通信することのできる例示的なコンピューティング環境１１００のブロック図である。システム１１００は、１つまたは複数のクライアント１１１０を含む。クライアント１１１０は、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピューティング装置）でよい。システム１１００は、１つまたは複数のサーバ１１２０も含むことができる。サーバ１１２０は、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピューティング装置）でよい。例えば、サーバ１１２０は、本発明を使用することにより、スレッドを収容して変換を実施することができる。
【０１１９】
クライアント１１１０とサーバ１１２０との間の１つの可能な通信は、２つ以上のコンピュータプロセス間で伝送されるように適合されたデータパケットの形態でよい。システム１１００は、クライアント１１１０とサーバ１１２０との間の通信を容易にするように使用することのできる通信フレームワーク１１４０を含む。クライアント１１１０は、クライアント１１１０に対してローカルに情報を格納するように使用することのできる１つまたは複数のクライアントデータストア１１５０に動作可能に接続される。同様に、サーバ１１２０は、サーバ１１２０対してローカルに情報を格納するのに使用することのできる１つまたは複数のサーバデータストア１１３０に動作可能に接続される。
【０１２０】
図１２を参照すると、本発明の様々な態様を実装するための例示的環境１２００は、コンピュータ１２１２を含む。コンピュータ１２１２は、処理装置１２１４、システムメモリ１２１６、およびシステムバス１２１８を含む。システムバス１２１８は、限定はしないが、システムメモリ１２１６を含むシステム構成要素を処理装置１２１４に結合する。処理装置１２１４は、様々な入手可能なプロセッサのうちのいずれでもよい。デュアルマイクロプロセッサおよびその他のマルチプロセッサアーキテクチャを、処理装置１２１４として使用することもできる。
【０１２１】
システムバス１２１８は、限定はしないが、業界標準アーキテクチャ（ＩＳＡ）、マイクロチャネルアーキテクチャ（ＭＳＡ）、拡張ＩＳＡ（ＥＩＳＡ）、Ｉｎｔｅｌｌｉｇｅｎｔ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ（ＩＤＥ）、ＶＥＳＡローカルバス（ＶＬＢ）、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）、カードバス、ユニバーサルシリアルバス（ＵＳＢ）、Ａｄｖａｎｃｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ（ＡＧＰ）、Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎバス（ＰＣＭＣＩＡ）、Ｆｉｒｅｗｉｒｅ（ＩＥＥＥ１３９４）、およびＳｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｆａｃｅ（ＳＣＳＩ）を含む任意の様々な入手可能なバスアーキテクチャを使用する、メモリバスまたはメモリコントローラ、周辺バスまたは外部バス、および／またはローカルバスを含むいくつかのタイプのバス構造のいずれでもよい。
【０１２２】
システムメモリ１２１６は、揮発性メモリ１２２０および不揮発性メモリ１２２２を含む。起動中などにコンピュータ１２１２内の要素間で情報を転送する基本ルーチンを含む基本入出力システム（ＢＩＯＳ）は、不揮発性メモリ１２２２に格納される。例えば、限定はしないが、不揮発性メモリ１２２２は、読取り専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリを含むことができる。揮発性メモリ１２２０は、外部キャッシュメモリとして働くランダムアクセスメモリ（ＲＡＭ）を含む。例えば、限定はしないが、ＲＡＭは、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、拡張ＳＤＲＡＭ（ＥＳＤＲＡＭ）、シンクリンクＤＲＡＭ（ＳＬＤＲＡＭ）、ラムバスダイレクトＲＡＭ（ＲＤＲＡＭ）、ダイレクトラムバスダイナミックＲＡＭ（ＤＲＤＲＡＭ）、ラムバスダイナミックＲＡＭ（ＲＤＲＡＭ）などの多くの形態で入手可能である。
【０１２３】
コンピュータ１２１２は、取外し可能／取外し不可能な揮発性／不揮発性コンピュータ記憶媒体も含む。図１２は、例えば、ディスクストレージ１２２４を示す。ディスクストレージ１２２４は、限定はしないが、磁気ディスクドライブ、フロッピー（登録商標）ディスクドライブ、テープドライブ、Ｊａｚドライブ、Ｚｉｐドライブ、ＬＳ−１００ドライブ、フラッシュメモリカード、またはメモリスティックなどの装置を含む。さらに、ディスクストレージ１２２４は、記憶媒体を別個に含むことができ、または、限定はしないが、コンパクトディスクＲＯＭ装置（ＣＤ−ＲＯＭ）、ＣＤレコーダブルドライブ（ＣＤ−Ｒ  Ｄｒｉｖｅ）、ＣＤリライタブルドライブ（ＣＤ−ＲＷ  Ｄｒｉｖｅ）、またはデジタルバーサタイルディスクＲＯＭドライブ（ＤＶＤ−ＲＯＭ）などの光ディスクドライブを含む他の記憶媒体と組み合わせて含むことができる。ディスク記憶装置１２２４のシステムバス１２１８への接続を容易にするために、インターフェース１２２６などの取外し可能または取外し不可能インターフェースが通常は使用される。
【０１２４】
図１２は、ユーザと、適切な動作環境１２００で説明した基本的なコンピュータ資源との間の媒介として働くソフトウェアを説明することを理解されたい。そのようなソフトウェアには、オペレーティングシステム１２２８が含まれる。オペレーティングシステム１２２８はディスクストレージ１２２４上に格納することができ、コンピュータシステム１２１２の資源を制御し、割り振るように動作する。システムアプリケーション１２３０は、システムメモリ１２１６またはディスクストレージ１２２４のいずれかに格納されたプログラムモジュール１２３２およびプログラムデータ１２３４を介してオペレーティングシステム１２２８による資源の管理を利用する。本発明は、様々なオペレーティングシステムまたはオペレーティングシステムの組合せで実施できることを理解されたい。
【０１２５】
ユーザは、入力装置１２３６を介してコマンドまたは情報をコンピュータ１２１２に入力する。入力装置１２３６には、限定はしないが、マウス、トラックボール、スタイラス、タッチパッドなどのポインティングデバイス、キーボード、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、ＴＶチューナカード、デジタルカメラ、デジタルビデオカメラ、Ｗｅｂカメラなどが含まれる。上記およびその他の入力装置は、インターフェースポート１２３８を介してシステムバス１２１８によって処理装置１２１４に接続される。インターフェースポート１２３８には、例えば、シリアルポート、パラレルポート、ゲームポート、およびユニバーサルシリアルバス（ＵＳＢ）が含まれる。出力装置１２４０は、入力装置１２３６と同じタイプのポートのいくつかを使用する。したがって、例えばＵＳＢポートを使用して、コンピュータ１２１２への入力を提供し、コンピュータ１２１２から出力装置１２４０に情報を出力することができる。出力アダプタ１２４２は、他の出力装置１２４０の中でもとりわけモニタ、スピーカ、プリンタなどの特殊なアダプタを必要とする一部の出力装置１２４０が存在することを示すために与えられている。出力アダプタ１２４２には、例えば限定はしないが、出力装置１２４０とシステムバス１２１８との間の接続の手段を提供するビデオカードおよびサウンドカードが含まれる。リモートコンピュータ１２４４など、他の装置および／または装置のシステムは、入力機能と出力機能を共に提供することに留意されたい。
【０１２６】
コンピュータ１２１２は、リモートコンピュータ１２４４などの１つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク環境で動作することができる。リモートコンピュータ１２４４は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ワークステーション、マイクロプロセッサベースのアプライアンス、ピア装置、または他の共通ネットワークノードなどでよく、一般にコンピュータ１２１２に関して説明した要素の多くまたはすべてを含む。簡潔にするために、リモートコンピュータ１２４４と共にメモリ記憶装置１２４６のみを図示する。リモートコンピュータ１２４４は、ネットワークインターフェース１２４８を介してコンピュータ１２１２に論理的に接続され、次いで通信接続１２５０を介して物理的に接続される。ネットワークインターフェース１２４８は、ローカルエリアネットワーク（ＬＡＮ）や広域ネットワーク（ＷＡＮ）など、有線および／または無線の通信ネットワークを包含する。ＬＡＮ技術には、光ファイバ分散データインターフェース（ＦＤＤＩ）、銅線分散データインターフェース（ＣＤＤＩ）、Ｅｔｈｅｒｎｅｔ（登録商標）、トークンリングなどが含まれる。ＷＡＮ技術には、限定はしないが、ポイントツーポイントリンク、サービス総合デジタル網（ＩＳＤＮ）およびそのバリエーションなどの回線交換ネットワーク、パケット交換ネットワーク、デジタル加入者回線（ＤＳＬ）などが含まれる。
【０１２７】
通信接続１２５０は、ネットワークインターフェース１２４８をバス１２１８に接続するために使用されるハードウェア／ソフトウェアを指す。通信接続１２５０は、図が見やすいようにコンピュータ１２１２内部に示しているが、コンピュータ１２１２の外部でもよい。ネットワークインターフェース１２４８への接続に必要なハードウェア／ソフトウェアには、例示の目的にすぎないが、通常の電話グレードモデム、ケーブルモデム、ＤＳＬモデムを含むモデム、ＩＳＤＮアダプタ、Ｅｔｈｅｒｎｅｔ（登録商標）カードなどの内部技術および外部技術が含まれる。
【０１２８】
上記で説明したことは、本発明の例を含む。もちろん、本発明を説明するためにコンポーネントまたは方法の考えられるすべての組合せについて説明することは不可能であるが、本発明の他の多くの組合せおよび置換えが可能であることを当業者は理解できよう。したがって、本発明は、添付の特許請求の範囲の趣旨および範囲に含まれるすべての代替形態、変更形態、および変形形態を含むものとする。
【０１２９】
特に、上述のコンポーネント、装置、回路、システムなどによって実行される様々な機能に関して、こうしたコンポーネントの説明に使用した用語（「手段」への言及を含む）は、本明細書で示した本発明の例示的態様の機能を実行する、開示された構造に構造上同じではない場合であっても、別段の指定のない限り、記載のコンポーネントの指定の機能（例えば、機能的同等物など）を実行する任意のコンポーネントに対応するものとする。この点において、本発明は、本発明の様々な方法の動作および／またはイベントを実行するコンピュータ実行可能命令を有するシステムならびにコンピュータ可読媒体を含むことも理解されたい。
【０１３０】
さらに、本発明の特定の特徴を、いくつかの実装形態のうちの１つのみを参照して開示したが、こうした特徴は、所与または特定の任意の応用例にとって望ましく有利である他の実装形態の１つまたは複数の他の特徴と組み合わせることができる。さらに、「含む（include）」および「含んでいる（including）」という用語およびその変形が詳細な説明または特許請求の範囲において使用されている範囲で、これらの用語は「備える（comprising）」という用語と同じように包括的なものとする。
【図面の簡単な説明】
【０１３１】
【図１】それぞれの特徴を有するデータモデルに少なくとも部分的に基づくデータの操作を容易にする例示的システムのブロック図である。
【図２】データ記憶システムの特徴内のデータの操作を容易にする例示的システムのブロック図である。
【図３】データ記憶システムに関連するデータの操作を用いたデータ完全性およびセキュリティの実施を容易にする例示的システムのブロック図である。
【図４】データ記憶システムに関連するデータを操作するＡＰＩの実装を容易にする例示的システムのブロック図である。
【図５】データ記憶システムの特徴内のデータを操作するＡＰＩの起動を容易にする例示的システムのブロック図である。
【図６】データ記憶システムの特徴内のデータを操作するＡＰＩの起動を容易にする例示的システムのブロック図である。
【図７】ＡＰＩコンポーネントを使用してデータ記憶システム内のデータの操作を容易にする例示的システムのブロック図である。
【図８】データモデルに少なくとも部分的に基づくデータの操作を容易にする例示的システムのブロック図である。
【図９】少なくとも１つのモデル制約を実施しながら、データベースに基づいたシステムに少なくとも部分的に基づいてデータ操作を起動する例示的方法を示す図である。
【図１０】それぞれの特徴が実施される、データモデルに少なくとも部分的に基づいてデータを操作する例示的方法を示す図である。
【図１１】本発明の新規な態様を使用することのできる例示的ネットワーキング環境を示す図である。
【図１２】本発明に従って使用することのできる例示的動作環境を示す図である。
【図１】
2008538632.tif 000027
【図２】
2008538632.tif 000028
【図３】
2008538632.tif 000029
【図４】
2008538632.tif 000030
【図５】
2008538632.tif 000031
【図６】
2008538632.tif 000032
【図７】
2008538632.tif 000033
【図８】
2008538632.tif 000034
【図９】
2008538632.tif 000035
【図１０】
2008538632.tif 000036
【図１１】
2008538632.tif 000037
【図１２】
2008538632.tif 000038