(57)【要約】【解決手段】  トークンを含み、スクリプト言語で書かれたコマンドスクリプトの内容を解釈し検証する方法である。第１の、比較的高速でアクセス可能なデータ記憶装置２３０および当該記憶装置と同程度には高速でアクセス可能ではない第２のデータ記憶装置１７０が提供される。各データ記憶装置は、関数名および関連付けられたゼロ若しくはそれ以上のパラメータ仕様のパラメータリストを含む関数シグネチャ定義を含む。前記第１のデータ記憶装置２３０は完了にデータ検索を必要としないコマンドに関連付けられた関数名を含む。前記第２のデータ記憶装置１７０は、前記第１のデータ記憶装置のそれらとは異なり、完了にデータ検索を必要とするコマンドに関連付けられた関数名を含む。潜在関数名およびその引き数がある場合、それらは前記トークン内で認識される。前記第１のデータ記憶装置２３０は、前記潜在関数名に一致する関数名および前記解釈された潜在関数の引き数に一致するパラメータリストを有する、一致する関数シグネチャを求めて検索される。一致する関数シグネチャが見出されない場合は、次に前記第２のデータ記憶装置１７０が、同様の方法で一致する関数シグネチャを求めて検索される。【選択図】      図２
2008516338.tif 000002
【特許請求の範囲】
【請求項１】
実行されるために送信されたコマンドスクリプトの内容を解釈し、検証するコンピュータによる方法であって、
少なくとも１つのトークンを含み且つスクリプト言語によって書かれたコマンドスクリプトを提供する工程と、
実質的に高速アクセス可能な第１のデータ記憶装置を提供する工程であって、この第１のデータ記憶装置は、完了のためにデータ検索を必要としない動作コマンドに関連付けらた主関数名を含む少なくとも１つの主関数のシグネチャの定義と、前記主関数名に関連付けられ且つゼロ若しくはそれ以上のパラメータ仕様を有する主パラメータリストとを含むものである、前記提供する工程と、
実質的に前記第１のデータ記憶装置と同速度の高速アクセスが可能ではない第２のデータ記憶装置を提供する工程であって、この第２のデータ記憶装置は、完了のためにデータ検索を必要とするコマンドに関連付けられた補助関数名を含む少なくとも１つの補助関数のシグネチャの定義と、前記補助関数名に関連付けられ且つゼロ若しくはそれ以上のパラメータ仕様を有する補助パラメータリストとを含むものである、前記提供する工程と、
前記スクリプト言語において定義済み関数に対する参照を潜在的に表すための前記少なくとも１つのトークンの少なくとも一部分を認識する工程であって、前記関数参照は潜在関数名およびそれに関連付けられたゼロ若しくはそれ以上の潜在パラメータを有するものである、前記認識する工程と、
前記潜在関数名と一致する主関数名を有する一致主関数のシグネチャの定義を前記第１のデータ記憶装置において検索する工程であって、前記潜在パラメータの各々は同一の主関数のシグネチャの定義に関連付けられた前記主パラメータリスト内に一致するエントリを有するものである、前記検索する工程と、
一致する主関数のシグネチャの定義が前記第１のデータ記憶装置内に見出されない場合、前記潜在関数名と一致する補助関数名を有する一致補助関数のシグネチャの定義を前記第２のデータ記憶装置において検索する工程であって、前記潜在パラメータの各々は同一の補助関数のシグネチャの定義に関連付けられた前記補助パラメータリスト内に一致するエントリを有するものである、前記検索する工程と
を有する方法。
【請求項２】
請求項１記載の方法において、この方法は、さらに、
クライアントアプリケーションから前記コマンドスクリプトを受信する工程と、
前記潜在関数名と一致すると決定された関数名の指定時実行を含む実行計画を構築する工程と、
結果データを結果セットへアセンブリすることを含む前記実行計画を実行する工程と、
結果受信用サーバー上に結果セット識別子と関連付けられた前記結果セットを格納する工程と、
前記結果セット識別子および前記結果受信用サーバーの識別情報を前記クライアントアプリケーションに提供する工程と、
前記クライアントアプリケーションからの前記結果セットの要求を前記結果受信用サーバーによって受信する工程と、
前記要求に応答して、前記結果受信用サーバーからの前記結果セットを前記クライアントアプリケーションに伝送する工程と
を有するものである。
【請求項３】
請求項１記載の方法において、前記第２のデータ記憶装置は、関係データベースを有するものである。
【請求項４】
請求項１記載の方法において、前記第１のデータ記憶装置および前記第２のデータ記憶装置は、通信ネットワークによって相互接続された個別のコンピュータに存在するものである。
【請求項５】
請求項１記載の方法において、前記コマンドスクリプトはクライアントアプリケーションによって送信実行されるものである。
【請求項６】
請求項５記載の方法において、前記クライアントアプリケーションは表計算プログラムを含むものである。
【請求項７】
請求項５記載の方法において、前記クライアントアプリケーションはウェブブラウザーを含むものである。
【請求項８】
請求項５記載の方法において、前記クライアントアプリケーションは、アプリケーション・プログラミング・インターフェースによって表示された関数に対して行なわれる呼び出しに応答して、前記コマンドストリングを構築および送信して実行するアプリケーション・プログラミング・インターフェースを含むものである。
【請求項９】
請求項１記載の方法において、前記定義済み関数に対する参照は定義済みユーザー定義関数に対する参照である。
【請求項１０】
請求項１記載の方法において、前記定義済み関数に対する参照は、前記スクリプト言語にとってネイティブである定義済み関数に対する参照である。
【請求項１１】
請求項１記載の方法において、前記少なくとも１つのトークンは複数のトークンを含み、
前記複数のトークンを構成要素に分解する工程と、
前記構成要素をオブジェクト階層に配列する工程と
をさらに有するものである。
【請求項１２】
ユーザー拡張可能なスクリプト言語を提供するコンピュータによる方法であって、
前記スクリプト言語で書かれたユーザー定義関数をデータ記憶装置に格納する工程であって、このユーザー定義関数は、当該ユーザー定義関数に関連付けられた少なくとも１つのパラメータと、この少なくとも１つのパラメータの値が代入記号の代わりに文字列として挿入されることを示す少なくとも１つの代入記号を含むボディ部とを含むものである、前記格納する工程と、
前記ユーザー定義関数の名称および前記少なくとも１つのパラメータの仕様を含み、且つ前記ユーザー定義関数の特徴を識別する関数シグネチャを前記データ記憶装置内に格納する工程と、
前記スクリプト言語で書かれたコマンドスクリプトを認識して、前記ユーザー定義関数に対する参照とそれに関連する少なくとも１つのパラメータ値とを含むトークンを含む工程と、
前記コマンドストリングで参照される前記ユーザー定義関数の前記ボディ部のコピーを検索する工程と、
前記コピー内の前記少なくとも１つの代入記号を前記トークンの前記少なくとも１つのパラメータ値で置き換える工程と、
前記スクリプト言語を使って前記ユーザー定義関数の前記コピーのボディを再解釈する工程と、
前記ユーザー定義関数の前記コピーのボディを認識して、前記データ記憶装置における前記ユーザー定義関数の前記ボディに存在していなかった関数に対する参照を有するトークンを含む工程とを有し、
それによって前記ユーザー定義関数のランタイム解釈が変更されて、前記格納済みユーザー定義関数内に含まれていなかった関数の呼び出しを含むようになるものである
方法。
【請求項１３】
請求項１２記載の方法において、
前記ユーザー定義関数の前記少なくとも１つのパラメータは、第１のパラメータと第２のパラメータとを含むものであり、
前記ユーザー定義関数の前記少なくとも１つの代入記号は、第１の代入記号と第２の代入記号とを含み、前記第１および第２のパラメータの値がそれぞれ前記第１および第２の代入記号の代わりに文字列として挿入されることを示すものであり、
前記関数シグネチャ内の前記少なくとも１つのパラメータの前記仕様は、前記第１および第２のパラメータ仕様を含むものであり、
前記認識されたトークンに関連付けられた前記少なくとも１つのパラメータ値は、第１のパラメータ値と第２のパラメータ値とを含むものであり、
前記コピー内の前記少なくとも１つの代入記号を前記トークンの前記少なくとも１つのパラメータ値で置き換える工程は、前記コピー内の前記第１の代入記号を前記トークンの前記第１のパラメータ値で置き換える工程と、前記コピー内の前記第２の代入記号を前記トークンの前記第２のパラメータで置き換える工程とを有するものであり、
それによって、前記ユーザー定義関数のランタイム解釈が変更されて、関数の呼び出しと、前記第１のパラメータ値および前記第２のパラメータ値を含む前記呼び出された関数名の少なくとも一部を含むようになるものである。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概してスクリプト言語および関連するパーサーに関し、特に、関係データベースに対して照会できる形式へのコマンドスクリプトの解釈に関する。
【背景技術】
【０００２】
データベース言語ではない言語によって書かれたユーザー照会を、関係データベース・サーバー・ソフトウェアなどのデータベース・サーバー・ソフトウェアにとって理解可能な１若しくはそれ以上の照会に処理する照会パーサーが、当技術分野において長い間知られている。これらパーサーは一般に、周知の構造化照会言語（ＳＱＬ）などのデータベース照会言語を使ってユーザーのコマンドスクリプトを１若しくはそれ以上のデータベース照会コマンドに変換する。
【０００３】
Ｎｏｂｌｅおよびその他による米国特許第５，６３４，０５３号明細書は、グローバルデータベース照会によって参照される個々のデータベースからデータを検索して検索するための、複数の局所的な副照会への前記グローバル照会のフィルタ処理を開示している。
【０００４】
Ｃｏｃｈｒａｎｅおよびその他による米国特許第５，９８７，４５５号明細書は、その照会が手続き関数を含むデータベースの照会を対象としている。前記照会はこの手続き関数の内部表示を生成するためにコンパイルされ、前記内部表示を使って前記手続き関数の実行が最適化される。
【０００５】
Ｊｏｎｅｓおよびその他による米国特許第５，８７３，０８３号明細書は、最適化され照会実行計画に変換されたオブジェクト構造の高レベルの集合を生成する構文定義の使用法を開示している。
【０００６】
Ｍａｒｔｉｎｅｚ−Ｇｕｅｒｒａおよびその他による米国特許第６，５２３，１７２号明細書は、データ記憶装置と動的にインターフェースするための、ステートメント解析に関連した構文変換ルールを用いたパーサー変換器を開示している。
【０００７】
これらおよびその他の従来技術のデータベースパーサーはよく機能したものの、動作可能な性質で、完了のためにデータ検索を必要としない１組の限定的なコマンドが、データベース・コマンド・パーサーによって比較的高速なアクセスが可能な局所記憶装置を使ってネイティブに認識され、かつデータ検索並びにユーザー定義関数を必要とするかなり、より大きな１組の関数が、それほど高速のアクセスができない補助データ記憶装置に関連して認識される、階層的な多段コマンド索引機能を含む前記コマンドパーサーが提供されることが望ましい。
【０００８】
本発明の更なる目的は、市販の業務用アプリケーション、ウェブブラウザー、および特注のアプリケーションを含む種々の情報源からコマンドスクリプトを受信し、処理することのできるデータベース・コマンド・パーサーを提供することにある。
【０００９】
本発明のもう１つの目的は、スクリプト言語、およびユーザー定義関数の作成、またはそれらの発呼者がユーザー定義関数のランタイム実行を「素早く」変更または書き換えできるユーザー定義関数を含む、前記コマンド言語に対する拡張を容易にする関連コマンドパーサーを提供することにある。
【００１０】
本発明の更にもう１つの目的は、パーサーおよびスクリプト言語に関連付けられて、関係データベースから相対的日付仕様および周期的日付間隔を含む様々な方法でデータが検索されるべき日付をユーザーが特定できる、柔軟な日付エンジンを提供することにある。
【００１１】
これらおよびその他の本発明の望ましい特徴が、本明細書、請求の範囲、および図面に照らして明らかにされるであろう。
【発明の開示】
【課題を解決するための手段】
【００１２】
本発明は、実行されるために送信されたコマンドスクリプトの内容を解釈し、検証するコンピュータによる方法を対象とする。このようなコマンドスクリプトは、例えば、クライアント／サーバーアーキテクチャを有するデータベース照会および検索システムとの関連で提供される。好適な１実施形態において、実行のために送信された前記コマンドスクリプトの前記内容の前記解釈および検証は、少なくとも１つのトークンを含みスクリプト言語で書かれたコマンドスクリプトを提供する工程を含む。高速アクセス可能な第１のデータ記憶装置は、少なくとも１つの主関数のシグネチャの定義を含む。この主関数のシグネチャの定義は、完了のためにデータ検索を必要としない動作コマンドに関連付けられた主関数名、ならびに前記主関数名に関連し、ゼロ若しくはそれ以上のパラメータ仕様を有する主パラメータリストを含む。
【００１３】
更に、前記第１のデータ記憶装置と同程度の高速アクセスが可能ではない第２のデータ記憶装置が提供されている。この第２のデータ記憶装置は同様に、完了のためにデータ検索を必要とするコマンドに関連付けられた、および／またはユーザー定義関数に関連付けられた補助関数名を含む、少なくとも１つの補助関数のシグネチャの定義を含む。前記補助関数のシグネチャの定義はまた、前記補助関数名に関連し、ゼロ若しくはそれ以上のパラメータ仕様を有する補助パラメータリストをも含む。
【００１４】
前記パーサーは、前記トークンの少なくとも一部を認識して、定義済み関数に対する参照を前記スクリプト言語で潜在的に表す。この潜在関数参照は、潜在関数名およびゼロ若しくはそれ以上の関連付けられた潜在パラメータである。次に、前記パーサーは定義済み関数に対する前記潜在参照に対応して一致する主関数のシグネチャの定義を求めて前記第１のデータ記憶装置を検索する。前記潜在関数名と一致する主関数名を有する主関数のシグネチャの定義が見出され、前記潜在パラメータの各々が同一の主関数のシグネチャの定義に関連する前記主パラメータリスト内に一致するエントリを有する場合、一致が発生したと判断される。
【００１５】
前記第１のデータ記憶装置内に一致する主関数シグネチャが見出された場合、前記コマンドスクリプト内の前記関数参照は有効とみなされ、それ以上の検索は必要ない。そうでない場合は、前記潜在関数の同様の検索が、今度は前記第２のデータ記憶装置内で再度実行される。具体的には、前記潜在関数名と一致する補助関数名を有し、その中で前記潜在パラメータの各々が同一の補助関数のシグネチャの定義に関連付けられた前記補助パラメータリスト内に一致するエントリを有する、一致する補助関数のシグネチャの定義を求めて前記第２のデータ記憶装置が検索される。前記第２のデータ記憶装置内に一致するエントリが見出された場合、前記コマンドスクリプト内の前記関数参照は有効であるとみなされる。そうでない場合は、無効な関数参照または構文エラーが発生したと判断される。
【００１６】
好適な１実施形態において、前記コマンドスクリプトはクライアントアプリケーションから受信される。また、好適な１実施形態において、前記潜在関数名に一致すると決定された関数名の指定時実行を含む実行計画が作成される。前記実行計画の実行中、関係データベースから検索された結果として生じるデータが結果セット内に組み込まれる。この結果セットが、結果セット識別子に関連付けられて結果受信用サーバー上に格納される。前記結果セット識別子は、前記結果受信用サーバーの識別情報と共に前記クライアントアプリケーションに提供される。前記クライアントアプリケーションは、要求に応答して前記結果受信用サーバーから前記クライアントにその時点で伝送される前記結果セットを求めるこの要求を送信する。
【００１７】
好適な１実施形態において、前記第１のデータ記憶装置および前記第２のデータ記憶装置は、通信ネットワークによって相互接続された個別のコンピュータ上に存在する。好適な１実施形態において、前記コマンドスクリプトを送信する前記クライアントアプリケーションは表計算プログラムを含む。別の好適な１実施形態において、前記クライアントアプリケーションはウェブブラウザーを含む。更に別の好適な１実施形態において、前記クライアントアプリケーションは、アプリケーション・プログラミング・インターフェースによって公開された関数に対して行なわれる呼び出しに応答して、実行のための前記コマンドストリングを構築し送信する前記アプリケーション・プログラミング・インターフェースを含む。
【００１８】
また、好適な１実施形態において、定義済み関数に対する前記参照は、定義済みユーザー定義関数に対する参照である。別の好適な１実施形態において、この参照は、その代わりに、前記スクリプト言語にとってネイティブである定義済み関数に対する参照である。
【００１９】
更に、好適な１実施形態において、前記少なくとも１つのトークンは、その後にオブジェクト階層に配列される構成要素に分解される複数のトークンを含む。
【００２０】
本発明はまた、ユーザー拡張可能なスクリプト言語を提供するコンピュータによる方法を含む。前記スクリプト言語で書かれたユーザー定義関数がデータ記憶装置内に格納されている。それに関連する少なくとも１つのパラメータを含むこのユーザー定義関数、および少なくとも１つの代入記号を含むボディ部は、前記代入記号の代わりに、前記少なくとも１つのパラメータの値が文字列として挿入されるべきであることを示す。前記ユーザー定義関数の特徴を識別する関数シグネチャが、前記データ記憶装置に格納されている。この関数シグネチャは、前記ユーザー定義関数名および前記少なくとも１つのパラメータの仕様を含む。
【００２１】
前記スクリプト言語で書かれたコマンドスクリプトは、前記ユーザー定義関数およびそれに関連する少なくとも１つのパラメータ値に対する参照を含むトークンを含むとして認識される。前記コマンドストリング内に参照される前記ユーザー定義関数の前記ボディ部のコピーが検索される。前記少なくとも１つの代入記号は、前記コピー内で前記トークンの前記少なくとも１つのパラメータ値によって置き換えられる。
【００２２】
次に、前記ユーザー定義関数の前記コピーの前記ボディは、前記スクリプト言語を使って再解釈される。本質的には、前記パーサーは前記変更されたコピーを通じて追加の実行経路を作成する。この再解釈に続いて、前記ユーザー定義関数の前記コピーの前記ボディは、前記データ記憶装置内の前記ユーザー定義関数の前記ボディ内に存在しなかった関数に対する参照を有するトークンを含むとして認識される。このように、前記ユーザー定義関数のランタイム実行は、前記格納済みユーザー定義関数内に含まれていなかった関数の呼び出しを含むように変更される。
【００２３】
また、好適な１実施形態において、前記ユーザー定義関数の前記少なくとも１つのパラメータは、第１のパラメータと第２のパラメータとを含む。前記ユーザー定義関数の前記少なくとも１つの代入記号は、第１および第２の代入記号の代わりにそれぞれ前記第１および第２のパラメータの値が文字列として挿入されるべきであることを示す前記第１の代入記号と前記第２の代入記号とを含む。
【００２４】
この好適な１実施形態において、前記関数シグネチャ内の前記少なくとも１つのパラメータの前記仕様は、前記第１および第２のパラメータの仕様を含む。加えて、前記認識されたトークンに関連する前記少なくとも１つのパラメータ値は、第１のパラメータ値および第２のパラメータ値を含む。更に、前記コピー内の前記第１の代入記号は、前記トークンの前記第１のパラメータ値によって置き換えられ、前記コピー内の前記第２の代入記号は前記トークンの前記第２のパラメータ値によって置き換えられる。このように、前記ユーザー定義関数のランタイム実行は、関数の呼び出しを含むように変更され、前記呼び出された関数名の少なくとも一部が前記第１のパラメータ値および前記第２のパラメータ値を含む。
【発明を実施するための最良の形態】
【００２５】
本発明では多くの異なる形式による実施形態が可能であるが、本開示は本発明の原理の例示として解釈されるべきであり、本発明を図示された実施形態に限る事を意図しないという理解の下に、幾つかの具体的な実施形態が前記図面によって示され、詳細に説明される。
【００２６】
本発明を具体化したクライアント／サーバー型コマンドスクリプトの解釈およびデータベース照会および検索のシステム全体のブロック図を、複数のパーソナルコンピュータ１３０を含めて図１に示す。図１に示すように、これらのパーソナル・コンピュータ・クライアントは、スクリプト言語で書かれた一連の関数参照を含むコマンドスクリプトを有するコマンドストリングの形式で、様々な方法でデータ要求を送信できる。例えば、送信のためのコマンドストリング全体を生成し、実行のために前記コマンドストリングを送信するために、ハイパーテキスト記述言語（ＨＴＭＬ）、ジャバスクリプトまたはＶＢスクリプトのようなネイティブスクリプト言語、およびウェブブラウザー１６０に関連したサード・パーティー・プラグ・インの組み合わせを使用し、アプリケーション・プログラミング・インターフェース（ＡＰＩ）を含み、ユーザー供給データおよび選択肢と連動するウェブブラウザー１６０を使用できる。
【００２７】
または、パーソナルコンピュータ１３０は、サード・パーティー・プラグ・イン１５１と共に市販の標準業務用アプリケーション１５０を使って、前記コマンドストリングを生成できる。本発明の好適な１実施形態において、市販アプリケーション１５０はマイクロソフトエクセル（登録商標）の表計算プログラムを有する。当技術分野で周知のように、表計算プログラム１５０の機能性は、表計算プログラムのセル内のユーザー入力に基づいて、実行のためのコマンドスクリプトを構築し送信するために、前記ＡＰＩに対して関数呼び出しを行なうプラグイン１５１によって拡張される。マイクロソフトアクセス（登録商標）のデータベースアプリケーションのようなその他の業務用アプリケーションを代わりに使用してもよい。
【００２８】
代わりに、パーソナルコンピュータ１３０はＡＰＩ１４１と連動して動作する専用の自家製ソフトウェアアプリケーション１４０を含んでもよい。ＡＰＩ１４１は、例えば、ダイナミック・リンク・ライブラリ（ＤＬＬ）、コンポーネント・オブジェクト・モデル（ＣＯＭ）のオブジェクト、または専用ソフトウェアアプリケーション１４０によって直接コンパイルされ得る業者供給のソースコードのライブラリの形式で供給できる。前記ＡＰＩは、専用ソフトウェアアプリケーション１４０が、前記ＡＰＩインターフェースによって発呼者に公開されている関数に対する一連の呼び出しによってコマンドストリングを構築し、送信する一律の事前定義されたインターフェースを有する。プラグイン１５１もまた、このＡＰＩを参照するものの、前記ＡＰＩの複雑性は前記業務アプリケーションのユーザーからは遮られている。
【００２９】
ネットワーク接続１２０は、パーソナルコンピュータ１３０をルーター１１０に連結する。好適な１実施形態において、ネットワーク１２０は比較的高速のインターネットに基づいた接続を有し、パーソナルコンピュータ１３０が前記コマンドの解釈およびデータベース照会のシステム全体の残りの部分に対して遠隔地にあることを可能とする。ルーター１１０は、パーソナルコンピュータ１３０からネットワーク接続１２０経由で受信したコマンドストリングを含むメッセージパケットを１若しくはそれ以上のウェブサーバー１００に送る。ルーター１１０はまた、ウェブサーバー１００からの応答を適切なパーソナルコンピュータに返送する。ルーター１１０は更に、一体型ファイアウォールを組み込み、前記外部ネットワークを経由した攻撃からウェブサーバー１００を保護することができる。または、前記ルーターと前記外部ネットワーク接続の間に別個のファイアウォールを挿入することもできる。
【００３０】
ウェブサーバー１００は受信された前記コマンドスクリプトまたはコマンドストリングを解釈して後に実行するソフトウェアアプリケーションを含む。このソフトウェアアプリケーションはＸＭＬウェブ・サービス・インターフェースのような従来の業界標準ウェブ・サービス・インターフェースを含み、ウェブブラウザー１６０、プラグイン１５１を経由した市販のアプリケーション１５０、およびＡＰＩ１４１を経由した自家製アプリケーション１４０などの標準ウェブサービスをアクセスできる任意の認証された遠隔装置からのコマンドストリングの送信を容易にし得る。または、独自のウェブ・サービス・インターフェースを使用してもよい。
【００３１】
各ウェブサーバー１００は補助関数データベース１７０と連動して着信コマンドストリングを解釈するコマンドパーサーを含む。更に、前記完全に解釈されたコマンドストリングの最終実行のために、前記コマンドパーサーはデータ照会の形式の要求を照会処理データベース１７１に送信する。照会処理データベース１７１は、それを受けて読み出し専用データベースサーバー１８０からデータの取り込みを実行する。好適な１実施形態において、前記補助関数データベースサーバー、照会処理データベースサーバー、および読み出し専用データベースサーバーは全て、Ｍｉｃｒｏｓｏｆｔ  ＳＱＬ  Ｓｅｒｖｅｒ（登録商標）のような市販の関係データベース・ソフトウェア・パッケージを使用する。
【００３２】
図１はコマンド送信、解釈、およびデータ検索のシステム全体の最良の配置図を図示するものの、当技術分野において周知のようなその他の物理構成も予期される。例えば、コンピュータ１３０は、パーソナルコンピュータではなく、ハンドヘルド計算機、ミニコンピュータ、またはメインフレームコンピュータを有してもよい。更に、ネットワーク１２０は、インターネットではなく、ローカル・エリア・ネットワークまたはワイド・エリア・ネットワークを有してもよい。ネットワーク１２０は、無線ネットワークをも有してもよい。スケーラブル・サーバー・クラスタまたは「ウェブファーム」の形式の複数のウェブサーバー１００が予期されるが、その代わりに単一ウェブサーバーを使用してもよい。
【００３３】
更には、図１では前記補助関数、照会処理、および読み出し専用のデータベースが２つの物理的に別個のコンピュータ上でホストされているように示されているが、それらは代わりに単一のコンピュータ上に存在してもよい。それどころか、前記データベースサーバーおよびウェブサーバーが全て単一のコンピュータ上に存在してもよく、またはその代わりに、前記データベースサーバー、ウェブサーバー、およびクライアントコンピュータ１３０が全て単一の中央集権型コンピュータシステムに凝縮されてネットワークの必要性を完全に排除してもよい。更には、図１には、ＡＰＩと連動する比較的高度なコマンドスクリプトの構築および送信の手段が示されているものの、代わりにこれらはユーザーによる平文形式の直接入力のような、より直接的な方法で送信されてもよい。
【００３４】
図２はウェブサーバー１００を、ウェブサービス２００を含んでより詳細に示している。ウェブサービス２００は更に、コマンド・スクリプト・パーサー２１０を含む。図２に示すように、前記コマンドパーサーはまた、好ましくは前記ウェブサーバー内にある局所関数記憶装置２３０をアクセスする。更に、前記コマンドパーサーは前記補助関数データベース１７０並びに、それを受けて読み出し専用データベースサーバー１８０をアクセスする照会処理データベース１７１をアクセスする。照会処理ベータベース１７２はまた、コマンドパーサー２１０によってアクセスされる日付エンジン１７２をも含む。図１および図２に示すように、読み出し専用データベース１８０は、データ源１８１、１８２、および１８３などの複数のデータ源からのデータを有することができる。これらデータ源は、第三者によってホストされる個別の物理データベースまたは前記読み出し専用データベースサーバー内の個別のデータベース上に存在し得るものの、これら多様な情報源からのデータは連合され、共通の中央集権型データベース形式に標準化されることが好ましい。この多様な情報源からのデータの標準化は、複数の情報源からの複雑な金融データを照会する時に大変望ましい。特に、さもなければ種々の異なる表構造に格納されることになるであろうデータをアクセスするために、前記解釈されたコマンドストリングによって生成された要求を「大急ぎで」フォーマットする必要がなく、その代わりにより均一な単一の情報源を照会できるので、前記標準化されたデータは概してはるかに高速にアクセスできる。主関数記憶装置２３０は、加算、減算、順位付け、および分類などの動作可能な性質であり、完了のために一切のデータ検索を必要としないコマンドの関数定義のみを含むことが好ましい。補助関数データベース１７０は、主関数記憶装置２３０に格納されたコマンドとは異なり、完了のためにデータ検索を必要とするコマンドの関数定義のみを含むことが好ましい。
【００３５】
前記クライアントからの前記コマンドスクリプトまたはコマンドストリングの発行、前記ウェブサーバーにおける前記要求の受信および解釈、一般に前記読み出し専用データベースからの１若しくはそれ以上のデータの取り込みの実行を含む、前記要求の実行、前記結果の前記クライアントへの提供、および前記クライアントによる前記結果の検索に伴う主な工程を図示したフロー図を図３に示す。先ず、工程３００に示すように、専用アプリケーションおよび前記ＡＰＩ、表計算プログラムおよび関連したプラグイン、またはブラウザーアプリケーションを含むクライアントソフトウェアが前記ユーザーによって要求された種々の情報をスクリプト言語で書かれた一連の関数呼び出しを有するコマンドスクリプトに組立て、前記コマンドスクリプトを総合的な要求にまとめる。前記クライアントが、次に工程３０１においてその要求を圧縮し、前記ウェブサーバーへのデータのより高速な伝送を達成する。次に工程３０２において、前記圧縮された要求が前記ウェブサービスに送信される。前記クライアントコンピュータを前記ウェブサーバーに接続するためにインターネットを使用する、好適な１実施形態において、前記圧縮された要求は１若しくはそれ以上のＴＣＰ／ＩＰパケットの形式で送信される。
【００３６】
工程３０３において、前記クライアント要求がウェブサーバーによって受信される。好適な１実施形態のように「ウェブファーム」またはサーバークラスタが使用されていると、最初のウェブサーバーが前記着信要求を最初に受信し、それを後続の処理のために前記クラスタ内の特定のウェブサーバーに割り当てる。次に工程３０４において、前記要求の処理を最終的に割り当てられたウェブサーバーが、工程３０１における前記クライアントによって実行された前記圧縮動作の逆を実行して前記着信要求を解凍する。前記着信要求が解凍されると、その中に含まれる前記コマンドスクリプトまたはコマンドストリングは処理可能状態となる。先ず工程３０４に示すように、前記クライアントによって送信されたコマンドストリングがオブジェクト階層に細分化される。コマンドストリングの見本を図４に示し、このコマンドストリングの要素のオブジェクト階層への分解を図５に示す。図４を参照して、前記コマンドストリングの見本は、区切り文字によって分離された一連の個別トークンを有するものとして示される。図４の例において、各区切り文字は、「より小なり」文字、２本の垂直線文字、および「より大なり」文字の一列４文字を有する。図４の例には専用の区切り文字を示すが、代わりに拡張マーク付け言語（ＸＭＬ）などの業界標準形式を使用してもよい。図４に示す最後のトークン、ＥＮＤ＿ＢＵＮＤＬＥは、バンドルに関連付けられる１組のコマンドの終わりを区分けするために使用される。バンドルとは、金融記号の同一組に適用される１組の結果、またはその他の形式で照会されているデータである。図４の例では前記コマンドストリングは単一バンドルを含むが、前記パーサーは単一コマンドストリング内で複数のバンドルを連続して受け付けることができる。
【００３７】
図５は、図４のコマンドストリング４００がオブジェクト階層５００に細分化される様子を詳細に示す。図５に示すように、図４の第１のトークンがＴＩＣＫＥＲ＿ＬＩＳＴ（）と名付けられた潜在的に有効な関数参照、およびこの潜在関数の下の第２の階層上の、前記潜在関数のパラメータまたは引き数として認識されるＩＢＭというストリングリテラルに細分化される。同様に、図５において、図４のコマンドストリング内の第２のトークンは、前記潜在的に有効な関数参照ＣＡ＿ＳＡＬＥＳ（）を有する第１の階層、および前記第２の階層上の５／２５／０４の日付形式の値、および、ｏｃｙおよびｍというストリングリテラルの３エントリを有するオブジェクトに構築されるものとして示される。前記コマンドストリングの例内の第３のトークンは、ＳＬＯＰＥ（）と名付けられた前記潜在的に有効な関数参照を有する第１の階層、ＣＱ＿ＥＰＳ（）と名付けられた前記潜在的に有効な関数参照を有する第２の階層、および、０および−１０の数値を含む第３の階層の３階層のオブジェクトに細分化される。
【００３８】
もう一度図３を参照して、オブジェクト階層の作成に続いて、前記コマンドストリングの処理における次の工程は動作関数索引３０６である。動作関数索引の第１の部分はネイティブに、または局所的に前記パーサーにとって既知の記号の変換である。これらは、例えば加算、減算、順位付け、および分類に関連するもの、並びに対応するネイティブ関数に変換される数学記号のような記号などの、動作可能な性質のコマンドを含む。算術記号の関連付けられた数学的関数への変換の例を図６に示す。ストリングリテラルに適用される算術演算子を含む数式６００を示す。この例において、前記ストリングリテラルまたは変数は、文字ａ、ｂ、ｃ、およびｄによって表される。前記数式は、ａ＋ｂの加算、この和からのｃの減算、およびこの結果として生じる中間値のｄによる除算を示す。図６の右側には、これら記号が、前記コマンドスクリプトの関連付けられた部分の書き換え、および対応する適切な関数参照による前記記号の置き換えによって変換されている。図６に示すように、前記変換された記号６１０は３つの入れ子関数を含んだ。最も内側の「ａｄｄ」関数は変数ａおよびｂに適用される。その外側の関数「ｓｕｂ」は前記加算関数および前記変数ｃに適用される。最も外側の関数「ｄｉｖａ」、前記除算関数は変数ｄと共に「ｓｕｂ」関数の結果に適用される。
【００３９】
この記号変換の段階で、予備的なエラー検査が実行され、構文エラーが発生した場合、前記コマンドスクリプトの継続処理が拒絶される。前記動作関数索引工程が完了した時、前記オブジェクト階層は、既知の記号を置き換えた適切な関数参照で、部分的に書き換えられている。更に、動作可能な性質であり、従って前記パーサーにとって局所的に既知であるそれら関数もまたこの時に変換される。これは、前記コマンドストリング内で特定され、前記オブジェクト階層内の適切な位置にある各関数が局所的に既知の関数であるかどうかを決定するために、図２の前記比較的高速でアクセス可能な局所関数記憶装置２３０を調べることによって達成される。
【００４０】
図４の前記コマンドスクリプトの例において、ＴＩＣＫＥＲ＿ＬＩＳＴ（）は、その関連するパラメータ、この場合、前記記号ＩＢＭが、前記関連する照会の首題が総じてＩＢＭコーポレーション（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ）の株の株式、利益、配当など（即ち、株価表示機から選択されたエントリ）に関する金融情報の検索に関連することを示すネイティブな、または局所的な動作関数である。更に、図４の前記コマンドスクリプトの例において、前記関数ＳＬＯＰＥ１０（）もまた局所関数記憶装置に格納され、かつ前記パーサーにとってネイティブに既知である関数であり、前記解析関数勾配または経時変化率が、１０日間の単位で考慮されたデータを使って決定されることを示す。これら、および前記ユーザーの照会に関連する一般的な分野でよく使われ、送信されたコマンドスクリプト内で比較的頻繁に発生すると予期されるその他の関数は同様に前記パーサーにとってネイティブに既知である関数とされることが好ましい。
【００４１】
当技術分野において周知のように、この局所的な比較的高速の索引は幾つかの異なる方法で実行できる。例えば、前記局所的に既知の関数名は比較的小さなファイルおよび局所ハードディスク上、または局所的なランダム・アクセス・メモリーまたは読み出し専用メモリー内に格納することができる。関数名はアルファベット順の表に、順番に格納して逐次検索を容易にすることができる。または、前記関数名はより高速な所在特定および検索のための索引を付けてもよい。データは迅速な検索のために２進木、平衡木、または多元木に構築して２進検索法またはその他のＢ木検索法を容易にすることができる。更に、当技術分野において周知のように、ハッシュ法などの高速メモリーアクセス法を使って、前記特定された関数名が前記局所関数記憶装置内に存在するかどうかを迅速に決定できる。内容検索型メモリーなどの専用の検索高速化ハードウェアを使うこともできる。好適な１実施形態において、約３００乃至４００の関数がよく使われるとみなすことができ、この局所関数記憶装置内にこれらを格納できる。
【００４２】
動作可能な性質の、局所メモリーに格納され、かつ前記パーサーによって高速でアクセス可能な各々局所的に既知の関数は、好適な１実施形態において、付加的記述情報と共に関数シグネチャの形式で前記局所関数記憶装置に格納されている。更に、データ検索に関連し、またはデータ検索を伴い、局所的に既知ではない関数は関数シグネチャに関連付けられる前記補助関数データベースに格納される。局所記憶装置内の動作関数に関連するにしろ、前記補助関数データベース内のデータ検索関数に関連するにしろ、各関数シグネチャは記述情報を含み、前記関数名、および前記関数呼び出しに対する引き数として提出されたパラメータが存在する場合はその予期されるパラメータの特性の両方を識別する。パラメータが存在する場合、その各々について、その名称、データの種類、前記パラメータリスト内の既定位置、および（前記コマンドストリング内の特定の関数呼び出し内で前記関連付けられるパラメータ値が前記ユーザーによって供給されない場合に自動的に代入されるべき）既定値もまた特定される。パラメータはコマンド内のトークンを一致させるためには使われないことに注目すべきである。その代わりに、一旦トークンが（動作可能コマンドに関連付けられる）前記主関数記憶装置または（データ検索を伴うコマンドに関連付けられる）前記補助関数データベース内のコマンドに一致すると判断されると、前記一致した関数のパラメータリストが読み込まれ、前記パラメータが特に前記ユーザーによって正しく特定されたと検証する関数に関連付けられるパラメータがある場合、そのパラメータの細分化を開始するために使用される。
【００４３】
図３を参照して、前記動作関数索引の工程に続いて、データ検索関数索引３０７が実行される。この工程において、ネイティブに既知でなく局所関数記憶装置に格納されていない前記潜在関数名の全てを認識しようとして、前記補助関数データベースが前記パーサーによって調べられる。本質的に、これはまだ変換されていない全ての潜在関数名を含む。前記補助関数データベースは一般に、前記読み出し専用データベースから１若しくはそれ以上のデータ取り込みを必要とするデータ検索に関する多くの関数、並びに前記ユーザーによって前記現行のコマンドストリング内で、または同一のユーザーによって送信された以前のコマンドスクリプトの処理中に特別に作成された、または前記現行ユーザーと同じ企業内の別のユーザーのようなもう一人のユーザーによって送信された、新しい関数の両方を含む。ユーザー定義関数は、前記関数を表す名称と、前記関数内に受け付けられる前記パラメータが存在する場合にはそのパラメータを記述するシグネチャと、および前記データ検索動作を実行するために使用される前記データ格納手順またはその他の関数を含む公式のどちらかとからなる。ユーザー定義関数のパラメータは前記データ検索動作の性質および特性を記述するために使用でき、または前記関数の公式内の文字代入に、前記関数の公式が実行中に変更可能であるように使用できる。好適な１実施形態において、定義済み関数およびユーザー定義関数の両方を含む数千若しくはそれ以上の関数が前記補助関数データベース内に格納できる。
【００４４】
前記データ格納関数に関連付けられる幾つかの関数パラメータ値について、周知の、またはよく使用される略号が前記パーサーにとってネイティブに既知である。例えば、日付値を予期するパラメータについて、前記現在日を特定するためにゼロの値を使うことができる。更に、通貨の種類の特定を予期するパラメータについて、ＵＳＤは米国ドルを意味することが前記パーサーにとってネイティブに既知である。
【００４５】
前記補助関数データベース内に格納された各定義済みシステム関数またはユーザー定義関数について関数シグネチャが格納され、前記局所関数記憶装置内に収容された関数のシグネチャと同様の内容および様式の情報を収容している。好適な１実施形態において、前記補助関数データベースはＭｉｃｒｏｓｏｆｔ  ＳＱＬ  Ｓｅｒｖｅｒ（登録商標）のデータベースであり、一般に前記要求側パーサーを実行中の前記ウェブサーバー以外のコンピュータ上に存在する。前記補助関数データベース内に未変換の関数名が存在するかどうかを決定するために、前記パーサーが、前記補助関数データベース内に格納されたＧＥＴＦＵＮＣＴＩＯＮ（）と名付けられた定義済みの手順を呼び出す。格納された前記ＧＥＴＦＵＮＣＴＩＯＮ（）手順は前記特定された関数名が既知である場合に前記シグネチャを返信するか、もしくは前記特定された関数名が前記補助関数データベース内に格納されていないことの表示を返信する。図４および図５の例において、前記関数ＣＡ＿ＳＡＬＥＳ（）およびＣＱ＿ＥＰＳ（）はユーザー定義関数ではなく、前記補助関数データベース内に格納された関連関数シグネチャを有するシステム定義関数である。各関数の最初の文字Ｃは金融データの特定の第三者情報源を識別する。第１の関数において、Ａ＿ＳＡＬＥＳは年間売り上げを示し、前記第２の関数においてＱ＿ＥＰＳは１株当り利益を表す。前記関数索引工程は、前記コマンドスクリプト内の全ての未変換の潜在関数名が前記補助関数データベースに対して検査された時に完了する。この時点で、未だに変換されていない関数名が残っている場合、前記コマンドスクリプトが実行できない未知の関数に対する参照を含むので、エラーが発生したと判断される。この場合、前記未変換の関数名に関連付けられる前記コマンド分岐は実行されない。前記コマンドスクリプト全体の、その他完全に変換されたコマンド分岐に関連付けられる部分は依然実行できる。
【００４６】
図３に示すように、関数索引中に全ての変換可能な関数名が変換された後、次の工程は実行計画３０８の作成である。この工程において、前記パーサーは完全に検証され展開された関数呼び出し参照を含む前記オブジェクト階層を調べ、それらを一連の実行チェーンに変換する。例えば、幾つかの関数は前記階層内の残りのオブジェクトに対して完全に独立し得、直接実行可能である。しかしその他の関数は、更に別の関数の評価次第では、前記特定の関数の実行前に実行されるべき他の関数が実行できることを必要とする事が特定されたパラメータまたは引き数を有する。図４および図５の例において、前記ＳＬＯＰＥ１０（）関数は、前記ＣＱ＿ＥＰＳ（）関数の結果が返信完了するまで実行できない。従って、それらの関連パラメータリスト内で識別された全ての要素が完全に変換される前に、関数が早まって実行されないことを保証するために、依存チェーンが作成される。
【００４７】
これを達成するためにツリーデータ構造が作成される。前記オブジェクト階層内の各要素について、前記オブジェクト階層内の親要素の下に発生する子ノードの順序付けられたリストを含むサブツリーが作成される。各子ノードは、前記子ノードが前記親要素の前に実行されるべきことを識別するＰＲＥ分類、および前記子ノードの要素が前記親ノードの後に実行されるべきことを特定するＰＯＳＴ分類の２種類の分類の１つを有する。次に、この親／子データ構造は以下の順で帰納的に実行される：各親ノードについて、前記ＰＲＥ分類された子ノードの内容の全てを実行；現行ノードを実行；次に前記ＰＯＳＴ分類された子ノードの内容の全てを実行。
【００４８】
図３の工程３１０に示すように、一旦前記実行計画が作成されると、それが前記パーサーによって実行される。前記実行計画を実行するために、前記パーサーは、前記コマンドストリングからの変換された関数を前記実行計画によって特定された順番で実行するために、前記照会処理データベース内の適切な手順を呼び出す。一般に、前記実行計画内で参照される関数の多くは、前記中間の照会処理データベースへの関数呼び出しによってアクセスされる前記読み出し専用データベースからのデータ検索動作を必要とする。好適な１実施形態において、前記基調となるデータ検索動作は、前記検索されたデータ上で動作する金融分析などの前記関数からは分離されて実行される。これにより、より分離された性質の、従って新たに追加されるデータ検索関数を含むために容易に拡張可能なシステムの構築が可能となる。
【００４９】
前記実行計画全体の個々の動作には、ランダム結果識別番号またはデータＩＤが割り当てられる。前記オブジェクト階層内の各要素が実行される時、子ノードを有する関数はそれらの子のデータＩＤを使ってそれらの特定の動作を実行する。このような親ノードはそれを受けて、それらそれぞれの親ノードによって使用されるそれらの独自の結果が存在する場合、その結果のための新たなデータＩＤを生成する。ルートノードによって実行される最終動作は、関連する親ノードを有しない。この最終動作のデータＩＤは従って、前記関連するツリー構造全体の最終計算に関連付けられる。次に工程３１１において、前記ウェブサーバーが前記クライアントに前記結果が使用可能状態であることを通知することで、前記結果が検索されるべき前記結果受信用サーバーの識別情報（即ち、前記補助関数データベースのＩＰアドレス）、並びに前記データの関連する最終データＩＤまたは結果識別番号の両方を前記クライアントに通知する。次に工程３１２に示すように、前記クライアントが前記結果識別番号を前記結果受信用サーバーの特定されたＩＰアドレスに送ることによりこれら結果を要求する。これら結果は工程３１３に示すように圧縮され、工程３１４に示すように前記クライアントのコンピュータに返送される。最後に工程３１５に示すように、前記クライアントは前記結果を任意の所望の方法で処理する。例えば、前記クライアントは、これら結果を前記ユーザーに送信するためにグラフ、チャート、および／または文字情報を生成する。その代わりに、または追加として、前記クライアントアプリケーションは、前記返送されたデータを使って、ＡＰＩによって前記データ要求を作成する前記プラグインに関連した表計算ソフトウェアアプリケーション内のセルを埋めることもでき、または前記返送されたデータに基づいて詳細なレポートを作成することもできる。
【００５０】
実際の結果自体ではなく前記結果に対するポインタを最初に返送するこの処理は、データを要求する前記クライアントが前記コマンドスクリプトを解釈する前記ウェブサーバーおよび前記結果を生成するデータサーバーから離れている場合に特に望ましい。例えば、データ伝送に問題がある場合、以前に前記クライアントに送られた前記結果受信用サーバーの識別情報および前記結果識別番号を使って前記データを再度要求することにより、前記結果として生じるデータは前記クライアントによって直ちに再要求できる。
【００５１】
上述のように前記クライアントから受信した前記コマンドストリングはデータプルおよび関連する分析を要求するコマンドストリングであり得るが、本コマンドスクリプト言語および関連付けられたコマンドスクリプトまたはコマンドストリングはその他の機能を有する。例えば、クライアントコンピュータは、前記ウェブサーバーに対するＡＰＩ呼び出しを介して、前記スクリプト言語の構文を使って後の呼び出しのためのユーザー定義関数を作成できる。このようなコマンドストリングが受信されると、前記指定されたユーザー定義関数およびそれらの関連関数シグネチャは、その他のユーザー定義関数並びに前記パーサーにとってネイティブに既知ではないその他の比較的使用頻度の低いコマンドと共に前記補助関数データベース内に格納される。
【００５２】
本パーサーによって認識される前記コマンドスクリプト言語によって使用されるフレキシブル文字列代入機能を特に示すユーザー定義関数の例を図７に示す。図７に示すように、ユーザー定義関数Ｕｓｅｒ＿Ｆｕｎｃ（）７００は２つのストリングパラメータ、「ｓｔａｔ」および「ｄｅｐｔｈ」を含むシグネチャを有すると定義される。本スクリプト言語において、番号記号（＃）に続き、番号記号と共に丸括弧によって囲まれた変数が前記パーサーによって検出される度に、前記特定された変数の値の直接文字列代入が先ず代入され、次に前記オブジェクト階層の作成、意味論理理解、および関数索引工程の最中に前記パーサーによってデコードされる。図７の前記ユーザー関数Ｕｓｅｒ＿Ｆｕｎｃ（）の仕様によれば、このユーザー関数がコマンドストリング内で前記パーサーによって検出される度に前記「ｓｔａｔ」変数のストリング内容によって置き換えられ、前記奥行き変数のストリング内容と連結され、開き括弧と連結され、Ｐ＿Ｐｒｉｃｅ（０）関数に対する呼び出しと連結され、閉じ括弧と連結される。図７のコマンドストリングの見本７１０および７２０は双方とも前記事前格納されたユーザー定義関数７００を参照し、この文字列代入機能を図示している。引き数ａｖｇおよび１０が（それぞれ「ｓｔａｔ」および「ｄｅｐｔｈ」パラメータとして）前記Ｕｓｅｒ＿Ｆｕｎｃ（）関数の呼び出しにおいて供給されるコマンドストリング７１０において、前記パーサーは、これら２つのパラメータ値を、前記ユーザー定義関数内のそれらの特定された位置内に代入し、その結果として生じる文字列ａｖｇ１０（Ｐ＿Ｐｒｉｃｅ（０））を完了する。この代入された文字列はこれを受けて、今度は前記指定されたパラメータの前記１０日間の平均、この場合には最新の１０日間を考慮した現在株価に対応する局所的に認識されるネイティブな関数として前記代入された文字列を含んで、前記コマンドスクリプトの第２の実行経路において前記パーサーによって更に実行される。
【００５３】
もう１つの例として、今度はパラメータ「ｓｕｍ」および［１５］を用いて前記コマンドストリング７２０が再び前記Ｕｓｅｒ＿Ｆｕｎｃ関数を呼び出すように示す。これは前記パーサーによって文字列の和としてデコードされ、文字列１５と連結され、「（Ｐ＿Ｐｒｉｃｅ（０））」と連結される。この例７２０において、このデコードされた文字列は、今度は前記特定されたパラメータの１５日分の和、再びこの場合には、考慮される最新の株価として、前記補助関数データベース内に格納された別の関数として前記代入された文字列を含んで、前記コマンドスクリプトの第２の実行経路において前記パーサーによって更に認識される。
【００５４】
図に示すように、前記パーサーによって認識される前記スクリプト言語全体内のこの文字列代入機能は前記ユーザーにかなりの自由度を提供し、それら自体の中には呼び出される関数に対する必要な参照の全てを含まないように前記関数を書く事を可能にする。その代わりに、前記関数は前記ユーザー定義関数に対するパラメータ内で特定できる。更に、前記関数は前記ユーザー定義関数に対する複数のパラメータの組み合わせによって特定できる。図７の前記例において、前記Ｕｓｅｒ＿Ｆｕｎｃ関数は、このユーザー定義関数の作者であるかも知れずそうでないかも知れないその後の前記関数のユーザーが統計操作および考慮すべき日程の奥行きを個別に特定し、それを受けて「ａｖｇ１０」および「ｓｕｍ１５」などの関数索引中に前記パーサーによって認識される中央集権型内部関数を特定することを可能とする。
【００５５】
本スクリプト言語およびその関連するパーサーの更にもう１つの機能は、照会処理データベース１７１内に図２に示すような日付エンジン１７２が存在し、コマンドパーサー２１０と連動して動作することである。金融調査および分析などの多くのアプリケーションにおいて、ほとんど全てのデータ検索は時間を基準として実行される。日付エンジン１７２は、前記コマンドスクリプトの構文と連動して、個々の日付、開始日および終了日の期間に亘る日付の範囲、並びに特定の間隔、または前記特定された開始日と終了日の間で検索されるべきデータの頻度をユーザーが特定することを可能とする。前記日付エンジンは、５日カレンダーおよび週末を含む７日カレンダーなど、幾つかの特定されたカレンダーを使ってデータを検索する事ができる。更に、例えば特定のラテンアメリカ、ヨーロッパ、アジアおよびアフリカ諸国内の非営業日、週末、および祝日を除き、その点において各カレンダーが特定の週末、祝日、および前記カレンダーに関連する国の国内交換によるその他の非営業日に適合している、国特有のカレンダーを特定することができる。
【００５６】
一般に、コマンドストリングは、現在日の視点から解釈され、実行される。例えば、−１０ｄの日付値は現在日の１０日前を意味する。しかし、本発明の一態様において、解釈および実行の目的で現在日を今日以外の日に変更するために、Ｓｅｔ＿Ｒｕｎ＿Ｄａｔｅ（）コマンドを呼び出す事ができる。このコマンドが発行されると、−１０ｄのような全ての相対的日付仕様は、今日の日付ではなく設定された前記実行日に基づく。これによって、照会を実行し、データを過去の視点から取り出すことが可能となる。これは、例えば、定期的に実行される特定の照会が以前のある日付で誤って省かれた時に望ましいと考えられる。これはまた、以前のデータを試験台として使った新たなユーザー定義関数の動作および精度を検証するために新たに提案された、過去のデータに対する関数の試験を行なうために望ましいと考えられる。更に、日付エンジン１７２はまた、「ｄａｔｅ  ｍａｔｈ」を使うことにより、時間を進めたり戻したりすることで開始日仕様および終了日仕様の両方をユーザーが調整することを可能とする。例えば、「１実週、遡る」ためには「−１ａｗ」が用いられる。ユーザーはまた、時系列を一律に（即ち、全ての日付が同じ量移動する）または非一律に（即ち、各点の日付遅れが異なる）、どちらでも遅らせることができる。日付エンジン１７２はまた、不連続な時系列を足し合わせて１つの組み合わさった時系列を形成することもできる。
【００５７】
日付頻度の中で前記日付エンジンによって指定され認識され得るのは、毎日、毎週、週内当日まで、実週、毎月、月内当日まで、実月、四半期毎、会計年度四半期内当日まで、毎年、会計年度内当日まで、並びに完全に指定された日、特定年内の特定月などの特定日、および相対的日付である。例えば、「−１／０／０」という特定された日は今日から１ヶ月前を特定する。前記日付の月の部分の「−１」値が現在月から１ヶ月前を特定し、現在日の「０」が今日の日付を特定し、前記年の「０」が現在年を特定する。「−１／−５／−３」という日付仕様は、今日から１ヶ月、５日、および３年前を特定する。「１２／３１／−１」という日付仕様は、前年の１２月３１日を特定する。前記パーサーは前記日付エンジンと連動して、データが取り出されるべき日付または日付の集合を決定し、この情報を、データを検索するために最終的に実行される前記実行計画に組み込む。
【００５８】
前出の記述および図面はただ単に本発明を説明して図示するに過ぎず、添付の請求の範囲が、本開示に接した当業者が本発明の範囲から逸脱せずにその中で改良および変更を行なえる範囲に限られることを除いては、本発明はこれに限らない。
【図面の簡単な説明】
【００５９】
【図１】図１は、本発明による、クライアント／サーバー型コマンドスクリプトの解釈およびデータ検索のシステム全体のブロック図である。
【図２】図２は、図１のウェブサーバーの、特にパーサーによるローカル主関数記憶装置および補助関数データベースの使用法を示すブロック図である。
【図３】図３は、本発明のコマンドの解釈およびデータベース検索関数の工程フロー図である。
【図４】図４は、コマンドスクリプトの例である。
【図５】図５は、図４のコマンドスクリプトの例の解釈をオブジェクト階層で示した樹形図である。
【図６】図６は、コマンドの解釈のシンボル変換の段階を図示したものである。
【図７】図７は、本発明によるユーザー定義関数の、特にスクリプト言語の文字列代入機能を示す例である。
【図１】
2008516338.tif 000003
【図２】
2008516338.tif 000004
【図３】
2008516338.tif 000005
【図４】
2008516338.tif 000006
【図５】
2008516338.tif 000007
【図６】
2008516338.tif 000008
【図７】
2008516338.tif 000009
【手続補正書】
【提出日】平成20年2月27日(2008.2.27)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
これらおよびその他の本発明の望ましい特徴が、本明細書、請求の範囲、および図面に照らして明らかにされるであろう。
この出願の発明に関連する先行技術文献情報としては、以下のものがある（国際出願日以降国際段階で引用された文献及び他国に国内移行した際に引用された文献を含む）。
【特許文献１】米国特許出願公開第２００２／０１９８８７６号明細書
【特許文献２】米国特許第６，７３８，７８１号明細書
【特許文献３】米国特許第６，６８４，２０４号明細書
【特許文献４】米国特許第６，００９，４２２号明細書
【特許文献５】米国特許第５，６３４，０５３号明細書
【特許文献６】米国特許第５，９８７，４５５号明細書
【特許文献７】米国特許第５，８７３，０８３号明細書
【特許文献８】米国特許第６，５２３，１７２号明細書
【非特許文献１】ヴァラダラジャンら（Ｖａｒａｄａｒａｊａｎ  ｅｔ  ａｌ．）、「ＳＡＳＥ：圧縮テキスト検索エンジンの導入、（ＳＡＳＥ：Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｏｆ  ａ  Ｃｏｍｐｒｅｓｓｅｄ  Ｔｅｘｔ  Ｓｅａｒｃｈ  Ｅｎｇｉｎｅ）」、インターネットテクノロジー及びシステムに関するユーズニックスシンポジウム（ＵＳＥＮＩＸ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｉｎｔｅｒｎｅｔ  Ｔｅｃｈｎｏｌｏｇｉｅｓ  ａｎｄ  Ｓｙｓｔｅｍｓ）、１９９７年１２月、ｐ．１−１１
【国際調査報告】
2008516338.tif 000010
2008516338.tif 000011