(57)【要約】【課題】動的型付け言語から静的型付け言語までにわたって、改良されたデータ・アクセスを提供するため、実行時にスキーマ推論を行うシステムおよび方法を提供すること。【解決手段】推論コンポーネントは、入力として入力データ・ストリームを受信し、実行時に該入力データ・ストリームを処理して、その実際の値に基づいてスキーマを開発する。次いで、推論されたスキーマを用いて、入力ストリーム・データの特殊表現である推論された出力データを作成し、その結果、その出力データに効率的かつ簡便にアクセスすることができる。【選択図】図１
2006209748.tif 000002
【特許請求の範囲】
【請求項１】
データ・アクセスを容易にするシステムであって、
入力データのストリームと、
実行時に前記入力データからスキーマを推論して、該入力データの特殊表現を作成する推論コンポーネントと
を備えることを特徴とするシステム。
【請求項２】
前記入力データはＸＭＬ文書を含むことを特徴とする請求項１に記載のシステム。
【請求項３】
前記入力データは文脈自由言語と互換性があることを特徴とする請求項１に記載のシステム。
【請求項４】
前記入力データはリレーショナルであることを特徴とする請求項１に記載のシステム。
【請求項５】
実行時に文書のキャッシングを容易にするキャッシング・コンポーネントをさらに備えることを特徴とする請求項１に記載のシステム。
【請求項６】
前記推論コンポーネントは、前記スキーマを経時的に更新することを容易にすることを特徴とする請求項１に記載のシステム。
【請求項７】
前記推論コンポーネントは、新たな入力データに対する前記推論されたスキーマの妥当性確認を容易にすることを特徴とする請求項１に記載のシステム。
【請求項８】
前記推論コンポーネントは、実行時に実際の値に関して前記スキーマを推論することを特徴とする請求項１に記載のシステム。
【請求項９】
ユーザが自動的に実行されることを望む動作を予測または推論するために、確率的分析および／または統計に基づく分析を利用する人工知能コンポーネントをさらに備えることを特徴とする請求項１に記載のシステム。
【請求項１０】
請求項１に記載のシステムを実現するためのコンピュータ実行可能命令を格納したことを特徴とするコンピュータ可読メディア。
【請求項１１】
請求項１に記載のシステムを利用することを特徴とするサーバ。
【請求項１２】
データ・アクセスを容易にする方法を実行するためのコンピュータ実行可能命令を有するコンピュータ可読メディアであって、
入力データのストリームを受信するステップと、
実行時処理の間に実際の値に基づいて入力データから型スキーマを推論する推論コンポーネントを用いて前記入力データを処理するステップと
を備えることを特徴とする方法。
【請求項１３】
前記実行時処理の間に前記スキーマの生成のためのキャッシング動作を実行するステップをさらに備えることを特徴とする請求項１２に記載の方法。
【請求項１４】
前記入力データに関連する所定の基準の変更に基づいて、前記推論されたスキーマを経時的に更新するステップをさらに備えることを特徴とする請求項１２に記載の方法。
【請求項１５】
前記実行時処理の間に、前記入力データ、前記推論されたスキーマ、生成されたソース・コード、アセンブリ・コード、およびデシリアライゼーション情報のうちの少なくとも１つをキャッシュするステップをさらに備えることを特徴とする請求項１２に記載の方法。
【請求項１６】
前記実行時処理の間に、新たな入力データに対する前記推論されたスキーマの妥当性を確認するステップをさらに備えることを特徴とする請求項１２に記載の方法。
【請求項１７】
前記入力データは、ＸＭＬ文書、文脈自由言語、およびリレーショナルのうちの少なくとも１つであることを特徴とする請求項１２に記載の方法。
【請求項１８】
データ・アクセスを容易にするシステムであって、
入力データのストリームを受信するための手段と、
実行時処理の間に実際の値に基づいて入力データから型スキーマを推論する推論コンポーネントを用いて前記入力データを処理するための手段と、
前記実行時処理の間に前記スキーマの生成のためのキャッシング動作を実行するための手段と
を備えることを特徴とするシステム。
【請求項１９】
前記入力データに関連する所定の基準の変更に基づいて、前記推論されたスキーマを経時的に更新するための手段をさらに備えることを特徴とする請求項１８に記載のシステム。
【請求項２０】
前記実行時処理の間に、前記入力データ、前記推論されたスキーマ、生成されたソース・コード、アセンブリ・コード、およびデシリアライゼーション情報のうちの少なくとも１つをキャッシュするための手段をさらに備えることを特徴とする請求項１８に記載システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理技術に関し、より具体的には、入力データの組に基づく型推論に関する。
【背景技術】
【０００２】
型推論は、完全な型情報の不足が避けられない場合に、コンパイラが式および変数の型を決定しようとする処理である。コンパイラは、入力データ・ストリームの文脈情報に基づいて、欠落した型情報を推論する。例えば、整数算術演算および浮動小数点算術演算について同じ構文が用いられる場合には、算術演算子に難しさがある場合がある。このことは、ｆｎ  ｎ＝＞ｎ＋ｎといった関数についての型情報を曖昧さを伴わずに再構成することが不可能であるため、型推論についての問題を生じさせる。この極めて単純な関数は、加算演算が整数加算であるか浮動小数点加算であるかを見分ける方法がないため、曖昧である。例えば、この式は、型ｉｎｔ−＞ｉｎｔを持つ短縮形のｆｎ  ｎ：ｉｎｔ＝＞ｎ＋ｎか、または型ｒｅａｌ−＞ｒｅａｌを持つｆｎ  ｎ：ｒｅａｌ＝＞ｎ＋ｎとして、解釈することができる。
【０００３】
いくつかの場合においては、周囲の文脈を用いて何を意味するのかを決定する。関連する難しさの原因は、記録についての「明瞭な（ｓｈａｒｐ）」注釈である。文脈からの情報がない限り、これらの注釈を用いる関数の型を決定することはできない。したがって、関数のドメイン型を決定するのに十分な情報がないため、この関数は曖昧なものとして拒否されることになる。
【０００４】
上記の例は、曖昧さが難しさにつながる場合を示すものであるが、欠落している型情報を一意的に決定することができなければ型推論が働かないものと断定することはできない。多くの場合において、省略された型情報を推論する唯一の方法は存在しないが、最良の方法は存在することがある。
【０００５】
ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）の主な利点の１つは、文書を、その正確なスキーマをアプリオリに知ることなく処理できることである。しかしながら、Ｃ＃またはＪａｖａ（登録商標）などの言語を扱うことにより、プログラマは、冗長で説明的な計算上効率の悪いプログラミング・モデルを用いて、以下のコードで表されるような型無し文書にアクセスすることを強いられる。
【０００６】
XmlDocument b=new XmlDocument();b.Load(...);
string s=b.GetElementsByTagName("Title")[0].Value;
【０００７】
値のスキーマまたは型が分かっている場合には、その値の部分により効率的にアクセスすることが望ましい、すなわち、型情報を推測するアクセス・パターンをコンパイルすることが望ましいであろう。スキーマ情報を推測することがなければ、何らかの形式の一般的な表現を用いて値を表さなければならず、アクセスは必然的に説明的なものとなる。コンパイル時に文書のスキーマが分かっているときは、以下のコードで表されるように、該スキーマに対応し、該文書をオブジェクト・グラフにデシリアライズすることができ、簡潔で強く型付けされた計算上効率の良い方法で該文書に対してプログラムされる、クラスの組を生成することができる。
【０００８】
Book b=new XmlSerializer(typeof(Book)).Deserialize(...);
string s=b.Title;
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、これは、多くの場合においてコンパイル時に使用可能なスキーマが存在せず、説明的な手法を用いることを強いられるという点で欠点を有する。データベースならびにＣ＃およびＪａｖａ（登録商標）などの今日のプログラミング言語は、非静的型の扱いが極めて不十分である。Ｐｅｒｌ、Ｐｙｔｈｏｎ、Ｒｕｂｙ、ＰＨＰ、Ｇｒｏｏｖｙといったスクリプト言語は、動的型の扱いは十分であるが、堅牢ではなく、大きなソフトウェア・システムに合わせて十分に規模を拡大することができないという点を犠牲にしている。このように、従来技術においては、動的に型付けされた言語から静的に型付けされた言語までにわたって、改良されたデータ・アクセスを提供する機構について、まだ満たされていない実質的な必要性が存在する。
【課題を解決するための手段】
【００１０】
本発明のいくつかの態様に関する基本的な理解を提供するために、以下に本発明の簡単な要約を示す。この要約は、本発明を広範囲に外観するものではない。この要約は、本発明の主要な／重要な要素を特定すること、または本発明の範囲を記述することを意図するものではない。その唯一の目的は、本発明のいくつかの概念を、後述のより詳細な説明に対する前置きとして簡略化した形式で提示することである。
【００１１】
本発明は、実行時に実際の値に関してスキーマ推論を使用し、このスキーマを用いて効率的かつ簡便にアクセスできるデータの特殊表現を作成することによって、純粋に動的に型付けされた言語と純粋に静的に型付けされた言語との間のギャップを埋める。（例えば、Ｖｉｓｕａｌ  Ｂａｓｉｃ、ならびに、ＥＣＭＡＳｃｒｉｐｔ、Ｐｙｔｈｏｎ、およびＰｅｒｌなどのスクリプト言語における）オブジェクトに対する遅延束縛アクセスを仮定すると、本発明は、オブジェクトのシリアライズによる早期束縛アクセスの効率性と型無し文書アクセスの融通性とを組み合わせる。
【００１２】
ここで開示され請求される本発明は、その１つの態様においては、入力として入力データ・ストリームを受信する推論コンポーネントを含むシステムを備える。推論コンポーネントは、実行時に入力データ・ストリームを処理し、その実際の値に基づいてスキーマを開発する。次いで、推論されたスキーマを用いて、入力ストリーム・データの特殊表現である推論された出力データを作成し、その結果、その出力データに効率的かつ簡便にアクセスすることができる。
【００１３】
本発明の別の態様においては、処理のすべての時点または選択された時点においてキャッシングを利用することによって、実行時推論処理を最適化する方法が提供される。この方法は、入力データおよび／または中間データおよび／またはコードをキャッシュ・メモリにキャッシュすることによって、実行時処理の際のすべての時点または選択された時点においてキャッシングを提供するキャッシュ・マネージャを含む。
【００１４】
本発明のさらに別の態様においては、本発明に従ってＸＭＬ文書の実行時型推論を処理する方法が提供される。
【００１５】
本発明のさらに別の態様においては、実行時に類似する入力データの処理を最適化する方法が提供される。いくつかの文書が連続して読み込まれる場合には、この方法は、以前に推論されたスキーマに対する次の文書の妥当性確認を行い、妥当性確認が成功した場合には、新たなスキーマを推論する必要はない。例えば、第１のスキーマが実行時に推論され、第２のデータの組を受信した後に、該第２のデータの組に対して該スキーマの成功（または失敗）を比較するメトリックが利用される。成功が基準を下回る場合には、新たなスキーマが第２のデータの組から推論され、以下同様である。そうでなければ、第１のスキーマが、第２のデータの組に対して適用され続ける。
【００１６】
本発明の別の態様においては、本発明に従って経時的に推論されたスキーマを改良することによって実行時推論処理を最適化する方法が提供される。推論されたスキーマは、別の文書が読み込まれる度に、経時的に改良することができる。より正確な型を持つことによって、より効率的なアクセスが可能になる。
【００１７】
本発明のさらに別の態様においては、確率的な分析および／または統計に基づく分析を利用して、ユーザが自動的に実行されることを望む動作を予測または推論する人工知能コンポーネントが提供される。
【００１８】
前述のおよび関連する結果を達成するために、以下の説明および添付図面に関連して、本発明の特定の例示的な態様がここで説明される。しかしながら、これらの態様は、本発明の原理を利用することができる様々な方法のほんの一部を示すものであり、本発明は、こうした態様のすべておよびそれらの等価物を含むように意図される。本発明の他の利点および新規な特徴は、図面と併せて検討したときに本発明の以下の詳細な説明から明らかとなるであろう。
【発明を実施するための最良の形態】
【００１９】
ここで図面を参照して本発明を説明するが、図面においては、全体を通して、同じ参照番号は同じ要素を示すように用いられる。以下の記述においては、説明の目的で、本発明の完全な理解をもたらすように多くの特定の詳細が記載される。しかしながら、本発明は、これらの特定の詳細なしに実施できることが明らかであろう。他の例においては、本発明の説明を容易にするために、周知の構造および装置がブロック図で示される。
【００２０】
本出願で用いられる場合には、「コンポーネント」および「システム」という用語は、コンピュータ関連エンティティ、すなわち、ハードウェア、ハードウェアおよびソフトウェアの組み合わせ、ソフトウェア、または実行中のソフトウェアのいずれかを指すことを意図している。例えば、コンポーネントは、プロセッサ上で動作している処理、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および／または、コンピュータとすることができるが、これらに限定されるものではない。一例として、サーバ上で動作しているアプリケーションおよび該サーバの両方をコンポーネントとすることができる。１つまたは複数のコンポーネントは、実行の処理および／またはスレッド内に常駐することができ、１つのコンポーネントは、１つのコンピュータ上に配置するか、および／または、２つまたはそれ以上のコンピュータ間に分散させることができる。
【００２１】
ここで用いられる場合には、「推論する」または「推論」という用語は、一般に、イベントおよび／またはデータを介して取り込まれる観測結果の組から、システム、環境、および／またはユーザの状態を推理または推論する処理を指す。推論は、例えば、特定の文脈または動作を特定するのに利用するか、または状態に関する確率分布を生成することができる。推論は、確率的なもの、すなわち、データおよびイベントの検討に基づく対象の状態に関する確率分布の計算とすることができる。推論はまた、イベントおよび／またはデータの組からより高いレベルのイベントを構成するために利用される技術を指す場合がある。こうした推論は、イベント同士が時間的に近接して関連付けられるかどうか、ならびに、イベントおよびデータが１つまたはいくつかのイベントおよびデータソースに由来するものであるかどうかに関わらず、観測されたイベントおよび／または格納されたイベント・データの組から新たなイベントまたは動作を構築することにつながる。
【００２２】
最初に図面を参照すると、図１は、本発明に従って実行時にスキーマを推論する型推論システム１００を示す。本発明の主な態様は、実行時に実際の値に対してスキーマ推論を用いること、および、そのスキーマを用いて効率的かつ簡便にアクセスすることができるデータの特殊表現を作成することである。
【００２３】
上記の例を続けて、（例えばＶｉｓｕａｌ  Ｂａｓｉｃにおける）型オブジェクトの値に対する遅延束縛アクセスを仮定すると、以下の擬似コードを用いて新規な機構を表現することができる。
【００２４】
XmlDocument b=new XmlDocument();b.Load(...);
Type T=InferSchemaAndGenerateCode(b);
object b=new XmlSerializer(T).Deserialize(...);
object s=b.Title;
【００２５】
実際の文書インスタンスｄを用いて実行時型Ｔを生成し、次いで実行時型Ｔを用いて、文書ｄを動的型Ｔのオブジェクト・グラフにデシリアライズすることができる。Ｔは静的に未知であるため、（文書が静的型ｏｂｊｅｃｔを持つものと仮定すると）遅延束縛方式でのみ文書に対してプログラムすることができる。ここで、通常のオブジェクト処理を行う能力のため、文書（ＸｍｌＤｏｃｕｍｅｎｔ  ｂ）をオブジェクト表現に読み込み、次いでタイトルにアクセスすることがより一層効率的である。ｏｂｊｅｃｔ  ｂ＝ｎｅｗ  ＸｍｌＳｅｒｉａｌｉｚｅｒ（Ｔ）．Ｄｅｓｅｒｉａｌｉｚｅ（．．．）；、およびｏｂｊｅｃｔ  ｓ＝ｂ．Ｔｉｔｌｅ；というコードは、該コードが書かれたときにはｂがどのような型であるかが静的に未知であるため、オブジェクトに対する遅延束縛アクセスを定める。しかしながら、依然としてアクセスされることが望まれている。
【００２６】
背景技術における第２の例を参照すると、本発明によれば、実行時までＢｏｏｋの型を定める必要はない。
【００２７】
この処理の効率を高めるいくつかの方法が存在する。第１に、ＩｎｆｅｒＳｃｈｅｍａＡｎｄＧｅｎｅｒａｔｅＣｏｄｅアルゴリズムにおいて、種々のキャッシング戦略を実行することができる。例えば、いくつかの文書が連続して読み込まれる場合には、以前に推論されたスキーマに対する次の文書の妥当性を最初に確認することが望ましく、妥当性確認が成功した場合には、新たなスキーマを推論する必要はなく、新たな型が生成される。代替的には、別の文書が読み込まれる度に、最初に推論されたスキーマを経時的に改良することができる。より正確な型を持つことによって、より効率的なアクセスが可能になる。これらの最適化は、後述される。
【００２８】
これに対応して、入力としてデータ・ストリームを受信する推論コンポーネント１０２を含むシステム１００が提供される。推論コンポーネント１０２は、入力データ・ストリームを処理し、入力データの実際の値に基づいて実行時にスキーマ１０４を推論する。次いで、スキーマ１０４を用いて、入力ストリーム・データの特殊表現である推論された出力データを生成し、その結果、その出力データに効率的かつ簡便にアクセスすることができる。
【００２９】
図２は、本発明に従って実行時型推論を提供する方法を示す。説明を簡単にするために、例えばフローチャートの形式でここに示される１つまたは複数の方法は、一連の動作として示され説明されるが、いくつかの動作は、本発明によれば、ここに示され説明される動作とは異なる順序でおよび／またはそれらの動作と同時に行われる場合があるため、本発明は、動作の順序によって制限されるものではないことを理解し、認識すべきである。例えば、当業者であれば、方法が、状態図の場合のように一連の相関状態またはイベントとして代替的に表すことができることを理解し、認識するであろう。さらに、本発明に係る方法を実行するために、示されたすべての動作が必要であるとは限らない。
【００３０】
２００において、システムは入力データ・ストリームを受信する。この入力データは、ほんの数例を挙げると、ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）文書形式のもの、文脈自由文法（ｃｏｎｔｅｘｔ−ｆｒｅｅ  ｇｒａｍｍａｒｓ）によって記述される言語と互換性のあるデータ、および、リレーショナル・スキーマによって記述されるリレーショナル・テーブル形式のデータとすることができる。２０２において、推論コンポーネントが入力データ・ストリームを処理し、実行時にそこからスキーマを推論する。２０４においては、このスキーマを利用して、入力データ・ストリームの実際の値に基づいて推論された出力データを生成する。
【００３１】
ここで図３を参照すると、本発明に係る実行時型推論の一般化した方法が示される。データの入力ストリーム３００が、実行時処理への入力として受信される。３０２において、実行時に入力データについてスキーマが推論される。３０４において、推論されたスキーマからソース・コードが生成される。３０６において、ソース・コードは、実行可能コードとすることができるアセンブリ・コードにコンパイルされる。３０８において、アセンブリ・コードが入力データ３００の型に対して処理され、生成されたクラスがメモリに読み込まれる。３１０において、そのクラスが元のデータ入力ストリーム３００のデシリアライゼーションに用いられ、新たに作成され読み込まれたクラスのインスタンス３１２を生成する。その結果、インスタンス３１２に、効率的かつ簡便にアクセスすることができる。
【００３２】
図４は、本発明に従ってＸＭＬ文書４０２の実行時型推論を処理する方法４００を示す。ＸＭＬおよびオブジェクトのシリアライゼーションの場合には、スキーマを用いて、例えばＭｉｃｒｏｓｏｆｔ社による．ＮＥＴブランドのフレームワークにおける既存のｘｓｄ．ｅｘｅツールを用いてソース・コードを生成し、該ソース・コードをＣ＃コンパイラを用いてコンパイルし、アセンブリをメモリに読み込み、作成され読み込まれたばかりのクラスのインスタンスとして元の文書をデシリアライズすることができる。しかしながら、Ｒｅｆｌｅｃｔｉｏｎ．Ｅｍｉｔなどの推論されたスキーマ、またはより軽い形式の実行時コード生成から、クラスを生成する他の多くの代替方法が存在する。．ＮＥＴブランドのフレームワークのＲｅｆｌｅｃｔｉｏｎ名前空間は、アセンブリ・メタデータを表示し、実行時にアセンブリを作成することを容易にする。例えば、Ｒｅｆｌｅｃｔｉｏｎは、コードが、型発見を行い、アセンブリ・メタデータを表示し、実行時にアセンブリ・コードを動的に呼び出すことを可能にする。
【００３３】
したがって、ＸＭＬ文書４０２を実行時処理４００への入力データとして受信する方法が提供される。４０４において、スキーマは、ＸＭＬ文書４０２の実際の値に基づいて実行時に推論される。４０６において、推論されたスキーマからソース・コードが生成される。４０８において、そのソース・コードは、例えばＣ＃コンパイラを用いて、実行可能コードとすることができるアセンブリ・コードにコンパイルされる。４１０において、そのアセンブリ・コードを用いてＸＭＬ文書４０２の型が処理され、メモリに読み込まれるクラスを生成する。４１２において、そのクラスが元のデータ入力ストリームのデシリアライゼーションに用いられ、新たに作成され読み込まれたクラスのインスタンス４１４を作成する。その結果、インスタンス４１４に、効率的かつ簡便にアクセスすることができる。
【００３４】
図１の擬似コード例を再び参照すると、スキーマが推論されたときには、ＸＭＬ文書をオブジェクト・グラフにデシリアライズするために一般的なＸＭＬシリアライザを用いる必要がないことに注目されたい。その代わり、例えばＩＳｅｒｉａｌｉｚａｂｌｅインターフェースのカスタム実装を提供することによって、同様にシリアライゼーションおよびデシリアライゼーションのために、型固有のコードを生成することができる。
【００３５】
この例は、ＸＭＬ文書およびスキーマに関するものであるが、この機構は、文脈自由文法によって記述される言語、リレーショナル・スキーマによって記述されるリレーショナル・テーブルなどといった他のドメインに対しても、等しく適用可能である。さらに、本発明において説明される機構は、オブジェクトにデシリアライズする代わりに、スキーマ情報（例えば、スキーマ固有のＤＯＭ（文書オブジェクト・モデル）または解析ツリー）を用いて適合されたいずれかの表現を生成することにも等しく適用される。例えば、ＸＭＬ  ＤＯＭは、ＸＭＬ文書のためのプログラミング・インターフェースであり、ＸＭＬ文書にアクセスして操作することができる方法を定義する。ＸＭＬパーサ（ｐａｒｓｅｒ）と呼ばれるプログラムは、ＸＭＬ文書をコンピュータのメモリに読み込むのに用いることができる。文書が読み込まれるときに、ＤＯＭにアクセスすることによって、文書情報を取り出して、操作することができる。ＤＯＭは、ＸＭＬ文書のツリー表示を表す。
【００３６】
図５は、本発明に従って、処理５００のすべての時点または選択された時点においてキャッシングを利用することによって、実行時推論処理５００を最適化する方法を示す。この方法は、入力データ５０４および／または中間データおよび／またはコードをキャッシュ・メモリ５０６にキャッシュすることによって、実行時処理５００の際のすべての時点または選択された時点においてキャッシングを提供するキャッシュ・マネージャ５０２を含む。５０８において、実行時スキーマを生成するためにより高速にアクセスできるように、データの入力ストリーム５０４を、実行時処理への入力として受信されたときにキャッシュすることができる。５１０において、ソース・コードを生成するために、より高速のアクセスおよび処理を目的としてスキーマをキャッシュすることができる。５１２において、ソース・コードは、実行可能コードとすることができるアセンブリ・コードにコンパイルされる。ソース・コードは、より高速のアクセスのためにキャッシュすることができる。５１４において、入力データ型に対するより高速のアクセスおよび処理のために実行可能アセンブリ・コードをキャッシュし、処理メモリに読み込まれるクラスを生成することができる。５１６において、元のデータ入力ストリームに対するデシリアライゼーション処理に備えて、クラス型をキャッシュすることができる。５１８において、新たに作成され読み込まれたクラスのインスタンス５２０であるデシリアライゼーション処理の出力をキャッシュすることができる。これにより、インスタンス５２０に対して、より効率的かつ簡便にアクセスすることができる。
【００３７】
ここで図６を参照すると、本発明に従って実行時における類似する入力データの処理を最適化する方法が示される。例えばいくつかの文書が連続して読み込まれる場合には、以前に推論されたスキーマに対する次の文書の妥当性を最初に確認することが望ましく、妥当性確認が成功した場合には、新たなスキーマを推論する必要はない。例えば、第１のスキーマが実行時に推論され、第２のデータの組を受信した後に、第２のデータの組に対してそのスキーマの成功（または失敗）を比較するメトリックが利用される。成功が基準を下回る場合には、新たなスキーマが第２のデータの組から推論され、以下同様である。そうでなければ、第１のスキーマが、第２のデータの組に対して適用され続ける。
【００３８】
したがって、６００において、多数の類似データの組に対して推論されたスキーマを適用するために、基準を決定して利用する。６０２において、第１の入力データの組が受信される。６０４において、第１のスキーマが、実行時に第１のデータの組から推論される。６０６において、第２のデータの組が受信される。６０８においては、第１の推論されたスキーマを用いて、第２のデータの組に対して実行時に妥当性確認処理が行われる。６１０において検査されたときに妥当性確認が失敗した場合には、フローは６１２に向かい、新たなスキーマが第２のデータの組から推論される。６１４において、第２の推論されたスキーマに従って、および前述の処理の開発ソース・コード、コンパイリング、デシリアライゼーションなどに従って、第２のデータの組が処理される。あるいは、６１０において妥当性確認が成功した場合には、６１６に示されるように、第１の推論されたスキーマが第２のデータの組に対して適用される。次いで、６００に戻って次のデータの組を処理する。
【００３９】
この処理は２回の繰り返しに限定されるものではない。例えば、最初の２つのスキーマが用いられない場合には、第３の推論されたスキーマを導出することができ、以下同様である。しかしながら、実質的に類似する入力データを使用するときにスキーマを推論する数または深さに対して限界が存在すべきであり、そうでなければ、システム性能が影響を受ける場合がある。
【００４０】
図７は、本発明に従って、推論されたスキーマを経時的に改良することによって実行時推論処理を最適化する方法を示す。推論されたスキーマは、別の文書が読み込まれる度に経時的に改良することができる。より正確な型を持つことによって、より効率的なアクセスが可能になる。したがって、７００において、入力データ型からクラスを導出するために、推論されたスキーマの適用について基準が設定される。例えば、基準が比較的高く設定され、推論されたスキーマが、入力データに対して処理されたときにその基準を下回る出力を発生させた場合には、出力された推論されたスキーマが最終的に所望の基準を達成するように、推論アルゴリズムを改良することができる。その時点では、それ以上の改良は処理されない。
【００４１】
７０２において、実行時の推論処理のために第１の入力データの組が受信される。７０４において、入力データに基づく推論処理によってスキーマが導出される。７０６において、処理のために次の入力データの組が受信される。７０８において、推論されたスキーマが所定の基準に従って動作しているかどうかを判断するために、検査が行われる。動作している場合には、７０６に戻って次のデータの組が受信される。動作が所望の基準を満たしていない場合には、フローは７０８から７１０に進み、実行時に既存のスキーマを更新または改良する。次いでフローは７０６に戻り、処理のために次の入力データの組が受信される。代替的には、実行時に最適な出力を利用することを保証する更新されたスキーマを用いて、推論されたスキーマが基準を満たさない原因となった同じ入力データの組を、再び処理することができる。
【００４２】
図８は、本発明に従って、１つまたは複数の機能を自動化することを容易にする人工知能（ＡＩ）コンポーネント８０２を利用するシステム８００を示す。本発明は（例えば、推論に関連して）、本発明の様々な態様を実施するための様々なＡＩベースのスキーマを利用することができる。例えば、自動分類子システムおよび処理によって、推論されたスキーマを更新することに関する所定の基準または推論されたスキーマのいずれかを改良する時期を判断するための処理を容易に行うことができる。
【００４３】
分類子は、入力属性ベクトルｘ＝（ｘ１、ｘ２、ｘ３、ｘ４、ｘｎ）を、入力がクラスに属するｃｏｎｆｉｄｅｎｃｅにマップする関数、すなわちｆ（ｘ）＝ｃｏｎｆｉｄｅｎｃｅ（ｃｌａｓｓ）である。こうした分類は、ユーザが自動的に実行されることを望む動作を予測または推論するために、（例えば、分析の有用性およびコストを考慮に入れる）確率的なおよび／または統計に基づく分析を利用することができる。
【００４４】
サポートベクタマシン（ＳＶＭ）は、利用することができる分類子の一例である。ＳＶＭは、可能な入力空間において、非トリガ・イベントからトリガ基準を分離しようとする超曲面を発見することによって動作する。直観的には、これにより、訓練データに近いが同一ではない試験データについて、分類が正しいものになる。他の有向および非有向モデル分類手法として、例えば、ナイーブ・ベイズ、ベイジアン・ネットワーク、決定木、ニューラル・ネットワーク、ファジー論理モデルが挙げられ、独立の異なるパターンを提供する確率的分類モデルを利用することができる。ここで用いられる場合には、分類は、優先順位のモデルを開発するのに利用される統計的回帰を含む。
【００４５】
本明細書から容易に理解されるように、本発明は、（例えば、ユーザのふるまいを観測すること、外部情報を受信することによって）黙示的に訓練された分類子だけでなく、（例えば、一般的な訓練データによって）明示的に訓練された分類子を利用することができる。例えば、ＳＭＶは、分類子コンストラクタおよび機能選択モジュール内の学習または訓練フェーズによって設定される。このように、１つまたは複数の分類子は、以前に推論されたスキーマを更新または改良する時期を所定の基準に従って判断すること、処理中のデータの種類（例えば、金融対非金融、個人対非個人、・・・）に基づいて推論アルゴリズム上の基準を厳しくすること、および、一日のいずれかの時間に（例えば、システム性能がそれほど影響を受けない夕方に）より厳しい基準制御を実行することを含むがこれらに限定されるものではない多くの関数を、自動的に学習して実行するために用いることができる。
【００４６】
ここで図９を参照すると、開示されたアーキテクチャを実行するように動作可能なコンピュータのブロック図が示される。本発明の様々な態様について付加的な文脈を与えるために、図９および以下の記述は、本発明の様々な態様を実装することができる適切なコンピュータ環境９００に関する簡潔で一般的な説明を提供するように意図されている。本発明は、１つまたは複数のコンピュータ上で動作することができるコンピュータ実行可能命令を一般的な背景として上述されたが、当業者であれば、本発明はまた、他のプログラム・モジュールと組み合わせて、および／または、ハードウェアとソフトウェアの組み合わせとして、実装できることが分かるであろう。
【００４７】
一般に、プログラム・ジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装する、ルーチン、プログラム、コンポーネント、データ構造などを含む。さらに、当業者であれば、本発明の方法は、単一プロセッサ・コンピュータ・システムまたはマルチプロセッサ・コンピュータ・システム、ミニコンピュータ、メインフレーム・コンピュータ、ならびに、パーソナル・コンピュータ、ハンドヘルド・コンピュータ装置、マイクロプロセッサ・ベース家庭用電化製品またはプログラム可能な家庭用電化製品などを含む他のコンピュータ・システム構成を用いて実施することができ、その各々は１つまたは複数の関連装置に動作可能に結合できることが分かるであろう。
【００４８】
本発明の例示された態様はまた、通信ネットワークを介してリンクされるリモートの処理装置によって特定のタスクが実行される分散コンピューティング環境において実施することができる。分散コンピューティング環境においては、プログラム・モジュールを局所およびリモートのメモリ記憶装置の両方に配置することができる。
【００４９】
コンピュータは、典型的には、種々のコンピュータ可読メディアを含む。コンピュータ可読メディアは、コンピュータによってアクセスできるいずれかの利用可能なメディアとすることができ、揮発性メディアおよび不揮発性メディア、ならびに、取り外し可能なメディアおよび取り外し不可能なメディアの両方を含む。例として、コンピュータ可読メディアは、コンピュータ記憶メディアおよび通信メディアを備えるものとすることができるが、これらに限定されるものではない。コンピュータ記憶メディアは、コンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータといった情報を記憶するためのいずれかの方法または技術において実装される、揮発性メディアおよび不揮発性メディア、ならびに、取り外し可能なメディアおよび取り外し不可能なメディアの両方を含む。コンピュータ記憶メディアは、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル・ビデオ・ディスク（ＤＶＤ）もしくは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または、所望の情報を格納するのに用いることができ、コンピュータによってアクセスすることができる他のいずれかのメディアを含むが、これらに限定されるものではない。
【００５０】
通信メディアは、典型的には、コンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータを、搬送波または他の搬送機構などの変調されたデータ信号に統合したものであり、あらゆる情報提供メディアを含む。「変調されたデータ信号」という用語は、情報を信号に符号化するような方式で設定または変更された１つまたは複数の特性を有する信号を意味する。例として、通信メディアは、有線ネットワークまたは直接有線接続などの有線メディア、ならびに、音響メディア、ＲＦメディア、赤外線メディア、および他の無線メディアなどの無線メディアを含むが、これらに限定されるものではない。上記のいずれかの組み合わせも、コンピュータ可読メディアの範囲内に含むべきである。
【００５１】
再び図９を参照すると、処理ユニット９０４、システム・メモリ９０６、およびシステム・バス９０８を備えるコンピュータ９０２を含む、本発明の種々の態様を実装するための例示的な環境９００が示されている。システム・バス９０８は、システム・メモリ９０６を含むが、それに限定されるものではないシステム・コンポーネントを、処理ユニット９０４に結合する。処理ユニット９０４は、種々の市販プロセッサのいずれかとすることができる。処理ユニット９０４として、デュアル・マイクロプロセッサおよび他のマルチプロセッサ・アーキテクチャを利用することもできる。
【００５２】
システム・バス９０８は、（メモリ・コントローラ付きの、またはメモリ・コントローラ無しの）メモリ・バス、周辺バス、および様々な市販のバス・アーキテクチャのいずれかを用いるローカル・バスにさらに相互接続することができる幾つかの種類のバス構造の何れかとすることができる。システム・メモリ９０６は、読み取り専用メモリ（ＲＯＭ）９１０およびランダム・アクセス・メモリ（ＲＡＭ）９１２を含む。基本入力／出力システム（ＢＩＯＳ）は、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭなどの不揮発性メモリ９１０に格納され、起動の際などにコンピュータ９０２内の要素間で情報を転送するのを助ける基本ルーチンを含む。ＲＡＭ９１２は、データをキャッシュするために、スタティックＲＡＭなどの高速ＲＡＭを含むこともできる。
【００５３】
コンピュータ９０２はさらに、外部での使用のために適切な筐体（図示せず）内に構成することができる内部ハード・ディスク・ドライブ（ＨＤＤ）９１４（例えば、ＥＩＤＥ、ＳＡＴＡ）、（例えば、取り外し可能なディスケット９１８との間で読み書きするための）磁気フロッピー（登録商標）・ディスク・ドライブ（ＦＤＤ）９１６、および、（例えば、ＣＤ−ＲＯＭディスク９２２から読み出すか、または、ＤＶＤなどの他の大容量光メディアとの間で読み書きするための）光ディスク・ドライブ９２０を含むことができる。ハード・ディスク・ドライブ９１４、磁気ディスク・ドライブ９１６、および光ディスク・ドライブ９２０は、それぞれ、ハード・ディスク・ドライブ・インターフェース９２４、磁気ディスク・ドライブ・インターフェース９２６、および光ドライブ・インターフェース９２８によって、システム・バス９０８に接続することができる。外部ドライブ実装のためのインターフェース９２４は、Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ（ＵＳＢ）およびＩＥＥＥ１３９４インターフェース技術の少なくとも一方または両方を含む。
【００５４】
ドライブおよびその関連するコンピュータ可読メディアは、データ、データ構造、コンピュータ実行可能命令などの不揮発性記憶装置となる。コンピュータ９０２の場合は、ドライブおよびメディアは、適切なデジタル形式のあらゆるデータの記憶装置に対応する。上記のコンピュータ可読メディアの説明は、ＨＤＤ、取り外し可能な磁気ディスケット、および、ＣＤまたはＤＶＤなどの取り外し可能な光メディアについて述べたが、当業者であれば、例示的な動作環境において、ジップ・ドライブ、磁気カセット、フラッシュ・メモリ・カード、カートリッジなどといった、コンピュータによって読み取ることができる他の種類のメディアを用いることができ、さらに、こうしたあらゆるメディアは、本発明の方法を実行するためのコンピュータ実行可能命令を含むことができることを、認識すべきである。
【００５５】
ドライブおよびＲＡＭ９１２には、オペレーティング・システム９３０と、１つまたは複数のアプリケーション・プログラム９３２と、他のプログラム・モジュール９３４と、プログラム・データ９３６とを含む多くのプログラム・モジュールを格納することができる。オペレーティング・システム、アプリケーション、モジュール、および／またはデータのすべてまたは一部は、ＲＡＭ９１２にキャッシュすることもできる。本発明は、様々な市販のオペレーティング・システムまたはオペレーティング・システムの組み合わせを用いて実装できることが分かる。
【００５６】
ユーザは、１つまたは複数の有線／無線入力装置、例えばキーボード９３８およびマウス９４０などのポインティングデバイスを介して、コマンドおよび情報をコンピュータ９０２に入力することができる。他の入力装置（図示せず）として、マイクロフォン、ＩＲリモートの制御装置、ジョイスティック、ゲーム・パッド、スタイラス・ペン、タッチ・スクリーンなどを挙げることができる。これらの入力装置および他の入力装置は、多くの場合、システム・バス９０８に結合される入力装置インターフェース９４２を介して処理ユニット９０４に接続されるが、パラレル・ポート、ＩＥＥＥ１３９４シリアル・ポート、ゲーム・ポート、ＵＳＢポート、ＩＲインターフェースなどといった他のインターフェースによって接続することもできる。
【００５７】
モニタ９４４または他の種類のディスプレイ装置もまた、ビデオ・アダプタ９４６などのインターフェースを介してシステム・バス９０８に接続される。コンピュータは、モニタ９４４に加えて、典型的には、スピーカ、プリンタなどといった他の周辺出力装置（図示せず）を含む。
【００５８】
コンピュータ９０２は、リモートコンピュータ９４８などの１つまたは複数のリモートコンピュータへの、有線通信および／または無線通信を介した論理接続を用いて、ネットワーク化された環境で動作することができる。リモートコンピュータ９４８は、ワークステーション、サーバ・コンピュータ、ルータ、パーソナル・コンピュータ、ポータブル・コンピュータ、マイクロプロセッサ・ベースの娯楽用電気製品、ピア装置、または他の共通ネットワーク・ノードとすることができ、分かり易くするためにメモリ記憶装置９５０のみが示されているが、典型的には、コンピュータ９０２に関連して説明された要素の多くまたはすべてを含む。図示される論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ）９５２、および／または、より大きいネットワーク、例えば広域エリア・ネットワーク（ＷＡＮ）９５４への有線／無線接続を含む。こうしたＬＡＮおよびＷＡＮネットワーキング環境は、事務所および企業においては一般的なものであり、イントラネットなどの企業規模のコンピュータ・ネットワークを容易にし、それらのすべては、グローバル通信ネットワーク、例えばインターネットに接続することができる。
【００５９】
ＬＡＮネットワーキング環境で用いられるときは、コンピュータ９０２は、有線および／または無線通信ネットワーク・インターフェースまたはアダプタ９５６を介して、ローカル・ネットワーク９５２に接続される。アダプタ９５６は、該無線アダプタ９５６と通信するために配置された無線アクセス・ポイントを含むこともできるＬＡＮ９５２との有線または無線通信を容易にすることができる。
【００６０】
ＷＡＮネットワーキング環境で用いられるときは、コンピュータ９０２は、モデム９５８を含むか、ＷＡＮ９５４上の通信サーバに接続されるか、または、例えばインターネットを介してＷＡＮ９５４上で通信を確立するための他の手段を有することができる。内部装置または外部装置および有線装置または無線装置とすることができるモデム９５８は、シリアル・ポート・インターフェース９４２を介してシステム・バス９０８に接続される。ネットワーク化された環境においては、コンピュータ９０２に関連して図示されたプログラム・モジュールまたはその一部は、リモートのメモリ／記憶装置９５０に格納することができる。示されるネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段を使用できることが分かるであろう。
【００６１】
コンピュータ９０２は、例えば、プリンタ、スキャナ、デスクトップおよび／またはポータブル・コンピュータ、携帯データ端末、通信衛星、無線検出可能タグと関連付けられたあらゆる機器または場所（例えば、キオスク、新聞売り場、化粧室）、および電話といった、無線通信内に動作可能に配置されるいずれかの無線装置またはエンティティと通信するように動作することができる。これは、少なくともＷｉ−ＦｉおよびＢｌｕｅｔｏｏｔｈ（商標）無線技術を含む。したがって、通信は、従来のネットワークまたは少なくとも２つの装置間の単なるアドホック通信と同様の所定の構成とすることができる。
【００６２】
Ｗｉ−ＦｉすなわちＷｉｒｅｌｅｓｓ  Ｆｉｄｅｌｉｔｙは、無線で、家のソファ、ホテルの部屋のベッド、または職場の会議室からインターネットへの接続を可能にする。Ｗｉ−Ｆｉは、携帯電話に用いられるものと同様の無線技術であり、こうした装置例えばコンピュータが、屋内および屋外すなわち基地局の範囲内のどこでもデータを送受信することを可能にする。Ｗｉ−Ｆｉネットワークは、ＩＥＥＥ８０２．１１（ａ、ｂ、ｇなど）と呼ばれる無線技術を用いて、安全で信頼性が高い高速無線接続を提供する。Ｗｉ−Ｆｉネットワークを用いて、コンピュータを、相互に、インターネットに、および（ＩＥＥＥ８０２．３またはイーサネット（登録商標）を用いる）有線ネットワークに、接続することができる。Ｗｉ−Ｆｉネットワークは、例えば、データ速度１１Ｍｂｐｓ（８０２．１１ａ）または５４Ｍｂｐｓ（８０２．１１ｂ）で、ライセンスのいらない２．４ＧＨｚおよび５ＧＨｚ無線帯域において動作するか、または両方の帯域（デュアル・バンド）を含む製品で動作し、したがって、該ネットワークは、多くの事務所で用いられる基本的な１０ＢａｓｅＴ有線イーサネット（登録商標）・ネットワークと同様の実性能を提供することができる。
【００６３】
ここで図１０を参照すると、本発明に係る例示的なコンピューティング環境１０００の概略的なブロック図が示されている。システム１０００は、１つまたは複数のクライアント１００２を含む。クライアント１００２は、ハードウェアおよび／またはソフトウェア（例えば、スレッド、処理、コンピューティング装置）とすることができる。クライアント１００２は、例えば、本発明を利用することによって、１つまたは複数のクッキーおよび／または関連する文脈情報を保管することができる。
【００６４】
システム１０００はまた、１つまたは複数のサーバ１００４を含む。サーバ１００４もまた、ハードウェアおよび／またはソフトウェア（例えば、スレッド、処理、コンピューティング装置）とすることができる。サーバ１００４は、例えば、本発明を利用することによって変換を実行するスレッドを保管することができる。クライアント１００２とサーバ１００４との間の１つの可能な通信は、２つまたはそれ以上のコンピュータ処理間で伝送されるのに適したデータ・パケット形式とすることができる。データ・パケットは、例えば、クッキーおよび／または関連する文脈情報を含むことができる。システム１０００は、１つまたは複数のクライアント１００２と１つまたは複数のサーバ１００４との間の通信を容易に行うのに利用することができる通信フレームワーク１００６（例えば、インターネットなどのグローバル通信ネットワーク）を含む。
【００６５】
通信は、有線（光ファイバーを含む）および／または無線技術を介して容易に行うことができる。１つまたは複数のクライアント１００２は、該クライアント１００２内での情報（例えば、１つまたは複数のクッキーおよび／または関連する文脈情報）を格納するのに利用することができる１つまたは複数のクライアント・データ格納装置１００８に動作可能に接続される。同様に、１つまたは複数のサーバ１００４は、該サーバ１００４内での情報を格納するのに利用することができる１つまたは複数のサーバ・データ格納装置１０１０に動作可能に接続される。
【００６６】
上述されたものは、本発明の例を含む。当然のことながら、本発明を説明するために、コンポーネントまたは方法について考え得るあらゆる組み合わせを記述することは不可能であるが、当業者であれば、本発明のさらに多くの組み合わせおよび置換が可能であることが分かるであろう。したがって、本発明は、特許請求の範囲の趣旨および範囲内にあるこうしたすべての代替、修正、および変更を包含するように意図されている。さらに、詳細な説明または特許請求の範囲のいずれかにおいて「含む」という用語が用いられる限りにおいて、こうした用語は、「備える、含む」という用語が特許請求の範囲において遷移語（ｔｒａｎｓｉｔｉｏｎａｌ  ｗｏｒｄ）として使用されるときに解釈される場合と同様に、包括的なものであるように意図されている。
【図面の簡単な説明】
【００６７】
【図１】本発明に従って実行時にスキーマを推論する型推論システムを示す図である。
【図２】本発明に係る実行時型推論を提供する方法を示す図である。
【図３】本発明に係る実行時型推論の一般化した方法を示す図である。
【図４】本発明に従ってＸＭＬ文書の実行時型推論を処理する方法を示す図である。
【図５】本発明に従って、処理のすべての時点または選択された時点においてキャッシングを利用することによって、実行時推論処理を最適化する方法を示す図である。
【図６】本発明に従って実行時に類似する入力データの処理を最適化する方法を示す図である。
【図７】本発明に従って経時的に推論スキーマを改良することによって実行時推論処理を最適化する方法を示す図である。
【図８】本発明に係る１つまたは複数の機能を自動化することを容易にする人工知能コンポーネントを利用するシステムを示す図である。
【図９】開示されたアーキテクチャを実行するように動作可能なコンピュータのブロック図である。
【図１０】本発明に係る例示的なコンピューティング環境の概略的なブロック図である。
【符号の説明】
【００６８】
１０２  推論コンポーネント
１０４  スキーマ
３００  データ入力ストリーム
３１０  デシリアライズ
３１２  インスタンス
４０２  ＸＭＬ文書
４１４  インスタンス
５０４  データ入力ストリーム
５２０  インスタンス
１０２  推論コンポーネント
１０４  スキーマ
８０２  ＡＩコンポーネント
１００２  クライアント
１００６  通信フレームワーク
１００４  サーバ
１００８  クライアント・データ格納装置
１０１０  サーバ・データ格納装置
【図１】
2006209748.tif 000003
【図２】
2006209748.tif 000004
【図３】
2006209748.tif 000005
【図４】
2006209748.tif 000006
【図５】
2006209748.tif 000007
【図６】
2006209748.tif 000008
【図７】
2006209748.tif 000009
【図８】
2006209748.tif 000010
【図９】
2006209748.tif 000011
【図１０】
2006209748.tif 000012