(57)【要約】本稿に記載されるさまざまな実施形態は：データセットの第一の属性を表わす第一の属性表示を表示する段階であって、前記第一の属性表示は第一の属性値の指示を受領するための第一の入力要素を有する、段階と；前記データセットの第二の属性を表わす第二の属性表示を表示する段階であって、前記第二の属性表示は第二の属性値の指示を受領するための第二の入力要素を有する、段階と；データセットの前記第一の属性についての第一の属性値の指示を受領する段階と；前記第一の属性値の指示を受領した後、前記第一の属性値を含むクエリーにマッチする前記データセットの部分を反映するよう前記第二の属性表示の前記第二の入力要素を変更する段階のうちの一つまたは複数を含む方法、装置およびコンピュータ可読媒体に関する。
2019522279.tif 000002
【特許請求の範囲】
【請求項１】
データセットの第一の属性を表わす第一の属性表示を表示する段階であって、前記第一の属性表示は第一の属性値の指示を受領するための第一の入力要素を有する、段階と；
前記データセットの第二の属性を表わす第二の属性表示を表示する段階であって、前記第二の属性表示は第二の属性値の指示を受領するための第二の入力要素を有する、段階と；
データセットの前記第一の属性についての第一の属性値の指示を受領する段階と；
前記第一の属性値の指示を受領した後、前記第一の属性値を含むクエリーにマッチする前記データセットの部分を反映するよう前記第二の属性表示の前記第二の入力要素を変更する段階とを含む、
方法。
【請求項２】
前記第二の入力要素を変更することは、前記第二の属性表示から前記第二の入力要素を除去することを含む、請求項１記載の方法。
【請求項３】
前記第二の入力要素を変更することは、前記第二の入力要素の特性を、前記第一の属性値を含む前記クエリーにマッチする前記データセットの前記部分内における、前記第二の属性値にマッチするレコードの割合に基づいて変更することを含む、請求項１記載の方法。
【請求項４】
前記第二の属性表示は、前記第二の入力要素を含む複数の入力要素を含み、前記複数の入力要素は、前記第二の属性の複数の属性値のそれぞれのものに関連付けられる、請求項１記載の方法。
【請求項５】
前記第二の入力要素を変更することは、前記第二の入力要素の寸法を、前記複数の入力要素の他のもののそれぞれの寸法に対して変更することを含み、該変更は、前記第一の属性値を含む前記クエリーにマッチする前記データセットの前記部分のうちの、前記複数の属性値のそれぞれのもののシェアに基づく、請求項４記載の方法。
【請求項６】
前記第二の入力要素を変更した後、データセットの第一の属性についての第二の属性値の指示を受領する段階と；
前記第二の属性値の指示を受領した後、前記第一の属性値および前記第二の属性値を含むクエリーにマッチする前記データセットの部分を反映するよう前記第一の属性表示の前記第一の入力要素を変更する段階とを含む、
請求項１記載の方法。
【請求項７】
前記第一の入力要素は選択サブ要素を含んでおり、前記第一の入力要素を変更することは、前記選択サブ要素の特性を変更することを含む、請求項６記載の方法。
【請求項８】
前記第一の入力要素を変更することは、前記第一の入力要素の選択サブ要素の寸法を、前記第一の属性値を含む前記クエリーにマッチする前記データセットの前記部分内における、前記第二の属性値にマッチするレコードの割合に基づいて変更することを含み、前記選択サブ要素の寸法は、前記第一の入力要素の対応する寸法より小さい、請求項６記載の方法。
【請求項９】
前記第一の入力要素と前記第二の入力要素との間に延在する接続子要素を表示することをさらに含む、請求項６記載の方法。
【請求項１０】
前記第一の入力要素を変更することは、前記第一の入力要素に関連付けられた前記接続子要素の寸法を調整することを含む、請求項９記載の方法。
【請求項１１】
前記第一の属性表示と前記第二の属性表示との間に、前記データセットの第三の属性を表わす第三の属性表示を表示することをさらに含み、前記第三の属性表示は、第三の属性値の指示を受領するための第三の入力要素を含む、
請求項１ないし１０のうちいずれか一項記載の方法。
【請求項１２】
前記クエリーは、前記第一の属性値と、前記第一の属性についての少なくとも一つの追加的な属性値とを含む、請求項１ないし１０のうちいずれか一項記載の方法。
【請求項１３】
前記クエリーは、前記第一の属性値と、前記第一の属性および前記第二の属性以外の前記データセットの追加的な属性についての少なくとも一つの追加的な属性値とを含む、請求項１ないし１０のうちいずれか一項記載の方法。
【請求項１４】
非一時的な機械可読記憶媒体であって：
データセットの第一の属性を表わす第一の属性表示を表示するための命令であって、前記第一の属性表示は第一の属性値の指示を受領するための第一の入力要素を有する、命令と；
前記データセットの第二の属性を表わす第二の属性表示を表示するための命令であって、前記第二の属性表示は第二の属性値の指示を受領するための第二の入力要素を有する、命令と；
データセットの前記第一の属性についての第一の属性値の指示を受領するための命令と；
前記第一の属性値の指示を受領した後、前記第一の属性値を含むクエリーにマッチする前記データセットの部分を反映するよう前記第二の属性表示の前記第二の入力要素を変更するための命令とを有する、
媒体。
【請求項１５】
メモリ；
表示装置を介した表示のためのデータを送信するよう構成されたインターフェース；および
プロセッサを有する装置であって、前記プロセッサは：
前記インターフェースを介して：
データセットの第一の属性を表わす第一の属性表示であって、前記第一の属性表示は第一の属性値の指示を受領するための第一の入力要素を含む、第一の属性表示と、
前記データセットの第二の属性を表わす第二の属性表示であって、前記第二の属性表示は第二の属性値の指示を受領するための第二の入力要素を含む、第二の属性表示とを表示するためのデータを送信する段階と；
データセットの前記第一の属性についての第一の属性値の指示を受領する段階と；
前記第一の属性値の指示を受領した後、前記インターフェースを介して、前記第二の属性表示の前記第二の入力要素の変更されたバージョンを表示するためのデータを送信する段階であって、前記第二の入力要素は、前記第一の属性値を含むクエリーにマッチする前記データセットの部分を反映するよう変更される、段階とを実行するよう構成されている、
装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願への相互参照
本願は2016年6月17日に出願された「データによって案内されるフィルタリング」と題する米国仮特許出願第62/351,336号の優先権を主張するものである。同出願の全開示はここに参照によってあらゆる目的について本願に組み込まれる。
【０００２】
技術分野
本稿に記載されるさまざまな実施形態は、データ・アクセスに、より詳細には、それだけではないが、データセットのユーザー探査およびクエリー生成を容易にするためのユーザー・インターフェースに関する。
【背景技術】
【０００３】
データ解析が、病院管理、金融市場、消費者解析などを含む多くの分野の土台になっている。多くの場合に、ユーザーは、特定の特性にマッチするレコードを求めてデータベースに問い合わせし、次いでそのサブセット〔部分集合〕に対して特定の解析を実行することを望むことがある。たとえば、特定の手順を受けている救急救命治療部局または心臓科における年齢25〜50の患者についてのみの収入が表示されるべきであると指定できることは強力であろう。既存の問い合わせ言語またはフロントエンド問い合わせフォームは、所望されるクエリーを構築し、次いでデータベースに提出して、さらなる解析の実行のための部分集合を応答として受け取る機能をユーザーに提供することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
既存の構造化された問い合わせ言語は、データベースのどんな部分集合を解析したいかをユーザーがすでに知っているときにはうまく機能するが、これらのツールは、解析を実行するためにどの部分集合が光明を与えてくれるかを決定するためにユーザーがデータベースを探査することを許容するという点では不十分である。現状では、多くのツールは、ユーザーが使いたい部分集合をみつけるまで、複数回の逐次反復を通じてクエリーを再定式化し、提出することを要求する。
【課題を解決するための手段】
【０００５】
よって、本稿に記載されるさまざまな実施形態は、対話的な仕方でデータベースに対するクエリーを構築するためのユーザー・インターフェースであって、構築中にフィードバックがあるものを提供する。たとえば、いくつかの実施形態では、ユーザーは、クエリーに追加されるべき属性および値を選択するためのグラフィカル・ユーザー・インターフェース（GUI）を提供される。いくつかの実施形態では、ある属性値が選択されると、GUIは、該新たな選択が、選択されるデータ部分集合に対してもたらした効果を表示するよう更新される。たとえば、いくつかの実施形態では、特定の属性をもつ値に対する入力要素がサイズ変更されて、現在選択されている部分集合において、その入力要素に結びつけられる属性値にもマッチするレコードの相対数を示す；（たとえば他の入力要素の有効化を通じた）クエリーの修正はその入力要素のサイズを、その部分集合において、その入力要素の属性値にマッチするレコードの新たな割合を反映するよう変化させてもよい。対話的クエリー・インターフェースに構築内フィードバックを提供するためのさまざまな代替的な方法、システムおよび技法が、本稿に記載されるさまざまな実施形態に鑑み明白であろう。
【０００６】
本稿に記載されるさまざまな実施形態は：データセットの第一の属性を表わす第一の属性表示を表示する段階であって、前記第一の属性表示は第一の属性値の指示を受領するための第一の入力要素を有する、段階と；前記データセットの第二の属性を表わす第二の属性表示を表示する段階であって、前記第二の属性表示は第二の属性値の指示を受領するための第二の入力要素を有する、段階と；データセットの前記第一の属性についての第一の属性値の指示を受領する段階と；前記第一の属性値の指示を受領した後、前記第一の属性値を含むクエリーにマッチする前記データセットの部分を反映するよう前記第二の属性表示の前記第二の入力要素を変更する段階とを含む、方法に関する。
【０００７】
本稿に記載されるさまざまな実施形態は、メモリおよびプロセッサを含む装置に関する。該プロセッサは、データセットの第一の属性を表わす第一の属性表示を表示する段階であって、前記第一の属性表示は第一の属性値の指示を受領するための第一の入力要素を有する、段階と；前記データセットの第二の属性を表わす第二の属性表示を表示する段階であって、前記第二の属性表示は第二の属性値の指示を受領するための第二の入力要素を有する、段階と；データセットの前記第一の属性についての第一の属性値の指示を受領する段階と；前記第一の属性値の指示を受領した後、前記第一の属性値を含むクエリーにマッチする前記データセットの部分を反映するよう前記第二の属性表示の前記第二の入力要素を変更する段階とを実行するよう構成される。
【０００８】
本稿に記載されるさまざまな実施形態は、非一時的な機械可読記憶媒体に関する。該媒体は、データセットの第一の属性を表わす第一の属性表示を表示するための命令であって、前記第一の属性表示は第一の属性値の指示を受領するための第一の入力要素を有する、命令と；前記データセットの第二の属性を表わす第二の属性表示を表示するための命令であって、前記第二の属性表示は第二の属性値の指示を受領するための第二の入力要素を有する、命令と；データセットの前記第一の属性についての第一の属性値の指示を受領するための命令と；前記第一の属性値の指示を受領した後、前記第一の属性値を含むクエリーにマッチする前記データセットの部分を反映するよう前記第二の属性表示の前記第二の入力要素を変更するための命令とを有する。
【０００９】
記載されるさまざまな実施形態において、前記第二の入力要素を変更することは、前記第二の属性表示から前記第二の入力要素を除去することを含む。
【００１０】
記載されるさまざまな実施形態において、前記第二の入力要素を変更することは、前記第二の入力要素の特性を、前記第一の属性値を含むクエリーにマッチする前記データセットの部分内における、前記第二の属性値にマッチするレコードの割合に基づいて変更することを含む。
【００１１】
記載されるさまざまな実施形態において、前記第二の属性表示は、前記第二の入力要素を含む複数の入力要素を含み、前記複数の入力要素は、前記第二の属性の複数の属性値のそれぞれのものに関連付けられる。
【００１２】
記載されるさまざまな実施形態において、前記第二の入力要素を変更することは、前記第二の入力要素の寸法を、前記複数の入力要素の他のもののそれぞれの寸法に対して変更することを含み、該変更は、前記第一の属性値を含むクエリーにマッチする前記データセットの部分における、前記複数の属性値のそれぞれのもののシェアに基づく。
【００１３】
さまざまな実施形態はさらに、前記第二の入力要素を変更した後、データセットの第一の属性についての第二の属性値の指示を受領する段階と；前記第二の属性値の指示を受領した後、前記第一の属性値および前記第二の属性値を含むクエリーにマッチする前記データセットの部分を反映するよう前記第一の属性表示の前記第一の入力要素を変更する段階とを含む。
【００１４】
記載されるさまざまな実施形態において、前記第一の入力要素は選択サブ要素を含んでおり、前記第一の入力要素を変更することは、前記選択サブ要素の特性を変更することを含む。
【００１５】
記載されるさまざまな実施形態において、前記第一の入力要素を変更することは、前記第一の入力要素の選択サブ要素の寸法を、前記第一の属性値を含むクエリーにマッチする前記データセットの部分内における、前記第二の属性値にマッチするレコードの割合に基づいて変更することを含み、前記選択サブ要素の寸法は、前記第一の入力要素の対応する寸法より小さい。
【００１６】
さまざまな実施形態はさらに、前記第一の入力要素と前記第二の入力要素との間に延在する接続子要素を表示することを含む。
【００１７】
記載されるさまざまな実施形態において、前記第一の入力要素を変更することは、前記第一の入力要素に関連付けられた前記接続子要素の寸法を調整することを含む。
【００１８】
さまざまな実施形態はさらに、前記第一の属性表示と前記第二の属性表示との間に、前記データセットの第三の属性を表わす第三の属性表示を表示することを含む。前記第三の属性表示は、第三の属性値の指示を受領するための第三の入力要素を含む。
【００１９】
記載されるさまざまな実施形態において、前記クエリーは、前記第一の属性値と、前記第一の属性についての少なくとも一つの追加的な属性値とを含む。
【００２０】
記載されるさまざまな実施形態において、前記クエリーは、前記第一の属性値と、前記第一の属性および前記第二の属性以外の前記データセットの追加的な属性についての少なくとも一つの追加的な属性値とを含む。
【図面の簡単な説明】
【００２１】
さまざまな例示的実施形態をよりよく理解するために、付属の図面が参照される。
【００２２】
【図１】対話的クエリー構築インターフェースおよびクエリー結果の解析を提供するためのインターフェースの例を示す図である。
【００２３】
【図２】対話的クエリー構築インターフェースおよびクエリー結果の解析を提供するためのインターフェースのもう一つの例を示す図である。
【００２４】
【図３】対話的クエリーおよび解析インターフェースを提供するためのハードウェア装置の例を示す図である。
【００２５】
【図４】対話的クエリーおよび解析インターフェースならびに対応する機能を提供するための方法の例を示す図である。
【００２６】
【図５】本稿に記載される対話的クエリー機能を提供することにおいて使うためのデータ構造の例を示す図である。
【００２７】
【図６】本稿に記載される対話的クエリー機能を提供することにおいて使うためのデータ構造を生成し、初期化する方法の例を示す図である。
【００２８】
【図７】クエリーを反映するようデータ構造を更新するための方法の例を示す図である。
【００２９】
【図８】潜在的な属性値オプションについてレコード総数を決定するための方法の例を示す図である。
【００３０】
【図９】対話的クエリー・インターフェースをレンダリングするための方法の例を示す図である。
【００３１】
【図１０】新たな属性値選択によりデータベース・オブジェクトを更新する方法の例を示す図である。
【００３２】
【図１１】対話的クエリー・インターフェースにおいて列を動かすための方法の例を示す図である。
【００３３】
【図１２】ユーザーが新たな属性値を選択するときの対話的クエリー・インターフェースの振る舞いの例を示す図である。
【００３４】
【図１３】ユーザーが新たな属性値を選択するときの対話的クエリー・インターフェースの振る舞いのもう一つの例を示す図である。
【００３５】
【図１４】ユーザーが列を動かすときの対話的クエリー・インターフェースの振る舞いの例を示す図である。
【００３６】
【図１５】対話的クエリー・インターフェースの代替的な実施形態を示す図である。
【発明を実施するための形態】
【００３７】
本願で呈示される記述および図面はさまざまな原理を例解する。本願で明示的に記載または図示されてはいないもののこれらの原理を具現し、本開示の範囲内に含まれるさまざまな構成を当業者が考案できるであろうことは理解されるであろう。本稿での用法では、本稿で使われるところの用語「または」は、そうでないこと（たとえば「あるいはそうではなく」または「あるいは代替において」）が示されない限り、排他的でないまたは（すなわち、および／または）のことである。さらに、本稿に記載されるさまざまな実施形態は、必ずしも相互に背反ではなく、組み合わされて、本願に記載される原理を組み込む追加的な実施形態を生成してもよい。
【００３８】
図１は、対話的クエリー構築インターフェースおよびクエリー結果の解析を提供するためのインターフェース１００の例を示している。インターフェース１００は、たとえばパーソナル・コンピュータ、ラップトップ、タブレット、スマートデバイスなどといったいかなる装置の視覚的ディスプレイで表示されてもよい。インターフェース１００は、より大きなソフトウェア・スイートの一部として呈示されてもよい。たとえば、図示した実施形態において、インターフェースは、病院解析パッケージの一部であってもよい。本稿に記載されるさまざまな原理は他のコンテキスト、たとえば顧客または証券解析のためのソフトウェアまたはユーザーがデータベースもしくは他のデータセットのコンテンツを探査できるようにしうる任意のソフトウェアに適応されてもよいことが理解されるであろう。
【００３９】
図のように、インターフェースは二つのパネルを含む：問い合わせパネル１１０および結果パネル１９０である。一般に、問い合わせパネル１１０はユーザーが、根底にあるデータセットに対するクエリーを構築できるようにし、一方、結果パネル１９０は現在形成されているクエリーの結果（たとえば、検索されるレコードまたは検索されるレコードに対して実行される解析の結果）を表示する。図１の実施形態は二つのパネル１１０、１９０の一つの特定の配置を示しているが、パネルは異なる配置でまたは追加的な情報を伝える追加的なパネル（図示せず）とともに表示されてもよいことは明白であろう。いくつかの実施形態では、問い合わせパネル１１０および結果パネル１９０は、別個の離散的なエリアとしてではなく、両方の型の情報を含む単一のパネルとして呈示されてもよい。いくつかの実施形態では、問い合わせパネル１１０は、結果パネル１９０なしにそれ自身で表示されてもよい。たとえば、結果パネル１９０は、ユーザーが実行のためにクエリーを「提出する」ボタンを押した後に表示されるだけであってもよく、あるいは結果パネル１９０は、ソフトウェア・パッケージから完全に省略されてもよい（たとえば、問い合わせパネル１１０が、後述する方法および機能に基づいてデータセットを探査すること自体の解決策として呈示されてもよい）。
【００４０】
問い合わせパネル１１０は、根底にあるデータセットのさまざまな属性に対応する複数の属性表示（または属性表示要素）１２０、１３０、１４０、１５０、１６０、１７０を含む。図示した実施形態では、属性表示１２０、１３０、１４０、１５０、１６０、１７０は、ラベルおよび選択可能な列を含む複数のブロックの形を取っている。ただし、属性表示１２０、１３０、１４０、１５０、１６０、１７０について代替的なグラフィック形式が使用されてもよいことは理解されるであろう。たとえば、各グループが前のグループの下に現われるチェックボックスの諸グループまたはユーザーがタイプした情報を受領するためのテキストボックスの諸グループである。そのような代替的なグラフィック実施形態に対する本稿に記載される機能を実装するためのさまざまな修正は明白であろう。
【００４１】
上記のように、属性表示１２０、１３０、１４０、１５０、１６０、１７０は、根底にあるデータセットのそれぞれの属性に対応する。たとえば、図のように、根底にあるデータセット内の項目は、「グループ」、「優先度」、「年齢」、「部局」、「手順」および「フロア」を含む属性（たとえばデータ・テーブル内の列）を有していてもよい。いくつかの実施形態では、データセットは、一度に画面上に表示できるより多くの属性を含んでいてもよい；そのような実施形態では、コントローラ１８０のようなコントロールが、画面上に現在表示されていない追加的な属性表示へのアクセスをユーザーに提供してもよい。
【００４２】
第一の属性表示１２０を代表として取ると、本実施形態における属性表示は、その属性表示が対応する属性を示す属性名ラベル１２１と、現在の属性に従ってフィルタリングするために現在利用可能なレコードの数を表示するためのレコード計数ラベル１２２（これはのちにより詳細に説明する）とを含む。属性表示１２０は、さらに、構築されるクエリーに含めるための、その属性についての一つまたは複数の値を選択するための入力要素１２３のグループを含む。本実施形態では、入力要素１２４、１２６、１２８は、現在のクエリーにおける対応するラベル１２５、１２７、１２９において示されている値の使用をトグルするためにユーザーによってクリックされうる列の諸領域である。たとえば、第一の入力要素１２４を選択すると、根底にあるクエリーは、「グループ」属性が値「グループX」に等しいまたは「グループX」を含むレコードのみを選択するよう修正されてもよい。その後、ユーザーが最後の入力要素１２８を有効化する場合、根底にあるクエリーは、「グループ」属性が「グループX」または「グループZ」に等しいまたはそれを含むレコードのみを選択するよう更新されてもよい。入力要素１２８はクリック可能なボックス（たとえば有効化をトグルするためにクリック）として示されているが、さまざまな代替的な入力要素（たとえばチェックボックス、ラジオ入力、コンボ・セレクター、テキストボックスなど）が、潜在的には互いとの組み合わせにおいて使われてもよい。本稿に記載される機能を実装するための修正は明白であろう。
【００４３】
結果パネル１９０は、図のように、問い合わせパネル１１０において構築されたクエリーによって返されるデータセットに対して実行されるさまざまな収入およびコスト解析を出力する。図１に示したビューでは、問い合わせパネルにおいてまだクエリーが構築されていなくてもよく、よって、結果パネル１９０は、データセット全体に対して実行された解析を表示してもよい。ユーザーが問い合わせパネル１１０を介してクエリーを組み立てるにつれて、結果パネルに示されるデータが、たとえばリアルタイムに、またはユーザーが「提出」ボタンを押した後に、更新されてもよい。図のように、結果パネル１９０は、結果パネルの振る舞いを変更するためのコントロール１９１を含んでいる。該変更はたとえば、チャートのパラメータ（たとえば図のようなチャート１９２、１９７のy軸値１９２、チャートのx軸値１９３、１９５または凡例１９７に示されるような示されるバーによって伝えられる値）を定義すること、実行されるべき解析を選択もしくは定義すること、解析が実行されるべきかクエリーにマッチするレコードが表示されるべきかを選択すること、または実行されるべき解析の内部パラメータ、たとえば使うべき閾値もしくは係数を定義することである。
【００４４】
図２は、対話的クエリー構築インターフェースおよびクエリー結果の解析を提供するためのインターフェース２００のもう一つの例を示している。図のように、インターフェース２００は、ユーザー入力を受領し、表示をしかるべく更新した後の前記インターフェース１００に対応しうる。たとえば、問い合わせパネル２１０は、ユーザーがクエリーに含めるために七つの属性値を選択しており、よって現在のクエリーは「グループ」属性が「グループX」、「グループY」、「グループZ」に等しいまたはそれを含み；「優先度」属性が値「非選択的」に等しいまたはそれを含み；「年齢」属性が値「25-50」または「50-65」に等しいまたはそれを含み；「部局」属性が値「腫瘍科」に等しいまたはそれを含むレコードをデータセットから選択しうる。結果パネル２９０は同様に、新たなクエリーの結果（たとえば、表示されている場合では、検索で取得された部分集合の収入およびコスト解析）を表示するよう更新され、チャート２９４、２９６および軸をしかるべく更新する。
【００４５】
問い合わせパネル２１０は、クエリーを対話的に生成することにおいてユーザーを支援する一つまたは複数の機能を含んでいてもよい。たとえば、いくつかのそのような機能は、選択されるレコードの数および型についての、あるいはクエリーに含めるための特定の属性値の選択もしくは選択解除が選択されるデータセットに対してもつ影響についての何らかの即座のフィードバックを提供してもよい。属性表示が順序付けられた仕方で（この問い合わせパネル２１０の例では左から右に）表示されるいくつかの実施形態では、ユーザーは、クエリーの各属性「ステージ」がどのように結果を絞り込むかについての一連の情報を与えられることができる。図のように、データセットは、998個の患者レコードで始まる（グループ属性表示２２０のレコード計数ラベル１２２において示されている）。ユーザーは、グループ属性についての三つの属性値すべてを選択しており、よって、「優先度属性」に対応する「次の」属性表示２３０によって絞り込むために、全998のレコードが利用可能である。ここで、ユーザーは「優先度」属性について「非選択的」を選択しており、より少数のレコード（「グループX」、「グループY」または「グループZ」の「グループ」属性および「非選択的」の「優先度」属性をもつレコード）が「年齢」属性についての「次」の属性表示２４０に渡される。すると、次の属性表示２４０は、その「ステージ」において利用可能な448個のレコードがさらなるフィルタリングのために利用可能であることを示す。ここで、ユーザーは「年齢」属性について「25-50」および「50-65」の値を選択しており、次の属性表示２５０は、210の患者（「グループX」、「グループY」または「グループZ」の「グループ」属性；「非選択的」の「優先度」属性；および「25-50」または「50-65」の「年齢」属性をもつもの）の集合を「受領」する。ここで、ユーザーは一つの最後の値、すなわち「部局」属性についての「腫瘍科」属性を選択している。すると、結果として得られるさらに絞り込まれた93レコードの集合が、結果パネル２９０に表示される情報のための基礎をなす。この時点で、ユーザーは、選択されるレコードの部分集合をさらに洗練するために、さらなる属性を選択するまたは属性を選択解除することができる。
【００４６】
問い合わせパネル２１０は順序付けられた属性、「次」の属性表示、「ステージ」、ある属性表示から別の属性表示への結果の「送達」などを用いて記述されることがあるが、そのような記述はクエリー・インターフェースの動作を記述する目的のためのたとえであることがあり、データセットに対する根底にあるクエリーの定式化、動作および実行を反映しないことがあることは理解されるであろう。たとえば、問い合わせパネル２１０の属性表示２２０、２３０、２４０、２５０が配列し直されたが同じ選択された属性値をもつとした場合、各レコードにおいて報告される患者の数（および後述するように入力要素高さまたは選択要素高さのような他のフィードバック・インジケーター）は視覚化目的のために変更されることがあるが、生成されるクエリーは変更されないことがある。
【００４７】
たとえば色、寸法、位置、アニメーションなどといった入力要素の特性を介して、さらなるフィードバック特徴が呈示されてもよい。たとえば、図１に戻ると、入力要素１２４、１２６、１２８の相対的な高さは、それぞれの関連付けられた属性値にマッチする998の患者レコード内のレコードの数によって決定されてもよい。こうして、入力要素１２６は諸入力要素１２３の列全体の高さのほぼ半分なので、ユーザーは、998の患者レコードの約半分が値「グループY」に設定されたまたは値「グループY」を含む「グループ」属性をもつことをすぐ把握しうる。同様に、属性表示１６０を見ると、ユーザーは、998患者レコードの約四分の一が「手順D」の値に設定された「手順」属性をもつと結論しうる。
【００４８】
いくつかの実施形態では、根底にあるクエリーを変更するためにユーザーが問い合わせパネル１１０、２１０を操作する際、一連の各表示要素に「渡される」データセットの部分を反映するよう、これらの特性が修正されてもよい。図２に戻ると、入力要素２２４、２２６、２２８は、図１の対応する入力要素１２４、１２６、１２８について示したのと同じ相対的な高さをもつことが見て取れる。この実施形態ではその属性表示２２０が順序において最初なので、それはいまだ998患者レコードの根底にあるデータセット全体に対して作用し、そのデータセット内の属性の内訳は変化していない。他方、「手順」属性表示は、93人の患者を含む最終的なクエリーの結果を「受け取る」。よって、各属性値の相対的な出現率が変化している可能性が高い。よって、ユーザーは今や、完全な現在のクエリーによって返されるレコード（93の患者レコードを有する）のうち、約10のうちの1つのみが「手順」属性について値「手順D」を含むと結論しうる。クエリーが入力される前にはその割合は、図１に示されるように4つのうちの1つに近かった。いくつかの実施形態では、寸法（または他の特性）の変化は、データセットい対するクエリー変更の影響を強調するためにアニメーション化されてもよい。たとえば、瞬時に入力要素の高さを新しい値に設定するのではなく、入力インターフェースは、入力要素を、新しい高さに到達するまで、ある時間期間（たとえば500msまたは1秒）にわたって拡大または縮小させてもよい。
【００４９】
いくつかの実施形態では、相対的な高さは、前の入力表示によって「送達」されるデータセットにおいて現われる属性値出現率に基づく。たとえば、第一の属性表示２２０は、998レコードの全データセットに基づく入力要素高さを有していてもよく、属性表示２４０は、463レコードの部分データセットに基づく入力要素高さを有していてもよく、次の属性表示は、244患者の部分データセットに基づく入力要素高さを有していてもよい。これらはいずれも、結果パネル２９０のために使われる最終的な問い合わせ結果ではなく、現在の属性表示の左に（あるいはそうでなくても順序付けにおいて先行して）表示されるクエリーの部分を反映する中間的な集合である。
【００５０】
いくつかの実施形態では、特定の属性を選択することの、順序付けにおいて先に選択された属性に対する効果を示すためのフィードバックが提供されてもよい。たとえば、進行オーバーレイ要素２１５が、選択された各要素間の接続を表示してもよい。進行要素２１５は、ユーザーによって有効化された入力要素の少なくとも一部に重なる選択サブ要素２１６ａ〜ｈと、互いに隣接する選択サブ要素２１６ａ〜ｇを接続する接続子サブ要素２１７ａ〜ｇとを含む異なる部分に分割されてもよい。図では、ユーザーは、属性表示２２０の三つの入力要素２２４、２２６、２２８全部が選択されているものと解釈しうる。進行オーバーレイ要素２１５がそれらの入力要素２２４、２２６、２２８の少なくとも一部に重なってそれにより選択サブ要素２１６ａ〜ｃを作っているからである。
【００５１】
いくつかの実施形態では、オーバーレイ進行要素２１５の特性は、根底にあるクエリーまたはそれからの結果の変化を反映するよう修正されうる。たとえば、いくつかの実施形態では、選択サブ要素２１６ａ〜ｈの高さが、最終的な結果集合に表われる対応する入力要素の属性値にマッチするレコードの割合（すなわち、レコードの全体集合または順序において直前の属性表示によって「渡された」レコードの中間集合内で選択された属性値にマッチする全レコードに対する、選択された属性値およびクエリー全体にマッチするレコードの割合）に基づいて設定されてもよい。たとえば、選択サブ要素２１６ｂは「グループY」の値についての全入力要素２２６の高さのほぼ半分なので、ユーザーは、998レコードのデータセット全体におけるすべての「グループY」のレコードの半分がクエリー全体によって捕捉されたと結論しうる。同様に、選択サブ要素２１６ｆは「年齢」属性値「25-50」に対応する入力要素の約80%をカバーするので、ユーザーは、「グループX／グループY／グループZ」および「非選択的」属性値にマッチする463レコードにおける「25-50」のレコードの約80%が、最終的なクエリー結果にも現われると結論しうる。
【００５２】
ユーザーが選択を行ない、最終結果に含まれるレコードの割合が変化する際、入力要素の高さと同様に、選択サブ要素の高さも変更されてもよい。たとえば、ユーザーが「手順」属性表示２６０上で「手順D」についての入力要素を選択したとすると、最終結果は、明らかに（「手順D」入力要素の相対的なサイズによって示されるように）、現在、結果集合にある93レコードの約10%に数が減るであろう。これは、（根底にあるデータセットに依存して）各選択サブ要素２１６ａ〜ｈを縮小させる（また、「手順D」入力要素についての新たな選択サブ要素および隣接する接続子要素を生成させる）可能性が高い。いくつかの実施形態では、データセットに対するクエリー変化の影響を強調するために、寸法（または他の特性）の変化はアニメーション化されてもよい。たとえば、瞬時に選択サブ要素の高さを新しい値に設定するのではなく、インターフェースは、選択サブ要素および隣接する接続子サブ要素の部分を、新しい高さに到達するまで、ある時間期間（たとえば500msまたは1秒）にわたって拡大または縮小させてもよい。
【００５３】
図１２は、さまざまなフィードバック特徴を実装するクエリー・インターフェース１２００の一部のもう一つの実施形態を示している。具体的には、インターフェース１２００は、二つの異なる時点に示される単一のインターフェースを含む。前が１２０１ａ、後が１２０１ｂであり、ユーザーは新たな入力要素１２２３ａを選択する。入力を受領する前は、インターフェースは、それぞれのレコード数ラベル１２１０ａ、１２２０ａ、１２３０ａを含む三つの属性表示を含む。第一の属性表示は、以前に選択された一つの入力要素１２１１ａをもつ。そのことは、その入力要素１２１１ａの一部に重なる選択サブ要素１２１２ａによって示されている。接続子サブ要素１２１８が、第一の選択サブ要素１２１２ａを第二の属性表示における唯一の選択サブ要素１２２２ａに接続する。この選択サブ要素１２２２ａは入力要素１２２１ａの一部に重なっており、対応する属性値が以前に選択されており、根底にあるクエリーの一部をなすことを示す。別の接続サブ要素１２２８ａが、セクション選択サブ要素を第三の属性表示における最後の選択サブ要素１２３１ａに接続する。この選択サブ要素１２３１ａは対応する入力要素に完全に重なっており、第三の属性表示に「渡された」152レコード全部が、「入口」属性についての「入院患者」属性値にマッチすることを示している。（これは納得できる；第三の属性表示は、選択された属性値をもつ、UI順序における最後のものである；結果をさらに限定して選択サブ要素１２３１ａによってカバーされる入力要素の割合を減らすその後のクエリー部分はない。）
【００５４】
ユーザーが追加的な入力要素１２２３ａをクリックすると、インターフェース１２０１ａが（瞬時にまたは短い時間期間をかけて）インターフェースの後のバージョン１２０１ｂに変化する。図のように、入力要素１２２３ａには今では新たな選択サブ要素１２２４ｂが重なっており、入力要素１２２３ａが選択されたことを示す。選択サブ要素１２２４ｂは、304のはいってくるレコードのうち、「50-65」の属性値にも関連付けられている部分をカバーするだけである。第三の属性表示が、そこで選択される属性値に基づいてクエリーをさらに限定するよう、まだ下流に残っているからである。しかしながら、入力要素１２２３ａの高さは代わっていない。同じ304のレコードがいまだ第一の属性表示によって「渡され」ており、よってこれら304個のレコードの間での属性値の分布は変化していないからである。逆に、第三の属性表示は今や追加的なレコードが「渡される」ことを示している。ラベル１２３０ｂは今や、ユーザー入力前にラベル１２３０ａによって示されていた152レコードではなく、245レコードを示している。これは、今や、「25-50」の「年齢グループ」だけではなく、「年齢グループ」属性についての「25-50」または「50-65」属性値のいずれかをもつレコードが渡されているという事実による。レコード数の変化は、（データセットによるが）「入口」属性値の分布が変化した可能性が高いことをも意味する。たとえば、図のように、入力要素１２３３ｂが今や、その入力要素の前のバージョン１２３３ａよりも高い。これは、「その他」という「入口」属性値をもつレコードが、「50-65」という「年齢グループ」レコードが加えられるときに第三の属性表示に「渡される」レコードの、より大きな割合を占めることを含意している可能性がある。しかしながら、「入院患者」入力要素１２３１ｂは変化していない。これは、これらのレコードの割合が、「50-65」の年齢グループありでもなしでもほぼ同じであることを示す。
【００５５】
新たな選択サブ要素１２２４ｂを加えると、新たな接続子要素が追加される：下流の選択サブ要素１２３１ｂへの一つの接続子サブ要素１２２９ｂと、上流の選択サブ要素１２１２ｂへのもう一つの接続子サブ要素１２１９ｂである。上流の選択サブ要素１２１２ｂも高さが増大しており、これは（「50-65」レコードが加え戻されたため）「フロア3」という「フロア」属性値をもつレコードのより大きな割合が、最終結果集合にはいったことを示す。対応する入力要素１２１１ａの高さは変化していない。これは、下流の属性選択は第一の属性表示に「はいってくる」1000個のレコードには影響せず、よって属性値分布が変化しなかったからである。
【００５６】
いくつかの実施形態では、属性表示は、自動的にまたは手動で順序を変更されてもよい。たとえば、図１３は、クエリー・インターフェースのもう一つの実施形態を示している。具体的には、インターフェース１３００は、二つの異なる時点に示される単一のインターフェースを含む。前が１３０１ａ、後が１３０１ｂであり、ユーザーは新たな入力要素１３４１ａを選択して、現在のクエリーを修正する。第一のインターフェースは四つの属性表示１３１０ａ、１３２０ａ、１３３０ａ、１３４０ａを含んでおり、そのうち二つ１３１０ａ、１３２０ａが最近選択された属性値をもち、よって現在のクエリーの一部をなす。第四の属性表示１３４０ａにおいて入力要素１３４１ａをクリックすると、第四の属性表示１３４０ａと第三の属性表示１３４０ａが位置を入れ換える。この入れ換えは、もとの第四の属性表示１３４０ｂを、第二の属性表示１３２０ｂ（すなわち、現在のクエリーに参加していた前の最後の属性表示）の隣に置く。この位置変更は、第二の属性表示１３２０ｂと第四の属性表示１３４０ｂに描かれた選択サブ要素１３４２ｂとの間に、新たな接続子サブ要素１３２８ｂを描かせる。新たに選択された属性表示１３４０ｂは図のようにただ単一のスロットを「飛び越す」だけである必要はないことは明らかであろう。その代わり、第一のインターフェース１３０１ａにおいて、一つまたは複数の追加的な属性表示（図示せず）が第二の属性表示１３２０ａと第三の属性表示１３３０ａとの間に位置されていてもよい。すると、第三の属性表示１３３０ｂは一スロット下にシフトして、その後の属性表示（図示せず）があればそれも一スロット移動させるか、あるいは他の属性表示（図示せず）があっても移動させることなく第四の属性の以前の位置を取る。レコード総数、入力要素、選択サブ要素および接続子サブ要素も、図１、図２および図１２に関して上記したように、適宜更新される。
【００５７】
いくつかの実施形態では、ユーザーは、たとえば現在のクエリーがステージの代替的な順序付けにおいてどのようにデータセットを絞り込んでいくかの代替的なビューをもつために、列を手動で並べ替えることができてもよい。図１４は、三つの異なる時点におけるインターフェースのビューを含む、クエリー・インターフェース１４００のもう一つの実施形態を示している。ユーザーが移動操作を開始する前のインターフェース１４０１ａ、移動操作中のインターフェース１４０１ｂおよび移動操作が完了した後のインターフェース１４０１ｃである。図のように、インターフェース１４０１ａは初期には三つの属性表示１４１０ａ、１４２０ａ、１４３０ａを含む。ユーザーは、第一の属性表示１４１０ａ、第三の属性表示１４３０ａ、第二の属性表示１４２０ａの順序でこのクエリーを視覚化したいと決める。ユーザーは第三の属性表示１４３０の一部（たとえばヘッダ・ブロック）をクリックし、それを第一と第二の属性表示１４１０ａ、１４２０ａの間のスペースまでドラッグする。図のように、第三の属性表示（またはその一部）がカーソルと一緒に動いてもよく、放した場合にその属性表示がどこに「着地」するかのインジケーター１４４０が表示されてもよい。ユーザーが第三の属性表示１４３０ｃを放すと、第三の属性表示１４３０ｃは（たとえばそれまでインジケーター１４４０によって示されていた）その新たな位置に置かれ、インターフェースは図１３に関して上記で説明したのと同様の仕方で更新される。たとえば、第二の属性表示１４２０ｃは一スロット下にシフトするか第三の属性表示１４３０ｃと位置を入れ換えてもよく、他の属性表示（図示せず）が下にシフトしてもよく、あるいは入力要素、選択サブ要素または接続子サブ要素が新たな特性（たとえば高さ）をもって再表示されてもよい。
【００５８】
図３は、対話的クエリーおよび解析インターフェースを提供するためのハードウェア装置３００の例を示している。図のように装置３００はプロセッサ３２０、メモリ３３０、ユーザー・インターフェース３４０、通信インターフェース３５０および記憶３６０を、一つまたは複数のシステム・バス３１０を介して相互接続されて含んでいる。図３はいくつかの点で抽象化をなしており、装置３００のコンポーネントの実際の編成は図示しているよりも複雑であってもよいことは理解されるであろう。
【００５９】
プロセッサ３２０は、メモリ３３０または記憶３６０に記憶された命令を実行するまたは他の仕方でデータを処理することができるいかなるハードウェア装置であってもよい。よって、プロセッサはマイクロプロセッサ、フィールドプログラマブルゲートアレイ（FPGA）、特定用途向け集積回路（ASIC）または他の同様のデバイスを含みうる。
【００６０】
メモリ３３０は、たとえばL1、L2またはL3キャッシュまたはシステム・メモリのようなさまざまなメモリを含んでいてもよい。よって、メモリ３３０は静的ランダムアクセスメモリ（SRAM）、動的RAM（DRAM）、フラッシュメモリ、読み出し専用メモリ（ROM）または他の同様のメモリ・デバイスを含みうる。プロセッサが本稿に記載される機能の一つまたは複数をハードウェアで実装する一つまたは複数のASIC（または他の処理装置）を含む実施形態では、他の実施形態においてそのような機能に対応するとして記載されているソフトウェアは省略されてもよい。
【００６１】
ユーザー・インターフェース３４０は、管理者のようなユーザーとの連絡を可能にするための一つまたは複数の装置を含んでいてもよい。たとえば、ユーザー・インターフェース３４０は、ユーザー・コマンドを受け取るためにディスプレイ、マウスおよびキーボードを含んでいてもよい。いくつかの実施形態では、ユーザー・インターフェース３４０は、通信インターフェース３５０を介してリモート端末に呈示されうるコマンドライン・インターフェースまたはグラフィカル・ユーザー・インターフェースを含んでいてもよい。
【００６２】
通信インターフェース３５０は、他のハードウェア装置との通信を可能にするための一つまたは複数の装置を含んでいてもよい。たとえば、通信インターフェース３５０は、イーサネット（登録商標）プロトコルに従って通信するよう構成されたネットワーク・インターフェース・カード（NIC）を含んでいてもよい。さらに、通信インターフェース３５０は、TCP/IPプロトコルに従った通信のためのTCP/IPスタックを実装してもよい。通信インターフェース３５０のためのさまざまな代替的または追加的なハードウェアまたは構成が明白であろう。
【００６３】
記憶３６０は、読み出し専用メモリ（ROM）、ランダムアクセスメモリ（RAM）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイスまたは同様の記憶媒体といった一つまたは複数の機械可読記憶媒体を含んでいてもよい。さまざまな実施形態において、記憶３６０は、プロセッサ３２０による実行のための命令またはプロセッサ３２０が作用しうるデータを記憶していてもよい。たとえば、記憶３６０は、ハードウェア３００のさまざまな基本的動作を制御するための基本オペレーティング・システム３６１を記憶してもよい。インターフェース１００、２００がウェブ・ベースのアプリケーションを介して呈示されるいくつかの実施形態では、記憶３６０は、リモート端末と通信するためのウェブ・サーバー３６２を含んでいてもよい。記憶３６０は、表示し、図１および図２に示したようなインターフェースを介して入力を受け取るためのグラフィカル・ユーザー・インターフェース（GUI）命令３６３をも含んでいてもよい。GUI命令３６３は、本稿に記載されるさまざまな機能を実行するための命令、たとえば現在のクエリーの視覚的表現（たとえばクエリー・パネル１１０、２１０）を表示するためのクエリー表現命令３６４；クエリー表現を介して入力を受け取り、クエリー・エンジン３６７を介してデータベース３６８にしかるべく提出するために根底にあるクエリーを修正するためのクエリー修正命令３６５；および検索されたレコードもしくはそこで実行された解析のようなクエリーの結果（たとえば結果パネル１９０、２９０）を表示するためのクエリー結果表示命令３６６を含んでいてもよい。クエリー・エンジン３６７は、たとえばSQLクエリー・エンジンのようなデータベースに問い合わせするためのいかなるエンジンであってもよい。ここで、データベースは問い合わせされることができるデータベース（または他のデータセット）でありうる。さまざまな実施形態において、クエリー・エンジン３６７またはデータベース３６８は、GUI命令３６３にローカルに記憶されていなくてもよく、その代わり、クエリーは通信インターフェース３５０を介してリモート装置に提出されてもよい。
【００６４】
記憶３６０に記憶されるとして記載されるさまざまな情報は追加的または代替的にメモリ３３０に記憶されてもよいことは明白であろう。この点で、メモリ３３０も「記憶装置」をなすと考えられてもよく、記憶３６０が「メモリ」と考えられてもよい。さまざまな他の構成が明白であろう。さらに、メモリ３３０および記憶３６０はいずれも「非一時的な機械可読媒体」であると考えられてもよい。本稿での用法では、用語「非一時的」は、一時的な信号を除外するが、揮発性および不揮発性メモリの両方を含むすべての形の記憶を含むものと理解される。
【００６５】
ハードウェア装置３００が記載される各コンポーネントの一つを含むとして示されているが、さまざまなコンポーネントはさまざまな実施形態において複数あってもよい。たとえば、プロセッサ３２０は、本稿に記載される方法を独立して実行するよう構成された複数のマイクロプロセッサを、あるいは複数のプロセッサが本稿に記載される機能を達成するよう協働するように本稿に記載される方法の段階もしくはサブルーチンを実行するよう構成された複数のマイクロプロセッサを含んでいてもよい。さらに、装置３００がクラウド・コンピューティング・システムにおいて実装される場合、さまざまなハードウェア・コンポーネントは別個の物理的システムに属しうる。たとえば、プロセッサ３２０は、第一のサーバーにおける第一のプロセッサおよび第二のサーバーにおける第二のプロセッサを含んでいてもよい。
【００６６】
図４は、対話的クエリーおよび解析インターフェースならびに対応する機能を提供するための方法４００の例を示している。方法４００はたとえば、図３のGUI命令３６３に対応していてもよい。方法４００は、いくつかの点では、対話的クエリー・インターフェースを提供するための装置によって実行される動作の抽象化および概括的な記述であることがある。方法４００のいくつかの段階の例示的実装に関するさまざまな追加的詳細は、図５〜図１１に関して下記でより詳細に記述される。
【００６７】
方法４００は段階４０５で始まり、段階４１０に進み、そこで、装置はクエリー・インターフェースを求める要求を受領する。たとえば、装置は、ウェブ・サーバー内でクエリー・インターフェースもしくは該インターフェースを組み込んでいるソフトウェア・スイートをポイントするよう構成されているURLに対するウェブ要求を受領してもよい。段階４１５では、装置は、クエリー・インターフェースをレンダリングしそれからの入力を解釈することにおいて使うための、データベースについての関連する情報を表現するためのデータベース・オブジェクトを生成し、初期化してもよい。たとえば、データベース・オブジェクトは、たとえば属性およびデータベース内でのその潜在的な値、データベース内でのレコード数、現在のクエリー、現在のクエリーもしくはその一部にマッチするレコード数などといったメタデータを含んでいてもよい。本稿に記載されるさまざまな例はデータベースを探査することに関係するが、本願の方法は、真のデータベースとして編成されていない他のデータセットに適応されてもよいことは理解されるであろう。
【００６８】
いくつかの実施形態では、段階４１０において受領された要求は、初期クエリーをも示しうる。たとえば、URLの一部、API要求または要求元ソフトウェア・スイートからの命令が、データベースに対するクエリーを指定してもよい。方法４００は段階４２０において、そのようなクエリーが提供されたかどうかを判定し、もし提供されていたら、段階４２５において、はいってくるクエリーを反映するようデータベース・オブジェクトを更新する。提供されていなかったら、データベース・オブジェクトは、いかなる現在のクエリーも含まないその初期化された状態（またはデータベース中の全部のレコードを選択する現在のクエリー）のままにされる。
【００６９】
段階４３０において、装置はデータベース・オブジェクトからクエリー・インターフェースをレンダリングする。たとえば、装置は、クエリー・パネル１１０、２１０のようなインターフェースをレンダリングしてもよい。段階４３５において、装置は現在のクエリーを実行し、（そして結果に対して実行されるべき解析があればそれを実行し、）段階４４０において、そうした結果をユーザーに対する表示のためにレンダリングする（たとえば結果パネル１９０、２９０のような結果パネル）。クエリーを実行し、結果セットに対して解析を実行し、結果を表示するためのさまざまな方法が明白であろう。
【００７０】
段階４４５では、装置は、ユーザーが入力を提供するまで待つ。たとえば、入力要素を選択するまたは属性表示を再配列するなどしして、ユーザーがクエリー・インターフェースを介して入力を提供してもよい。次いで、装置は、段階４５０においてその入力が属性値の選択を含むかどうかを判定することによって、その入力を解釈することを始める。もしそうであれば、装置は属性値選択を反映する（たとえば属性値を追加するまたはクエリーから属性値を除去する）ようデータベース・オブジェクトを更新する。次いで、方法４００は段階４３０にループで戻って、更新されたクエリーに基づいてクエリー・インターフェースをレンダリングし直す。
【００７１】
入力が属性値選択でなければ、方法４００は段階４６０に進み、装置は、入力が属性表示をクエリー・インターフェースにおいて新たな位置に動かしたかどうかを判定する。もしそうであれば、装置は属性表示がどこからどこに動かされたか（インターフェース内で定義されるスロット番号）を判定し、段階４７０においてデータベース・オブジェクトを更新する。次いで、方法４００は段階４３０にループで戻って、更新されたクエリー・インターフェース順序に基づいてクエリー・インターフェースをレンダリングし直す。
【００７２】
入力が属性表示を動かしていなかった場合には、装置は他の入力（たとえば結果表示への変更）を処理することに進み、さらなる入力を監視するために段階４４５にループで戻る。本稿に記載されるクエリー・インターフェースおよび結果表示内での実装のためのさまざまな追加的な機能が明白であろう。方法４００はこのようにして、いくつかの実施形態ではユーザーがクエリー・インターフェースから離れるナビゲーションをするまたは他の仕方でクエリー・インターフェースを閉じることを決めるまで、動作を続ける。
【００７３】
図５は、本稿に記載される対話的クエリー機能を提供することにおいて使うためのデータ構造５００の例を示している。理解されるであろうように、本稿に記載される例示的方法または本稿に記載される機能を実装するための他の方法をサポートするために、さまざまな代替的なデータ構造が使用されうる。さまざまな実施形態において、データ構造５００は図３のGUI命令３６３に属してもよく、たとえばクエリー表現命令３６４、クエリー修正命令３６５またはクエリー結果表示命令３６６の一部または全部を実装してもよい。
【００７４】
図のように、データベース・オブジェクト（Database  Object）・クラス５１０は、データベースにおいて使用される各属性の指示を記憶するための属性オブジェクト（のちにより詳細に説明する）のアレイを含む。データベース・オブジェクトは、データベース中のレコードの総数の計数およびクエリー・インターフェースを介してユーザーによって入力された現在のクエリーを格納するストリングをも含む。データベース・オブジェクト５１０は、図４の方法４００に対応しうるMain()メソッドを含む複数のメソッドをも含みうる。他のメソッドは、根底にあるデータベースの構造を反映するようデータベース・オブジェクト５１０を初期化するためのInitialize()メソッド；（たとえば初期表示のために渡されうる）すでに形成されたクエリーを反映するよう、初期化されたデータベース・オブジェクトを構成するためのsetQuery(string)メソッド；各属性表示について表示すべきレコード総数を決定するためのdetermineRecordTotals()メソッド；データベース・オブジェクト５１０に格納された情報に基づいてGUIをレンダリングするためのrenderGUI()メソッド；属性表示をあるスロットから別のスロットに動かすためのmoveColumn(int,int)メソッド；ユーザー属性値選択（または選択解除）を扱うためのselectValue(string)メソッド；およびクエリー・エンジンに提出するのに好適な、データベース・オブジェクト５１０の現在状態からのストリング・クエリーを生成するための、buildQuery()メソッドをも含んでいてもよい。
【００７５】
属性オブジェクト（Attribute  Object）・クラス５２０は、データベース内の個々の属性を表現するために使われてもよい。属性オブジェクト５２０は、属性の名前；データベース・オブジェクト５１０のアレイにおける現在位置において属性オブジェクト５２０に現在「渡される」レコードの数；その属性についての潜在的な値およびその属性に「渡された」レコードのうちその値にマッチするレコードの数を格納するための辞書（dictionary）または他の好適なデータ構造；および現在選択されている値selectedValues（もしあれば）を記録するストリングのアレイを含みうる。
【００７６】
図６は、本稿に記載される対話的クエリー機能を提供することにおいて使うためのデータ構造を生成し、初期化する方法６００の例を示している。方法６００はたとえば方法４００の段階４１５またはデータベース・オブジェクト５１０のInitialize()メソッドに対応してもよい。本方法は段階６０５で始まり、段階６１０に進んで、そこで装置が、属性のリストを取得するためにデータベース・スキーマに問い合わせする。段階６１５において、装置はデータベース中のレコードの総数を問い合わせし、dbNumRecords変数をこの値に設定する。
【００７７】
次いで方法６００は諸属性をループすることを始める。これは、段階６２０において対象とする第一の属性を取得し、段階６２５においてその属性を表わす属性オブジェクトを生成することによる。さまざまな実施形態において、方法６００は、クエリーが設定されていないと想定し（別の方法はデータベース・オブジェクト５１０におけるクエリーの初期設定を可能にしてもよい）、よって、attNumRecordsの値をデータベース中のレコードの総数に設定してもよい（すなわち、属性値がまだ選択されていないので、各属性は、潜在的なフィルタリングのためにデータベース中のすべてのレコードを「受け取る」）。
【００７８】
段階６３５では、装置は、現在の属性についてあらゆる可能な値を求めてデータベースに問い合わせする。いくつかの実施形態では、この段階は、データベースへの一つまたは複数の問い合わせまたはシステム管理者によって以前に提供された構成を読むことに関わってもよい。たとえば、各レコードが患者年齢を含む場合、構成ファイルは、単一の値として扱われるべき年齢のグループを指定してもよい（たとえば、「25-50」は25歳および40歳に関連付けられたレコードを同じように捕捉する）。ひとたび潜在的な値が同定されたら、それらの値は現在の属性についてのvaluesArray〔値アレイ〕にキーとして追加される。方法６００は次いで、可能な値を通じてループすることを始める。これは、段階６４０において処理すべき第一の値Vを取得することによる。段階６４５において、装置は、現在の属性について現在の値Vをもつレコードの数をデータベースに問い合わせる。装置はこの数を、現在の属性についてのvaluesArrayにおいてキーとしての現在の値Vがポイントするデータとして記録する。方法６００は次いで、段階６５０において、その属性についてさらなる値が処理されるために残っているかどうかを判定する。現在の値が最後でない場合には、方法６００は段階６４０にループで戻って次の値を処理する。それ以外の場合には、方法６００は段階６５５において、そのデータベースについてさらなる属性が処理されるために残っているかどうかを判定する。現在の属性が最後でない場合には、方法６００は段階６２０にループで戻って次の属性を処理する。それ以外の場合には、方法６００は段階６６０において終了することに進む。
【００７９】
図７は、クエリーを反映するようデータ構造を更新するための方法７００の例を示している。方法７００は、方法４００の段階４２５またはデータベース・オブジェクト５１０のsetQuery(string)メソッドに対応してもよい。本方法は、クエリー・ストリングが受領される段階７０５で始まり、段階７１０に進んで、装置はそのクエリーからの諸属性およびそれらに関連付けられた値をパースして順序付けられたリストにする。クエリーをパースしてその構成要素にするためのさまざまなトークン化器および他の手法が明白であろう。たとえば、受領されたクエリーが「SELECT  *  FROM  database  WHERE  (Group='Group  X')  AND  (Priority='Non-Elective'  OR  Priority='Unknown')」である場合、装置はこのクエリーを二つの属性のリストおよび値の二つのグループのリストにパースしうる：{Group〔グループ〕;  Priority〔優先度〕}および{(Group  X〔グループX〕);  (Non-Elective〔非選択的〕,  Unknown〔不明〕)}である。
【００８０】
受領されたクエリーにおける属性および値を同定した後、方法７００は、段階７１５においてまずインデックスiを0に初期化することによって、同定された各属性を通じて逐次反復することを開始する。段階７２０では、装置は、段階７１０において同定された属性リストのi番目のスポットにおける属性を取得し、次いで、段階７２５では、装置は現在の属性にマッチするデータベース・オブジェクト〔DatabaseObject〕のattributeArray〔属性アレイ〕内の属性オブジェクト〔AttributeObject〕を位置特定する。段階７３０では、装置は属性オブジェクトの位置特定に成功したかどうかを判定し；そうでなければ、装置は段階７３５においてエラー・メッセージをログ記録し、出力して段階７６０に進み、それにより現在の属性のさらなる処理をスキップする（現在の属性がデータベース・オブジェクトにとって不明なので）。他方、装置が属性アレイにおいてマッチする属性オブジェクトを位置特定できる場合には、方法は段階７４０に進んで、装置は属性オブジェクトを属性アレイにおけるi番目の位置に動かして、既存の各要素を一スポットだけアレイの下方にシフトさせること（または位置の交換または属性オブジェクトを所望されるスポットに動かす効果がある他の任意の手法）によって余地を作り出す。このように、現在のクエリーに寄与する属性アレイの部分の順序は、初期には、クエリー・ストリングにおいて諸属性が現われる順番に一致する。代替的な順序付け手法は明白であろう。
【００８１】
次いで、方法７００は、段階７４５においてクエリー値リストにおけるi番目のスポットから値を取得することによって、現在の属性についてのクエリー値を通じて逐次反復することを開始し、段階７５０において、その属性値を現在の属性オブジェクトのselectedValues〔選択値〕アレイに加える。段階７５５では、装置はクエリー値リストのi番目のスポット内に処理されるべきさらなる値が残っているかどうかを判定し、現在の値がi番目のスポットにおける最後でない場合には、本方法は段階７４５にループで戻って次の値を処理する。それ以外の場合には、方法は段階７６０に進む。
【００８２】
段階７６０では、装置は、段階７１０からの属性リストに処理するためのさらなる属性が残っているかどうかを判定する。これはたとえば、iがクエリー属性リストの長さより短いままであるかどうかを判定することによる。そうであれば、装置は段階７６５においてiをインクリメントし、段階７２０にループで戻って次の属性を処理する。属性リストにおけるすべての属性が処理された後、方法７００は段階７６０に進み、装置はアレイ内の各属性オブジェクトに「渡される」レコード総数を決定する。そのようなレコード総数を決定するための例示的方法は、図８に関して下記でより詳細に述べる。方法７００は次いで段階７７５で終了することに進む。
【００８３】
図８は、潜在的な属性値オプションについてレコード総数を決定するための方法８００の例を示している。方法８００は、方法７００の段階７６０またはデータベース・オブジェクト５１０のdetermineRecordTotals()メソッドに対応していてもよい。方法８００は段階８０２で始まり、段階８０４に進んで、装置がインデックス変数iを0に初期化する。この装置はまた、段階８０６において空のworkingQuery〔作業クエリー〕を初期化する（たとえば空のストリングまたは「SELECT  *  FROM  database  WHERE」または「SELECT  COUNT(id)  FROM  database  WHERE」のようなテンプレート・クエリー）。
【００８４】
装置は段階８０８において、属性アレイ（attributesArray）のi番目のスポットから処理するための属性オブジェクトを取得し、段階８１０において作業クエリーを実行する。作業クエリーに何も加えられていない最初の反復工程では、作業クエリーの実行はデータベースにおけるすべてのレコード（またはその計数）を返してもよい。段階８１２では、装置は現在の作業クエリーについての結果の数を、現在の属性オブジェクトについてのattNumRecordsとして記録し、属性オブジェクトに「渡された」レコードの数を表わすものとする。
【００８５】
次に、本方法は、属性オブジェクトのそれぞれの可能な値について結果を記録することを開始する。これは段階８１４において、別のインデックス変数jを0に初期化し、段階８１６において、現在の属性オブジェクトについての値アレイ（valuesArray）においてj番目のスポットにある値ストリング（たとえば、値アレイは辞書であり、そのj番目のキー）を取得することによる。段階８１８では、装置は、現在の属性（attribute）を現在の値（value）とマッチングさせるための一時的クエリー条件tempCondを生成する。装置は、作業クエリーの適切な部分に対してtempCondを加え、マッチするレコードの数を決定するためにそれを実行する。装置は、段階８２２において、レコード数を、値アレイにおいて現在のキーがポイントしているデータとして記録し、段階８２４において作業クエリーからtempCondを除去して、作業クエリーを段階８２０の実行前の以前の形に復元する。次いで、装置は段階８２６において、追加的な値が処理されるべく残っているかどうかを判定する。これはたとえば、jが値アレイの長さより短いかどうかを判定することによる。現在の属性オブジェクトについて処理されるべき値が残っている場合には、装置は段階８２８においてjをインクリメントし、方法８００は段階８１６にループで戻って、値アレイにおける次の値を処理する。ひとたび現在の属性オブジェクトについてのすべての値が処理され、それについてレコード数が記録されたら、方法８００は段階８３０に進む。
【００８６】
段階８３０では、装置は、現在の属性オブジェクトについて少なくとも一つの値が選択されたかどうかを判定する。そうでない場合、方法８００は段階８４６までスキップして進む。他方、選択値アレイが空でない場合には、方法は段階８３２に進んで、装置は現在の属性を作業クエリーに加える。次いで、装置は選択された諸値を通じて逐次反復することを開始する。これは段階８３４において、前記インデックス変数jを0に初期化し、段階８３６において、選択値アレイからのj番目の値を取得することによる。段階８３８では、装置は、現在の値を作業クエリーに加える。次いで装置は、段階８４０において処理するためにさらなる選択値〔selectedValues〕が残っているかどうかを判定し、もし残っていれば、段階８４４においてjをインクリメントし、段階８３６にループで戻って、次の選択値を処理する。ひとたびすべての選択値が作業クエリーに加えられたら、方法８００は段階８４６に進む。
【００８７】
（たとえば属性値はいってくるレコードを記録し、各属性値についてのレコード数を記録し、現在の属性および選択された値を、次の反復工程で使うために作業クエリーに加えることによって）現在の属性オブジェクトを完全に処理したら、装置は段階８４６においてさらなる属性オブジェクトが処理されるべく属性アレイ内に残っているかどうかを判定する。さらなる属性オブジェクトが残っている場合、装置は段階８４８においてiをインクリメントし、段階８０８にループで戻って、次の属性オブジェクトの処理を開始する。ひとたびすべての属性オブジェクトが処理されたら、装置は段階８５０において、currentQuery〔現在のクエリー〕を作業クエリーの最終バージョン（すべての属性オブジェクトを通じて逐次反復した後、遭遇されたすべての選択された属性値を組み込んでいる）に等しくなるよう設定し、本方法は段階８５２において終了することに進む。
【００８８】
図９は、対話的クエリー・インターフェースをレンダリングするための方法９００の例を示している。さまざまな実施形態において、方法９００は方法４００の段階４３０に対応してもよく、データベース・オブジェクト５１０のrenderGUI()メソッドに対応してもよい。本方法は段階９０２において始まり、段階９０４に進んで、装置は三つの変数を初期化する：ブロック位置を追跡するためのbPos、インデックスを追跡するためのi、および接続子サブ要素を描画する際に使うために直前に処理されたブロックにおける選択されたブロックを追跡するためのlastSelections〔前回の選択〕アレイである。段階９０６では、装置は属性アレイ（attributesArray）からi番目の属性オブジェクトを取得し、段階９０８において属性表示（たとえば図１〜図２を参照して上記したような属性表示）を、現在のbPosに関連するブロック位置においてレンダリングする。先述したように、属性オブジェクトは、意図された順序で属性アレイに挿入されるので、属性オブジェクトは、さらなるソートなしに、属性アレイに現われる順序で表示される。
【００８９】
装置は次いで、現在の属性表示について諸入力要素をレンダリングすることを開始する。これは、まず段階９１０において、別のインデックスj、chunkStart変数および現在選択アレイを初期化することによる。段階９１２では、装置はj番目のスポットにおける値アレイ（valuesArray）からのデータ（たとえばj番目の属性値に関連付けられたレコードの数）を取得する。先述したように、「はいってくる」レコードの集合内で各属性値にマッチするレコードの数は、別の方法の一部として以前に計算されており、よって、現在の属性値についてのレコードの数vRecsを決定するためにさらなる計算または問い合わせが実行される必要はない。段階９１４では、装置は現在の値が何らかのレコードに関連付けられているかどうかを判定する。関連付けられていなければ、方法９００は段階９４０までスキップして進む。そうではなく、現在の属性値について記されている少なくとも一つのレコードがある場合には、方法９００は段階９１６に進んで、装置はレンダリングされるべき入力要素についての適切な高さchunkHeightを決定する。先述したように、chunkHeightは、現在の属性に「渡される」レコードの集合内でその属性値にマッチするレコードの割合に基づいて設定されてもよい。たとえば、装置は、vRecsを現在の属性についてのレコードの総数attNumRecordsで割ったものに、入力要素の列についての所望される合計高さをかけたものに等しくなるようchunkHeightを設定してもよい。段階９１８では、装置は、位置chunkStartで始まる、高さchunkHeightの入力要素をレンダリングする。入力要素は、適切な視覚的インジケーターのみならず、ユーザー選択を受け取るための対話機能をも伴ってレンダリングされてもよい。段階９２０では、装置は新たな入力要素に、属性値の名前を用いてラベル付けおよびタグ付けする。属性値の名前は、値アレイにおいてj番目の位置においてキーとして格納されるものである。入力要素にタグ付けすることにより、入力要素のユーザー選択によって生成される任意のメッセージによって属性値が担持されうる。
【００９０】
段階９２２では、装置は、現在の属性値が選択された値でもあり（すなわち選択値アレイにも格納されており）、よって選択サブ要素をもってレンダリングされる必要があるかどうかを判定する。そうでなければ、方法９００は段階９３８にスキップして進む。それ以外の場合で、現在の属性値がクエリーについての選択された値である場合には、本方法は段階９２４に進み、装置は、初期に現在のクエリーに等しいtempQuery〔一時クエリー〕を生成する。段階９２６では、装置はその属性についての一時クエリー内の現在の属性値を単離する。たとえば、その属性値が現在の属性について選択された唯一の値である場合には、装置は一時クエリーを修正しなくてもよい。現在の属性について選択された二つ以上の属性値がある場合には、装置は、現在の属性以外の現在の属性についてのすべての値を消去してもよい（クエリー内の他の属性は手つかずのままとする）。装置は段階９２８において一時クエリーを実行し、次いで、段階９３０において結果の数をsRecsとして記録する。装置は次いで、選択（selection）の高さを、現在のステージに渡されたレコードの総数に対する、最終的な結果集合内の現在の属性値にマッチするレコードの割合として決定する。たとえば、装置は、sRecsを現在の属性についてのレコードの総数attNumRecordsで割ったものに入力要素の列についての所望される合計高さをかけたものとして、selHeightを計算してもよい。段階９３４では、装置は、チャンク開始（chunkstart）における高さselHeightの（よって少なくとも部分的に段階９１８でレンダリングされた入力要素に重なる）選択サブ要素をレンダリングする。段階９３５では、装置は、現在の選択サブ要素と、lastSelections〔前回の選択〕変数に記録されている、前にレンダリングされた属性表示からの任意の選択サブ要素との間の接続子サブ要素をレンダリングする。段階９３６では、現在の属性表示についてレンダリングされた選択サブ要素を追跡するために、その選択サブ要素はcurSelections〔現在の選択〕に加えられる。
【００９１】
段階９３８では、次の入力要素または選択サブ要素が、前の入力要素が終わる位置からレンダリングされうるよう、装置はchunkHeight変数をchunkStart変数に加算する。段階９４０では、装置は、現在の属性について処理されるべきさらなる値が残っているかどうかを判定する。残っていれば、装置は段階９４２においてインデックスjをインクリメントして、方法９００は段階９１２にループで戻って、現在の属性についての次の属性値を処理する。ひとたび現在の属性についてのすべての属性値が処理されたら、方法９００は段階９４４に進んで、装置は、処理されるべきさらなる属性が残っているかどうかを判定する。もし残っていれば、装置はおよびbposをインクリメントし、curSelectionsをlastSelectionsに転送し、現在の選択サブ要素が、次の属性表示をレンダリングするときに任意の必要とされる接続子サブ要素を生成するために使用されうるようにする。次いで方法９００は段階９０６にループで戻って、次の属性を処理する。ひとたびすべての属性が処理されたら、GUIは完全にレンダリングされ、方法９００は段階９４８において終了してもよい。
【００９２】
図１０は、新たな属性値選択によりデータベース・オブジェクトを更新するための方法１０００の例を示している。さまざまな実施形態において、方法１０００は、方法４００の段階４５５またはデータベース・オブジェクト５１０のselectValue(string)メソッドに対応してもよい。方法１０００は、装置がユーザーから入力要素の選択を受領する段階１００５で始まる。段階１０１０では、装置は、選択された入力要素が対応する、属性アレイ内の属性オブジェクトを位置特定する。次に、装置は、現在の操作が選択であるか選択解除であるかを判定する。これは、入力要素に関連付けられている属性値がすでに属性オブジェクトについての選択値（selectedValues）アレイに格納されているかどうかを判定することによる。値がすでに選択値にあれば、入力選択は既存の選択をクエリーから除去するものとして扱われ、方法１０００は段階１０２０に進む。
【００９３】
段階１０２０では、装置は、現在の値を選択値アレイから除去する。段階１０２５では、装置は、選択値が今空であるかどうかを、結果として属性表示が、現在のクエリーを形成する属性表示後に現われる位置に動かされるべきかどうかを判定する。もしそうであれば、装置は属性オブジェクトを、その後の属性オブジェクトが空の選択値アレイを含まないような属性アレイにおけるスポットまで動かす。いくつかの実施形態では、装置は、たとえば方法８００を実行することによってレコード総数を更新してもよい。次いで、方法１０００は段階１０５０で終わってもよい。
【００９４】
他方、選択された入力要素に関連付けられた現在値がすでに選択値アレイにあるのでない場合には、方法は段階１０３５に進んで、装置が、現在の属性についての選択値アレイが現在空であるかどうかおよび結果としてその関連付けられた属性表示がクエリーの一部をなす最後の属性表示の右に動かされるべきであることを判定する。そうであれば、装置は、属性オブジェクトを属性アレイにおいて、先行する属性オブジェクトがどれも空の選択値アレイを含まないスポットまで動かす。いくつかの実施形態では、装置は、たとえば方法８００を実行することによって、レコード総数も更新してもよい。段階１０４５では、装置は選択された入力要素の値を選択値アレイに加え、方法１０００は段階１０５０において終了することに進む。
【００９５】
図１１は、対話的クエリー・インターフェースにおいて列を動かすための方法１１００の例を示している。さまざまな実施形態において、方法１１００は、方法４００の段階４７０またはデータベース・オブジェクトのmoveColumn(int,int)メソッドに対応してもよい。方法１１００は段階１１０５で始まり、装置は、動かされるべき列の源位置および行き先位置を表わす二つの整数を受け取る。段階１１１０では、装置はインデックスiを、方法１１００によって受領された新位置の値に初期化する。段階１１１５では、装置は源位置についての属性オブジェクトを見出し、別のインデックスjを属性アレイにおける属性オブジェクトの位置に等しくなるよう設定する。いくつかの実施形態では、この数は受領された源位置と同じであってもよく、段階１１１５はスキップされてもよい。段階１１２５では、装置はattributesArray[j]における属性オブジェクトを一時変数に読み込む。次いで、段階１１３０において、装置は一時変数をattributesArray[j]における属性オブジェクトと入れ換え、段階１１３５においてiをインクリメントする。次いで装置は、すべての適切な属性オブジェクトがシフトされたかどうかを、二つのインデックスiおよびjが等しいかどうかを判定することによって判定する。そうでなければ、方法は段階１１３０にループで戻る。ひとたびiがjに達したら、方法１１００は段階１１４５に進み、tempにおける属性オブジェクトが属性アレイにj番目の位置のところで挿入し戻される。
【００９６】
方法１１００が属性表示を順序において上位に動かすために好適であることは明白であろう；属性表示を順序において下位に動かすためのさまざまな修正、たとえば段階１１３５においてiをデクリメントすることは明白であろう。
【００９７】
図１５は、対話的クエリー・インターフェースの代替的な実施形態１５００を示す図である。この実施形態によれば、データセットを探査することにおいてユーザーを案内するのを助けるために、追加的な特徴が実装されてもよい。図のように、インターフェース１５００は図１〜図２に関して上記したインターフェースと同様の仕方で動作する。しかしながら、インターフェース１５００は、それぞれ異なる色をもつ複数の進行要素を含む。具体的には、第一の属性表示におけるそれぞれの選択された入力要素は、一意的な色の単一の進行要素に関連付けられていてもよい。こうして、このインターフェースは五つの異なる色付き進行跡１５１０、１５２０、１５３０、１５４０、１５５０を含む。ユーザーはこのようにして、第一の属性表示において各属性値に対応する各選択要素の割合を可視化することができる。さらに、色は、選択された属性値のない各属性表示において、第一の属性表示におけるそれぞれの選択された属性値にマッチする、その属性表示におけるそれぞれの属性値の割合を示すためにも使用されうる。そのような機能を実装するためのさまざまな修正は明白であろう。
【００９８】
上記の記述から、本発明のさまざまな例示的実施形態ががハードウェアまたはファームウェアにおいて実装されうることは明白であるはずである。さらに、さまざまな例示的実施形態は、機械可読記憶媒体に記憶された命令として実装されてもよく、該命令は、本稿で詳細に記載された動作を実行するために少なくとも一つのプロセッサによって読まれ、実行されてもよい。機械可読記憶媒体は、パーソナル・コンピュータもしくはラップトップ・コンピュータ、サーバーまたは他のコンピューティング装置といった機械によって読み取り可能な形で情報を記憶するためのいかなる機構を含んでいてもよい。このように、機械可読記憶媒体は、読み出し専用メモリ（ROM）、ランダムアクセスメモリ（RAM）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイスおよび同様の記憶媒体を含んでいてもよい。
【００９９】
当業者は、本願のどのブロック図も本発明の原理を具現する例示的な回路の概念的なビューを表わすことを理解するはずである。同様に、どのフローチャート、流れ図、状態遷移図、擬似コードなども、機械可読媒体において実質的に表現されうる、よってコンピュータまたはプロセッサによって実行されうるさまざまなプロセスを表わすことは理解されるであろう。このことは、そのようなコンピュータまたはプロセッサが明示的に示されるか否かにはよらない。
【０１００】
さまざまな例示的実施形態がそのある種の例示的な側面を具体的に参照しつつ記述されてきたが、本発明は他の実施形態も可能であり、その詳細はさまざまな明らかな点で修正できることは理解しておくべきである。当業者には容易に明白となるように、本発明の精神および範囲内に留まりつつ変形および修正がなされてもよい。よって、上記の開示、記述および図面は単に例解目的のためであり、請求項によってのみ定義される本発明をいかなる仕方でも限定するものではない。
【図１】
2019522279.tif 000003
【図２】
2019522279.tif 000004
【図３】
2019522279.tif 000005
【図４】
2019522279.tif 000006
【図５】
2019522279.tif 000007
【図６】
2019522279.tif 000008
【図７】
2019522279.tif 000009
【図８】
2019522279.tif 000010
【図９】
2019522279.tif 000011
【図１０】
2019522279.tif 000012
【図１１】
2019522279.tif 000013
【図１２】
2019522279.tif 000014
【図１３】
2019522279.tif 000015
【図１４】
2019522279.tif 000016
【図１５】
2019522279.tif 000017
【国際調査報告】
2019522279.tif 000018
2019522279.tif 000019