JP4901472B2 - ハードウェア/ソフトウェア・インターフェース・システムにより管理可能な情報の単位を編成するデジタル・イメージ・スキーマの実装のためのシステムおよび方法 - Google Patents
ハードウェア/ソフトウェア・インターフェース・システムにより管理可能な情報の単位を編成するデジタル・イメージ・スキーマの実装のためのシステムおよび方法 Download PDFInfo
- Publication number
- JP4901472B2 JP4901472B2 JP2006523867A JP2006523867A JP4901472B2 JP 4901472 B2 JP4901472 B2 JP 4901472B2 JP 2006523867 A JP2006523867 A JP 2006523867A JP 2006523867 A JP2006523867 A JP 2006523867A JP 4901472 B2 JP4901472 B2 JP 4901472B2
- Authority
- JP
- Japan
- Prior art keywords
- item
- items
- type
- relationship
- schema
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Processing Or Creating Images (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Description
コンピュータ・システムは、各アイテムをハードウェア/ソフトウェア・インターフェース・システムにより操作することができる個々の格納可能な情報の単位を構成する複数のアイテムと、前記アイテムの組織構造(organizational structure)を構成する複数のアイテム・フォルダと、各アイテムが少なくとも1つのアイテム・フォルダに属し、且つ複数のアイテム・フォルダに属すことが可能な態様で、複数のアイテムを操作するハードウェア/ソフトウェア・インターフェース・システムと、を備えている。
I. 概要 −0024−
A. 例示的なコンピューティング環境 −0025−
B. 従来型ファイル・ベースのストレージ −0038−
II. データの編成、検索、および共有のためのWINFSストレージ・プラットフォーム −0041−
A. 用語解説 −0042−
B. ストレージ・プラットフォームの概要 −0043−
C. データ・モデル −0048−
1. アイテム −0053−
2. アイテムの識別 −0060−
3. アイテム・フォルダおよびカテゴリ −0066−
4. スキーマ −0071−
a) 基本スキーマ −0071−
b) コア・スキーマ −0074−
5. リレーションシップ −0078−
a) リレーションシップの宣言 −0083−
b) 保持のリレーションシップ −0087−
c) 埋め込みのリレーションシップ −0098−
d) 参照のリレーションシップ −0105−
e) 規則および制約 −0110−
f) リレーションシップの順序付け −0111−
6. 拡張性 −0124−
a) アイテムの拡張(Item extensions) −0128−
b) NestedElementタイプの拡張 −0149−
D. データベース・エンジン −0157−
1. UDTを使用するデータ・ストアの実装 −0161−
2. アイテムのマッピング −0165−
3. 拡張のマッピング −0169−
4. ネスト化要素のマッピング −0170−
5. オブジェクトのID −0171−
6. SQLオブジェクトの命名 −0172−
7. カラムの命名 −0174−
8. 検索ビュー −0175−
a) アイテム −0178−
(1) マスタ・アイテム検索ビュー −0179−
(2) タイプ定義済みアイテム検索ビュー −0181−
b) アイテムの拡張 −0183−
(1) マスタ拡張検索ビュー −0184−
(2) タイプ定義済み拡張検索ビュー −0186−
c) ネスト化要素 −0188−
d) リレーションシップ −0189−
(1) マスタ・リレーションシップ検索ビュー −0190−
(2) リレーションシップ・インスタンス拡張検索ビュー −0192−
e)
9. 更新 −0194−
10. 変更追跡およびトゥームストーン −0196−
a) 変更追跡 −0197−
(1) 「マスタ」検索ビューの変更追跡 −0199−
(2) 「タイプ定義済み」検索ビューの変更追跡 −0203−
b) トゥームストーン −0205−
(1) アイテムのトゥームストーン −0206−
(2) 拡張のトゥームストーン −0208−
(3) リレーションシップのトゥームストーン −0210−
(4) トゥームストーンのクリーンアップ −0212−
11. ヘルパーAPIおよび関数 −0213−
a) 関数[System.Storage].Getltem −0224−
b) 関数[System.Storage].GetExtension −0226−
c) 関数[System.Storage].GetRelationship −0218−
12. メタデータ −0220−
a) スキーマ・メタデータ −0221−
b) インスタンス・メタデータ −0222−
E. セキュリティ −0224−
F. 通知および変更追跡 −0227−
G. 同期化 −0230−
1. ストレージ・プラットフォーム間の同期化 −0234−
a) 同期(Sync)制御アプリケーション −0227−
b) スキーマの注釈 −0240−
c) 同期の構成 −0245−
(1) コミュニティ・フォルダ−マッピング −0249−
(2) プロファイル −0250−
(3) スケジュール −0252−
d) 競合の処理 −0253−
(1) 競合の検出 −0254−
(a) 知識ベースの競合 −0255−
(b) 制約ベースの競合 −0257−
(2) 競合の処理 −0260−
(a) 自動競合解決 −0263−
(b) 競合のロギング −0267−
(c) 競合の検査および解決 −0268−
(d) レプリカの集束および競合解決の伝搬 −0269−
2. 非ストレージ・プラットフォーム・データ・ストアへの同期化 −0273−
a) 同期サービス(Sync Service) −0276−
(1) 変更の列挙(Change Enumeration) −0277−
(2) 変更適用(Change Application) −0282−
(3) 競合の解決 −0284−
b) アダプタの実装 −0285−
3. セキュリティ −0286−
4. 管理容易性 −0289−
H. 従来型ファイル・システムの相互運用性 −0291−
I. ストレージ・プラットフォームAPI −0294−
III.イメージ・スキーマおよび従属スキーマ(イメージ・スキーマ・セット) −0312−
A. イメージ・スキーマ −0315−
B. フォト・スキーマ −0327−
C. 分析プロパティ・スキーマ −0329−
IV. 結論 −0332−
本発明の主題について、法定要件を満たすために限定性を持って説明する。ただし、説明自体は、本発明の範囲を限定することを意図していない。むしろ、発明者は、主張されている主題が他の方法で実施することもでき、他の現在または将来の技術と併せて、本明細書に説明されているさまざまなステップまたはステップの組み合わせと類似したものを含めることができることを意図している。さらに、採用された方法のさまざまな要素を示すために本明細書において「ステップ」という用語が使用されるが、この用語は、個々のステップの順序が明示的に記述されている場合を除き、本明細書に開示されているさまざまなステップの間の特定の順序を暗示するものとして解釈すべきではない。
本発明の多数の実施例は、コンピュータ上で実行することができる。図1および以下の説明は、本発明が実施される適切なコンピューティング環境について簡単に概要を説明することを意図している。必須ではないが、本発明のさまざまな態様は、クライアント・ワークステーションまたはサーバのようなコンピュータによって実行されるプログラム・モジュールなど、コンピュータ実行可能命令の一般的なコンテクストに即して説明される。一般に、プログラム・モジュールには、特定のタスクを実行するかまたは特定の抽象データ・タイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。さらに、本発明は、ハンドヘルド機器、マルチ・プロセッサ・システム、マイクロ・プロセッサベースまたはプログラマブル家庭用電化製品、ネットワークPC、ミニ・コンピュータ、メインフレーム・コンピュータなど、他のコンピュータ・システムの構成により実施することができる。本発明はさらに、タスクが通信ネットワークを通じてリンクされたリモート処理装置によって実行される分散コンピューティング環境においても実施することができる。分散コンピューティング環境において、プログラム・モジュールは、ローカルおよびリモートのコンピュータ記憶装置に配置することができる。
現在のほとんどのコンピュータにおいて、「ファイル」とは、アプリケーション・プログラム、データセットなどだけでなく、ハードウェア/ソフトウェア・インターフェース・システムを含むことのできる格納可能な情報の単位である。すべての現代のハードウェア/ソフトウェア・インターフェース・システム(Windows(登録商標)、Unix(登録商標)、Linux、Mac OS、仮想マシン・システムなど)において、ファイルとは、ハードウェア/ソフトウェア・インターフェース・システムによって操作できる情報(たとえばデータ、プログラムなど)の個々の(格納可能および取り出し可能な)基本単位である。ファイルのグループは一般に、「フォルダ」に編成される。Microsoft Windows(登録商標)、Macintosh OS、および他のハードウェア/ソフトウェアシステムにおいて、フォルダとは、1つの情報の単位として取り出し、移動、その他操作を行うことができるファイルの集合である。これらのフォルダは、「ディレクトリ」(本明細書において以下でさらに詳細に説明する)と呼ばれるツリー・ベースの階層的配列に編成される。DOS、z/OS、およびほとんどのUnix(登録商標)ベースのオペレーティング・システムのような、他の特定のハードウェア/ソフトウェア・インターフェース・システムにおいて、「ディレクトリ」および/または「フォルダ」は相互に置き換え可能であり、初期のAppleコンピュータ・システム(たとえばApple IIe)ではディレクトリの代わりに「カタログ」という用語を使用していた。ただし、本明細書で使用するように、これらの用語の全ては、同義語であり、相互置き換え可能であって、階層情報ストレージ構造とそのフォルダおよびファイル・コンポーネントに対する、他のすべての等価語および参照とをさらに含むことを意図している。
本発明は、先に説明したように参照により本明細書に組み込まれる関連発明と共に、データを編成し、検索し、共有するためのストレージ・プラットフォームを目的としている。本発明のストレージ・プラットフォームは、データ・プラットフォームを、前述の既存ファイル・システムおよびデータベース・システムの種類を超えて拡張/拡大し、「アイテム」と呼ばれる新しいデータの形態(form of data)を含むあらゆるタイプのデータの記憶装置(store)となるように設計される。
本明細書および特許請求の範囲において使用されている以下の用語は、以下のとおりの意味を表している。
・ 「アイテム」は、ハードウェア/ソフトウェア・インターフェース・システムに利用可能な、格納可能な情報の単位であり、単なるファイルとは異なり、プロパティの基本セットを備えるオブジェクトであり、プロパティの基本セットは、ハードウェア/ソフトウェア・インターフェース・システム・シェルによってエンド・ユーザに見えるすべてのオブジェクトにわたって共通にサポートされる。アイテムはさらに、プロパティおよびリレーションシップ(relationships)も備え、これらは、新しいプロパティとリレーションシップを導入できるようにする機能を含み、すべてのアイテム・タイプにわたって共通にサポートされる、ている(本明細書の後半で詳細に説明する)。
・ 「オペレーティング・システム」(OS)は、アプリケーション・プログラムとコンピュータ・ハードウェアの間の仲介としての役割を果たす特殊なプログラムである。オペレーティング・システムはほとんどの場合、シェルおよびカーネルを備えている。
・ 「ハードウェア/ソフトウェア・インターフェース・システム」は、ソフトウェア、またはハードウェアおよびソフトウェアの組み合わせであり、コンピュータ・システムの基礎を成すハードウェア・コンポーネントとコンピュータ・システム上で実行するアプリケーションとの間のインターフェースとしての役割を果たす。ハードウェア/ソフトウェア・インターフェース・システムは通常、オペレーティング・システムを備えている(一部の実施例においてはオペレーティング・システムのみで構成される)。ハードウェア/ソフトウェア・インターフェース・システムはさらに、仮想マシン・マネージャ(VMM)、共通言語ランタイム(CLR)またはその機能的な相当物、Java(登録商標)仮想マシン(JVM)またはその機能的な相当物、またはコンピュータ・システムのオペレーティング・システムに代わるかまたはこれに追加する他のそのようなソフトウェア・コンポーネントも備えている。ハードウェア/ソフトウェア・インターフェース・システムの目的は、ユーザがアプリケーション・プログラムを実行できる環境を提供することにある。ハードウェア/ソフトウェア・インターフェース・システムの目標は、コンピュータ・システムを使いやすくし、効率的よくコンピュータ・ハードウェアを利用することである。
図3を参照すると、ストレージ・プラットフォーム300は、データベース・エンジン314上に実装されたデータ・ストア302を備えている。1つの実施例において、データベース・エンジンは、オブジェクト・リレーションシップ拡張(object relational extensions)を備えるリレーショナル・データベース・エンジンを備えている。1つの実施例において、リレーショナル・データベース・エンジン314は、Microsoft SQL Serverリレーショナル・データベース・エンジンを備えている。データ・ストア302は、データの編成、検索、共有、同期化、およびセキュリティをサポートするデータ・モデル304を実装する。データの特定のタイプについては、スキーマ340などのスキーマに記述される。ストレージ・プラットフォーム300は、以下に詳細に説明するように、これらのスキーマを展開するため、およびこれらのスキーマを拡張するためのツール346を提供する。
本発明のストレージ・プラットフォーム300のデータ・ストア302は、ストア内に常駐するデータの編成(organization)、検索、共有、同期化、およびセキュリティをサポートするデータ・モデルを実装する。本発明のデータ・モデルにおいて、「アイテム」とはストレージ情報の基本単位である。データ・モデルは、以下でさらに詳細に説明するように、アイテムおよびアイテム拡張機能を宣言し、アイテム間のリレーションシップを確立し、アイテム・フォルダおよびカテゴリ内のアイテムを編成するためのメカニズムを提供する。
アイテムは、格納可能な情報の単位であり、単純なファイルとは異なり、エンド・ユーザまたはアプリケーション・プログラムに公開されるすべてのオブジェクトにわたってストレージ・プラットフォームが共通にサポートするプロパティの基本セットを備えるオブジェクトである。アイテムはさらに、以下で説明するように、新しいプロパティとリレーションシップを導入できるようにする機能を含むすべてのアイテム・タイプにわたって共通にサポートされるプロパティおよびリレーションシップも備えている。
場所(location)のアイテムは、EAddresses、MetropolitanRegion、Neighborhood、およびPostalAddressesを含む複数のプロパティを備えている。各々のプロパティの特有のタイプは、プロパティ名のすぐ後に示されており、コロン(「:」)によってプロパティ名と区切られている。タイプ名の右側には、そのプロパティ・タイプに許可されている値の数が角括弧に囲まれて示されている。ここで、コロン(「:」)の右側のアスタリスク(「*」)は不特定および/または無制限の数(「多数」)を示している。コロンの右側の「1」は、多くとも1つの値があることを示している。コロンの左側のゼロ(「0」)は、プロパティがオプションである(値が全くない場合もある)ことを示している。コロンの左側の「1」は、少なくとも1つの値(プロパティは必須)がなければならないことを示している。Neighborhood およびMetropolitanRegionはいずれも、定義済みのデータ・タイプまたは「単純タイプ(simple type)」である(本明細書において大文字なしで示される)タイプ「nvarchar」である。ただし、EAddressおよびPostalAddressは、それぞれタイプEAddressおよびPostalAddressの事前定義済みのタイプまたは「複合タイプ(complex types)」(本明細書において大文字を使用して示される)のプロパティである。複合タイプは、1つまたは複数の単純データ・タイプおよび/または他の複合タイプから派生するタイプである。アイテムのプロパティの複合タイプは、その複合タイプの詳細が直属のアイテムにネストされてそのプロパティを定義するので、「ネストされた要素」(以下、ネスト化要素と記す)を構成し、これらの複合タイプに関連する情報はこれらのプロパティを持つアイテムで(本明細書の後半で説明するように、アイテムの境界内で)保持される。これらのタイプ定義の概念は周知のものであり、当業者には容易に理解されよう。
・ アイテムのアイテム・タイプ、および、アイテムが(すべてのアイテムが基本スキーマの単一のアイテムおよびアイテム・タイプから派生している、本発明のいくつかの実施例の場合のように)別のアイテムのサブタイプである場合、該当するサブタイプ情報(つまり、親アイテム・タイプに関連する情報)。コピーされる元のアイテムが別のアイテムのサブタイプである場合、コピーもその同じアイテムのサブタイプになる。
・ アイテムの複合タイプ・プロパティおよび拡張(ある場合)。元のアイテムが複合タイプのプロパティ(ネイティブまたは拡張)を持つ場合、コピーも同じ複合タイプを持つことができる。
・ 「Oownership relationships(所有権関係)」上のアイテムのレコード、つまり他のどのアイテム(「ターゲット・アイテム」)が現在のアイテムによって所有されるか(「Owning Item(所有アイテム)」)を一覧するアイテムの所有リスト。これは、以下でさらに詳細に説明するアイテム・フォルダについて、およびすべてのアイテムが少なくとも1つのアイテム・フォルダに属す必要があるという以下に述べられた規則、に特に関連する。さらに、組み込まれたアイテム(以下でさらに詳細に説明する)については、組み込まれたアイテムは、コピー、削除などの操作のために組み込まれているアイテムの一部と見なされている。
アイテムはグローバルアイテム・スペース内でItemIDにより一意に識別される。Base.Itemタイプは、アイテムのIDを格納するタイプGUIDのフィールドItemIDを定義する。アイテムは、データ・ストア302に厳密に1つのIDを持つ必要がある。
以下でさらに詳細に説明するように、アイテムのグループは、(フィールド・フォルダと混同しないように)アイテム・フォルダと呼ばれる特殊なアイテムに編成することができる。しかし、ほとんどのファイル・システムの場合と異なり、アイテムは複数のアイテム・フォルダに属すことができ、この結果、アイテムが1つのアイテム・フォルダでアクセスされて修正されるとき、この修正済みアイテムは別のアイテム・フォルダから直接アクセスすることができるようになっている。本質的には、アイテムへのアクセスがさまざまなアイテム・フォルダから行われても、実際にアクセスされているのはまったく同一のアイテムなのである。しかし、アイテム・フォルダは必ずしもそのメンバ・アイテムのすべてを所有する必要はないか、または、他のフォルダと連動して単にアイテムを共同所有することができ、これによりアイテム・フォルダの削除が必ずしもアイテムを削除したことにはならない。それにもかかわらず、本発明のいくつかの実施例においては、特定のアイテムのたった1つのアイテム・フォルダが削除された場合に、一部の実施例ではアイテムが自動的に削除されるか、あるいは代替実施例においてはアイテムが自動的にデフォルトのアイテム・フォルダ(たとえば、「ゴミ箱」アイテム・フォルダは概念的には、さまざまなファイルおよびフォルダ・ベースのシステムで使用される類似した名前の付いたフォルダと似ている)のメンバになるように、アイテムは少なくとも1つのアイテム・フォルダに属す必要がある。
a)基本スキーマ
アイテムの作成および使用に普遍的な基盤を提供するため、本発明のストレージ・プラットフォームのさまざまな実施例は、アイテムおよびプロパティを作成して編成するための概念上のフレームワークを確立する基本スキーマを備えている。基本スキーマはアイテムおよびプロパティのある種の特定のタイプと、サブタイプがさらに派生できるこれらの特定の、基礎的タイプの特徴を定義する。この基本スキーマの使用により、プログラマは、アイテム(およびそれぞれのタイプ)をプロパティ(およびそれぞれのタイプ)と概念的に区別することができる。さらに、基本スキーマは、すべてのアイテム(およびその対応するアイテムタイプ)が基本スキーマのこの基礎的アイテム(およびその対応するアイテム・タイプ)から派生するので、すべてのアイテムが所有できるプロパティの基礎的セットを示している。
本発明のストレージ・プラットフォームのさまざまな実施例はさらに、最上位のItemタイプ構造のための概念上のフレームワークを提供するコア・スキーマを備えている。図8Aは、コア・スキーマ内のアイテムを示すブロック図であり、図8Bはコア・スキーマ内のプロパティ・タイプを示すブロック図である。異なる拡張子(*.com、*.exe、*.bat、*.sys)を持つファイル間で行われる区別、ファイルおよびフォルダ・ベースのシステムにおける他のそのような基準は、コア・スキーマの機能と類似している。アイテム・ベースのハードウェア/ソフトウェア・インターフェース・システムにおいて、コア・スキーマは、アイテム・ベースのハードウェア/ソフトウェア・インターフェース・システムが理解して、あらかじめ定義された予測可能な方法で直接処理することができる1つまたは複数のコア・スキーマアイテム・タイプにすべてのアイテムを、直接に(アイテム・タイプにより)または間接(アイテム・サブタイプにより)に、特徴付けるコア・アイテム・タイプのセットを定義する。事前定義済みアイテム・タイプは、アイテム・ベースのハードウェア/ソフトウェア・インターフェース・システムにおいて最も一般的なアイテムを反映し、この結果で、効率性のあるレベルが、コア・スキーマを構成するこれらの事前定義済みアイテム・タイプを理解するアイテム・ベースのハードウェア/ソフトウェア・インターフェース・システムによって得られる。
・ Categories:このアイテム・タイプのアイテム(およびそこから派生したサブタイプ)は、アイテム・ベースのハードウェア/ソフトウェア・インターフェース・システムにおける有効なカテゴリを表す。
・ Commodities:識別可能な値であるアイテム。
・ Devices:情報処理機能をサポートする論理構造を持つアイテム。
・ Documents:アイテム・ベースのハードウェア/ソフトウェア・インターフェース・システムによって解釈されないが、代わりにドキュメントタイプに対応するアプリケーション・プログラムによって解釈されるコンテンツを持つアイテム。
・ Events:環境内の特定のオカレンスを記録するアイテム。
・ Locations:物理的位置(地理的位置など)を表すアイテム。
・ Messages:2つ以上のプリンシパル(以下で定義される)間の通信のアイテム。
・ Principals:ItemIdを除いて少なくとも1つの決定的に証明可能なIDを持つアイテム(たとえば、人物、組織、グループ、世帯、当局、サービスなど)。
・ Statements:ポリシー、サブスクリプション、証明書など(これらに限定されないが)を含む環境に関する特殊情報を持つアイテム。
・ Certificates(基本スキーマの基礎的PropertyBaseタイプから派生)
・ Principal Identity Keys(基本スキーマのIdentityKeyタイプから派生)
・ Postal Address(基本スキーマのPropertyタイプから派生)
・ Rich Text(基本スキーマのPropertyタイプから派生)
・ EAddress(基本スキーマのPropertyタイプから派生)
・ IdentitySecurityPackage(基本スキーマのRelationshipタイプから派生)
・ RoleOccupancy(基本スキーマのRelationshipタイプから派生)
・ BasicPresence(基本スキーマのRelationshipタイプから派生)
これらのアイテムおよびプロパティはさらに、図8Aおよび図8Bに示されているそれぞれのプロパティによって説明される。
リレーションシップは、一方のアイテムがソースとして指定され、もう一方のアイテムがターゲットとして指定される2項関係(binary relationships)である。ソース・アイテムおよびターゲット・アイテムは、リレーションシップによって関連している。ソース・アイテムは一般に、リレーションシップの存続期間を制御する。つまり、ソース・アイテムが削除されると、アイテム間のリレーションシップも削除される。
明示的なリレーションシップ・タイプは、以下の要素により定義される。
・ リレーションシップ名は、名前属性で指定される。
・ リレーションシップ・タイプは、保持、埋め込み、参照のいずれかである。これは、タイプ属性で指定される。
・ ソースおよびターゲット・エンド・ポイント。各エンドポイントは、参照先アイテムの名前およびターゲットを指定する。
・ ソース・エンド・ポイント・フィールドは、一般にItemID(宣言されていない)のタイプであり、リレーションシップ・インスタンスと同じデータ・ストアにあるアイテムを参照する必要がある。
・ 保持および埋め込みのリレーションシップでは、ターゲット・エンド・ポイント・フィールドはItemIDReferenceのタイプである必要があり、リレーションシップ・インスタンスと同じストアにあるアイテムを参照する必要がある。参照のリレーションシップでは、ターゲット・エンド・ポイントは任意のItemReferenceタイプにすることができ、他のストレージ・プラットフォームのデータ・ストア内のアイテムを参照することができる。
・ オプションで、スカラの1つまたは複数のフィールド、またはPropertyBaseタイプを宣言することができる。これらのフィールドは、リレーションシップに関連付けられているデータを含むことができる。
・ リレーションシップ・インスタンスは、グローバル・リレーションシップ・テーブルに格納される。
・ すべてのリレーションシップ・インスタンスは、組み合わせ(ソースItemID、リレーションシップID)により一意に識別される。リレーションシップIDは、そのタイプにはかかわりなく所定のアイテムに供給されたすべてのリレーションシップに対して所定のソースItemID内で一意である。
以下にリレーションシップの宣言の例を示す。
保持リレーションシップは、ターゲット・アイテムの参照カウントベースの存続期間管理をモデル化するために使用される。
埋め込みリレーションシップは、ターゲット・アイテムのライフタイムの排他制御の概念をモデル化する。埋め込みリレーションシップは、複合アイテムの概念を可能にする。
参照リレーションシップは、それが参照するアイテムの存続期間を制御しない。さらに、参照リレーションシップは、ターゲットの存在を保証することも、リレーションシップ宣言で指定されているターゲットのタイプを保証することもない。つまり、参照リレーションシップは、danglingであることができるということである。さらに、参照リレーションシップは、他のデータ・ストアにあるアイテムを参照することができる。参照リレーションシップは、Webページにおけるリンクと類似した概念と考えることができる。
以下の追加の規則および制約事項がリレーションシップに適用される。
・ アイテムは「厳密に1つの埋め込みリレーションシップ」または「1つまたは複数の保持リレーションシップ」のターゲットでなければならない。1つの例外は、ルート・アイテムである。アイテムは、ゼロ以上の参照リレーションシップのターゲットになることができる。
・ 埋め込みリレーションシップのターゲットであるアイテムは、保持リレーションシップのソースになることはできない。これは、参照のリレーションシップのソースであることができる。
・ アイテムは、ファイルから格上げされる場合には保持リレーションシップのソースになることはできない。これは、埋め込みリレーションシップおよび参照リレーションシップのソースになることができる。
・ ファイルから格上げされるアイテムは、埋め込みリレーションシップのターゲットになることはできない。
少なくとも1つの実施例において、本発明のストレージ・プラットフォームはリレーションシップの順序付けをサポートする。順序付けは、基本リレーションシップ定義中の「Order」という名前のプロパティを通じて行われる。Orderフィールドには一意性の制約はない。同じ「順序」プロパティ値とのリレーションシップの順序は保証されない。ただし、下位の「順序」値を有するリレーションシップの後および上位の「順序」フィールド値を有するリレーションシップの前に順序付けられることは保証される。
・ RelFirstは、順序値OrdFirstを持つ順序付きコレクションにおける最初のリレーションシップである。
・ RelLastは、順序値OrdLastを持つ順序付きコレクションにおける最後のリレーションシップである。
・ RelXは、順序値OrdXを持つコレクションにおける所定のリレーションシップである。
・ RelPrevは、RelXにコレクション内で最も近い、OrdXよりも小さい順序値OrdPrevを持つリレーションシップである。
・ RelNextは、RelXにコレクション内で最も近い、OrdXよりも大きい順序値OrdNextを持つリレーションシップである。
・ InsertBeforeFirst(SourceItemID、Relationship)は、コレクション内の最初のリレーションシップとしてリレーションシップを挿入する。新しいリレーションシップの「Order」プロパティの値は、OrdFirstよりも小さくなる。
・ InsertAfterLast(SourceItemID、Relationship)は、コレクション内の最後のリレーションシップとしてリレーションシップを挿入する。新しいリレーションシップの「Order」プロパティの値は、OrdLastよりも大きくなる。
・ InsertAt(SourceItemID、ord、Relationship)は、「Order」プロパティに指定されている値を持つリレーションシップを挿入する。
・ InsertBefore(SourceItemID、ord、Relationship)は、所定の順序値を持つリレーションシップの前にリレーションシップを挿入する。新しいリレーションシップは、非包含的なOrdPrevとordの間の「Order」値を割り当てられる。
・ InsertAfter(SourceItemID、ord、Relationship)は、所定の順序値を持つリレーションシップの後にリレーションシップを挿入する。新しいリレーションシップは、非包含的なordとOrdNextの間の「Order」値を割り当てられる。
・ MoveBefore(SourceItemID、ord、RelationshipID)は、指定されている「Order」値を持つリレーションシップの前に所定のリレーションシップIDを持つリレーションシップを移動する。リレーションシップは、非包含的なOrdPrevとordの間の新しい「Order」値を割り当てられる。
・ MoveAfter(SourceItemID、ord、RelationshipID)は、指定されている「Order」値を持つリレーションシップの後に所定のリレーションシップIDを持つリレーションシップを移動する。リレーションシップは、非包含的なordとOrdNextの間の新しい順序値を割り当てられる。
アイテムとそのアイテム・フォルダの間のリレーションシップを表す前述のリレーションシップは、アイテムからアイテム・フォルダへ、アイテム・フォルダからアイテムへ、またはその両方へ論理的に拡張することができる。アイテムからアイテム・フォルダに論理的に拡張するリレーションシップは、アイテム・フォルダがそのアイテムにパブリックでありそのメンバーシップ情報をそのアイテムと共有することを示している。逆に、アイテムからアイテム・フォルダへの論理リレーションシップの不足は、アイテム・フォルダがそのアイテムにプライベートであり、そのメンバーシップ情報をそのアイテムと共有しないことを示している。同様に、アイテム・フォルダからアイテムに論理的に拡張するリレーションシップは、アイテムがパブリックでありそのアイテム・フォルダに共有可能であることを示しているが、これに反して、アイテム・フォルダからアイテムへの論理リレーションシップの不足は、アイテムがプライベートであり共有可能ではないことを示している。したがって、アイテム・フォルダが他のシステムにエクスポートされるとき、これは新しいコンテクストで共有される「パブリック」アイテムであり、アイテムが他の共有可能なアイテムのそのアイテム・フォルダを検索するとき、これはそこに属する共有可能なアイテムに関する情報をアイテムに提供する「パブリック」アイテム・フォルダである。
ストレージ・プラットフォームは、前述したように、スキーマ340の初期セットが提供されるように設計される。しかしさらに、少なくとも一部の実施例において、ストレージ・プラットフォームは、独立系ソフトウェアベンダ(ISV)を含む顧客が新しいスキーマ344(新しいアイテムおよびネスト化要素のタイプなど)を作成できるようにする。このセクションでは、スキーマ340の初期セットにおいて定義されるアイテム・タイプおよびネスト化要素タイプ(または単に「要素」タイプ)を拡張することによってそのようなスキーマを作成するためのメカニズムについて説明する。
・ ISVは、新しいタイプ、つまりBase.Itemのサブタイプを導入することができる。
・ ISVは、新しいネスト化要素タイプ、つまりBase.NestedElementのサブタイプを導入することができる。
・ ISVは、新しい拡張、つまりBase.NestedElementのサブタイプを導入することができる。しかし、
・ ISVはストレージ・プラットフォーム・スキーマ340の初期セットによって定義されるいかなるタイプ(アイテム、ネスト化要素、またはExtensionタイプ)もサブタイプ定義することはできない。
アイテムの拡張性を提供するため、データ・モデルはさらに、Base.Extensionという名前の抽象タイプを定義する。これは、拡張タイプ(extension types)の階層に対するルート・タイプである。アプリケーションは、Base.Extensionをサブタイプ定義して特定の拡張タイプを作成することができる。
・ 拡張タイプはフィールドを持つ。
・ フィールドは、基本またはネスト化要素タイプにすることができる。
・ 拡張タイプはサブタイプ定義することができる。
・ 拡張は、リレーションシップのソースおよびターゲットにすることができない。
・ 拡張タイプ・インスタンスは、アイテムから独立して存在することができない。また、
・拡張タイプはストレージ・プラットフォーム・タイプ定義でフィールドタイプとして使用することができない。
b)NestedElementタイプの拡張
ネスト化要素タイプは、アイテム・タイプと同じメカニズムでは拡張されない。ネスト化要素の拡張は、ネスト化要素タイプのフィールドと同じメカニズムで格納され、アクセスされる。
・ ネスト化要素拡張は、拡張タイプではない。これらは、Base.Extensionタイプにルートされる拡張タイプ階層に属していない。
・ ネスト化要素拡張は、アイテムの他のフィールドと共に格納され、グローバルにアクセス可能ではない。所定の拡張タイプのすべてのインスタンスを取り出すクエリは作成することができない。
・ これらの拡張は、(アイテムの)他のネスト化要素が格納される方法と同じ方法で格納される。他のネスト化セットと同様に、NestedElement拡張はUDTに格納される。これらは、ネスト化要素タイプのExtension・フィールドを通じてアクセス可能である。
・ 多値のプロパティ(multi-valued properties)にアクセスするために使用されるコレクション・インターフェースは、タイプ拡張のセットにアクセスして繰り返すためにも使用される。
D.データベース・エンジン
前述のように、データ・ストアはデータベース・エンジン上に実装される。本発明の実施例において、データベース・エンジンは、オブジェクト・リレーションシップ拡張を備える、Microsoft SQL Serverエンジンなどの、SQLクエリ言語を実装するリレーショナル・データベース・エンジンを備えている。このセクションでは、データ・ストアが実装するデータ・モデルのリレーショナル・ストアへのマッピングについて説明し、本発明の実施例に従って、ストレージ・プラットフォーム・クライアントによって消費される論理APIに関する情報を提供する。ただし、異なるデータベース・エンジンが採用される場合に異なるマッピングを採用できることを理解されたい。実際、リレーショナル・データベース・エンジンにストレージ・プラットフォームの概念データ・モデルを実装することに加えて、オブジェクト指向およびXMLデータベースなど、他の種類のデータベースに実装することも可能である。
本発明の実施例において、リレーショナル・データベース・エンジン314は、1つの実施例でMicrosoft SQL Serverエンジンを備えており、組み込みスカラ・タイプをサポートする。組み込みスカラ・タイプは、「ネイティブ」でしかも「単純(simple)」である。これは、ユーザが独自のタイプを定義できないという意味でネイティブであり、複雑な構造をカプセル化できないという点で単純である。ユーザ定義タイプ(User-defined types)(以下UDTと呼ぶ)は、複雑な構造化タイプを定義してユーザがタイプ・システムを拡張できるようにすることによって、ネイティブのスカラ・タイプ・システムを超えるタイプ拡張性のメカニズムを提供する。ユーザによって定義されると、UDTは、組み込みスカラ・タイプが使用されるタイプ・システム内のどこでも使用することができる。
アイテムがグローバルに検索可能であることの望ましさ、および本発明の実施例のリレーショナル・データベースにおける継承およびタイプ代替性のサポートを考慮すれば、データベース・ストアにおけるアイテムストレージの1つの可能な実施態様は、すべてのアイテムをタイプBase.Itemのカラムを持つ単一のテーブルに格納することになる。タイプ代替性を使用して、すべてのタイプのアイテムは格納することができ、検索はYukonの「is of(Type)」演算子を使用して、アイテム・タイプおよびサブタイプによってフィルタすることができる。
Extensionは、アイテムと非常によく似ており、同じ要件をいくつか備えている。継承をサポートするもう1つのルート・タイプとして、Extensionは、ストレージにおける多くの同じ考慮事項およびトレードオフの影響を受けやすい。そのため、単一テーブルの方法ではなく、類似するファミリ・マッピングのタイプが、Extensionに適用される。もちろん、他の実施例において、単一テーブルの方法を使用することもできる。本発明の実施例において、ExtensionはItemIDにより厳密に1つのアイテムに関連付けられており、アイテムのコンテクストで一意のExtensionIDを含んでいる。アイテムの場合と同様に、その識別を与えられたExtensionを取り出すために関数が提供される。これはItemIDおよびExtensionIDのペアで構成される。ビューは、Extensionタイプごとに作成される。これはアイテム・タイプ・ビューと類似している。
ネスト化要素は、アイテム、Extension、リレーションシップ、または深くネストされた構造を形成するために他のネスト化要素に埋め込まれることができるタイプである。アイテムおよびExtensionと同様に、ネスト化要素はUDTとして実装されるが、これらはアイテムおよびExtension内に格納される。したがってネスト化要素は、そのアイテムおよびExtensionのコンテナを超えるストレージ・マッピングは備えていない。つまり、NestedElementタイプのインスタンスを直接格納する、システム内のテーブルはなく、ネスト化要素に特に専用化されたビューもない。
データ・モデル内の各エンティティ、つまり各アイテム、Extension、およびリレーションシップは、一意のキー値(key value)を持っている。アイテムは、そのItemIdによって一意に識別される。Extensionは、(ItemId、ExtensionId)の複合キーによって一意に識別される。リレーションシップは、(ItemId、RelationshipId)の複合キーによって一意に識別される。ItemId、ExtensionId、およびRelationshipIdは、GUID値である。
データ・ストアで作成されたすべてのオブジェクトは、ストレージ・プラットフォーム・スキーマ名から派生したSQLスキーマ名で格納することができる。たとえば、ストレージ・プラットフォーム基本スキーマ(多くは「Base」と呼ばれる)は、「[System.Storage].Item」などの「[System.Storage]」SQLスキーマでタイプを生成することができる。生成される名前には、命名上の競合をなくすために先頭に修飾子が付けられる。必要に応じて、名前の各論理部分の区切り記号として感嘆符文字(!)が使用される。以下の表は、データ・ストア内のオブジェクトに使用される命名規則の概要を示している。各スキーマ要素(アイテム、Extension、リレーションシップおよびビュー)は、データ・ストア内のインスタンスにアクセスするために使用される装飾された命名規則と共に一覧されている。
オブジェクト・モデルをストア内にマッピングするとき、アプリケーション・オブジェクトと共に格納される追加情報が原因となり、命名の衝突が発生する可能性がある。命名の衝突を防ぐために、すべての非タイプの特定のカラム(non-type specific columns)(タイプ宣言における名前付きプロパティに直接マップされないカラム)には、下線(_)文字が先頭に付けられる。本発明の実施例において、下線(_)文字は、識別子プロパティの開始文字としては許可されない。さらに、CLRおよびデータ・ストアの間の命名を統一するため、ストレージ・プラットフォーム・タイプまたはスキーマ要素(リレーションシップなど)のすべてのプロパティは、最初の文字を大文字にする必要がある。
ビューは、格納されているコンテンツを検索するためにストレージ・プラットフォームによって提供される。SQLビューは、アイテムおよびExtensionタイプごとに提供される。さらに、ビューは、リレーションシップおよび(データ・モデルによって定義される)Viewをサポートするために提供される。ストレージ・プラットフォーム内のすべてのSQLビューと基礎をなすテーブルは、読み取り専用である。データは、以下でさらに詳細に説明するように、ストレージ・プラットフォームAPIのUpdate()メソッドを使用して格納または変更することができる。
・ ItemId、ElementId、RelationshipIdなどのビュー結果の論理「Key」カラム
・ TypeIdなどの結果のタイプに関するメタデータ情報
・ Create Version、Update Versionなどの変更追跡カラム
・ タイプ固有のカラム(宣言済みタイプのプロパティ)
・ タイプ固有のビュー(ファミリ・ビュー)はオブジェクトを返すオブジェクト・カラムも含む
各タイプ・ファミリのメンバは、一連のアイテム・ビューを使用して検索可能であり、データ・ストア内のアイテム・タイプごとに1つのビューがある。図28は、アイテム検索ビューの概念を示す図である。
各アイテム検索ビューは、固有のタイプまたはそのサブタイプのアイテムのインスタンスごとに行(row)を含んでいる。たとえば、Documentのビューは、Document、LegalDocumentおよびReviewDocumentのインスタンスを返すことができる。この例を上げると、アイテム・ビューは図29に示されているように概念的に説明することができる。
ストレージ・プラットフォーム・データ・ストアの各インスタンスは、マスタ・アイテム・ビューと呼ばれる特殊なアイテム・ビューを定義する。このビューは、データ・ストア内の各アイテムに関する概要情報を提供する。ビューは、アイテム・タイプ・プロパティごとに1つのカラム、アイテムのタイプを記述するカラム、および変更追跡と同期化情報を提供するために使用される複数のカラムを提供する。マスタ・アイテム・ビューは、名前「[System.Storage].[Master!Item]」を使用してデータ・ストア内で識別される。
各アイテム・タイプも検索ビューを備えている。ルート・アイテム・ビューと類似しているが、このビューは「_Item」カラムを介してアイテム・オブジェクトへのアクセスも提供する。各タイプ定義済みアイテム検索ビューは、名前[schemaName].[itemTypeName]を使用してデータ・ストア内で識別される。たとえば、[AcmeCorp.Doc].[OfficeDoc]である。
WinFS StoreにおけるすべてのアイテムExtensionは、検索ビューを使用してもアクセス可能である。
データ・ストアの各インスタンスは、「マスタExtensionビュー」と呼ばれる特殊Extensionビューを定義する。このビューは、データ・ストア内の各Extensionに関する概要情報を提供する。ビューは、Extensionプロパティごとに1つのカラム、Extensionのタイプを記述するカラム、および変更追跡と同期化情報を提供するために使用される複数のカラムを備えている。マスタ拡張ビューは、名前「[System.Storage].[Master!Extension]」を使用してデータ・ストア内で識別される。
各Extensionタイプも検索ビューを備えている。マスタ拡張ビューと類似しているが、このビューはExtensionカラムを介してアイテム・オブジェクトへのアクセスも提供する。各タイプ定義済み拡張検索ビューは、名前[schemaName].[Extension!extensionTypeName]を使用してデータ・ストア内で識別される。たとえば、[AcmeCorp.Doc].[Extension!OfficeDocExt]である。
すべてのネスト化要素は、アイテム、Extensionまたはリレーションシップ・インスタンス内に格納される。したがって、これらは、適切なアイテム、Extension、またはリレーションシップ検索ビューにクエリを行うことによりアクセスできる。
前述のように、リレーションシップはストレージ・プラットフォーム・データ・ストア内のアイテム間をリンクする基本単位を形成する。
各データ・ストアは、マスタ・リレーションシップ・ビューを提供する。このビューは、データ・ストア内のすべてのリレーションシップ・インスタンスに関する情報を提供する。マスタ・リレーションシップ・ビューは、名前「[System.Storage].[Master!Relationship]」を使用してデータ・ストア内で識別される。
各宣言済みリレーションシップは、特定のリレーションシップのすべてのインスタンスを返す検索ビューも備えている。マスタ・リレーションシップ・ビューと類似しているが、このビューはリレーションシップ・データのプロパティごとに名前付きカラムも提供する。各リレーションシップ・インスタンス検索ビューは、名前[schemaName].[Relationship!relationshipName]を使用してデータ・ストア内で識別される。たとえば、[AcmeCorp.Doc].[Relationship!DocumentAuthor]である。
9.更新
ストレージ・プラットフォーム・データ・ストア内のすべてのビューは、読み取り専用である。データ・モデル要素(アイテム、Extensionまたはリレーションシップ)の新しいインスタンスを作成するため、または既存のインスタンスを更新するため、ストレージ・プラットフォームAPIのProcessOperationまたはProcessUpdategramメソッドを使用する必要がある。ProcessOperationメソッドは、データ・ストアによって定義される単一のストアド・プロシージャであり、これは、実行すべきアクションを詳述する「operation」を消費する。ProcessUpdategramメソッドは、「updategram」として知られるオペレーションの順序付きセットを取り込むストアド・プロシージャであり、これは、実行すべきアクションのセットを一括して詳述する。
1.アイテムのオペレーション:
a.CreateItem(埋め込みまたは保持リレーションシップのコンテクストで新しいアイテムを作成する)
b.UpdateItem(既存のアイテムを更新する)
2.リレーションシップのオペレーション:
a.CreateRelationship(参照または保持リレーションシップのインスタンスを作成する)
b.UpdateRelationship(リレーションシップ・インスタンスを更新する)
c.DeleteRelationship(リレーションシップ・インスタンスを削除する)
3.Extensionのオペレーション:
a.CreateExtension(既存のアイテムに拡張を追加する)
b.UpdateExtension(既存の拡張を更新する)
c.DeleteExtension(拡張を削除する)
変更追跡およびトゥームストーン・サービスは、データ・ストアによって提供されるが、これについては以下でさらに詳細に説明する。このセクションでは、データ・ストア内で公開される変更追跡情報の概要について説明する。
データ・ストアが提供す各検索ビューは、変更追跡情報を提供するために使用されるカラムを含んでいる。このカラムは、すべてのアイテム、Extensionおよびリレーションシップ・ビューにわたり共通である。スキーマ設計者によって明示的に定義されるストレージ・プラットフォーム・スキーマ・ビューは、変更追跡情報を自動的には提供しない。そのような情報は、ビューそのものが構築される検索ビューを通じて間接的に提供される。
マスタ検索ビューの変更追跡情報は、要素の作成および更新バージョンに関する情報、要素を作成した同期パートナ、要素を最終更新した同期パートナに関する情報、および作成と更新に対する各パートナからのバージョン番号を提供する。同期リレーションシップ(以下で説明)のパートナは、パートナキーによって識別される。タイプ[System.Storage.Store].ChangeTrackingInfoのChangeTrackingInfoという名前の単一のUDTオブジェクトは、この情報をすべて含んでいる。このタイプは、System.Storageスキーマで定義される。ChangeTrackingInfoは、アイテム、Extensionおよびリレーションシップのすべてのグローバル検索ビューで使用することができる。ChangeTrackingInfoのタイプ定義は以下のとおりである。
グローバル検索ビューと同じ情報を提供することに加えて、各タイプ定義済み検索ビューは、同期トポロジの各要素の同期状態を記録する追加情報を提供する。
データ・ストアは、アイテム、Extension、およびリレーションシップのトゥームストーン情報を提供する。トゥームストーン・ビューは、1つの場所で、生のエンティティ(live entity)およびトゥームストーンに入れられたエンティティ(アイテム、拡張およびリレーションシップ)に関する情報を提供する。アイテムおよび拡張のトゥームストーン・ビューは対応するオブジェクトへのアクセスを提供しないが、リレーションシップ・トゥームストーン・ビューはリレーションシップ・オブジェクトへのアクセスを提供する(トゥームストーンにあるリレーションシップの場合、そのリレーションシップ・オブジェクトはNULLである)。
アイテム・トゥームストーンは、ビュー「[System.Storage].[Tombstone!Item]」を介してシステムから取り出される。
拡張トゥームストーンは、ビュー「[System.Storage].[Tombstone!Extension]」を介してシステムから取り出される。Extension変更追跡情報は、アイテムに提供される情報と類似しているが、さらにExtensionIdプロパティが加わっている。
リレーションシップ・トゥームストーンは、ビュー「[System.Storage].[Tombstone!Relationship]」を介してシステムから取り出される。リレーションシップ・トゥームストーン情報は、Extensionで提供されるものと同様である。ただし、追加情報は、リレーションシップ・インスタンスのターゲットItemRefで提供される。さらに、リレーションシップ・オブジェクトも選択される。
トゥームストーン情報の際限のない増大を防ぐために、データ・ストアはトゥームストーン・クリーンアップ・タスクを提供する。このタスクは、トゥームストーン情報をいつ廃棄できるか決める。このタスクは、ローカルの作成/更新バージョンのバウンドを計算してから、以前のトゥームストーン・バージョンをすべて廃棄することによりトゥームストーン情報を切り捨てる。
基本マッピングは、いくつかのヘルパー関数も提供する。これらの関数は、データ・モデルに対する共通のオペレーションを補助するために供給される。
ストアで表されるメタデータのタイプには、インスタンス・メタデータ(アイテムのタイプなど)およびタイプ・メタデータの2つがある。
スキーマ・メタデータは、Metaスキーマからのアイテム・タイプのインスタンスとしてデータ・ストアに格納される。
インスタンス・メタデータは、アイテムのタイプのクエリを行いう、アイテムに関連付けられているExtensionを見つけるためにアプリケーションによって使用される。アイテムのItemIdを与えられると、アプリケーションは、アイテムのタイプを返すようにグローバル・アイテム・ビューにクエリを行って、その値を使用してアイテムの宣言済みタイプに関する情報を返すように、Meta.Typeビューにクエリを行うことができる。たとえば、以下のようになる。
一般に、すべての確保できるオブジェクトは、図26に示すアクセス・マスク・フォーマットを使用してそのアクセス権を調整する。このフォーマットにおいて、下位の16ビットはオブジェクト固有のアクセス権用であり、次の7ビットは標準アクセス権用であり(ほとんどのオブジェクトのタイプに適用する)、上位の4ビットは、汎用アクセス権を指定するために使用され、ここで、各オブジェクト・タイプは標準およびオブジェクト固有のアクセス権の設定にマップできる。ACCESS−SYSTEM−SECURITYビットは、オブジェクトのSACLにアクセスする権利に対応する。
本発明のもう1つの態様によれば、ストレージ・プラットフォームは、アプリケーションがデータ変更を追跡できる通知機能を提供する。この機能は主に、揮発性状態を維持するか、またはデータ変更イベントに関してビジネス・ロジックを実行するかするアプリケーションを対象としている。アプリケーションは、アイテム、アイテムExtensionおよびアイテム・リレーションシップに関する通知を登録する。通知は、データ変更が確定された後に非同期的に配信される。アプリケーションは、アイテム、Extensionおよびリレーションシップ・タイプ、さらにオペレーションのタイプによって通知をフィルタリングすることができる。
本発明のもう1つの態様によれば、ストレージ・プラットフォームは、同期化サービス330を提供し、これは、(i)ストレージ・プラットフォームの複数のインスタンス(各々独自のデータ・ストア302を備える)が柔軟な規則のセットに従ってそのコンテンツの部分を同期化することができるようにし、(ii)本発明のストレージ・プラットフォームのデータ・ストアを、独自仕様のプロトコルを実装する他のデータ・ソースと同期させるサード・パーティのためのインフラストラクチャを提供する。
・ もう1つのレプリカが認識する変更を判断する
・ このレプリカが認識しない変更に関する情報を要求する
・ 他のレプリカが認識しない変更に関する情報を伝達する
・ 2つの変更が相互に競合しているときを判断する
・ ローカルに変更を適用する
・ 集束を確実にするように他のレプリカに競合の解決を伝達する
・ 指定されている競合解決のポリシーに基づいて競合を解決する
1.ストレージ・プラットフォーム間の同期化
ストレージ・プラットフォームの同期化サービス330の主な用途は、ストレージ・プラットフォームの複数のインスタンスを(それぞれのデータ・ストアと)同期化することにある。同期化サービスは、(データベース・エンジン314の基礎をなすテーブルではなく)ストレージ・プラットフォーム・スキーマのレベルにおいて機能する。したがって、たとえば「Scopes」は、以下で説明するように同期化セットを定義するために使用される。
任意のアプリケーションを同期化サービスに接続し、同期化オペレーションを開始することができる。そのようなアプリケーションは、同期化を実行するために必要なパラメータをすべて提供する(以下の同期プロファイルを参照)。そのようなアプリケーションは、本明細書において同期制御アプリケーション(SCA)と呼ぶ。
同期化サービスの基本概念は、変更単位の基本概念である。変更単位は、ストレージ・プラットフォームによって個々に追跡されるスキーマの最小部分である。すべての変更単位について、同期化サービスはそれが変更されたか、または前回の同期化以来変更されていないかを決定することができる。
ストレージ・プラットフォーム・パートナのグループで、彼らのデータの特定部分の同期をとりたいと望むグループは、同期コミュニティと呼ばれる。コミュニティのメンバは同期を保ちたいと考えているが、必ずしもまったく同じ方法でデータを表す必要はない。つまり、同期パートナは、同期化しようとしているデータを変換することができる。
コミュニティ・フォルダのマッピングは、個々のマシン上にXML構成ファイルとして格納される。各マッピングは、以下のようなスキーマを備えている。
/mappings/communityFolder
この要素は、このマッピングの対象となるコミュニティ・フォルダに名前を付ける。名前は、フォルダの構文規則に従う。
/mappings/localFolder
この要素は、このマッピングが変換されるローカル・フォルダに名前を付ける。名前は、フォルダの構文規則に従う。フォルダは、マッピングが有効になるように常に存在する必要がある。このフォルダ内のアイテムは、このマッピングごとの同期化のために考慮される。
/mappings/transformations
この要素は、コミュニティ・フォルダからローカル・フォルダ、およびその逆にアイテムを変換する方法を定義する。これが欠けているかまたは空の場合、変換は行われない。特に、これはIDがマップされないということである。この構成は主として、フォルダのキャッシュを作成する場合に有用である。
/mappings/transformations/mapIDs
この要素は、コミュニティIDを再使用するのではなく、新しく生成されたローカルIDが、コミュニティ・フォルダからマップされたすべてのアイテムに割り当てられるよう要求する。同期ランタイムはIDマッピングを保持し、アイテムを前後に往復して変換する。
/mappings/transformations/localRoot
この要素は、コミュニティ・フォルダ内のすべてのルート・アイテムが指定されたルートの子にされるよう要求する。
/mappings/runAs
この要素は、このマッピングに対する要求が処理される権限を制御する。ない場合には、送信者が想定される。
/mappings/runAs/sender
この要素の存在は、このマッピングへのメッセージの送信者が偽名を使用しているはずなので、その結果、その証明書のもとに要求が処理される必要があることを示している。
同期プロファイルは、同期化を開始するために必要なパラメータの全セットである。これは、SCAによって同期ランタイムに供給され、同期化を開始する。ストレージ・プラットフォーム間の同期化のための同期化プロパティは、以下の情報を含んでいる。
・ ローカル・フォルダ、変更の送信元および宛先としての役割を果たす。
・ 同期化するリモートフォルダ名 −− このフォルダは上記で定義されているマッピングの方法によりリモート・パートナからパブリッシュされる必要がある。
・ 方向−同期化サービスは、送信専用、受信専用、および送受信の同期をサポートする。
・ ローカル・フィルタ −− リモート・パートナに送信するローカル情報を選択する。ローカル・フォルダへのストレージ・プラットフォーム・クエリとして表される。
・ リモート・フィルタ −− リモート・パートナから取り出すリモート情報を選択する。− コミュニティ・フォルダへのストレージ・プラットフォーム・クエリとして表される。
・ 変換 −− アイテムとローカル・フォーマットとの間で変換する方法を定義する。
・ ローカル・セキュリティ −− リモート・エンドポイントから取り出された変更が、(impersonated:偽装された)リモート・エンドポイントの許可のもと、または同期化をローカルに開始したユーザの許可のもとに適用されるのかを指定する
・ 競合解決ポリシー −− 競合が拒否されるか、ログに記録されるか、または自動的に解決されるかを指定する − 後者の場合は、使用する競合リゾルバ、その構成パラメータを指定する。
1つの実施例において、同期化サービスはその独自のスケジュール・インフラストラクチャを提供しない。その代わり、このタスクを実行する他のコンポーネントに依存している。それは、Microsoft Windows(登録商標)オペレーティング・システムに付属のWindows(登録商標)Schedulerである。同期化サービスには、SCAとしての役割を果たし、XMLファイルに保存されている同期プロファイルに基づいて同期化をトリガする、コマンド・ライン・ユーティリティが含まれている。このユーティリティにより、Windows(登録商標)Schedulerがスケジュールどおり、あるいはユーザのログオンまたはログオフなどのイベントに応じて同期化を実行するように構成することが非常に簡単になる。
同期化サービスにおける競合処理は、次の3つの段階で構成される。(1)変更適用の時点で発生する競合検出−このステップでは変更が安全に適用できるかどうかを決定する、(2)自動競合解決およびログ記録−このステップ(競合が検出された直後に行われる)中に、競合を解決できるかどうか確認するために自動競合リゾルバが相談にあづかり−解決できない場合、競合はオプションでログに記録される、および(3)競合検査および解決 − このステップは、競合がログに記録されている場合に行われ、同期化セッションのコンテクストの外部で発生する−この時点で、ログに記録された競合は解決されてログから削除することができる。
1つの実施例において、同期化サービスは、知識ベースおよび制約ベースという2つの種類の競合を検出する。
知識ベースの競合は、2つのレプリカが同じ変更単位に独立した変更を行った場合に発生する。2つの変更は、相互を認識(knowledge)することなく行われる場合、言い替えれば、第1のバージョンが第2のバージョンによって認識されていない場合、またはその逆の場合に、独立した変更と呼ばれる。同期化サービスは、前述のようにレプリカの認識(knowledge)に基づいてそのような競合をすべて自動的に検出する。
独立した変更は、一緒に適用される場合、整合性の制約に違反する場合もある。たとえば、同じディレクトリに同じ名前を持つファイルを作成する2つのレプリカは、そのような競合が発生する原因となる可能性がある。
競合が検出されると、同期化サービスは、(同期プロファイルの同期化イニシエータによって選択される)次の3つのうち1つの処置をとることができる。(1)変更を拒否し、これを送信側に戻す、(2)競合を競合ログに記録する、または(3)競合を自動的に解決する。
同期化サービスは、いくつかのデフォルトの競合リゾルバを提供する。以下のものがあげられる。
・local−wins:ローカルに格納されているデータと競合している場合は着信変更を無視する
・remote−wins:着信変更と競合している場合はローカルデータを無視する
・last−writer−wins:変更のタイム・スタンプに基づいて変更単位ごとにlocal−winsまたはremote−winsのいずれかを選ぶ(一般に同期化サービスはクロック値に依存しないことに留意されたい。この競合リゾルバはその規則の唯一の例外である)
・Deterministic:すべてのレプリカで同じになるよう保証されるような(そうでなければ意味をなさない)方法で勝者を選ぶ − この同期化サービスの1つの実施例では、パートナIDの辞書式比較を使用してこの機能を実装する
さらに、ISVは独自の競合リゾルバを実装してインストールすることができる。カスタムの競合リゾルバは、構成パラメータを受け入れることになる。そのようなパラメータは、同期プロファイルの競合解決セクションでSCAによって指定される必要がある。
非常に特殊な種類の競合リゾルバは、ConflictLoggerである。同期化サービスは、競合を、タイプConflictRecordのアイテムとしてログに記録する。これらの記録は、(アイテム自体が削除されていない限り)競合している元のアイテムに関連している。各競合レコードは、競合を引き起こした着信変更、競合の種類(更新−更新、更新−削除、削除−更新、挿入−挿入、または制約)、および着信変更のバージョンとそれを送信するレプリカの知識を含んでいる。ログに記録された競合は、以下に説明するように検査および解決に使用することができる。
同期化サービスは、アプリケーションのAPIを提供して、競合ログを調べ、その中の競合の解決を提案する。APIにより、アプリケーションは、すべての競合、または所定のアイテムに関連する競合を列挙することができる。さらにこれにより、そのようなアプリケーションは、次のうちの1つの方法でログに記録された競合を解決することもできるようになる。(1)リモートの勝利 −− ログに記録された変更を受け入れ、競合するローカルの変更を上書きする、(2)ローカルの勝利 −− ログに記録された変更の競合部分を無視する、および(3)新しい変更を提案 −− アプリケーションが自身の判断で競合を解決するマージを提案する。アプリケーションによって競合が解決されると、同期化サービスはこれらをログから削除する。
複雑な同期化のシナリオにおいて、同じ競合が複数のレプリカで検出されることがある。これが発生した場合、次のようなことが起こる可能性がある。(1)競合は1つのレプリカ上で解決することができ、解決はもう一方のレプリカに送信される、(2)競合は両方のレプリカで自動的に解決される、または(3)競合は両方のレプリカで(競合検査APIを通じて)手動で解決される。
本発明のストレージ・プラットフォームのもう1つの態様によれば、ストレージ・プラットフォームはISV向けアーキテクチャを提供して、ストレージ・プラットフォームがMicrosoft Exchange、AD、Hotmailなどの既存のシステムに同期化することができる同期アダプタを実装する。同期アダプタは、以下に説明するように同期化サービスによって提供される多くのSyncサービスからの恩恵を受ける。
同期化サービスは、いくつかのSyncサービスをアダプタ作成者に提供する。これ以降このセクションでは、ストレージ・プラットフォームが同期化を行っているマシンを「クライアント」と呼び、アダプタが通信する非ストレージ・プラットフォーム・バックエンドを「サーバ」と呼ぶことが好都合である。
同期化サービスによって保持される変更追跡データに基づいて、変更列挙は、このパートナが試行した前回の同期化以来データ・ストア・フォルダに発生した変更を同期アダプタが容易に列挙できるようにする。
変更適用は、同期アダプタが、そのバックエンドから受け取った変更をローカル・ストレージ・プラットフォームに適用することを可能にする。アダプタは、ストレージ・プラットフォーム・スキーマに変更を変換することが期待される。図24は、ストレージ・プラットフォーム・スキーマからストレージ・プラットフォームAPIクラスが生成されるプロセスを示す図である。
前述の競合解決メカニズム(ロギングおよび自動解決のオプション)は、同期アダプタでも使用することができる。同期アダプタは、変更を適用するときに競合解決のポリシーを指定することができる。指定した場合、競合は指定された競合ハンドラに渡されて(可能であれば)解決される。競合はログに記録することもできる。アダプタが、ローカルの変更をバックエンドに適用しようとしたときに、競合を検出する可能性もある。そのような場合、アダプタは、さらに、その競合を同期ランタイムに渡して、ポリシーに従って解決されるようにすることができる。さらに、同期アダプタは、同期化サービスによって検出された競合を処理のために、送り戻すように要求することもできる。これは、バックエンドが競合を格納または解決できるような場合に、特に便利である。
一部の「アダプタ」は、単に、ランタイム・インターフェースを使用するアプリケーションであるが、アダプタは標準アダプタ・インターフェースを実装するよう推奨される。これらのインターフェースにより、同期制御アプリケーションは、アダプタが所定の同期プロファイルに従って同期化を実行するよう要求すること、実行中の同期化を取り消すこと、実行中の同期化に関する進行状況レポート(完了したパーセント)を受け取ること、が可能になる。
同期化サービスは、ストレージ・プラットフォームによって実装されるセキュリティ・モデルに持ち込むものを、できるだけ少なくしようと努める。同期のための新しい権限を定義するのではなく、既存の権限が使用される。具体的には、次のようになっている。
・ データ・ストア・アイテムを読み取りできる者は誰でもそのアイテムへの変更を列挙することができる。
・ データ・ストア・アイテムに書き込みできる者は誰でもそのアイテムへの変更を適用することができる。
・ データ・ストア・アイテムを拡張できる者は誰でも同期メタデータをそのアイテムに関連付けることができる。
レプリカについての分散コミュニティを監視することは、複雑な問題である。同期化サービスは、「スイープ」アルゴリズムを使用して、レプリカの状態に関する情報を収集して配信することができる。スイープ・アルゴリズムのプロパティは、すべての構成済みのレプリカに関する情報が最終的には収集されること、および失敗した(非応答)レプリカが検出されることを、確実にする。
前述のように、本発明のストレージ・プラットフォームは、少なくとも一部の実施例において、コンピュータ・システムのハードウェア/ソフトウェア・インターフェース・システムの不可欠部分として組み入れられることを目的としている。たとえば、本発明のストレージ・プラットフォームは、オペレーティング・システムのMicrosoft Windows(登録商標)ファミリなど、オペレーティング・システムの不可欠部分として組み入れることもできる。その能力において、ストレージ・プラットフォームAPIは、アプリケーション・プログラムがそれを通してオペレーティング・システムと対話するオペレーティング・システムAPIの一部となる。したがって、ストレージ・プラットフォームは、それを通してアプリケーション・プログラムがオペレーティング・システムに情報を格納する手段となり、そのためストレージ・プラットフォームのアイテム・ベースのデータ・モデルはそのようなオペレーティング・システムの従来型ファイル・システムに取って代わるものになる。たとえば、オペレーティングのMicrosoft Windows(登録商標)ファミリに組み入れられると、ストレージ・プラットフォームは、そのオペレーティング・システムに実装されているNTFSファイル・システムに取って代わることもできる。現在、アプリケーション・プログラムは、オペレーティング・システムのWindows(登録商標)ファミリによって公開されているWin32 APIを通じてNTFSファイル・システムのサービスにアクセスしている。
ストレージ・プラットフォームは、アプリケーションが前述のストレージ・プラットフォームの特徴および機能にアクセスして、データ・ストアに格納されているアイテムにアクセスできるようにするAPIを備えている。このセクションでは、本発明によるストレージ・プラットフォームのストレージ・プラットフォームAPIの1つの実施例について説明する。この機能性に関する詳細については、先に参照により本明細書に組み込まれている関連出願において説明されているが、以下に便宜のためその情報の一部をまとめておく。
1.アプリケーション350a、350b、または350cは、ストレージ・プラットフォーム内のアイテムにバインドする。
2.フレームワーク2004は、バインドされるアイテムに対応するItemContextオブジェクト2202を作成して、それをアプリケーションに返す。
3.アプリケーションはこのItemContextにFindをサブミットしてアイテムのコレクションを取得する。返されたコレクションは概念上は(リレーションシップにより)オブジェクト・グラフ2204である。
4.アプリケーションは、データを変更、削除、および挿入する。
5.アプリケーションは、Update()メソッドを呼び出すことにより変更を保存する。
本明細書に開示する本発明のさまざまな実施例において、イメージ(たとえばJPEG、TIFF、ビットマップなど)はコア・プラットフォーム・オブジェクト(「イメージ・アイテム」あるいは簡単に「イメージ」)として処理され、本発明は、システムにおけるイメージの拡張可能な表現、つまりイメージの特性、およびどのようにイメージがシステムにおける他のアイテムに関連しているか、を提供する「イメージ・スキーマ」を備えている。このために、イメージ・スキーマは、システムにおけるイメージのプロパティ、振る舞い、およびリレーションシップを定義し、さらにスキーマは、たとえばデータ固有のイメージが何を含むべきか、データ固有のイメージがオプションで何を含むべきか、固有のイメージがどのように拡張できるかなど、イメージに関する規則も強制する。イメージ・スキーマは、イメージの意味内容を表すプロパティだけでなく、イメージを表すためのファイル・フォーマットのプロパティ(GIF、TIFF、JPEGその他周知のイメージ・オブジェクト・タイプなど)を含む、さまざまな種類のイメージを表すために必要なタイプ情報を含んでいる。本発明のさまざまな実施例のイメージ・スキーマは、すべてのイメージ関連の機能性が構築される基盤である。
前述のように、イメージ・スキーマは、さまざまな種類のイメージ・アイテムを表すために必要なアイテム、プロパティ、およびリレーションシップを含んでいる。これは、特定のイメージ・タイプ(GIF、TIFF、JPEGなど)を表すネイティブのファイル・フォーマットのプロパティの他にイメージの意味内容を表すプロパティを含んでいる。このために、任意のイメージ・アイテムに対して、Image Typeは、すべてのイメージによって共有される基本アイテム・タイプであり、図36に示すようにCore.Documentアイテム・タイプ(つまり「コア」スキーマの「ドキュメント」タイプ)から分かれた直接の拡張である。(Core.Documentタイプは、図8Aに示されるコア・スキーマの一部にすることもできる。)イメージ・タイプは、一般的なイメージを記述し、フォーマットにはかかわりなくすべてのイメージに適用可能なフィールドを含んでいる。イメージ・スキーマの主要なアイテム・タイプはイメージ・タイプであり、以下にイメージ・タイプの一部のフィールドを示す。
イメージ・スキーマの従属スキーマであるフォト・スキーマは、実際に何らかの写真であるイメージに適用される。任意のフォト・アイテムに対して、フォト・タイプはイメージ・フォーマットに関わりなくフォトを記述するプロパティのセットを表し、フォト・タイプは図36に示すようにImage.Imageタイプ(つまり「イメージ」スキーマ内の「イメージ」タイプ)を拡張する。以下にフォト・タイプの一部のフィールドを示す。
デジタル写真の場合、プロパティのセットは分析アプリケーションによってその写真に関して算出することができる。ただし、これらのプロパティは、算出に高くつき、時間およびプロセッサ・リソースの観点から再計算される。さらに、これらのフィールドはアプリケーションに固有であり、他のアプリケーションはこれらのフィールドの内部フォーマットを理解することができない。
以上説明してきたように、本発明は、データを編成、検索、共有するためのストレージ・プラットフォームを目的としている。本発明のストレージ・プラットフォームは、既存のファイル・システムおよびデータベース・システムを超えてデータ・ストレージの概念を拡張して広げ、リレーショナル(表)データ、XML、およびアイテムと呼ばれる新しいデータの形態など、構造化、非構造化、または半構造化データを含むあらゆるタイプのデータの記憶装置(data store)となるように設計される。本発明のストレージ・プラットフォームは、その共通のストレージ基盤および体系化されたデータを通じて、消費者、知識労働者および企業のさらに効率的なアプリケーション開発を実現することができる。このストレージ・プラットフォームは、機能豊富で拡張可能なアプリケーション・インターフェースを提供し、これはそのデータ・モデルに固有の機能を利用できるようにするだけではなく、既存のファイル・システムおよびデータベース・アクセス方法も取り入れて、拡張している。その広範な発明の概念から逸脱することなく前述の実施例には変更を加えることができることが理解されよう。したがって、本発明は、開示される特定の実施例に限定されることはないが、添付の特許請求の範囲によって定義されている発明の精神および範囲の中のすべての変更を網羅することを意図している。
[以下余白]
Claims (12)
- 記憶デバイスに記憶された複数のイメージデータを処理するためのシステムであって、前記複数のイメージデータは、イメージに関連する個々の情報単位を含み、該システムは、
前記複数のイメージデータに基づき、少なくとも1つのイメージ・アイテムおよび少なくとも1つのイメージ・プロパティを定義するための手段と、
アイテムを、前記イメージ・アイテムが全てそこから派生する基礎アイテム・タイプを構成する基礎アイテムとして確立するための手段と、
前記基礎アイテムによって定義される写真のデジタル・イメージ・アイテムと前記写真のデジタル・イメージ・アイテムの領域において表された少なくとも1人の人物に関連するアイテムとの間のリンクを確立するための手段と、
を備え、
前記基礎アイテム・タイプは、前記写真のデジタル・イメージ・アイテムの中の1つにおける注目の領域の属性を含む属性を定義し、前記注目の領域の属性は、前記写真のデジタル・イメージ・アイテムの中の1つの、第1の領域内で、少なくとも1人の人物を確認するフィールドと、前記写真のデジタル・イメージ・アイテムの中の1つの、第2の領域内で、少なくとも1つの注目の領域を確認する第2のフィールドとを含むことを特徴とするシステム。 - 前記基礎アイテム・タイプは、フォトが撮影された日付、フォトが取得された日付、前記フォトの獲得セッションの一意の識別、オリエンテーション、場所、イベント、カメラのメーカー、カメラの型式、露光時間、絞り、ISOスピード、前記フォトにフラッシュが使用されたかどうかの指示、前記フォトに赤目モードが使用されたかどうかの指示、露光モード、および前記フォトの被写体の距離、の属性グループの中からの少なくとも1つの属性を更に備えることを特徴とする請求項1に記載のシステム。
- 前記注目の領域の属性は、前記注目の領域の左、上部、右および下部の座標のフィールドを備えていることを特徴とする請求項1に記載のシステム。
- 前記写真のデジタル・イメージ・アイテムの中の1つの、前記注目の領域の属性は、信頼性のフィールドをさらに備えることを特徴とする請求項1に記載のシステム。
- 前記写真のデジタル・イメージ・アイテムの中の1つの少なくとも1つの分析プロパティ(AP)を定義する分析プロパティ・スキーマ手段を備えることを特徴とする請求項1に記載のシステム。
- 前記少なくとも1つの分析プロパティ(AP)は、カラー・ヒストグラム、グレー・ヒストグラム、および類似のインデックス、のプロパティ・グループの中からの少なくとも1つを備えることを特徴とする請求項5に記載のシステム。
- 写真のデジタル・イメージ・アイテムが撮影された地理的場所を表すために、前記写真のデジタル・イメージ・アイテムと前記地理的場所に対応する場所アイテムとの間のリンクを確立し、前記写真のデジタル・イメージ・アイテムは前記場所アイテムに基づいてクエリされることが可能になることを特徴とする請求項1に記載のシステム。
- 前記写真のデジタル・イメージ・アイテムが撮影された地理的場所を表すために、前記地理的場所に対応する前記リンクに場所プロパティを設定することを特徴とする請求項7に記載のシステム。
- 前記写真のデジタル・イメージ・アイテム内に表された少なくとも1つのイベントを表すために、前記写真のデジタル・イメージ・アイテムと前記イベントに関連するアイテムとの間のリンクを確立し、前記前記写真のデジタル・イメージ・アイテムは、前記イベントに関連するアイテムに基づいてクエリされることが可能になることを特徴とする請求項1に記載のシステム。
- 第1のデジタル・イメージ・アイテムから、(a)前記第1のデジタル・イメージ・アイテムが派生した親デジタル・イメージ・アイテムまたは(b)前記第1のデジタル・イメージ・アイテムから派生した子デジタル・イメージ・アイテムのいずれかである第2のデジタル・イメージ・アイテムへのリンクを確立することを特徴とする請求項1に記載のシステム。
- コンピュータを請求項1〜10の何れか1項に記載されたシステムの手段として機能させるための1つ又は複数のプログラム。
- コンピュータを請求項1〜10の何れか1項に記載されたシステムの手段として機能させるための1つは複数のプログラムを記録したコンピュータ読み取り可能な記録媒体。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
USPCT/US03/26144 | 2003-08-21 | ||
US10/646,632 US7529811B2 (en) | 2003-08-21 | 2003-08-21 | Systems and methods for the implementation of a core schema for providing a top-level structure for organizing units of information manageable by a hardware/software interface system |
PCT/US2003/026144 WO2005029313A1 (en) | 2003-08-21 | 2003-08-21 | Systems and methods for data modeling in an item-based storage platform |
US10/646,632 | 2003-08-21 | ||
US10/692,779 | 2003-10-24 | ||
US10/692,779 US8238696B2 (en) | 2003-08-21 | 2003-10-24 | Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system |
PCT/US2004/024437 WO2005024550A2 (en) | 2003-08-21 | 2004-07-29 | System and method for implementation of a digital image schema in a hardware/software interface |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2007517268A JP2007517268A (ja) | 2007-06-28 |
JP2007517268A5 JP2007517268A5 (ja) | 2007-09-13 |
JP4901472B2 true JP4901472B2 (ja) | 2012-03-21 |
Family
ID=34279604
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006523867A Expired - Fee Related JP4901472B2 (ja) | 2003-08-21 | 2004-07-29 | ハードウェア/ソフトウェア・インターフェース・システムにより管理可能な情報の単位を編成するデジタル・イメージ・スキーマの実装のためのシステムおよび方法 |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP1620781A4 (ja) |
JP (1) | JP4901472B2 (ja) |
KR (1) | KR20060113353A (ja) |
CN (1) | CN101416153B (ja) |
WO (1) | WO2005024550A2 (ja) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8166101B2 (en) | 2003-08-21 | 2012-04-24 | Microsoft Corporation | Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system |
US8131739B2 (en) | 2003-08-21 | 2012-03-06 | Microsoft Corporation | Systems and methods for interfacing application programs with an item-based storage platform |
US8238696B2 (en) | 2003-08-21 | 2012-08-07 | Microsoft Corporation | Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system |
US7590643B2 (en) | 2003-08-21 | 2009-09-15 | Microsoft Corporation | Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system |
US8613048B2 (en) | 2004-09-30 | 2013-12-17 | Citrix Systems, Inc. | Method and apparatus for providing authorized remote access to application sessions |
US7711835B2 (en) | 2004-09-30 | 2010-05-04 | Citrix Systems, Inc. | Method and apparatus for reducing disclosure of proprietary data in a networked environment |
US8171479B2 (en) | 2004-09-30 | 2012-05-01 | Citrix Systems, Inc. | Method and apparatus for providing an aggregate view of enumerated system resources from various isolation layers |
US8095940B2 (en) | 2005-09-19 | 2012-01-10 | Citrix Systems, Inc. | Method and system for locating and accessing resources |
US7680758B2 (en) | 2004-09-30 | 2010-03-16 | Citrix Systems, Inc. | Method and apparatus for isolating execution of software applications |
US7805422B2 (en) | 2005-02-28 | 2010-09-28 | Microsoft Corporation | Change notification query multiplexing |
US7930346B2 (en) | 2005-08-24 | 2011-04-19 | Microsoft Corporation | Security in peer to peer synchronization applications |
US8533846B2 (en) | 2006-11-08 | 2013-09-10 | Citrix Systems, Inc. | Method and system for dynamically associating access rights with a resource |
US7865589B2 (en) | 2007-03-12 | 2011-01-04 | Citrix Systems, Inc. | Systems and methods for providing structured policy expressions to represent unstructured data in a network appliance |
US8490148B2 (en) | 2007-03-12 | 2013-07-16 | Citrix Systems, Inc | Systems and methods for managing application security profiles |
US7853679B2 (en) | 2007-03-12 | 2010-12-14 | Citrix Systems, Inc. | Systems and methods for configuring handling of undefined policy events |
US8631147B2 (en) | 2007-03-12 | 2014-01-14 | Citrix Systems, Inc. | Systems and methods for configuring policy bank invocations |
US7853678B2 (en) | 2007-03-12 | 2010-12-14 | Citrix Systems, Inc. | Systems and methods for configuring flow control of policy expressions |
US8171483B2 (en) | 2007-10-20 | 2012-05-01 | Citrix Systems, Inc. | Method and system for communicating between isolation environments |
US8090797B2 (en) | 2009-05-02 | 2012-01-03 | Citrix Systems, Inc. | Methods and systems for launching applications into existing isolation environments |
EP3268885A1 (en) | 2015-03-12 | 2018-01-17 | Koninklijke Philips N.V. | Methods of displaying the antimicrobial sensitivity of biological isolates |
CN108924653B (zh) * | 2018-07-19 | 2021-01-01 | 武汉斗鱼网络科技有限公司 | 弹幕消息分发方法、装置、设备和存储介质 |
CN110706147B (zh) * | 2019-09-29 | 2023-08-11 | 阿波罗智联(北京)科技有限公司 | 图像处理的环境确定方法、装置、电子设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000330858A (ja) * | 1999-05-25 | 2000-11-30 | Fujitsu Ltd | 画像処理装置およびプログラム記憶媒体 |
JP2001084274A (ja) * | 1999-07-14 | 2001-03-30 | Fuji Photo Film Co Ltd | 画像検索方法および画像処理方法 |
JP2002278993A (ja) * | 2001-03-16 | 2002-09-27 | Nippon Telegr & Teleph Corp <Ntt> | 画像データ登録・再生方法、システム、プログラムおよびその記録媒体 |
JP2003150932A (ja) * | 2001-11-12 | 2003-05-23 | Olympus Optical Co Ltd | 画像処理装置およびプログラム |
JP2003216518A (ja) * | 2002-01-08 | 2003-07-31 | Hewlett Packard Co <Hp> | ネットワークを介してデジタル画像を識別し、その画像にアクセスするための方法及び装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0744617A (ja) * | 1993-07-30 | 1995-02-14 | Olympus Optical Co Ltd | 画像蓄積管理装置及び画像蓄積管理方法 |
US6310647B1 (en) * | 1997-04-15 | 2001-10-30 | Eastman Kodak Company | Image format for storing digital images and including multiple application segments |
JPH1155447A (ja) * | 1997-08-07 | 1999-02-26 | Toshiba Corp | 画像情報入力装置及び方法 |
US6515765B1 (en) * | 1998-06-15 | 2003-02-04 | Matsushita Electric Industrial Co., Ltd. | Image data management system and method thereof |
-
2004
- 2004-07-29 KR KR1020057009283A patent/KR20060113353A/ko not_active Ceased
- 2004-07-29 JP JP2006523867A patent/JP4901472B2/ja not_active Expired - Fee Related
- 2004-07-29 EP EP04779482A patent/EP1620781A4/en not_active Ceased
- 2004-07-29 WO PCT/US2004/024437 patent/WO2005024550A2/en active Application Filing
- 2004-07-29 CN CN2004800015016A patent/CN101416153B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000330858A (ja) * | 1999-05-25 | 2000-11-30 | Fujitsu Ltd | 画像処理装置およびプログラム記憶媒体 |
JP2001084274A (ja) * | 1999-07-14 | 2001-03-30 | Fuji Photo Film Co Ltd | 画像検索方法および画像処理方法 |
JP2002278993A (ja) * | 2001-03-16 | 2002-09-27 | Nippon Telegr & Teleph Corp <Ntt> | 画像データ登録・再生方法、システム、プログラムおよびその記録媒体 |
JP2003150932A (ja) * | 2001-11-12 | 2003-05-23 | Olympus Optical Co Ltd | 画像処理装置およびプログラム |
JP2003216518A (ja) * | 2002-01-08 | 2003-07-31 | Hewlett Packard Co <Hp> | ネットワークを介してデジタル画像を識別し、その画像にアクセスするための方法及び装置 |
Also Published As
Publication number | Publication date |
---|---|
JP2007517268A (ja) | 2007-06-28 |
CN101416153B (zh) | 2010-09-29 |
EP1620781A2 (en) | 2006-02-01 |
CN101416153A (zh) | 2009-04-22 |
WO2005024550A2 (en) | 2005-03-17 |
EP1620781A4 (en) | 2008-12-03 |
WO2005024550A3 (en) | 2007-11-22 |
KR20060113353A (ko) | 2006-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101120817B1 (ko) | 하드웨어/소프트웨어 인터페이스 시스템에 의해 관리가능한 정보의 단위들에 대한 관계 및 계층적 동기화서비스를 제공하는 시스템 및 방법 | |
US8131739B2 (en) | Systems and methods for interfacing application programs with an item-based storage platform | |
US8238696B2 (en) | Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system | |
US7693858B2 (en) | Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system | |
JP4738908B2 (ja) | ハードウェア/ソフトウェアインターフェースシステムにより管理可能な情報の単位のピアツーピア同期化のための競合処理を提供するためのシステムおよび方法 | |
US7739316B2 (en) | Systems and methods for the implementation of base schema for organizing units of information manageable by a hardware/software interface system | |
US7349913B2 (en) | Storage platform for organizing, searching, and sharing data | |
JP4901472B2 (ja) | ハードウェア/ソフトウェア・インターフェース・システムにより管理可能な情報の単位を編成するデジタル・イメージ・スキーマの実装のためのシステムおよび方法 | |
US20050125621A1 (en) | Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system | |
US20050050537A1 (en) | Systems and method for representing relationships between units of information manageable by a hardware/software interface system | |
US20050055380A1 (en) | Systems and methods for separating units of information manageable by a hardware/software interface system from their physical organization | |
JP4580390B2 (ja) | ハードウェア/ソフトウェアインターフェイスシステムによって管理可能な情報単位の拡張および継承のためのシステムおよび方法 | |
JP4583375B2 (ja) | 同期スキーマの実装のためのシステム | |
JP4580389B2 (ja) | 仲介ファイルシステム共有または仲介デバイスを介してコンピュータシステムを同期させるためのシステムおよび方法 | |
JP2007521537A (ja) | データの編成、検索、および共有のためのストレージプラットフォーム | |
KR101109390B1 (ko) | 하드웨어/소프트웨어 인터페이스 시스템에 의해 관리가능한 정보의 단위들에 대한 동기화 서비스를 제공하는시스템 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070730 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070730 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20090812 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20090824 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100318 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100618 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100625 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100720 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100727 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100921 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101102 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110202 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110209 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110302 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110309 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110404 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110411 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110502 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110616 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111017 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20111026 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20111201 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20111227 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4901472 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150113 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
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 |
|
LAPS | Cancellation because of no payment of annual fees |