ソルバベースの視覚化フレームワーク
視覚化フレームワークは、ソルバを含むことができる。ソルバを使用して、ビュー構成のビューコンポーネントのプロパティを判定することができる。いくつかの例で、ソルバを、依存関係ツリーなどの関係構造を使用して明示的に構成することができる。いくつかの例で、ソルバを、ソルバを有するプロパティ−セッターがソルバを有する他のプロパティ−セッターを呼び出すことに基づいて暗黙のうちに構成することができる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ソルバベースの視覚化フレームワークに関する。
【背景技術】
【0002】
しばしば、情報を人間に伝える最も有効な形は、視覚的に伝えることである。したがって、数百万人の人が、情報を伝えるか受け取るため、および共同して働くために、広範囲のビジュアルアイテムを用いて働く。そのようなビジュアルアイテムは、たとえば、コンセプトスケッチ、工学図面、部品表の展開、ビルディングまたは分子構造などのさまざまな構造物を示す3次元モデル、トレーニング材料、図示されたインストール指示、プラニング図などを含むことができる。
【0003】
より最近に、これらのビジュアルアイテムは、たとえばコンピュータ支援設計(CAD)およびソリッドモデリングアプリケーションを使用して電子的に構築される。しばしば、これらのアプリケーションは、作成者がジオメトリにデータおよび制約を添付することを可能にする。たとえば、部品表を構築するアプリケーションは、各部品に関連する部品番号および供給業者、2つの構成要素の間の最大角度、または類似物などの属性を許容する場合がある。ある競技場の電子版を構築するアプリケーションが、座席の間の最大クリアランスなどを指定するツールを有する場合がある。
【発明の概要】
【発明が解決しようとする課題】
【0004】
そのようなアプリケーションは、設計および技術の進歩に非常に貢献した。しかし、あらゆる所与のアプリケーションが、視覚的に伝えることができる情報のタイプ、情報をどのように視覚的に伝えるのか、またはさまざまな視覚的表現に帰することができるデータおよび挙動の範囲に関する制限を有する。アプリケーションが、これらの制限を超えて変更されなければならない場合には、新しいアプリケーションは、通常、そのアプリケーションの能力を拡張するか完全に新規のアプリケーションを提供するコンピュータプログラマによって作成される。また、ユーザ(モデルの実際の作成者以外)がさまざまなシナリオをテストするためにどれほどモデルを操作できるのかに対する制限がある。
【課題を解決するための手段】
【0005】
本明細書で説明される実施形態は、ソルバを使用してビューコンポーネントのプロパティを判定できる視覚化フレームワークに関する。いくつかの場合に、ソルバを、依存関係ツリーなどの関係構造を使用して明示的に構成することができる。いくつかの場合に、ソルバを、ソルバを有するプロパティ−セッターがソルバを有する他のプロパティ−セッターを呼び出すことに基づいて暗黙のうちに構成することができる。これは、作成者が、ビュー構成をよりすばやく作成し、考案することを可能にすることができる。
【0006】
この要約は、請求される主題の主要な特徴または本質的特徴を識別することを意図されたものではなく、請求される主題の範囲を判定する際の助けとして使用されることも意図されていない。
【図面の簡単な説明】
【0007】
上で列挙されたおよび他の利益および特徴を入手できる形を説明するために、さまざまな実施形態のより特定の説明を、添付図面を参照することによって描写する。これらの図面がサンプルの実施形態のみを示し、したがって本発明の範囲について限定的と考えられてはならないことを理解して、実施形態を、添付図面の使用を介して追加の限定性および詳細を伴って記述し、説明する。
【0008】
【図1】入力データに依存するビュー構成を構築するデータ駆動構成フレームワークを含む、本発明の原理を実施できる実施形態を示す図である。
【図2】図1の環境の一例を表すパイプライン環境を示す図である。
【図3】図2のパイプラインのデータ部分の実施形態を概略的に示す図である。
【図4】図2のパイプラインの分析部分の実施形態を概略的に示す図である。
【図5】図2のパイプラインのビュー部分の実施形態を概略的に示す図である。
【図6】データストリームの要素のすべてまたはサブセットを列挙することのできるデータストリームオブジェクトを概略的に示す図である。
【図7】図2のパイプラインによって構築できるビュー構成のレンダリングを示す図である。
【図8】図2のパイプライン環境を使用してビュー構成を生成する方法を示す流れ図である。
【図9】図2のパイプライン構成を使用してビュー構成とのユーザ相互作用に応答してビュー構成を再生成する方法を示す流れ図である。
【図10】特殊化されたソルバのコレクションを含むさらなる詳細において図4の分析部分のソルバを概略的に示す図である。
【図11】特殊化されたソルバのコレクションのアクションを調整することによって未知のモデルパラメータについて解く図10のソルバを示す流れ図である。
【図12】図10のソルバの例を表すソルバ環境を概略的に示す図である。
【図13】モデル分析について解くのに図12のソルバ環境を使用する方法を示す流れ図である。
【図14】モデル変数について解くのに図10のソルバ環境を使用する方法を示す流れ図である。
【図15】ソルバ環境の実施形態を概略的に示す図である。
【図16】図15に示されたソルバ環境によって実行できる方法を示す流れ図である。
【図17】図7の例を拡張する統合されたビュー構成のレンダリングを示す図である。
【図18A】複数のビジュアルアイテムが、対応するビジュアルアイテムが実行スクローリングを用いて相互作用できることを表すビジュアルキューで装飾された、ビュー構成を示す図である。
【図18B】スクローリング相互作用の後の図18Aのビュー構成を示す図である。
【図19A】ズーミング相互作用が使用可能にされているビュー構成を示す図である。
【図19B】ズームイン相互作用の後の図19Aのビュー構成を示す図である。
【図20】各州の高度がデータを表し、州ビジュアルアイテムのうちのいくつかがその州ビジュアルアイテムとの可能な相互作用を示すビジュアルキューを含む、米国地図の形のビュー構成を示す図である。
【図21】可能な相互作用を示すビジュアルキューを含む組み合わされた相互に関係付けられた円グラフおよび棒グラフの形のビュー構成を示す図である。
【図22】さまざまなビジュアルキューが相互作用を識別する、ハリケーン経路進行図の形のビュー構成を示す図である。
【図23】ビュー構成内で相互作用を提供する方法を示す流れ図である。
【図24】さまざまなビジュアルアイテムを統合し、合併できるユーザインターフェースを示す図である。
【図25】単なる螺旋がその上でデータがマッピングされる形状として示される、統合の第1ステージを示す図である。
【図26】図25の螺旋が1つのデータ系列に結び付けられる、統合の第2ステージを示す図である。
【図27】図25の螺旋が2つのデータ系列に結び付けられる、統合の第3ステージを示す図である。
【図28】図25の螺旋が図示のグラフに結び付けられる、統合の最終ステージを示す図である。
【図29】棚レイアウトの視覚化を示し、本明細書で説明される原理を適用できる無数のアプリケーションのうちの1つを表す図である。
【図30】本明細書で説明される原理を適用できる都市計画の視覚化を表す図である。
【図31】本発明の原理を適用でき、これによってより動的な学習環境を作成する、子供の教育を比較する従来の視覚化を示す図である。
【図32】本発明の原理を適用でき、これによってより動的な学習環境を作成する、人口密度を比較する従来の視覚化を示す図である。
【図33】第1のパラメトリックターゲットに適用されたビューコンポーネントの視覚化を示す図である。
【図34】第2のパラメトリックターゲットに適用された図33に示されたビューコンポーネントの視覚化を示す図である。
【図35】図2の分類コンポーネントが動作できる分類環境を示す図である。
【図36】図35のメンバアイテムの分類の例を示す図である。
【図37A】関係付けられたカテゴリの分類の一例を示す図である。
【図37B】関係付けられたカテゴリの分類の一例を示す図である。
【図37C】関係付けられたカテゴリの分類の一例を示す図である。
【図38】複数のプロパティを含むメンバアイテムを示す図である。
【図39】ドメイン固有分類を示し、図35のドメイン指定された分類の一例を表す図である。
【図40】分析をナビゲートし、使用する方法を示す流れ図である。
【図41】分析を使用して検索する方法を示す流れ図である。
【図42】図1の構成フレームワーク(またはその諸部分)を実施できる環境を提示するコンピューティングシステムを示す図である。
【発明を実施するための形態】
【0009】
図1は、ユーザ駆動分析および分析結果の視覚化を使用するビジュアル構成環境100を示す。環境100(以下では「パイプライン」とも呼ばれる)は、ビューコンストラクション130の問題ドメインと独立に実行されるロジックを実行する構成フレームワーク110を含む。たとえば、同一の構成フレームワーク110を、都市計画、分子モデル、食品雑貨店棚レイアウト、機械性能分析、機械組立分析、または他のドメイン固有レンダリングの対話型ビュー構成を構成するのに使用することができる。下で説明するように、分析を、さまざまなシナリオでの検索および探索に使用することができる。しかし、まず、基本的な構成フレームワーク110を詳細に説明する。
【0010】
構成フレームワーク110は、ドメインに固有の実際のビューコンストラクション130(本明細書では「ビュー構成」とも呼ばれる)を構築するためにドメイン固有の形で分類的に編成されるドメイン固有データ120を使用して分析121を実行する。したがって、構成フレームワーク110自体を再コーディングする必要があるのではなく、同一の構成フレームワーク110を、ドメイン固有データ120を変更することによって任意の個数の異なるドメインのビュー構成を構築するのに使用することができる。したがって、パイプライン100の構成フレームワーク110は、再コーディングおよび再コンパイルではなくデータを変更することによって、潜在的に無制限の個数の問題ドメインまたは少なくともさまざまな問題ドメインに適用することができる。次に、ビューコンストラクション130を、適当な2Dレンダリングモジュールまたは3Dレンダリングモジュールに命令として供給することができる。本明細書で説明されるアーキテクチャは、基本構成要素として既存のビュー構成を新しいビュー構成に便利に組み込むことを可能にもする。一実施形態で、複数のビュー構成を統合されたビュー構成に含めて、1つのモデルに対する2つの可能な解決策の間での簡単な比較を可能にすることができる。
【0011】
図2は、パイプライン環境200の形での構成フレームワーク110の例のアーキテクチャを示す。パイプライン環境200は、とりわけ、パイプライン201自体を含む。パイプライン201は、データ部分210、分析部分220、およびビュー部分230を含み、これらのそれぞれを、それぞれ後続の図3から5および付随する説明に関して詳細に説明する。さしあたり、全体的なレベルでは、パイプライン201のデータ部分210は、さまざまな異なるタイプのデータを受け入れることができ、そのデータを正規形式でパイプライン201の分析部分220に提示する。分析部分220は、データをさまざまなモデルパラメータにバインドし、モデル分析を使用して、モデルパラメータ内の未知数について解く。次に、さまざまなパラメータ値が、ビュー部分230に供給され、ビュー部分230は、モデルパラメータのこれらの値を使用して複合ビューを構築する。
【0012】
パイプライン環境200は、パイプライン201の作成者または他のユーザがパイプライン201に供給されるデータを定式化し、かつ/または選択することを可能にするオーサリングコンポーネント240をも含む。たとえばオーサリングコンポーネント240を使用して、データ部分210(入力データ211によって表される)、分析部分220(分析データ221によって表される)、およびビュー部分230(ビューデータ231によって表される)のそれぞれにデータを供給することができる。さまざまなデータ211、221、および231は、図1のドメイン固有データ120の例を表し、後でさらに詳細に説明される。オーサリングコンポーネント240は、たとえばデータスキーマ、モデルによって使用される実際のデータ、外部ソースから持ち込まれるデータの位置または可能な位置の範囲、ビジュアル(グラフィカルまたはアニメーション)オブジェクト、ビジュアル上で実行できるユーザインターフェース相互作用、モデリングステートメント(たとえば、ビュー、式、制約)、バインディングなどを含むさまざまなデータの供給をサポートする。
【0013】
一実施形態で、オーサリングコンポーネントは、総合的なマネージャコンポーネント(図2には図示されていないが、図1の構成フレームワーク110によって表される)によって提供される機能性の1つの部分にすぎない。このマネージャは、イベント(ユーザ相互作用イベント、外部データイベント、およびソルバ、オペレーティングシステムその他などの他のコンポーネントのいずれかからのイベントなど)に応答して他のコンポーネント(データコネクタ、ソルバ、ビューワその他など)のすべての動作を制御し、シーケンシングする総合的なディレクタである。
【0014】
オーサリングコンポーネント240は、検索を実行することを可能にする検索ツール242をも含む。検索ツール242は、複雑な検索動作を実行するためにパイプライン201のデータ駆動分析能力を利用することができる。たとえば、いくつかの場合に、検索の1つまたは複数のパラメータが、まず、その検索を完了するためにそれについて解かれる必要がある場合がある。
【0015】
一例として、データ駆動分析が、都市地図であり、分析の一部が、その都市内の特定の座標での通常の雑音レベルについて解くことができると仮定する。その場合に、居住用不動産を検索する人は、平方フィート単位の面積、価格帯、部屋数などの通常の検索パラメータに対する検索を実行できるだけではなく、分析集中型のパラメータに対する検索をも実行することができる。たとえば、本原理を適用できる制限されない形があるが、不動産の柔軟な検索をどのようにして達成できるのかの選択された少数の多様な例を、これから提供する。
【0016】
検索パラメータを指定することの一部として、ユーザは、
1)ある上限未満の平均雑音レベルを経験する家屋のみ、
2)月曜から木曜までのそれぞれにユーザの仕事場およびジムまで累積300分以下の通勤時間を有する家屋のみ、
3)1/5マイル(320m)以内のいずれかの道路上であるしきい値未満のトラフィックを経験し、今後10年にわたってそのレベル未満のトラフィックが予測される家屋のみ、
4)1年のどの時点でも午前9時15分の後に山の陰にならない家屋のみ、
5)10年で木が屋根の面積の少なくとも50%を陰にするように、所有地に十分な既存の木を有する家屋のみ、
6)その他
のうちの任意の1つまたは複数または他の検索アイテムに関する望みを示すことができる。
【0017】
そのような不動産検索は、従来の技術を使用してたやすく達成可能ではない。これらの例のそれぞれで、要求される家屋検索データが存在しない場合があるが、本明細書で説明される原理は、検索が実行されつつある時にオンザフライでさまざまなカスタマイズされたパラメータに関する検索データを生成することを可能にすることができる。また、検索は、以前にそれについて解かれた任意の検索データを利用することができる。これは、ユーザのためのさまざまな検索能力および探索能力を可能にし、解かれるべき問題を探索する完全に新しい形を開発する。これらのタイプの検索をサポートする基礎になるデータ駆動分析機構に関するより多くを、これから説明する。
【0018】
伝統的に、対話型ビュー構成アプリケーションのライフサイクルは、2つの主要な時間すなわち、オーサリング時(authoring time)および使用時(use time)を伴う。オーサリング時には、対話型ビュー構成アプリケーションの機能性が、所望のドメインに固有の対話型ビュー構成を提供するためにプログラマによってコーディングされる。たとえば、インテリアデザインアプリケーションの作成者(たとえば、通常はコンピュータプログラマ)は、ユーザがインテリアデザインに固有のアクションの有限のセットを実行することを可能にするアプリケーションをコーディングすることができる。
【0019】
使用時には、ユーザ(たとえば、おそらくは家屋の所有者またはプロフェッショナルインテリアデザイナ)が、そのアプリケーションを使用して、そのアプリケーションにハードコードされた有限のアクションのセットのうちの任意の1つまたは複数を実行することができる。このインテリアデザインアプリケーションの例では、ユーザは、表示される仮想の部屋の寸法を指定し、その部屋に家具および他のインテリアデザインコンポーネントを追加し、おそらくはその部屋のさまざまなアングルを得るためにビューを回転し、各アイテムの色をセットするなどを行うことができる。しかし、ユーザが、そのインテリアデザインアプリケーションをリバースエンジニアリングし、変更することをいとわないプログラマである場合を除いて、そのユーザは、アプリケーション作成者によって使用可能にされたアクションの有限のセットに制限される。たとえば、アプリケーションによって提供されない限り、ユーザは、どの窓配置が環境雑音を最小にするのか、風水ルールに従って部屋レイアウトをどのように実行するのか、または太陽熱寄与をどのように最小化するのかを自動的に計算するのにそのアプリケーションを使用することはできないはずである。
【0020】
しかし、図2のパイプライン環境200では、オーサリングコンポーネント240が、既存のパイプライン201にデータを供給するのに使用され、ここで、入力データの定義から分析モデルの定義、分析の結果がビュー構成内でどのように視覚化されるかの定義までプロセス全体を駆動するのは、そのデータである。したがって、パイプライン201をさまざまなドメインおよび問題のうちの任意の1つに適合させるために、コーディングを実行する必要はない。パイプライン201に供給されるデータだけが、全く異なる問題ドメインからまたはおそらくは既存ドメインに関する問題解決の調整のためのいずれかで異なるビュー構成を視覚化するためにパイプライン201を適用するために変更されるべきものである。パイプライン環境200は、パイプライン201に供給されるデータを編成し、類別し、関係付ける、分類コンポーネント260をも含むことができる。分類コンポーネント260は、ドメインに敏感とすることができる。したがって、インテリアデザインドメイン、道路設計ドメイン、アーキテクチャドメイン、風水ドメインは、それぞれ、データを通ってナビゲートするのに使用できる異なる分類を有することができる。これが役立つ可能性があるのは、下で説明するように、パイプライン環境200から使用可能にされるデータセットがますます増加しつつある可能性がある構成アクティビティに起因して、ふるいにかけるために使用可能なかなりのデータがある可能性があるからである。
【0021】
さらに、データを、使用時(すなわち、ランタイム)ならびにオーサ時に変更できるので、モデルを、ランタイムに変更し、かつ/または拡張することができる。したがって、モデルのオーサリングとモデルの実行との間の区別は、あるとしても、より少ない。すべてのオーサリングがデータアイテムの編集を含み、ソフトウェアがその挙動のすべてをデータから実行するので、データに対する変更のすべてが、再コーディングおよび再コンパイルの必要なしに、即座に挙動に影響する。
【0022】
パイプライン環境200は、ユーザが表示されるビュー構成と相互作用した時を検出し、その後、それに応答して何をすべきかを判定するユーザ相互作用応答モジュール250をも含む。たとえば、あるタイプの相互作用が、パイプライン201に供給されるデータの変更を必要とせず、したがって、ビュー構成に対する変更を必要としない場合がある。他のタイプの相互作用が、データ211、221、または231のうちの1つまたは複数を変更する場合がある。その場合に、この新しいまたは変更されたデータが、新しい入力データがデータ部分210に供給されることを引き起こす場合があり、分析部分220による入力データの再分析を要求する場合があり、かつ/またはビュー部分230によるビュー構成の再視覚化を要求する場合がある。
【0023】
したがって、パイプライン201を使用して、データ駆動分析視覚化を、おそらくは無制限の個数の問題ドメインに、または少なくともさまざまな問題ドメインに拡張することができる。さらに、さまざまな問題に対処するためにビュー構成を変更するために、プログラマである必要はない。パイプライン201のデータ部分210、分析部分220、およびビュー部分230のそれぞれを、これから、図3のデータ部分300、図4の分析部分400、および図5のビュー部分500に関して、この順番で説明する。さらに、データの分類は、ドメインに固有であり、したがって、データの編成をそのドメインで活動する者にとってより直観的にすることを可能にする。図3から5から明白になるように、パイプライン201を、一連の変換コンポーネントとして構築することができ、ここで、これらの変換コンポーネントは、それぞれ、1)ある適当な入力データを受け取り、2)その入力データに応答してあるアクションを実行し(入力データに対して変換を実行するなど)、3)次の変換コンポーネントへの入力データとして働くデータを出力する。
【0024】
パイプライン201を、クライアント上、サーバ上で実施することができ、または、制約なしにクライアントおよびサーバの間で分散させることさえできる。たとえば、パイプライン201を、サーバ上で実施し、レンダリング命令を出力として供給することができる。次に、クライアント側のブラウザは、サーバから受信されたレンダリング命令に従って単にレンダリングすることができる。このスペクトルの他方の端では、パイプライン201を、クライアント上に含めることができ、オーサリングおよび/または使用は、そのクライアントで実行される。パイプライン201が、完全にクライアントにある場合であっても、パイプライン201は、それでも、適当な情報(たとえば、モデル、コネクタ、カノニカライザ(canonicalizer)、スキーマ、その他)についてクライアントの外部のデータソースを検索することができる。この2つの手法のハイブリッドを提供する実施形態もある。たとえば、1つのそのようなハイブリッド手法では、モデルはサーバ上でホスティングされるが、ウェブブラウザモジュールは、クライアント上で動的にロードされ、その結果、モデルの相互作用およびビューイングロジックの一部が、クライアント上で動作するようにされる(したがって、より豊かで高速な相互作用およびビューを可能にする)。
【0025】
図3は、図2のパイプライン201のデータ部分300の多数の可能な実施形態のうちの1つを示す。データ部分300の機能の1つは、図4に関して述べるパイプラインの分析部分400によって理解されるスキーマと一貫する正規フォーマットでデータを供給することである。データ部分は、異種データ301にアクセスするデータアクセスコンポーネント310を含む。入力データ301は、そのデータがデータアクセスコンポーネント310に正規形式で提示される場合がある(が、そうである必要はない)という意味で「異種」とすることができる。実際に、データ部分300は、異種データをさまざまなフォーマットのものとすることができるように構成される。モデルによってアクセスでき操作できるさまざまな種類のドメインデータの例は、テキスト文書、XML文書、テーブル、リスト、階層(木)、SQLデータベースクエリ結果、BI(ビジネスインテリジェンス)キューブクエリ結果、さまざまなフォーマットの2Dドローイングおよび3Dビジュアルモデルなどのグラフィカル情報、およびその組合せ(すなわち、複合物)を含む。さらに、アクセスできるデータの種類を、アクセスされるデータの定義(たとえば、スキーマ)を提供することによって、宣言的に拡張することができる。したがって、データ部分300は、モデルへのさまざまな異種入力を許容し、アクセス可能なデータタイプのランタイムの宣言的拡張をもサポートする。
【0026】
一実施形態で、データアクセス部分300は、複数の異なるデータソースからデータを入手する複数のコネクタを含む。コネクタの主要な機能の1つは、対応するデータを正規形式にすることなので、そのようなコネクタは、しばしば、本明細書および図面で「カノニカライザ」と呼ばれる。各カノニカライザは、その対応するデータソースの特定のアプリケーションプログラミングインターフェース(API)の理解を有することができる。カノニカライザは、データをデータソースから読み取り、かつ/またはデータソースに書き込むためにその対応するAPIとインターフェースする対応するロジックをも含むことができる。したがって、カノニカライザは、外部データソースとデータのメモリイメージとの間で橋をわたす。
【0027】
データアクセスコンポーネント310は、入力データ301を評価する。入力データが、既に正規であり、したがって分析部分400によって処理可能である場合には、入力データを、分析部分400に入力される正規データ340として直接に供給することができる。
【0028】
しかし、入力データ301が正規ではない場合には、適当なデータ正規化コンポーネント330が、入力データ301を正規フォーマットに変換することができる。データ正規化コンポーネント330は、実際には、それぞれが特定の特性を有する入力データを正規形式に変換できる、データ正規化コンポーネント330のコレクションである。データ正規化コンポーネント330のコレクションは、4つの正規化コンポーネント331、332、333、および334を含むものとして図示されている。しかし、省略記号335は、他の個数の正規化コンポーネントも存在する可能性があり、おそらくは図示された4つより少数さえ存在する可能性があることを表す。
【0029】
入力データ301は、カノニカライザ自体ならびに相関されたデータ特性(1つまたは複数)の識別さえ含むことができる。次に、データ部分300は、相関されたデータ特性を登録し、正規化コンポーネントをデータ正規化コンポーネントコレクション330に供給し、このデータ正規化コンポーネントコレクション330で、その正規化コンポーネントを使用可能な正規化コンポーネントに追加することができる。これらの相関された特性を有する入力データが、その後に受け取られる場合に、データ部分310は、その入力データを相関された正規化コンポーネントに割り当てることができる。正規化コンポーネントを、ウェブ上の定義されたコンポーネントライブラリからなど、外部ソースから動的に見つけることもできる。たとえば、所与のデータソースのスキーマが既知であるが、必要なカノニカライザが存在しない場合には、そのカノニカライザを、外部コンポーネントライブラリから突き止めることができる(そのようなライブラリを見つけることができ、そのライブラリが必要なコンポーネントを含む場合に)。パイプラインは、そのスキーマがまだ知られていないデータを解析し、解析結果を既知のコンポーネントライブラリ内のスキーマ情報と比較して、データのタイプの動的判定を試み、したがって、必要なカノニカライザコンポーネントを突き止めることもできる。
【0030】
代替案では、入力データが正規化コンポーネントのすべてを含むのではなく、入力データが、その代わりに、正規化変換を定義する変換定義を提供することができる。次に、その変換定義を、0個以上の標準デフォルト正規化変換と一緒に変換を実施する対応する正規化コンポーネントに変換するように、コレクション330を構成することができる。これは、データ部分300が、入力データを消費するが、対応する正規化されたデータをパイプラインのさらに下に供給しない場合の例を表す。しかし、おそらくはほとんどの場合に、入力データ301は、対応する正規データ340が生成されることをもたらす。
【0031】
一実施形態では、データアクセスコンポーネント310を、入力データのファイルタイプおよび/またはフォーマットタイプを基礎としてデータ正規化コンポーネントに入力データを割り当てるように構成することができる。他の特性、たとえば入力データのソースを含めることができる。デフォルト正規化コンポーネントを、指定された対応する正規化コンポーネントを有しない入力データに割り当てることができる。デフォルト正規化コンポーネントは、入力データを正規化することを試みるためにルールのセットを適用することができる。デフォルト正規化コンポーネントが、データを正規化できない場合には、デフォルト正規化コンポーネントは、図2のオーサリングコンポーネント240をトリガして、入力データのスキーマ定義を提供するようにユーザに促すことができる。スキーマ定義がまだ存在しない場合には、オーサリングコンポーネント240は、入力データを正規形式に変換するのに使用できる対応するスキーマ定義を作成者が生成するのを助けるためにスキーマ定義アシスタントを提示することができる。データが正規形式になった後に、そのデータに付随するスキーマは、パイプライン201の残りがそのデータを解釈するために新しいコードを必要としなくなる、そのデータの十分な記述を提供する。その代わりに、パイプライン201は、アクセス可能なスキーマ宣言言語を表現可能なすべてのスキーマを考慮してデータを解釈できるコードを含む。
【0032】
データの1つのタイプは、図6に関して図示し、説明するデータストリームオブジェクト600などのデータストリームオブジェクトである。データストリームオブジェクト600は、そのデータストリームオブジェクトに関連するデータストリーム602内のある範囲を列挙できる列挙モジュール601を含む。その範囲は、実際にデータストリーム602の全範囲を含むことができる。その一方で、データストリーム602を、「擬似無限」または「部分的擬似無限」データストリームとすることができる。この説明および特許請求の範囲で、「擬似無限」データストリームは、データストリームオブジェクト600を扱っているコンピューティングシステムの揮発性メモリに完全に収まるには大きすぎるデータストリームである。「部分的擬似無限」データストリームは、そのデータストリームオブジェクトを扱っているコンピューティングシステムの揮発性メモリの少なくとも半分を占めるデータストリームと定義される。列挙モジュール601は、たとえば図2のデータ部分210、分析部分220、またはおよびビュー部分230など、外部モジュールからの要求に応答してデータストリームの一部だけを列挙することができる。列挙モジュール601は、データストリームの最初の要素から始まる列挙を要求することができる。その一方で、列挙モジュール601は、まずデータストリームの初めから列挙することなく、データストリームの任意の他の部分から始まる列挙を可能にすることができる(すなわち、列挙中央ストリームを可能にすることができる)。
【0033】
データストリームオブジェクト600は、データのストリームの要求されたメンバ要素に関連するプロパティに基づいて、データストリームの要求された部分(1つまたは複数)を識別できるものとすることができる。その場合に、データストリームオブジェクトは、要求を処理し、要求されたプロパティを有するデータストリームの全メンバ要素を識別するロジックを含むことができる。たとえば、要求を、特定の経度座標および緯度座標から下向きに見て1000フィート(304.8m)の高度から可視の都市のすべての要素に関するものとすることができる。その一方で、データストリームオブジェクトを、メンバ要素に関する要求を表すために応答できるものとすることもできる。
【0034】
一例として、擬似無限データストリームを、実際のまたは仮想の都市の記述であって、その都市内のすべてのアイテムの記述(これらのアイテムのすべての想像できるすべてのレベルの記述を含む)を含む記述とすることができる。その情報は、単純に、すべて同時にメモリ内で表すには多すぎる可能性がある。したがって、データストリームオブジェクト600は、現在のビューをレンダリングするのに必要な関連情報のみを提供することができる。たとえば、その都市が、100マイル(160km)の高度で見られている場合に、おそらくはその都市の境界情報だけが関連する。その都市の一部が、10マイル(16km)の高度で見られている場合に、おそらくは、より大きい物体(空港、公園、貯水池、および類似物などに関する情報だけが、ビュー内にある場合に限って提供され得る)。その都市の一部が、1マイル(1.6km)の高度で見られている場合に、おそらくは、ビュー内の街路およびビルディングをレンダリングするのに必要な情報が、データストリームオブジェクトによって提供される。その都市の一部が、1000フィート(304.8m)の高度で見られている場合に、おそらくは、街路のさらなる詳細(すなわち、レーン数、街路の名前、矢印など)およびビルディングに関するさらなる詳細(テクスチャおよび窓位置など)が提供される可能性がある。当然、このズームイン動作が発生する時には、情報は、ますます小さくなる地理的面積に関係する。100フィート(30.5m)ビューでは、データストリームは、低木、マンホール、側溝、階段、自動販売機、横断歩道、および類似物に関する情報を提供する可能性がある。そのデータの量は、従来のコンピュータが都市全体についてメモリ内に保持するにはむずかしい可能性がある。
【0035】
もう1つの例として、擬似無限データストリームが、フラクタルの場合のように、文字どおり無限である場合がある。フラクタルは、フラクタルの一部にどれほどズームインするかに無関係に、繰り返す形状が必ず見えてくるように数学的に定義される。必ず、さらに、さらに、際限なくズームインすることができる。同一のことが、ズームアウトにもあてはまる。そのようなフラクタルのジオメトリを文字どおりに表すことは、無限の量の情報を要するはずである。しかし、データストリームオブジェクトは、フラクタルが数学的にどのように定義されるのかに関する概念を有することができる。データストリームオブジェクトが、詳細の特定のレベルでフラクタルを作ることを求められる場合には、データストリームオブジェクトは、詳細のその特定のレベルにあてはまるデータを計算し、そのデータを提供することができる。
【0036】
したがって、擬似無限データオブジェクトは、詳細を定義する式を評価することによっておよび/またはデータストリームオブジェクトの外部のデータにアクセスすることによってのいずれかで、データの要求された範囲を生成することができる。そのような範囲は、パイプライン201の分析部分400に供給される階層データの例である。一実施形態で、データストリームオブジェクトと通信するプロトコルを、データストリーム自体がどれほど大きいのかにかかわりなく、同一とすることができる。したがって、作成者は、したがって、より小さいデータストリームオブジェクトに関連するデータストリームオブジェクトに関するモデルをテストすることができる。その後、他者がそのモデルを確信した後に、作成者は、モデル自体を変更する必要なしに、データストリームオブジェクトを、無限データストリーム、擬似無限データストリーム、または部分的擬似無限データストリームに関連するデータストリームオブジェクトに切り替えることができる。
【0037】
正規データ340の形にかかわりなく、正規データ340は、データ部分300からの出力データとして、および分析部分400への入力データとして供給される。正規データは、さまざまなデータタイプを含むフィールドを含むことができる。たとえば、フィールドは、整数、浮動小数点数、文字列、ベクトル、配列、コレクション、階層構造、テキスト、XML文書、テーブル、リスト、SQLデータベースクエリ結果、BI(ビジネスインテリジェンス)キューブクエリ結果、さまざまなフォーマットの2Dドローイングおよび3Dビジュアルモデルなどのグラフィカル情報などのデータタイプ、またはこれらのさまざまなデータタイプの複雑な組合せさえ含むことができる。別の利益として、正規化プロセスは、さまざまな入力データを正規化することができる。さらに、データ部分300が受け入れることのできるさまざまな入力データは、拡張可能である。これは、本明細書で後で述べるように、複数のモデルが組み合わされる場合に役立つ。
【0038】
図4は、図2のパイプライン201の分析部分220の例を表す分析部分400を示す。データ部分300が、正規化されたデータ401をデータモデルバインディングコンポーネント410に供給した。正規化されたデータ401は、任意の正規化された形および任意の個数のパラメータを有することができ、この形およびパラメータの個数は、入力データの部分ごとに異なることさえできる。しかし、議論のために、正規データ401は、フィールド402Aから402Hを有し、これらのフィールドを、本明細書で集合的に「フィールド402」と呼ぶ場合がある。
【0039】
その一方で、分析部分400は、複数のモデルパラメータ411を含む。モデルパラメータのタイプおよび個数は、モデルに従って異なるものとすることができる。しかし、特定の例の議論のために、モデルパラメータ411は、モデルパラメータ411A、411B、411C、および411Dを含むものとして議論される。一実施形態では、モデルパラメータのアイデンティティおよびモデルパラメータの間の分析的関係を、強制的コーディングを使用せずに宣言的に定義することができる。
【0040】
データモデルバインディングコンポーネント410は、正規化されたデータフィールド402とモデルパラメータ411との間に入って、これによってフィールドとパラメータとの間のバインディングを提供する。この場合に、データフィールド402Bは、矢印403Aによって表されるように、モデルパラメータ411Aにバインドされる。言い換えると、データフィールド402Bからの値が、モデルパラメータ411Aを設定するのに使用される。また、この例では、データフィールド402Eは、モデルパラメータ411Bにバインドされ(矢印403Bによって表されるように)、データフィールド402Hは、モデルパラメータ411Cにバインドされる(矢印403Cによって表されるように)。
【0041】
データフィールド402A、402C、402D、402F、および402Gは、モデルパラメータのいずれにもバインドされずに図示されている。これは、入力データからのデータフィールドのすべてが必ずモデルパラメータとして使用されることを要求されるのではないことを強調するためである。一実施形態では、これらのデータフィールドのうちの1つまたは複数を使用して、正規化されたデータからのどのフィールドが(この正規化されたデータまたはおそらくはすべての将来の類似する正規化されたデータについて)どのモデルパラメータにバインドされなければならないのかに関する命令をデータモデルバインディングコンポーネント410に提供することができる。これは、図2の分析部分220に供給できる分析データ221の種類の例を表す。正規化されたデータフィールドからのどのデータフィールドがどのモデルパラメータにバインドされるのかの定義を、複数の形で定式化することができる。たとえば、バインディングを、1)オーサリング時に作成者によって明示的にセットされる、2)使用時にユーザによって明示的にセットされる(作成者によって課せられるすべての制限の対象になる)、3)アルゴリズム的ヒューリスティックに基づくオーサリングコンポーネント240による自動的バインディング、および/または4)バインディングをアルゴリズム的に行うことができないと判定される時にバインディングを指定するように作成者および/またはユーザにオーサリングコンポーネントによって促すこととすることができる。したがって、バインディングを、モデルロジック自体の一部として解決することもできる。
【0042】
どのデータフィールドがどのモデルパラメータにマッピングされるのかを定義する、作成者の能力は、作成者に、モデルパラメータを定義するためにその作成者が快適であるシンボルを使用できるという点で高い柔軟性を与える。たとえば、モデルパラメータのうちの1つが圧力を表す場合に、作成者は、そのモデルパラメータに「Pressure(圧力)」もしくは「P」またはその作成者にとって意味をなす任意の他のシンボルという名前を付けることができる。作成者は、モデルパラメータの名前を変更することさえでき、これは、一実施形態で、データモデルバインディングコンポーネント410に、以前に古い名前のモデルパラメータへのものであったバインディングをその代わりに新しい名前のモデルパラメータにバインドすることを可能にするために自動的に更新させ、これによって、所望のバインディングを保存することができる。バインディングに関するこの機構は、バインディングをランタイムに宣言的に変更することをも可能にする。
【0043】
モデルパラメータ411Dは、この例でモデルパラメータ411Dがデータモデルバインディングコンポーネント410によって値を割り当てられなかったことを強調するために、アスタリスクと共に図示されている。したがって、モデルパラメータ411Dは、未知数のままになる。言い換えると、モデルパラメータ411Dは、値を割り当てられない。
【0044】
モデリングコンポーネント420は、複数の機能を実行する。まず、モデリングコンポーネント420は、モデルパラメータ411の間の分析的関係421を定義する。分析的関係421は、式431、ルール432、および制約433を含む3つのカテゴリに類別される。しかし、ソルバのこのリストは、拡張可能である。たとえば、一実施形態では、対応するシミュレーションエンジンが提供され、ソルバとして登録されるならば、1つまたは複数のシミュレーションを、分析的関係の一部として組み込むことができる。
【0045】
用語「式」は、本明細書で使用される時に、数学の分野で使用される時のこの用語と一致する。
【0046】
用語「ルール」は、本明細書で使用される時に、条件ステートメントを意味し、ここで、1つまたは複数の条件が満足される場合に(条件ステートメントの条件部分すなわち「if」部分)、1つまたは複数のアクションが行われなければならない(条件ステートメントの結果部分すなわち「then」部分)。ルールは、1つもしくは複数のモデルパラメータが条件ステートメント内で表される場合、または1つもしくは複数のモデルパラメータが結果ステートメント内で表される場合に、モデルパラメータに適用される。
【0047】
用語「制約」は、本明細書で使用される時に、制限が1つまたは複数のモデルパラメータに適用されることを意味する。たとえば、都市計画モデルで、特定の家屋要素が、全体的な可能な地域制指定のサブセットを有する地図位置での配置に制限される場合がある。橋要素が、ある最大長未満またはあるレーン数未満に制限される場合がある。
【0048】
モデルに馴染みのある作成者は、そのモデルにあてはまるこれらの式、ルール、および制約の表現を提供することができる。シミュレーションの場合に、作成者は、モデルパラメータの間の適当なシミュレーション関係を提供する適当なシミュレーションエンジンを提供することができる。モデリングコンポーネント420は、作成者が式、ルール、および制約の自然なシンボリック表現を提供するための機構を提供することができる。たとえば、熱力学関連モデルの作成者は、熱力学教科書から式を単純にコピーし、貼り付けることができる。モデルパラメータをデータフィールドにバインドする能力は、作成者が、その作成者に馴染みのあるどのシンボルでも(その作成者が頼る教科書で使用される正確なシンボルなど)またはその作成者が使用したいと思う正確なシンボルを使用することを可能にする。
【0049】
解く前に、モデリングコンポーネント420は、モデルパラメータのどれについて解くべきか(すなわち、以下では、単数の場合に「出力モデル変数(output model variable)」、複数の場合に「出力モデル変数(output model variables)」、単一のまたは複数の出力モデル変数があり得る場合に「出力モデル変数(1つまたは複数)(output model variable(s))」)をも識別する。出力モデル変数(1つまたは複数)は、未知パラメータとすることができ、または、既知のモデルパラメータの値が解く動作で変更の対象になる場合に既知のモデルパラメータとすることができる。図4の例では、データモデルバインディング動作の後に、モデルパラメータ411A、411B、および411Cは既知であり、モデルパラメータ411Dは未知である。したがって、未知のモデルパラメータ411Dを、出力モデル変数のうちの1つとすることができる。その代わりにまたはそれに加えて、既知のモデルパラメータ411A、411B、および411Cのうちの1つまたは複数を出力モデル変数にすることもできる。次に、ソルバ440が、可能な場合に、出力モデル変数(1つまたは複数)について解く。下で説明する一実施形態では、ソルバ440は、解く動作を実行するのを可能にするのに十分な入力モデル変数が提供される限り、単一のモデル内であっても、さまざまな出力モデル変数について解くことができる。入力モデル変数は、たとえば、その値が解く動作中に変更の対象にならない既知のモデルパラメータとすることができる。たとえば、図4で、モデルパラメータ411Aおよび411Dが入力モデル変数である場合に、ソルバは、その代わりに、出力モデル変数411Bおよび411Cについてその代わりに解くことができる。一実施形態で、ソルバは、単一のモデルパラメータについて複数の異なるデータタイプのうちの任意の1つを出力することができる。たとえば、いくつかの式動作(加算、減算、および類似物など)は、オペランドが整数、浮動小数点数、そのベクトル、またはその行列のいずれであるかにかかわりなく適用される。
【0050】
決して好ましい実施形態ではないが、ソルバ440が、複数のスプレッドシートがある(この複数のスプレッドシートが複数のタブ内の単一のスプレッドシートファイル内にあるかどうかおよび/またはこの複数のスプレッドシートが異なるスプレッドシートファイル内の単一のスプレッドシートファイル内にあるかどうかにかかわりなく)スプレッドシートプログラムによって実施される一実施形態がある。通常のスプレッドシートには、複数のセルがある。各セルは、リテラル値またはリテラル値に解決できる関連する式を有することができる。式の場合に、その式が、他のセルからの値に頼る場合があり、その値が、他のセルに関連する対応する式を介して潜在的に解かれた可能性がある。
【0051】
スプレッドシートは、入力モデルパラメータおよび出力モデルパラメータが既知である1方向で解く時に有効である。しかし、ソルバ440にあるとされる利益の1つは、どのモデルパラメータ(1つまたは複数)が入力パラメータ(1つまたは複数)として識別されるのかおよびどのモデルパラメータ(1つまたは複数)が出力モデルパラメータ(1つまたは複数)として識別されるのかに依存して異なる解決方向が使用可能にされ、入力モデルパラメータ(1つまたは複数)および/または出力モデルパラメータ(1つまたは複数)のアイデンティティが変化する時に解決方向がおそらくは解決ごとに変化することである。これには、スプレッドシートプログラムで、可能な解決方向ごとに異なるスプレッドシートを割り当てることによって対処することができる。たとえば、20個の可能な解決方向がある場合には、解決方向ごとに1つの、合計20個のスプレッドシートを設けることができる。
【0052】
各スプレッドシートは、その方向で解くための適当な式を有する適当にリンクされたセルを有する。この実施形態では、スプレッドシートプログラムの内部またはスプレッドシートプログラムの外部のいずれかのマクロまたは他の実行可能ファイルが、どのパラメータが入力パラメータであるのかおよびどれについて解くべきなのかを判定する際にモデリングコンポーネント420のために記述された関数を実行し、その解決方向を考慮して適当なスプレッドシートを選択し、選択された解決方向について適当なスプレッドシートフィールドを設定することができる。適当な入力パラメータフィールドが設定された後に、スプレッドシートは、出力モデルパラメータ(1つまたは複数)について解き、スプレッドシート内のリンクされた式を使用して適当な出力モデルパラメータフィールド(1つまたは複数)に値を設定する。しかし、スプレッドシート実施態様が、本明細書で説明される原理の好ましい実施形態ではないことを想起されたい。たとえば、数百個の可能な解決方向がある場合には、1つのスプレッドシートが各解決方向専用である実施形態に、数百個のスプレッドシートがある可能性がある。したがって、分析が、このスプレッドシート実施形態で変更される場合には、このスプレッドシート実施形態は、リンクされた分析式をどのように変更しなければならないのかを調べるためにスプレッドシートのそれぞれを手作業でふるいにかけることを伴う。この説明は、ここで、このスプレッドシート実施形態からより離れて焦点を合わせ、もう一度、ソルバ400機能性の一般的議論に移る。
【0053】
一実施形態では、ソルバ440が、特定の出力モデル変数について解くことができない時であっても、ソルバ400は、それでも、実際の数値結果(または何であれそれについて解かれるデータタイプ)への完全な解決が可能ではない場合であっても、出力モデル変数に関する部分的な解を提示する。これは、完全な解決に達するためにどの情報が必要なのかに関して作成者にプロンプトを出すことによって、パイプラインが増分開発を容易にすることを可能にする。これは、オーサ時と使用時との間の区別を除去するのを助けもする。というのは、少なくとも部分的な解決が、さまざまなオーサリングステージ全体を通じて使用可能であるからである。抽象的な例について、分析モデルが式a=b+c+dを含むと仮定する。次に、a、c、およびdが出力モデル変数であり、bが、5という既知の値(この場合には整数)を有する入力モデル変数であると仮定する。解くプロセスでは、ソルバ440は、出力モデル変数のうちの1つ「d」について解き、「d」と呼ばれるモデルパラメータに6(整数)という値を割り当てることだけができるが、ソルバ440は、「c」について解くことができない。「a」は「c」に依存するので、「a」と呼ばれるモデルパラメータも、未知数で、それについて解かれないままになる。この場合に、整数値を「a」に割り当てるのではなく、ソルバは、部分的な解決を行い、モデルパラメータ「a」に「c+11」というストリング値を出力することができる。前に述べたように、これは、ドメイン専門家が分析モデルを作成しつつある時に特に役立つ可能性があり、本質的に、モデルパラメータ「a」の内容に関する部分的情報を提供するように働き、「c」モデルパラメータについて解くことを可能にする、あるさらなるモデル分析が提供される必要があることの手がかり(キュー)を作成者に与えるようにも働く。この部分的な解決を、おそらく、ドメイン専門家が部分的結果を見ることを可能にするために、ある形でビュー構成内で出力することができる。
【0054】
ソルバ440は、図4では単純化された形で図示されている。しかし、ソルバ440は、図10から16に関して説明するように、複数の構成ソルバの動作を指示することができる。図4では、モデリングコンポーネント420が、モデルパラメータ411(現在は既知のそれについて解かれた出力モデル変数を含む)を、図5のビュー部分500に提供される出力として使用可能にする。
【0055】
図5は、図2のビュー部分230の例を表すビュー部分500を示す。ビュー部分500は、図4の分析部分400からモデルパラメータ411を受け取る。ビュー部分は、ビューコンポーネントのコレクションを含むビューコンポーネントリポジトリ520をも含む。たとえば、この例のビューコンポーネントリポジトリ520は、ビューコンポーネント521から524を含むものとして図示されているが、ビューコンポーネントリポジトリ520は、任意の個数のビューコンポーネントを含むことができる。ビューコンポーネントのそれぞれは、0個以上の入力パラメータを含むことができる。たとえば、ビューコンポーネント521は、入力パラメータを全く含まない。しかし、ビューコンポーネント522は、2つの入力パラメータ542Aおよび542Bを含む。ビューコンポーネント523は、1つの入力パラメータ543を含み、ビューコンポーネント524は、1つの入力パラメータ544を含む。とは言うものの、これは単なる例である。入力パラメータは、ビジュアルアイテムがどのようにレンダリングされるのかに影響することができるが、必ずそうである必要はない。ビューコンポーネント521が入力パラメータを含まないという事実は、モデルパラメータを全く参照せずに生成されるビューがあり得ることを強調するものである。変化しない固定された(組込み)データだけを含むビューを検討されたい。そのようなビューは、たとえば、ユーザの参照情報を構成することができる。その代わりに、モデルにインポートするためにアイテムをカタログから選択できるようにするために、カタログをブラウズする形を提供するだけのビューを検討されたい。
【0056】
各ビューコンポーネント521から524は、対応するビューコンポーネント入力パラメータ(1つまたは複数)がある場合にそれを使用してビュー構成コンポーネント540によって実行された時に、対応するビューアイテムを仮想空間550内に配置させる、対応するロジックを含むか、それに関連付けられる。その仮想アイテムは、静的なイメージもしくはオブジェクトとすることができ、または、動的にアニメートされるビジュアルアイテムまたはオブジェクトとすることができる。たとえば、ビューコンポーネント521から524のそれぞれは、実行された時にそれぞれ対応する仮想アイテム551から554を仮想空間550内にレンダリングさせる対応するロジック531から534に関連する。仮想アイテムは、単純な形状として図示されている。しかし、仮想アイテムは、形状において非常に複雑にすることができ、おそらくはアニメーションさえ含む。この説明では、ビューアイテムが仮想空間内でレンダリングされる時に、それは、レンダリングエンジンに供給された時にレンダリングエンジンがディスプレイ上で指定された位置に指定された形でビューアイテムを表示できる十分な命令をビュー構成コンポーネントが作成したことを意味する。
【0057】
ビューコンポーネント521から524を、おそらくは、たとえば図2のオーサリングコンポーネント240を使用してビュー部分500にビューデータとして提供することさえできる。ビューデータを、図6に関して上で説明したようにデータストリームオブジェクトによって提供される擬似無限データストリームまたは部分的擬似無限データストリームの範囲とすることさえできる。たとえば、オーサリングコンポーネント240は、作成者が複数の幾何的形から選択しまたはおそらくは他の幾何的形を構成することを可能にするセレクタを提供することができる。作成者は、ビューコンポーネントごとに入力パラメータのタイプを指定することもできるが、入力パラメータの一部を、ビュー部分500によって課せられるデフォルト入力パラメータとすることができる。各ビューコンポーネント521から524に関連するロジックに、ビューデータを与えることができ、かつ/または各ビューコンポーネント521から524に関連するロジックが、ビュー部分500自体によって提供されるあるデフォルト機能性を含むこともできる。
【0058】
ビュー部分500は、モデルパラメータのうちの少なくともいくつかをビューコンポーネント521から524の対応する入力パラメータにバインドするように構成されたモデル−ビューバインディングコンポーネント510を含む。たとえば、モデルパラメータ411Aは、矢印511Aによって表されるように、ビューコンポーネント522の入力パラメータ542Aにバインドされる。モデルパラメータ411Bは、矢印511Bによって表されるように、ビューコンポーネント522の入力パラメータ542Bにバインドされる。また、モデルパラメータ411Dは、矢印511Cによって表されるように、それぞれビューコンポーネント523および524の入力パラメータ543および544にバインドされる。モデルパラメータ411Cは、どの対応するビューコンポーネントパラメータにもバインドされずに図示され、すべてのモデルパラメータが、これらのモデルパラメータが分析部分で必須である場合であってもパイプラインのビュー部分によって使用される必要があるのではないことを強調する。また、モデルパラメータ411Dは、ビューコンポーネントの2つの異なる入力パラメータにバインドされて図示され、モデルパラメータを複数のビューコンポーネントパラメータにバインドできることを表す。一実施形態では、モデルパラメータとビューコンポーネントパラメータとの間のバインディングの定義を、1)オーサリング時に作成者によって明示的にセットされる、2)使用時にユーザによって明示的にセットされる(作成者によって課せられるすべての制限の対象になる)、3)アルゴリズム的ヒューリスティックに基づくオーサリングコンポーネント240による自動的バインディング、および/または4)バインディングをアルゴリズム的に行うことができないと判定される時にバインディングを指定するように作成者および/またはユーザにオーサリングコンポーネントによって促すことによって定式化することができる。
【0059】
やはり、好ましくはないが、ビュー部分500の一部またはすべてを、スプレッドシートによって実施することができる。たとえば、単一のスプレッドシートが、1つまたは複数のビューコンポーネントの基礎として働くことができ、そのビューコンポーネントのそれぞれの入力パラメータ(1つまたは複数)は、対応するスプレッドシートセル内で表される。ビューコンポーネントの関連するビューコンストラクションロジックを、少なくとも部分的にスプレッドシートプログラム内のリンクされた式を使用して表すことができる。スプレッドシートプログラムのレンダリング能力、マクロ、またはある他の実行可能プログラムを使用して、対応するビジュアルアイテムのレンダリングを完成させることができる。しかし、前に述べたように、このスプレッドシートベースの実施態様は、好ましい実施形態ではなく、したがって、この説明は、ビュー部分500のより一般的な実施形態に戻る。
【0060】
前に述べたように、ビューアイテムは、アニメーションを含むことができる。単純な例を挙げると、たとえば、ある会社の、販売地域による所与の時点(所与の暦四半期)の過去の収入、予測収入、広告宣伝費、および利益をプロットする棒グラフを検討されたい。棒グラフを、所望のタイムスパン内の暦四半期ごとに描くことができる。ここで、これらのグラフのうちの1つ、たとえば、タイムスパン内の最も古い時のグラフを描き、1/2秒おきにそれを次のタイムスパン(たとえば、次の四半期)のグラフに置換すると想像されたい。その結果は、地域ごとの利益、売上、および広告宣伝費を表す棒が、アニメーションが進行する時に高さにおいて変化するのを見ることである。この例では、時間期間ごとのグラフが、アニメーションの「セル」であり、セルは、動きの間の瞬間を示し、次々に示されるセルの集合は、動きをシミュレートする。従来のアニメーションモデルは、組込みのハードコーディングされたグラフタイプの経時的なアニメーションを可能にする。
【0061】
しかし、パイプライン201を使用すると、対照的に、すべての種類のビジュアルをアニメートすることができ、アニメーションを、ビジュアルコンポーネントのパラメータの任意の1つまたは任意の組合せを変更することによって駆動することができる。上の棒グラフの例に戻って、時間によるアニメーションではなく、広告宣伝費によるアニメーションを行うと想像されたい。このアニメーションの各「セル」は、広告宣伝費の所与の値に関する経時的な売上および利益を示す棒グラフである。したがって、広告宣伝費が変更される時に、棒は、広告宣伝費の変化に応答して伸び縮みする。
【0062】
アニメートされたデータディスプレイの威力は、それらが、どのパラメータが他のパラメータの変化に最も敏感であるのかを非常に目に見えるものにすることである。というのは、各パラメータの値がアニメーションパラメータの変更に応答してどれほど速くおよびどれほど大きく変化するのかが即座に見えるからである。
【0063】
また、パイプライン201は、次の特性に起因して、アニメーションを行う能力において区別される。
【0064】
第1に、アニメーション変数のステップのシーケンスを、事前定義の範囲にわたるステップの固定されたシーケンスであることに対して、モデルの分析によって計算することができる。たとえば、アニメーション変数として広告宣伝費を変更する例で、指定されるものが、「ステップごとに、広告宣伝費を5%だけ増やす場合の広告宣伝費によってアニメーションを行う」または「広告宣伝費がそのステップの総経費の10%である場合」であると想像されたい。はるかにより洗練された例は、「広告宣伝費が経時的な売上の変化の割合を最大化するように最適化された場合の広告宣伝費によってアニメーションを行う」である。言い換えると、ソルバは、売上の増加の割合が最大化されるように、経時的に(すなわち、四半期などの連続する時間期間ごとに)費やされる広告のステップのセットを判定する。ここで、ユーザは、おそらく、広告宣伝費を変更することによって売上をどれほど速く増やすことができるかを知りたいだけではなく、その成長を達成する広告宣伝費の四半期ごとの量をも知りたい(値のシーケンスを、複合ビジュアルの一部としてプロットすることができる)。
【0065】
第2に、伝統的なデータグラフだけではなく、すべての種類のビジュアルをアニメートすることができる。たとえば、a)対気速度パラメータによってアニメートされ、2)タービンの回転速度が対気速度の関数であり、3)タービンベアリングの温度が対気速度の関数である、ジェットエンジンのコンピュータ支援設計(CAD)モデルを検討されたい。ジェットエンジンは、タービンブレードが完全性を失うかベアリングが過熱するかのいずれかになる前にタービンをどれほど速く回転できるかに関する制限を有する。したがって、このアニメーションでは、我々は、対気速度が変更される時に、タービンブレードおよびベアリングの色が、青(安全)から赤(臨界)に変更されなければならないことを望む。「安全」および「臨界」のタービンRPMおよびベアリング温度の値は、これらの部品の物理的特性に基づいてモデルによって計算することができるであろう。ここで、アニメーションが、定義された範囲にわたって対気速度を変更する時に、我々は、タービンブレードおよびベアリングのそれぞれの色が変化するのを見る。ここで興味深いのは、どれが最初に臨界に達するのか、およびどちらかが臨界への突然の(制御がきかない)進行を経験するかどうかに注意することである。この種類の影響は、グラフまたは一連の図を見ることによって区別するのがむずかしいが、アニメーションでは即座に明白になる。これは、任意のパラメータ(対気速度)によって任意のビジュアル(CADモデル)をアニメートする1つの例にすぎず、アニメーションは、さらに他の任意のパラメータ(タービンRPMおよびベアリング温度)に影響する。任意のビジュアル(1つまたは複数)の任意のパラメータ(1つまたは複数)を、アニメーション変数として働く任意の所望のパラメータ(1つまたは複数)に従ってアニメートすることができる。
【0066】
第3に、パイプライン201を、データおよびパラメータをユーザによって変更できるようにするために、ストリームの途中で停止することができ、その後、アニメーションを、再開始するか再開することができる。したがって、たとえば、ジェットエンジンの例では、制御のきかない加熱が所与の対気速度で始まることがわかる場合に、ユーザは、その制御のきかない加熱が始まる点でアニメーションを停止し、ベアリングまたはベアリング表面材料の種類などのエンジン設計判断基準を変更し、その後、その変更の影響を見るためにアニメーションを継続することができる。
【0067】
本明細書で論じる他の能力と同様に、アニメーションを、作成者によって定義することができ、かつ/またはさまざまなシナリオをテストするためにユーザが操作するために残しておくことができる。たとえば、モデルを、ユーザ自身が選択するパラメータに従って、および/またはユーザが選択するアニメーション変数のデータ範囲にわたって、いくつかのビジュアルをユーザによってアニメートすることを可能にするように作成することができる(計算された範囲が望まれる場合に、その範囲を指定する能力を含む)。そのようなアニメーションを、他のwhat−if比較ディスプレイのように、並べて表示することもできる。たとえば、ユーザは、将来の異なる一般の金利または異なる広告宣伝費ランプ(advertising expenses ramp)を有する2つのシナリオで、時間によってアニメートされる経時的な売上および利益のアニメーションを比較することができる。ジェットエンジンの例では、ユーザは、ベアリング設計を変更する前と後との両方の場合のエンジンのアニメーションを比較することができる。
【0068】
この点で、ビュー構成を実際に構成するために構成フレームワークをどのように使用できるのかの特定の例を、図7に関して説明し、図7は、室内にレイアウトされた家具を有する部屋レイアウト701を含み、風水メータ702をも含むビュー構成の3Dレンダリング700を示した。この例は、単に、本明細書で説明される原理を、ドメインにかかわりなく任意のビュー構成にどのように適用できるのかを示すために提供される。したがって、図7の例および本明細書で説明されるすべての他の例のビュー構成は、本発明のより広い範囲を定義するのではなく、厳密に、非限定的な具体的な例を参照することによって抽象概念をより十分に理解することを可能にする例にすぎないと見なされねばならない。本明細書で説明される原理を、無数のさまざまなビュー構成を構築するために適用することができる。それでも、具体的な例の参照は、より広義の抽象的な原理を明瞭にすることができる。
【0069】
図8は、ビュー構成を生成する方法800の流れ図を示す。方法800を、図2のパイプライン環境200によって実行することができ、したがって、図2のパイプライン環境200を頻繁に参照すると同時に、それぞれ図2のパイプラインの特定の部分を示す図3から5を参照して、説明する。方法800を、任意のビュー構成を構築するために実行することができるが、方法800を、図7のビュー構成700に関して説明する。方法800の行為のいくつかは、図2のデータ部分210によって実行することができ、図8の左の列で見出し「データ」の下にリストされている。方法800の他の行為は、図2の分析部分220によって実行することができ、図8の左から2番目の列で見出し「分析」の下にリストされている。この方法の他の行為は、図2のビュー部分230によって実行することができ、図8の右から2番目の列で見出し「ビュー」の下にリストされている。方法800の行為の1つは、レンダリングモジュールによって実行することができ、図8の右の列で見出し「他」の下にリストされている。
【0070】
図8を参照すると、データ部分は、どのビジュアルアイテムが表示されるのかまたはビジュアルアイテムのうちの所与の1つまたは複数がどのように表示されるのかに少なくとも集合的に影響する入力データにアクセスする(行為811)。たとえば、図7を参照すると、入力データは、家具のアイテムのそれぞれのビューコンポーネントを含むことができる。たとえば、長椅子、椅子、植物、机、花、および部屋自体のそれぞれを、対応するビューコンポーネントによって表すことができる。ビューコンポーネントは、そのビューコンポーネントに適切な入力パラメータを有することができる。たとえば、アニメーションが使用される場合に、入力パラメータのいくつかが、アニメーションの流れに影響する場合がある。パラメータのいくつかが、ビジュアルアイテムの表示に影響する可能性があり、いくつかのパラメータが影響しない可能性がある。
【0071】
たとえば、部屋自体を、ビューコンポーネントとすることができる。入力パラメータのいくつかは、部屋の寸法、部屋の方位、壁の色、壁のテクスチャ、床の色、床のタイプ、床のテクスチャ、室内の光源の位置および強さなどを含むことができる。このビュー構成では必ずしも反映されないが、この部屋コンポーネントの他のビューおよび使用で反映される可能性がある部屋パラメータもある可能性がある。たとえば、部屋パラメータは、度、分、秒単位の緯度および経度で表された部屋の位置を有することができる。部屋パラメータは、部屋コンポーネントの作成者の識別および部屋の平均賃貸コストを含む可能性もある。
【0072】
室内のさまざまなコンポーネントを、対応するパラメータ化されたビューコンポーネントによって表すこともできる。たとえば、各植物を、鉢のスタイル、鉢の色、鉢の寸法、植物の色、植物の回復力、太陽光への植物の依存性、植物の毎日の水摂取量、植物の毎日の酸素産生、植物の位置、および類似物を指定する入力パラメータを用いて構成することができる。やはり、表示されているものの性質に依存して、これらのパラメータのいくつかは、ディスプレイがどのようにレンダリングされるのかに影響する可能性があり、他のパラメータは影響しない可能性がある。
【0073】
風水メータ702も、ビューコンポーネントとすることができる。このメータは、直径、メータの直径内に含まれるくさび形の個数、テキストの色、および類似物などの入力パラメータを含むことができる。風水メータのさまざまなくさび形も、ビューコンポーネントとすることができる。その場合に、それらのビューコンポーネントへの入力パラメータを、タイトル(たとえば、水、山、雷、風、火、地、沢、天)、おそらくはくさび形内に現れるグラフィック、色調、または類似物とすることができる。
【0074】
分析部分は、入力データをモデルパラメータにバインドし(行為821)、出力モデル変数を判定し(行為822)、出力モデル変数について解くためにモデルパラメータの間のモデル固有分析的関係を使用する(行為823)。行為821のバインドする動作は、上で述べたものであり、本質的に、モデル作成者が快適なシンボルを使用して作成者がモデル分析の式、ルール、および制約を定義することを可能にする際の柔軟性を可能にする。図10から16に関して説明するより複雑なソルバは、出力モデル変数について解く(行為823)ように働くことができる。
【0075】
出力モデル変数の識別は、解く動作ごとに異なる可能性がある。モデルパラメータが同一のままである可能性がある場合であっても、どのモデルパラメータが出力モデル変数であるのかの識別は、特定のモデルパラメータにバインドするためのデータの可用性に依存する。これは、ユーザが所与のビュー構成でwhat−ifシナリオを実行することを可能にすることに関して注目すべき密接な関係を有する。
【0076】
たとえば、図7の風水部屋の例で、ユーザが、彼らの居間に置くために新しい椅子を買ったと仮定する。ユーザは、部屋のデザインをパイプラインへのデータとして提供することができる。これを、部屋の寸法を入力し、おそらくは仮想部屋内の実際の家具が実際の部屋に配置される適当な位置にドラッグアンドドロップするためにユーザが仮想家具を選択することを可能にする選択ツールを提供するようにオーサリングコンポーネントがユーザに促すことによって、容易にすることができる。次に、ユーザは、ユーザによって購入された新しい椅子の特性を有するように編集できる1つの家具を選択することができる。次に、ユーザは、その椅子を部屋にドラッグアンドドロップすることができる。風水メータ702は、自動的に更新するはずである。この場合に、椅子の位置および他の属性が、入力モデル変数になり、風水スコアが、出力モデル変数になる。ユーザが、仮想椅子をさまざまな位置にドラッグする時に、風水メータの風水スコアは、更新し、したがって、ユーザは、仮想椅子をさまざまな位置に配置することの風水結果をテストすることができる。ユーザが、どれが最良の風水を与えるのかを調べるために可能なすべての位置に椅子をドラッグする必要を避けるために、ユーザは、椅子をその現在位置から特定の方向に移動することが状況をよりよくまたはより悪くするかどうか、およびどれほどよりよくまたはより悪くするのかをユーザに知らせるローカルな視覚的手がかり(たとえば、傾斜した線または矢印など)を得ることができる。
【0077】
しかし、ユーザは、従来のビュー構成には見られない他のことを行うこともできる。ユーザは、出力モデル変数を実際に変更することができる。たとえば、ユーザは、風水メータ内で所望の風水スコアを示し、出力モデル変数として仮想椅子の位置を残すことができる。その後、ソルバは、出力モデル変数について解き、少なくとも指定された風水スコアを達成する椅子の提案される1つまたは複数の位置を提供する。ユーザは、複数のパラメータを出力モデル変数にすることを選択することができ、システムは、出力モデル変数に対する複数の解決策を提供することができる。これは、図10から16に関してさらに詳細に説明される複雑なソルバによって容易にされる。
【0078】
図8に戻って、出力モデル変数について解かれた後に、モデルパラメータが、パラメータ化されたビューコンポーネントの入力パラメータにバインドされる(行為831)。たとえば、風水の例では、未知の風水スコアについて解かれた後に、スコアが、入力パラメータとして風水メータビューコンポーネントに、またはおそらくはそのメータに含まれる適当なくさび形にバインドされる。代替案では、風水スコアが入力モデル変数である場合に、仮想椅子の位置を、それについて解き、入力パラメータとして椅子ビューコンポーネントに提供することができる。
【0079】
どのようにしてソルバが式を再配置し、すべてが1つの分析モデルから駆動される入力モデル変数および出力モデル変数の指定を変更するのかの原理を示す単純化された例を、これから提示する。ユーザ自身が、式を再配置する必要はない。この単純化された例は、風水のルールを正確に表さない可能性があるが、それでも原理を示す。部屋の総合的風水(FS)(FSroom)が、椅子のFS(FSchair)および植物のFS(FSplant)と等しいと仮定する。FSchairが、定数Aと壁からの椅子の距離dとの積と等しいと仮定する。FSplantが、定数Bであると仮定する。部屋の総FSは、FSroom=A*d+Bである。dが入力モデル変数である場合には、FSroomは出力変数であり、メータ上に示されるその値は、ユーザが椅子の位置を変更する時に変化する。ここで、ユーザがメータをクリックし、これを入力変数にし、dを未知の出力モデル変数状況にすると仮定する。この場合に、ソルバは、上の式をd=(FSroom−B)/Aとして有効に内部的に書き直す。その場合に、ビューコンポーネントは、ユーザがメータ上で所望の値FSroomを変更する時に、椅子をあちこちに動かし、dすなわち壁からのその距離を変更することができる。
【0080】
次に、ビュー部分は、おそらくはビュー構成内のビューアイテムのコンストラクションを駆動するために、入力パラメータ(1つまたは複数)がある場合にその入力パラメータを使用してビューコンポーネントに関連するコンストラクションロジックを実行することによって、ビジュアルアイテムのビューを構築する(行為832)。その後、このビューコンストラクションを、レンダリングモジュールに供給することができ、その後、レンダリングモジュールは、そのビューコンストラクションをレンダリング命令として使用する(行為841)。
【0081】
一実施形態では、ビューを構築するプロセスが、ソルバによって実行されるデータ変換として扱われる。すなわち、所与の種類のビュー(たとえば、棒グラフを検討されたい)について、グラフィックスハードウェアを駆動するためにレンダリングソフトウェアが必要とする低水準ジオメトリおよび関連する属性のすべてを符号化する表示可能出力データ構造(シーングラフと呼ばれる)に入力データを変換することによってビューを生成する、ルール、式、および制約からなるモデルがある。棒グラフの例では、入力データは、たとえば、グラフタイトル、軸ラベルその他などのものの属性と一緒に、プロットされるデータ系列である。棒を生成するモデルは、1)何本の棒を描くべきかを判定するためにデータ系列が何個のエントリからなるのかを数え、2)各軸のスケールおよび開始値/終了値などを計算するためにデータ系列がまたがる範囲(最小、最大)を計算し、3)以前に計算されたスケール係数に基づいてデータ系列内のデータ点ごとに棒の高さを計算し、4)タイトルがグラフに関して正しく配置され、センタリングされるようにするためにタイトルの開始位置およびサイズを計算するためにグラフタイトル内に何個の文字があるのかを数えるなどを行う、ルール、式、および制約を有する。要するに、モデルは、入力データに基づいて幾何形状のセットを計算するように設計され、これらの幾何形状は、タイプ「シーングラフ」の階層データ構造内に配置される。言い換えると、シーングラフは、モデルが入力データに基づいてそれについて解く出力変数である。したがって、作成者は、その作成者が任意の種類のモデルを作成し、カスタマイズし、構成するのに使用するものと同一のフレームワークを使用して、完全に新しい種類のビューを設計し、既存のビューをカスタマイズし、前から存在するビューを複合物に構成することができる。したがって、プログラマではない作成者が、新しいコードを立案することなく新しいビューを作成することができる。
【0082】
図2に戻って、ユーザ相互作用応答モジュール250が、ユーザがビュー構成と相互作用する時を検出し、パイプラインに適当に応答させることを想起されたい。図9は、ビュー構成とのユーザ相互作用に応答する方法900の流れ図を示す。具体的に言うと、ユーザ相互作用応答モジュールは、ビューを再生成するためにパイプラインのどのコンポーネントがさらなる作業を実行すべきかを判定し、ユーザ相互作用を表すデータまたは少なくともユーザ相互作用に依存するデータをそのパイプラインコンポーネントに供給もする。一実施形態では、これが、逆(アップストリーム)ビュー/分析/データ方向に走り、(ダウンストリーム)データ/分析/ビューパイプラインに平行である、変換パイプラインを介して行われる。
【0083】
相互作用は、アップストリームパイプラインへイベントとしてポストされる。データ/分析/ビューパイプライン内の各トランスフォーマは、着信相互作用データを処理するアップストリームトランスフォーマを提供する。これらのトランスフォーマは、ヌル(パススルー、パスから外れて最適化される)またはさらにアップストリームに供給される相互作用データに対して変換動作を実行できるのいずれかとすることができる。これは、1)ソースデータに影響しないビュー操作などのアップストリーム変換に影響しない相互作用挙動を、パイプライン内の最も適当な(最もダウンストリームの)点で処理でき、2)中間トランスフォーマが、さらにアップストリームのトランスフォーマから最終的に来る最後の更新の前にヒューリスティック的に判定された更新をダウンストリームに送り返すことによってビュー更新性能を最適化できるという点で、パイプラインの向上する性能および応答性を提供する。たとえば、データ編集相互作用の受取時に、ビューレベルトランスフォーマは、ビューに関するシーングラフへ直接に即座のビュー更新を行うことができ(それが解釈の仕方を知っている編集について)、最終的な完全な更新は、アップストリームデータトランスフォーマから後に来、このアップストリームデータトランスフォーマでは、ソースデータが実際に編集される。
【0084】
所与のビュー相互作用のセマンティクスが、必要とされる基礎になるデータ編集への自明ではないマッピングを有する時には、中間のトランスフォーマが、必要なアップストリームマッピングを提供することができる。たとえば、計算結果のグラフ上の点をドラッグすることは、グラフ上の計算された値を供給する複数のソースデータアイテムの新しい値を計算する逆方向解決を要求することができる。ソルバレベルアップストリームトランスフォーマは、必要な解決を呼び出し、必要なデータ編集をアップストリームに伝搬させることができる。
【0085】
図9は、ビューコンストラクションとのユーザ相互作用に応答する方法900の流れ図を示す。ユーザがディスプレイ上のビュー構成のレンダリングと相互作用したことを検出する時に(行為901)、まず、ユーザ相互作用がビューの再生成を必要とするか否かが判定される(判断ブロック902)。これは、図2のユーザ相互作用応答コンポーネント250によって解釈されるイベントをレンダリングエンジンが送出することによって実行することができる。ユーザ相互作用が、ビューの再生成を必要としない場合に(判断ブロック902のNo)、パイプラインは、ビューを再構築するためにさらなるアクションを全く実行しない(行為903)が、レンダリングエンジン自体は、ビューに対するある変換を実行することができる。そのようなユーザ相互作用の例を、ユーザがビューコンストラクションのレンダリングのコントラストを高める場合またはビューコンストラクションを回転する場合とすることができる。これらのアクションは、レンダリングエンジン自体によって行うことができるので、パイプラインは、ユーザ相互作用に応答してビューを再構築するために作業を実行する必要がない。
【0086】
その一方で、ユーザ相互作用のタイプが、ビューコンストラクションの再構成を必要とすると判定される場合に(判断ブロック902のYes)、ビューは、パイプラインによって再構築される(行為904)。これは、パイプラインに供給されたデータのある変更を含むことができる。たとえば、風水の例で、ユーザが、仮想部屋内で仮想椅子の位置を移動し、したがって、仮想椅子コンポーネントの位置パラメータが、変更されると仮定する。イベントが点火され、仮想椅子の位置を表す対応するモデルパラメータも変更されなければならないことを分析部分に知らせる。次に、分析コンポーネントは、風水スコアについて再び解き、風水メータまたはくさび形の対応する入力パラメータを再設定し、風水メータに、椅子の新しい位置に適切な最新の風水スコアを用いて更新させる。
【0087】
ユーザ相互作用は、以前に既知であったモデルパラメータが、現在は未知であることと、以前に未知のパラメータが、現在は既知であることとを要求する場合がある。それは、以前に指定された入力モデル変数が出力モデル変数になり、その逆になる、入力モデル変数および出力モデル変数の指定の変更を必要とする可能性がある複数の可能な例の1つである。その場合に、分析部分は、新しい出力モデル変数(1つまたは複数)について解き、これによって、ビュー構成の再コンストラクションを駆動する。
【0088】
このタイプの再コンストラクションは、異なるデータによって駆動されるビュー構成の代替ビューを構築する際に役立つ。しかし、これは、あるビュー構成から次のビュー構成へのビューの遷移を発生させることによって、物語を話すことにも役立つ。伝統的に、この物語を話すことは、視覚化内のデータの複数の異なる構成のスナップショットを撮り(視覚化も異なることを意味する)、その後、これらのスナップショットをスライドの間の単純な遷移を有するスライドにすることによって行われてきた。
【0089】
しかし、この手法は、おそらくは風水の例の部屋の視覚化またはおそらくはトラクタなどの機械装置の複雑な部分の視覚化など、より洗練されたビジュアルをよくは得ない。グラフで使用される単純な視覚化とは異なって、実際の世界または他の洗練された視覚化では、変更できるものの多数の順列がある。さらに、ビジュアルに対する可能な変更内に連続体がある(たとえば、トラクタアームが複数の位置に連続的に移動することができ、そのアーム移動が、多数の他の要素の再位置決め(おそらくは連続的な)につながる可能性がある。または、おそらく、任意の個数の家具もしくは他の部屋要素が、あちこちに移動され、変更される場合がある。
【0090】
採用される別の手法は、ストーリーボードへの視覚化のスクリプト作成である。ここでの問題は、スクリプトをデータ駆動にすることがむずかしく、スクリプトが、ユーザが行えるデータおよびビジュアルの非常に多数の変更およびビジュアルに対する結果の伝搬される変更を、データおよびビジュアル内の制約および他の関係を尊重する形で予言し、可能にすることがむずかしいことである。
【0091】
その一方で、本明細書で説明されるパイプライン201を使用して構築される時には、非常に複雑なビュー構成を構築することができる。各ビュー構成を、複雑なシーンのストーリーボード内の1シーンとすることができる。ストーリーボードは、さまざまな可能な形のうちの1つでビュー構成を変更することによって、あるシーンから別のシーンに遷移することができる。たとえば、遷移は、次の遷移のうちの1いくつかまたはすべてを含むことができる。
【0092】
1)ビジュアル変換:この変換では、ビュー構成を駆動するデータが同一のままであることができるが、ビュー構成を構築するのに使用されるビューコンポーネントのセットが、変化することができる。言い換えると、データに対するビューが変化する。たとえば、データのセットは、温度と、風速と、落雷などの環境アクティビティのシーケンスを表す他のデータとを含む環境データを含むことができる。1つのシーンが、その環境を通って飛行する航空機の文脈でそのデータを明示することができる。ストーリーボード内の次のシーンは、完全に同一の環境条件にさらされる別の航空機について話すことができる。
【0093】
2)データ変換:ここでは、ビューコンポーネントは同一のままになる。言い換えると、ビューは同一に保たれるが、ビジュアルプロパティに影響するデータが変化し、これによって、ビューがどのようにレンダリングされるのかが変更される。たとえば、データが変化することができ、かつ/またはモデルパラメータへのデータのバインディングが変化する。
【0094】
3)座標系変換。ここでは、データとビューコンポーネントのセットとが、同一のままであることができるが、座標系が、ある座標系から別の座標系に変更される。
【0095】
4)ターゲット世界変換。ここでは、すべてが同一のままであることができるが、ターゲット仮想世界が変化する。たとえば、あるジオメトリを、別のジオメトリに重畳することができる。ジオメトリの例および重畳されたジオメトリを、後で提供する。
【0096】
ソルバフレームワーク
図10は、図4のソルバ440の例を表すことができるソルバ環境1000を示す。ソルバ環境1000を、ソフトウェア、ハードウェア、または組合せで実施することができる。ソルバ環境1000は、特殊化されたソルバのコレクション1010の動作を管理し、調整するソルバフレームワーク1001を含む。コレクション1010は、3つの特殊化されたソルバ1011、1012、および1013を含むものとして図示されているが、省略記号1014は、他の個数の(すなわち、3つより多いまたは3つより少ない)特殊化されたソルバがあることもできることを表す。さらに、省略記号1014は、特殊化されたソルバのコレクション1010が拡張可能であることをも表す。モデル分析についいて助けることができる新しい特殊化されたソルバが、発見されかつ/または開発される時に、これらの新しい特殊化されたソルバを、既存の特殊化されたソルバを補足するため、またはおそらくは既存のソルバのうちの1つもしくは複数を置換するために、コレクション1010に組み込むことができる。たとえば、図10は、新しいソルバ1015が、ソルバ登録モジュール1021を使用してコレクション1010に登録されようとしていることを示す。一例として、新しいソルバを、おそらくは、1つまたは複数の既知の値を受け入れ、1つまたは複数の未知の値について解くシミュレーションソルバとすることができる。他の例は、連立一次方程式、微分方程式、多項式、積分、ルートファインダ(root−finder)、ファクトライザ(factorizer)、オプティマイザなどのソルバを含む。すべてのソルバが、数モード、シンボリックモード、または混合−数シンボリックモードで働くことができる。解の数部分は、パラメータ化されたレンダリングダウンストリームを駆動することができる。解のシンボリック部分は、部分的解レンダリングを駆動することができる。
【0097】
特殊化されたソルバのコレクションは、出力モデル変数について解くのに適するすべてのソルバを含むことができる。たとえば、モデルが、自転車の抵抗を判定する場合には、複素微積分方程式を解くことを保証することができる。その場合に、特殊化された複素微積分ソルバを、おそらくは既存の式ソルバを補足するか置換するためにコレクション1010に組み込むことができる。一実施形態では、各ソルバは、特定の種類の分析関係において1つまたは複数の出力モデル変数について解くように設計される。たとえば、ある式の未知数について解くように構成された1つまたは複数の式ソルバがあるものとすることができる。未知数について解くためにルールを適用するように構成された1つまたは複数のルールソルバがあるものとすることができる。これによって未知数について解くために制約を適用するように構成された1つまたは複数の制約ソルバがあるものとすることができる。他のタイプのソルバは、たとえば、これによって対応する出力データを構築するために入力データを使用してシミュレーションを実行するシミュレーションソルバとすることができる。
【0098】
ソルバフレームワーク1001は、これによって1つまたは複数の出力モデル変数について解かせるために、コレクション1010内の特殊化されたソルバのうちの1つまたは複数またはすべての処理を調整するように構成される。次に、ソルバフレームワーク1001は、それについて解かれた値を1つまたは複数の他の外部コンポーネントに供給するように構成される。たとえば、図2を参照すると、ソルバフレームワーク1001は、パイプラインのビュー部分230にモデルパラメータ値を提供することができ、その結果、解く動作が、これによって、ビューコンポーネントがビューアイテムをレンダリングするためにどのように実行するのかに影響し、またはこれによってビューアイテムに関連する他のデータに影響するようになる。解くことのもう1つの潜在的な影響として、モデル分析自体を変更することができる。たとえば、これを実施できる多数の例のうちの1つとして、モデルを、変更可能なルールセットを伴って作成することができ、その結果、所与の解決中に、当初にインアクティブであるいくつかのルール(1つまたは複数)および/または制約(1つまたは複数)がアクティブ化され、当初にアクティブであるいくつかのルール(1つまたは複数)および/または制約(1つまたは複数)がインアクティブ化されるようになる。式を、この形で変更することもできる。
【0099】
図11は、ソルバフレームワーク1001がコレクション1010内の特殊化されたソルバの中で処理を調整する方法1100の流れ図を示す。図11の方法1100を、これから、図10のソルバ環境1000を頻繁に参照して説明する。
【0100】
ソルバフレームワークは、モデルパラメータのどれが入力モデル変数であるのかを識別すること(行為1101)と、モデルパラメータのどれが出力モデル変数であるのかを識別すること(行為1102)と、モデルパラメータの間の関係を定義するモデル分析を識別すること(行為1103)とによって解決動作を開始する。この情報を考慮して、ソルバフレームワークは、モデルパラメータ内の依存関係を分析する(行為1104)。モデルパラメータの固定されたセットを考慮し、モデル分析の固定されたセットを考慮しても、依存関係は、モデルパラメータのどれが入力モデル変数であり、モデルパラメータのどれが出力モデル変数であるのかに依存して変化する場合がある。したがって、システムは、解決動作が実行されるたびに、どのモデルパラメータが入力であるのかの識別を使用して、モデル分析に基づいて、依存関係グラフを推論することができる。ユーザが各解決の依存関係グラフを指定する必要はない。すべての解決動作について依存関係を評価することによって、ソルバフレームワークは、1つの解決動作中に1つまたは複数のモデル変数の1つのセットについて解き、次の解決動作中に1つまたは複数のモデル変数の別のセットについて解く柔軟性を有する。図2から5の文脈では、それは、ビュー構成との相互作用によってどれが入力でありどれが出力であるのかをユーザが指定するためのより高い柔軟性を意味する。
【0101】
いくつかの解決動作では、モデルが、出力モデル変数を全く有しない場合がある。その場合に、解決は、ひとまとめにされた既知のモデルパラメータ値のすべてが、そのモデルについて分析によって表されたすべての関係を満足することを検証する。言い換えると、任意の1つのデータ値が消去され、未知数にされ、解かれる場合に、消去された値は、モデルによって再計算され、前と同一になるはずである。したがって、ロードされたモデルが、解かれた形で既に存在する可能性があり、もちろん、未知数を有し、解決を得るモデルも、解かれた形で存在する。重要なものは、解かれたモデルのビューと相互作用するユーザが、それでも、ビューを編集することができ、これが、1つまたは複数のデータ値を変更するという影響を有する場合があり、したがって、データ値の新しいセットが分析と一貫するようにするために出力モデル変数のデータ値の再計算を試みる再解決を引き起こす場合があることでる。どのデータ値をユーザが編集できるか(モデルが出力モデル変数を伴って始まるか否か)は、作成者によって制御され、実際に、これは、どの変数が許容される未知数を表したかを作成者が定義することによって制御される。
【0102】
まず他の式内の他の未知数について解くことなく独立に解くことができる1つまたは複数の未知数を有する式がある場合に(判断ブロック1105のYes)、これらの式を、おそらくは他の解くステップと並列にさえ、いつでも解くことができる(行為1106)。その一方で、まず別の式内の未知数について解くことなく解くことができない式がある場合には、解決依存関係が見つかっている。その場合には、その式は、別の式に関する動作の特定の順序を定義する関係構造(依存関係ツリーなど)の一部になる。
【0103】
他の式からの相互に連結された解決依存関係を有する式の場合には、分析された依存関係に基づいて、特殊化されたソルバの実行の順序が判定される(行為1107)。次に、ソルバが、判定された順序で実行される(行為1108)。一例では、モデル分析が式、制約、およびルールとして表される場合に、実行の順序を、1)依存関係を有する式または独立の式として完全に解くことができるものではない式が、制約として書き直され、2)制約が解かれ、3)式が解かれ、4)ルールが解かれるとすることができる。ルールを解くことが、データを更新させる場合がある。
【0104】
ソルバが指定された順序で実行された後に、解くことを停止すべきか否かが判定される(判断ブロック1109)。たとえば、出力モデル変数のすべてについて解かれた場合、または、出力モデル変数のすべてについて解かれてはいないが、特殊化されたソルバが出力モデル変数のより多くについて解くためにそれ以上何もすることができない場合には、解くプロセスを停止しなければならない。解くプロセスを終了してはならない場合に(判断ブロック1109のNo)、このプロセスは、依存関係の分析(行為1104)に戻る。しかし、今回は、入力モデル変数および出力モデル変数のアイデンティティが、それについて解かれた1つまたは複数の出力モデル変数に起因して変化している場合がある。その一方で、解くプロセスを終了しなければならない場合に(判断ブロック1109のYes)、解決は終了する(行為1110)。しかし、出力モデル変数が多すぎるのでモデルを完全には解くことができない場合には、そのモデルは、それでも、部分的な解の生成に成功している可能性があり、この場合に、出力モデル変数は、解決がどれほど進行できたのかを反映するシンボリック値を割り当てられている。たとえば、モデルが式A=B+Cを有し、Bが、「2」であることがわかっており、入力モデル変数であるが、Cが出力モデル変数であり、Aも出力モデル変数であり、それについて解かれる必要がある場合には、モデルソルバは、Bは既知だがCが未知なので、Aの数値を作ることができず、したがって、ソルバは、完全な解決ではなく、Aの値として「2+C」を返す。したがって、どの追加変数が既知になる(それに値を供給することによってまたは他の入力データから必要な値を成功して作ることができるさらなるルール/式/制約またはシミュレーションを追加することによってのいずれかで)必要があるのかは、作成者には明白である。
【0105】
既知のモデルパラメータのいずれかの値の変化があったことをソルバフレームワークが検出するたびに、ならびに/または既知のおよび未知のモデルパラメータのアイデンティティが変化したことをソルバフレームワークが判定するたびに、この方法1100を繰り返すことができる。解くことは、少なくとも2つの形で進行することができる。第1に、モデルをシンボリックに完全に解くことができる場合(すなわち、すべての式、ルール、および制約をアルゴリズム的に書き直すことができ、その結果、計算可能な式が未知数ごとに存在するようになる場合)には、終了であり、その後、モデルが計算される。言い換えると、データ値は、未知数ごとに生成され、かつ/または調整が許可されるデータ値は、調整される。第2の可能な形として、モデルをシンボリックに完全に解くことができない場合には、モデルは、シンボリックに部分的に解かれ、その後、1つまたは複数の数値法を使用して必要な解をもたらすことができるかどうかが判定される。さらに、第1の場合であっても、数値法の使用が、シンボリック解決法の実行に対して、必要な値を計算するより高速の形である可能性があるかどうかが判定されるように、最適化ステップが行われる。シンボリック法がより高速である可能性があるが、シンボリック解決があまりに多数の項の書き直しおよび/またはあまりに多数のルール検索の書き直しを実行し、この方法を棄て、数値法を使用して解くことがより高速になる場合がある。
【0106】
図12は、図10のソルバ環境1000の例を表すソルバ環境1200を示す。この場合に、ソルバ調整モジュール1210は、入力モデル変数1201を受け取り、モデル変数1202(出力モデル変数を含む)が生成されるように、順方向ソルバ1221、シンボリックソルバ1222(または、「インバータ」)、および数値ソルバ1223を調整するように働く。順方向ソルバ1221、シンボリックソルバ1222、および数値ソルバ1223は、図10のソルバコレクション1010内にある可能性があるソルバの例である。
【0107】
ソルバ調整モジュール1210は、対応するモデル変数を有するモデル分析の依存関係グラフを維持する。解決動作ごとに、ソルバ調整モジュール1210は、モデル変数のどれが入力モデル変数であり、モデル変数のどれが出力モデル変数であり、したがってそれについて解かれなければならないのかを判定することができる。
【0108】
順方向ソルバ1221は、順方向に解けるようになるために正しく提示されたモデル分析を解く。たとえば、モデル分析内に1つの式A=B+Cだけがあり、BおよびCが入力モデル変数である場合には、BおよびCの値を式に入力し、Aの結果の値を判定することによって、Aについて、順方向解決を使用して解くことができる。
【0109】
シンボリックソルバ1222は、順方向に解けるようになるように、モデル分析を書き直す。たとえば、式A=B+Cにおいて、入力変数であるのが変数AおよびCであり、それについて解くべき出力変数が変数Bであると仮定する。この状況では、まずモデル分析を逆転する(この場合には、式を逆転する)ことなしに、モデル分析を順方向に解くことはできない。したがって、シンボリックソルバ1222は、式A=B+CをB=A−Cとして書き直す。今や、変数Bの値を得るために入力変数AおよびCが式B=A−Cに入力されるように、逆転された式を、順方向ソルバ1221による順方向解決にかけることができる。
【0110】
いくつかの式は、数学的に逆転可能ではなく、または、少なくとも、いくつかのタイプの式を逆転する方法はまだ発見されていない。さらに、式が逆転可能であるか、式をどのように逆転すべきかが知られている場合であっても、シンボリックソルバ1222が、単純に、式を逆転でない場合がある。または、おそらくは、数値的に解くことなどの他の解く方法に頼ることと比較して、シンボリックソルバ1222が式を逆転することが、単純に非効率的である。したがって、数値ソルバ1223は、モデル分析が正しく逆転可能ではない(逆転が不可能である、知られていない、またはシンボリックソルバによって使用可能にされないのいずれかのゆえに)場合に、モデル分析を使用してモデル分析を解くために提供される。
【0111】
ソルバ調整モジュール1210は、各解決動作を管理するように構成される。たとえば、図13は、モデル分析について解くことができるように解決を管理する方法1300の流れ図を示す。方法1300を、ソルバ調整モジュール1210の指示の下でソルバ環境1200によって管理することができる。
【0112】
ソルバ調整モジュール1210は、モデル分析のモデル変数のどれが特定の解決について入力変数(1つまたは複数)であり、モデル変数のどれが特定の解決について出力モデル変数(1つまたは複数)であるのかを識別する(行為1301)。たとえば、入力モデル変数および出力モデル変数が、図4でデータモデルバインダコンポーネント410によって定義される場合に、モデル変数の一定のセットを考慮しても、入力モデル変数および出力モデル変数のアイデンティティは、ある解決動作と次の解決動作とで変化する可能性がある。したがって、解決動作の調整は、ある解決動作と次の解決動作とで変化する可能性がある。たとえば、モデル分析の一定のセットを考慮しても、入力モデル変数に応じて、順方向解決が、ある解決動作に十分である場合があり、逆転および逆転された分析の順方向解決が、別の解決動作に十分である場合があり、おそらくは、数値解決が、さらに別の解決動作に十分である場合がある。
【0113】
しかし、パイプライン201の分析部分220の文脈で実施される場合には、モデル分析さえもが、前に述べたようにモデル分析が定式化されるかおそらくは他のモデル分析と組み合わされる時に変化する可能性がある。ソルバ環境1200は、変化がある時に必ず入力モデル変数および出力モデル変数を識別することと、すべての変化したモデル分析を計上することと、適当に解くこととによって、これらの変化を計上することができる。
【0114】
解決ごとに、入力モデル変数および出力モデル変数が識別(行為1301)された後に、ソルバ調整モジュール1210は、出力パラメータ(1つまたは複数)の順方向解決が、まずモデル分析を逆転することなく入力モデル変数(1つまたは複数)を考慮して実行されるべきか否かを判定する(判断ブロック1302)。順方向解決が実行されるべきである場合に(判断ブロック1302のYes)、順方向ソルバ1221が、モデル分析を順方向に解くようにされる(行為1303)。この順方向解決は、モデル分析全体の解決またはモデル分析の一部だけの解決とすることができる。後者の場合に、方法1300を、今回のみ、順方向解決でそれについて解かれるモデル変数を含む入力モデル変数のより完全なセットを用いて、もう一度実行することができる。
【0115】
出力パラメータ(1つまたは複数)の順方向解決が、少なくともまずモデル分析を逆転することなしではなく、特定の解決について実行すべきではないと判定される場合に(判断ブロック1302のNo)、次に、順方向解決を出力パラメータ(1つまたは複数)について解くことができるように、特定の解決についてモデル分析を逆転すべきか否かが判定される(判断ブロック1304)。モデル分析(またはモデル分析の少なくとも一部)を逆転すべきである場合に(判断ブロック1304のYes)、モデル分析が、シンボリックソルバによって逆転される(行為1305)。その後、逆転されたモデル分析について、順方向解決を使用して解くことができる(行為1303)。やはり、モデル分析の一部だけについてこの形で解く場合には、方法1300を、入力モデル変数の拡張されたセットを用いて、もう一度実行することができる。
【0116】
モデル分析を、特定の解決について逆転すべきではないと判定される場合に(判断ブロック1304のNo)、数値ソルバが、数値法を使用して出力変数(1つまたは複数)について解くことができる(行為1306)。やはり、モデル分析の一部だけについてこの形で解く場合には、方法1300を、入力モデル変数の拡張されたセットを用いて、もう一度実行することができる。
【0117】
したがって、どのモデル変数が入力であり、どのモデル変数がある解決動作から次の解決動作への出力であるのかにかかわりなく、さまざまなモデル分析について解くことができる、柔軟なソルバ環境1300を説明した。
【0118】
図14は、図10に示されたソルバフレームワーク1001によって実行できる別の方法1400の流れ図を示す。具体的に言うと、ソルバは、モデル変数について解き(行為1401)、このモデル変数は、ビュー構成のビューコンポーネントのプロパティを定義することができる。たとえば、ソルバは、未知のモデル変数について解くのに既知のモデル変数を使用することができる。いくつかの例で、既知のモデル変数は、ソルバが上で図10および11に関して述べた依存関係ツリーなどの関係構造の一部を形成する時など、別のソルバによって提供される出力である場合がある。
【0119】
解決動作は、正規データの実際の変化を引き起こす(行為1402)。ソルバがモデル変数について解いた後に、ビュー構成のビューコンポーネントのプロパティに、解かれたモデル変数の値がセットされる(行為1403)。たとえば、解かれたモデル変数を、図5に示されたモデルパラメータ411の一部として提供することができ、このモデルパラメータ411を、第1のビューコンポーネント520の入力パラメータ542にバインドすることができる。いくつかの場合に、解かれたモデル変数について解くのに使用された既知のモデル変数が、第1のビューコンポーネント520の別のプロパティを定義する場合がある。その場合には、既知のモデル変数および解かれたモデル変数を、第1のビューコンポーネント520のさまざまな入力パラメータ542にバインドすることができる。他の例では、既知のモデル変数が、第1のビューコンポーネントが第2のビューコンポーネントの親または子である時など、第2のビューコンポーネント520のプロパティを定義する場合がある。これらの他の場合には、解かれたモデル変数を、第1のビューコンポーネント520の入力パラメータ542にバインドすることができ、既知のモデル変数を、第2のビューコンポーネント520の入力パラメータ542にバインドすることができる。
【0120】
ビューコンポーネントのプロパティに解かれたモデル変数の値をセットした後に、ビューコンポーネントを含むビュー構成が、レンダリングされる(行為1404)。
【0121】
望まれる場合には、さまざまな環境を、方法1400に関連して使用することができる。たとえば、図15は、方法1400に関連して使用され得、ソフトウェア、ハードウェア、または組合せで実施され得る環境1500を示す。具体的に言うと、環境1500は、プロパティ−セッター1502a、1502b、1502cの一部を形成し、かつ/またはこれによって呼び出され得る1つまたは複数のソルバ1501a、1501b、1501cを含むことができる。ソルバ1501を、たとえば未知のモデル変数について解くのに既知のモデル変数を使用することによって、未知のモデル変数について解く(図14の行為1401)ように構成することができる。さらに、プロパティ−セッター1502は、ビューコンポーネントのプロパティに、解かれたモデル変数の値をセットすることができる(図14の行為1403)。しかし、プロパティ−セッター1502は、ソルバ1501を含む必要がなく、単純に既知のモデル変数を受け取り、その後、ビューコンポーネントのプロパティに受け取られたモデル変数の値をセットすることができる。
【0122】
図16は、図15に示された環境1500によって実行できるもう1つの方法1600の流れ図を示す。さらなる詳細で、環境1500の第1のプロパティ−セッター1502aが、呼び出される(行為1601)。第1のプロパティ−セッター1502aおよび他のプロパティ−セッター1502は、望まれる場合に、図5に示されたモデル−ビューバインディングコンポーネント510によって呼び出され、かつ/またはその一部を形成することができる。
【0123】
呼び出された後に、第1のプロパティ−セッター1502aは、ビュー構成のビューコンポーネントの第1のプロパティをセットする(行為1602)。たとえば、第1のプロパティ−セッター1502aは、第1のプロパティにモデル変数1503aの値をセットすることができる。いくつかの例で、第1のプロパティ−セッター1502aは、単純に既知のモデル変数1503aを受け取り、その後、受け取られたモデル変数の値を第1のプロパティにセットすることができる。他の例では、第1のプロパティ−セッター1502aは、モデル変数1503aについて解くことができるソルバ1501aを呼び出すことができ、その後、解かれたモデル変数の値を第1のプロパティにセットすることができる。
【0124】
第1のプロパティをセットすることに加えて、第1のプロパティ−セッター1502aは、第2のプロパティ−セッター1502bをも呼び出す(行為1603)。次に、第2のプロパティ−セッター1502bは、ソルバ1501bなどの、モデル変数について解くように構成され得るソルバを呼び出す(行為1604)。具体的に言うと、図15に示されているように、ソルバ1501bは、第2のプロパティ−セッター1502bによって呼び出され、かつ/またはその一部を構成することができ、呼び出された時に、ソルバ1501bは、未知のモデル変数1503bについて解くことができる。いくつかの例で、ソルバ1501bは、既知のモデル変数、たとえばモデル変数1503aを使用することによって、未知のモデル変数1503bについて解くことができる。たとえば、第1のプロパティ−セッター1502aが第2のプロパティ−セッター1502bを呼び出す(行為1603)時に、第1のプロパティ−セッター1502aは、モデル変数1503aを第2のプロパティ−セッター1502bに渡すことができる。その後、ソルバ1501bは、モデル変数1503aを使用することによって未知のモデル変数1503bについて解くことができる。もちろん、第1のプロパティ−セッター1502aが、モデル変数1503aを第2のプロパティ−セッター1502bに渡す必要はなく、第2のプロパティ−セッター1502bは、任意の他の適切な形でモデル変数1503aにアクセスすることができる。
【0125】
次に、第2のプロパティ−セッター1502bは、ビュー構成のビューコンポーネントの第2のプロパティに、たとえば解かれたモデル変数1503bの値をセットする(行為1605)。もちろん、いくつかの場合に、第2のプロパティ−セッター1502bは、単純に既知のモデル変数1503bを受け取ることができ、その後、第2のプロパティ−セッターは、受け取られたモデル変数の値を第2のプロパティにセットすることができる。したがって、第2のプロパティ−セッター1502bは、ソルバを呼び出すこと(行為1604)を必要としない。第2のプロパティ−セッター1502bが第2のプロパティをセットした後に、ビューコンポーネントを含むビュー構成が、レンダリングされる(行為1606)。
【0126】
いくつかの場合に、第1のプロパティおよび第2のプロパティを、ビュー構成の単一のビューコンポーネントのプロパティとすることができる。したがって、単一のビューコンポーネントのプロパティ−セッター1502a、1502bが、モデル変数1503a、1503bの値を第1のプロパティおよび第2のプロパティにセットすることができ(行為1602、1605)、したがって、モデル変数1503a、1503bが第1および第2のプロパティを定義することを可能にする。
【0127】
他の例では、第1のプロパティを、第1のビューコンポーネントのプロパティとすることができ、第2のプロパティを、第2のビューコンポーネントのプロパティとすることができる。したがって、第1のビューコンポーネントのプロパティ−セッター1502aは、モデル変数1503aの値を第1のプロパティにセットすることができ(行為1602)、したがって、モデル変数1503aが第1のプロパティを定義することを可能にする。さらに、第2のビューコンポーネントのプロパティ−セッター1502bは、モデル変数1503bの値を第2のプロパティにセットすることができ(行為1605)、したがって、モデル変数1503bが第2のプロパティを定義することを可能にする。望まれる場合に、第1のビューコンポーネントを、第2のビューコンポーネントの子または親にすることができ、第2のビューコンポーネントを、第1のビューコンポーネントの子または親にすることができる。
【0128】
したがって、図11に関して上で示したように、複数のソルバは、明示的な順序で構成され(行為1107)、その後、その順序に従って解かれる(行為1108)ものとすることができる。たとえば、ソルバを、依存関係ツリーなどの関係構造を使用して明示的に構成することができる。さらに、図14から16に関して示したように、複数のソルバを、ソルバ1501を有する他のプロパティ−セッター1502を呼び出す、ソルバ1501を有するプロパティ−セッター1502の能力に基づいて、暗黙のうちに構成することができる。
【0129】
複合ビュー構成
図2を参照すると、パイプライン環境200は、モデルインポート機構241をも含み、モデルインポート機構241は、おそらくはオーサリングコンポーネント240の一部として含まれる。モデルインポート機構241は、作成者が前から存在する分析駆動モデルの少なくとも一部を、ユーザが構築しつつある現在の分析駆動モデルにインポートすることを可能にするために作成者にユーザインターフェースまたは他のアシスタンスを提供する。したがって、作成者は、新しい分析モデルを作成する時に、必ず一から始める必要はない。インポートは、分析駆動モデル全体またはおそらくはそのモデルの一部のインポートとすることができる。たとえば、インポートは、次の6つの潜在的な影響の1つまたは複数またはすべてを引き起こすことができる。
【0130】
インポートの第1の潜在的影響として、追加のモデル入力データを、パイプラインに追加することができる。たとえば、図2を参照すると、追加のデータを、入力データ211、分析データ221、および/またはビューデータ231に追加することができる。追加のモデル入力データは、追加のコネクタが図3のデータアクセスコンポーネント310またはおそらくは異なる正規化コンポーネント330に追加されることを含むこともできる。
【0131】
インポートの第2の潜在的影響として、モデル入力データとモデルパラメータとの間の追加のまたは変更されたバインディングがある場合がある。たとえば、図4を参照すると、データモデルバインダ410は、正規化されたデータ401とモデルパラメータ411との間で追加のバインディングを発生させることができる。これは、既知のモデルパラメータの個数の増加を引き起こす場合がある。
【0132】
インポートの第3の潜在的影響として、モデルパラメータの補足セットを生成するための追加のモデルパラメータがある場合がある。たとえば、図4を参照すると、モデルパラメータ411が、インポートされたモデルの分析的挙動のインポートに起因して増補される場合がある。
【0133】
インポートの第4の潜在的影響として、モデルに追加される追加の分析的関係(式、ルール、および制約など)がある場合がある。第1の潜在的影響から生じる追加の入力データ、第2の潜在的影響から生じる追加のバインディング、第3の潜在的影響から生じる追加のモデルパラメータ、および第4の影響から生じる追加の分析的関係。これらの追加アイテムの任意の1つまたは複数を、ビュー構成に影響する追加のデータと見なすことができる。さらに、これらの影響の任意の1つまたは複数は、図4のソルバ440の挙動を変更することができる。
【0134】
インポートの第5の潜在的影響として、モデルパラメータとビューの入力パラメータとの間の追加のまたは異なるバインディングがある場合がある。たとえば、図5を参照すると、モデル−ビューバインディングコンポーネント510は、モデルパラメータ411の潜在的に増補されたセットを、ビューコンポーネントリポジトリ520内のビューコンポーネントの潜在的に増補されたセットにバインドする。
【0135】
インポートの第6の潜在的影響として、おそらくはビュー構成に追加される新しいビューアイテムをもたらす、図5のビューコンポーネントリポジトリ520に追加される追加のパラメータ化されたビューコンポーネントがある場合がある。
【0136】
したがって、別のモデルのすべてまたは一部をインポートすることによって、そのモデルに関連するデータが、インポートされる。ビュー構成はデータ駆動なので、これは、モデルのインポートされた部分が、現在のビュー構成に即座に組み込まれることを意味する。
【0137】
前から存在する分析駆動分析モデルの一部がインポートされる時には、パイプライン201に供給されるデータの変化が発生し、これによって、パイプライン201に、即座にまたはある他のイベントに応答して、ビュー構成の再生成を引き起こさせる。したがって、本質的に既存モデルからのコピーアンドペースト動作であるものの際に、その結果の複合モデルが、再解決動作に起因してディスプレイ上で即座に見られるようになる可能性がある。
【0138】
この特徴がどれほど有用になり得るかの例として、図7の風水部屋ビュー構成を検討されたい。このアプリケーションの作成者は、風水専門家とすることができ、標準的な部屋レイアウトビュー構成モデルから始めることを望む可能性がある。したがって、前から存在する部屋レイアウトモデルをインポートすることによって、風水専門家は、今や、瞬間的ではないとしても相対的にすばやく、図7に示されたディスプレイ上に示された部屋レイアウト701を見ることができる。それだけではなく、今や、標準的な部屋レイアウトビュー構成モデルに通常付属する可能性がある家具および部屋アイテムのカタログが、今や、図7の風水アプリケーションから使用可能になっている。
【0139】
ここで、風水専門家は、風水グラフ要素702をビルドするための基礎として基本的な円グラフ要素をインポートすることを望む可能性がある。しかし、今、風水専門家は、おそらくは合計8つのくさび形があることと、おそらくは各くさび形の背景イメージおよびタイトルとを含む、グラフ要素の特定の固定された入力パラメータを指定することができる。ここで、風水専門家は、モデルパラメータがどのように相互に関係付けられるのかを指定する分析的関係を指定することだけを必要とする。具体的に言うと、家具または他の部屋アイテムの色、位置、およびタイプが、特定の風水スコアに影響する可能性がある。専門家は、単純にこれらの関係を書き留めて、これによって部屋レイアウト601と風水スコアとを分析的に相互に連結することができる。他者の成果を足場とするこのタイプの共同作業能力は、問題を解決し、ビジュアル分析を可能にするアプリケーションを作成する際の想像力の巨大な波を生み出すことができる。これは、特に、ユーザが固定された依存関係グラフを使用して一方向データをビジュアルにプログラムすることを可能にすることができるシステムとよい対照をなす。これらのシステムは、一方向解決を行うことができ、その方向は、最初に入力から出力へプログラムされる。本明細書で説明される原理は、ユーザとの対話型セッションを与えられて、いつでも、何が既知であり何が未知であるのかに応じて、複数の形での解決を可能にする。
【0140】
ビジュアル相互作用
ビュー構成プロセスを、この点までで、ある時にレンダリングされる単一のビュー構成であるものとして説明した。たとえば、図7は、入力データのセットから生成された単一のビュー構成を示す。しかし、本明細書で説明される原理を、複数の成分ビュー構成を含む統合されたビュー構成がある例に拡張することができる。これは、複数の異なる状況で役立つ可能性がある。
【0141】
たとえば、入力データの単一のセットを考慮すると、ソルバ機構が出力モデル変数について解いている時に、複数の可能な解がある可能性がある。成分ビュー構成は、それぞれ、複数の可能な解のうちの1つを表すことができ、ここで、別の成分ビュー構成は、別の可能な解を表すことができる。
【0142】
もう1つの例では、ユーザは、単純に、入力データの特定のセットを使用して生成された以前のビュー構成を保持し、その後、これによって新しいビュー構成を生成するために新しいシナリオを試みるために入力データを変更することを望む場合がある。次に、ユーザは、その第2のビュー構成をも保持し、入力データをもう一度変更することによって第3の可能なシナリオを試みることを望む場合がある。次に、ユーザは、一時に1つのビュー構成を見ることだけによって得ることが他の形ではむずかしい可能性がある情報を入手するために、おそらくは並べた比較を介して、この3つのシナリオを同時に見ることができる。
【0143】
図17は、図7の風水の例から拡張する統合されたビュー構成1700を示す図である。この統合されたビュー構成では、図7の第1ビュー構成700が、正確に図7に示されているように、要素701および702を使用してもう一度表されている。しかし、ここでは、強調される第2のビュー構成が表されている。第2のビュー構成は、2つの要素すなわち部屋ディスプレイおよび風水スコアメータがあるという点で、第1のビュー構成に似ている。しかし、第2のビュー構成の入力データは、第1のビュー構成の入力データとは異なった。たとえば、この場合に、家具のアイテムのうちの複数の位置データが、異なり、これによって、第2ビュー構成の部屋レイアウト1701でのその位置を、第1ビュー構成の部屋レイアウト701の位置とは異なるものにする。しかし、さまざまな家具アイテムの異なる位置は、第2ビュー構成の風水メータ1702内の、第1ビュー構成の風水メータ702と比較して異なる風水スコアに相関する。
【0144】
統合されたビュー構成は、以前に作成されたビュー構成と現在表示されているビュー構成とのすべてのうちのいくつかにまたがる少なくとも1つのパラメータの値の比較をビジュアルに表す比較要素を含むこともできる。たとえば、図13では、表示されるビュー構成ごとに、おそらくはコストおよび配送時間を示す棒グラフがあるものとすることができる。そのような比較要素を、ビューコンポーネントリポジトリ520内の追加のビューコンポーネントとすることができる。おそらく、その比較ビュー要素は、表示される複数のビュー構成がある場合に限って表示される可能性がある。その場合に、比較ビュー構成入力パラメータを、モデルの異なる解く反復に関するモデルパラメータにマッピングすることができる。たとえば、比較ビュー構成入力パラメータを、図17の第1と第2とのビュー構成の生成の両方について生成されたコストパラメータにマッピングすることができ、第1と第2とのビュー構成の生成の両方について生成された配送パラメータにマッピングすることができる。
【0145】
図17を参照すると、使用可能な以前に構築されたビュー構成全体の選択されたサブセットをユーザがビジュアルに強調することを可能にする選択機構もある。選択機構1710は、サムネイルの形で示されるかある他の強調されない形で示される3つの可能なビューコンストラクション1711、1712、および1713を含むものとして図示されている。各サムネイルビュー構成1711から1713は、対応するチェックボックス1721から1723を含む。ユーザは、ビジュアルに強調されなければならないビュー構成に対応するチェックボックスにチェックマークを付けることができる。この場合に、チェックボックス1721および1723が、チェックマークを付けられ、これによって、より大きい形の対応するビューコンストラクションを表示させる。
【0146】
統合されたビュー構成は、またはそれに関してどの単一のビュー構成であっても、どのモデルパラメータがこれによって分析ソルバ機構による別の解決をトリガする未知数として扱われなければならないのかを指定するためにユーザがビュー構成と相互作用するための機構を有することができる。たとえば、図17の部屋ディスプレイ1701内で、家具の特定のアイテムを右クリックし、特定のパラメータ(たとえば、位置)を右クリックすることができ、ドロップダウンメニューが、現れることができ、そのパラメータを未知数として扱わなければならないことをユーザが指定することを可能にする。次に、ユーザは、調和パーセンテージ(たとえば、風水スコアメータ1702内の95%)を右クリックすることができ、その結果、ユーザが異なる調和パーセンテージを指定することを可能にするスライダが現れることができる(または、他のユーザ入力機構のテキストボックス)。これは、既知のパラメータおよび未知のパラメータのアイデンティティが変更されることをもたらすので、再解決が生じ、その位置が未知数として指定された家具のアイテムが、新しい位置に現れる可能性がある。
【0147】
相互作用ビジュアルキュー
一実施形態では、統合されたビュー構成は、ビジュアルアイテムに関連するビジュアルプロンプトまたはビジュアルキューを含むこともできる。ビジュアルキューは、1)関連するビジュアルアイテムと相互作用できること、2)そのビジュアルアイテムとのどのタイプの相互作用が可能であるのか、3)ビジュアルアイテムとの特定の相互作用が行われる場合に結果がどうなるのか、および/または4)1つもしくは複数の他のビジュアルアイテムとの相互作用が結果を達成するために必要であるかどうかのあるビジュアル表示をユーザに与える。
【0148】
前に図5を参照して述べたように、ビュー部分500は、複数のビューコンポーネント521、522、523、524を含むビューリポジトリ520を含む。ビューコンポーネントのいくつか522、523、および524は、対応する入力パラメータ(ビューコンポーネント522についてパラメータ542Aおよび542B、ビューコンポーネント523についてパラメータ543、ならびにビューコンポーネント524についてパラメータ544)内で設定される値によって駆動される。入力パラメータ(1つまたは複数)に供給されるデータは、そのデータがビジュアルアイテムのコンストラクションを制御するように、対応するビューコンポーネントの実行ロジックを駆動する。たとえば、ビジュアルアイテム522の構造は、入力パラメータ542Aおよび/または入力パラメータ542Bに供給されるデータに依存するものとすることができる。
【0149】
一実施形態では、所与のビューコンポーネントの入力パラメータの1つまたは複数を、相互作用パラメータとすることができる。その相互作用パラメータは、ビジュアルアイテムが相互作用を伴ってレンダリングされるか否かを定義することができる。その代わりにまたはそれに加えて、相互作用パラメータは、特定のタイプの相互作用を、対応するビューコンポーネントの実行ロジックを実行した結果として構築された対応するビジュアルアイテムに適用させることができる。少なくとも1つのそのような相互作用パラメータを含むビューコンポーネントを、以下では「ビジュアルキュー付き対話型(visually cued interactive)」ビューコンポーネントと呼ぶ。相互作用を可能にすることに加えて、相互作用パラメータに提供されたデータは、1)ビジュアルアイテムが対話型であることおよび潜在的に相互作用のタイプをユーザにビジュアルに知らせるために、対応するビジュアルアイテムが、レンダリングされる時に、どのようにビジュアルにキューを付けられるのかを定義することもできる。レンダリングされるビジュアルアイテムの1つ、いくつか、またはすべてさえ、この形で対話型とし、ビジュアルキュー付きとすることができる。
【0150】
ビジュアルアイテムによって提供できる複数の異なるタイプの相互作用がある。1つが、本明細書ではナビゲーション相互作用と呼ばれる。ユーザが、ビジュアルアイテムとナビゲーション的に相互作用する時に、レンダリングのためにビジュアルアイテムを構築するのに使用されるビューコンポーネントのサブセットが、変化する。
【0151】
たとえば、ナビゲーション相互作用の1タイプが、本明細書ではスコーピング相互作用と呼ばれる。スコーピング相互作用は、ナビゲーション相互作用の直前に表示されたビジュアルアイテムの少なくともいくつかが、ナビゲーション相互作用の直後にも表示されるように、レンダリングされるビジュアルアイテムのサブセットを相互作用的に変更する。たとえば、図5を参照すると、仮想空間500は、4つのビジュアルアイテム551、552、553、および554を含むものとして図示されている。ビジュアルアイテム552が、スコーピング相互作用を有する場合に、ユーザは、ビジュアルアイテム551および554がもはや仮想空間550内でレンダリングされなくなるように、ビジュアルアイテム552と相互作用することができる。しかし、ビジュアルアイテム552および553は、仮想空間550内に残ることができる。その代わりにまたはそれに加えて、さらなるビジュアルアイテムをビジュアル空間内に構築することができる。
【0152】
スコーピング相互作用の1タイプが、レンダリングのためにビジュアルアイテムを生成するのに使用されるビューコンポーネントの範囲を変更するスクローリング相互作用である。図18Aおよび18Bは、スクローリング相互作用の例を表す。図18Aは、スクローリング相互作用の前の仮想空間1800Aを表す。ここで、ビュー構成コンポーネント(図5を参照されたい)は、6つのビジュアルアイテム1811、1812、1813、1814、1818、および1816を構築した。ビジュアルアイテム1811は、このビジュアルアイテムが左スクロール相互作用を使用可能にされていることを示すビジュアルキュー(アスタリスク1801によって表される)で装飾されている。ビジュアルアイテム1816は、このビジュアルアイテムが右スクロール相互作用を使用可能にされていることを示すビジュアルキュー(アスタリスク1899によって表される)で装飾されている。図18Bは、右にスクロールするためのビジュアルアイテム1816とのユーザ相互作用の後の仮想空間1800Bを表す。ここでは、ビジュアルアイテム1811が、仮想空間から除去されている。さらに、新しいビジュアルアイテム1817が、仮想空間に追加されている。編集相互作用の例では、この場合のスクローリング相互作用は、ビジュアルアイテム1812が、左向きスクローリング相互作用が使用可能にされていることを表したビジュアルキューで装飾されることをも引き起こした。さらに、ビジュアルアイテム1816は、そのビジュアルキューおよび相互作用を失い、この相互作用は、その代わりにビジュアルアイテム1817に提供される。ビジュアルキューおよび相互作用機能性は、所与のビジュアルアイテムについて、対応するビューコンポーネントの入力パラメータ(1つまたは複数)を設定するために提供されるデータを単純に変更することによってイネーブルされ、ディスエーブルされ得る。
【0153】
別のタイプのスコーピング相互作用が、レンダリングのためにビジュアルアイテムを生成するのに使用されるビューコンポーネントの詳細のレベルを変更する「ディテーリング相互作用(detailing interactivity)」である。「ズームイン」相互作用は、おそらく以前のビジュアルアイテムのいくつかがビューから消えることと共に、ビジュアルアイテムのより特定の粒度が現れることを引き起こすことができる。「ズームアウト」相互作用は、おそらくアイテムの以前のより特定の粒度のいくつかが消えることと共に、ビジュアルアイテムのより粗い粒度が現れることを引き起こすことができる。たとえば、見える宇宙の地図でのズームインの場合に、銀河団が見え始める場合がある。その銀河団にズームインする場合に、個々の銀河が形をなし始める可能性がある。天の川銀河など、これらの個々の銀河の1つにズームインする場合に、個々の星が見え始める場合がある。太陽など、これらの星の1つにズームインする場合に、太陽の詳細が、ますます明白になる可能性があり、おそらくは惑星が見え始める。地球など、これらの惑星の1つにズームインする場合に、大陸などの大規模な地形学的特徴が現れる可能性がある。さらにズームインする場合に、国境が現れる可能性があり、その後、都市が現れる可能性があり、その後、街路が形をなす可能性がある。これは、原子を構成する粒子が形をなすまで継続する可能性がある。そのようなズームする地形での粒度の粗さは、宇宙のモデルのように、物理的に関係付けられる必要がない。他の地形を通ってナビゲートすることもでき、各スコーピング相互作用は、以前のビジュアルアイテムに消えさせ、新しいビジュアルアイテムに現れさせる。やはり、擬似無限データ系列の使用は、この動作を容易にすることができる。
【0154】
図19Aに、特定のディテーリング相互作用動作の前の例の仮想空間1900Aを示す。ここでは、表示され始める2つのビジュアルアイテム1911および1912だけがある。図19Bの仮想空間1900Bに見られるように、ビジュアルアイテム1911が拡大され、今や、いくつかのビジュアルアイテム1921および1922が、ビジュアルアイテム1911の内部にレンダリングされ、今や、ビジュアルアイテム1912は、ビューから外れている。これは、ズームイン相互作用の例である。ズームアウト相互作用の例について、図19Bの仮想空間1900Bから始めることができ、仮想空間1900Aは、ズームアウト相互作用の後の状態を表す。
【0155】
相互作用のタイプを、少なくとも1つのレンダリングされたフレーム(およびおそらくはディスプレイ全体)に、前に表示された完全に異なるビジュアルアイテムを表示させる、リンキング相互作用とすることもできる。たとえば、上の図7の風水部屋の例では、特定のビジュアルアイテム(風水メータ702など)をクリックすることが、風水に関するウェブページを風水部屋ビューの代わりに表示させることができる。その代わりに、おそらく、相互作用された場合に全く異なる部屋が現れることを引き起こすことができるビジュアルアイテムがある。
【0156】
相互作用のもう1つのタイプを、レンダリングされるビジュアルシーンと独立なアクションが行われることを引き起こす外部アクション相互作用とすることができる。たとえば、電子メールを送信させるか、アラームをセットし、データバックアップをスケジューリングし、性能チェックを実行するなどを行うことができるビジュアルアイテムと相互作用することができる。
【0157】
相互作用のタイプを、編集相互作用とすることもできる。編集相互作用は、1つまたは複数のビューコンポーネントの1つまたは複数の入力パラメータ値が変化する形でデータを変更する。その入力パラメータが、あるビジュアルアイテムがどのように構築されるのかに影響する場合には、そのビジュアルアイテムは、結果として変化する。データの変更は、入力モデルパラメータの値を変化させ、または入力モデルパラメータおよび/もしくは出力モデルパラメータのアイデンティティを変化させることもできる。したがって、ビジュアルアイテムに課せられる編集相互作用は、分析部分400の完全な再計算を引き起こすことができる。編集相互作用の複数の例を、これから提供する。
【0158】
図20は、連続的な米国のレンダリング2000を示す。米国ビジュアルアイテムを、1つのビューコンポーネントから構築することができる。しかし、構成する州を、それぞれ、対応する子ビューコンポーネントから構築することができる。その州に対応するビジュアルアイテムの高度は、その州のあるパラメータ(たとえば、評価される特定の製品の1人あたりの消費量)を表す。ここで、ニューメキシコビジュアルアイテム2001は、上に向かう矢印2011の形のビジュアルキューを有する。これは、ビジュアルアイテムの高さを変更できるようにニューメキシコビジュアルアイテム2001と相互作用できることをユーザに思い付かせる。また、それぞれ対応する下に向かう矢印2012および2013を有するネバダビジュアルアイテム2002およびフロリダビジュアルアイテム2003。これらの矢印は、ニューメキシコの矢印2011の高さの上向きの調整が、分析部分400を介するモデルの再分析の後に、ネバダビジュアルアイテム2002およびフロリダビジュアルアイテム2003の高さの下向きの調整を引き起こすことをユーザに視覚的に知らせることができる。その代わりにまたそれに加えて、矢印2012および2013は、ネバダビジュアルアイテム2002とフロリダビジュアルアイテム2003との高さの両方がユーザによって下向きに調整される場合に、ニューメキシコビジュアルアイテム2001の高さが上向きに調整されることを示すことができる。特定のユーザ相互作用の結果を判定するために、パイプライン201は、ユーザがレンダリングされたビジュアルアイテムとどのように相互作用できるのかを検討し、結果がどうなるのかを判定するために分析モデルのコンティンジェンシ解決(contingency solve)を実行することができる。
【0159】
図21は、関係付けられた棒グラフ2110および円グラフ2120を含むグラフ2100を示す。棒グラフ2110は、複数の棒を含む。棒の1つ2111Aは、この高さを垂直に調整できることを表すために矢印2111Bと共に図示されている。これは、円グラフ2120内のさまざまなくさび形の割当のある調整を引き起こす可能性がある。棒グラフ2110および円グラフ2120を、視覚的に合併することができる。たとえば、結果の円グラフが、その厚さが棒グラフの関連する棒の高さに依存するくさび形を含むことができる。
【0160】
図22は、ハリケーン2211の経路2201がグラフ化されつつあるハリケーンマッピンググラフ2200を示す。ビジュアルキュー2220は、ユーザが経路2101をたとえば経路2202に変更するために経路2201と対話型とすることができることを示す。これは、ユーザが、ハリケーンの経路に関する可能な代替の現実を評価することを可能にする。コントロール2221、2222、2223、および2224も、たとえば風速、温度、スピン、およびハリケーン移動速度などのハリケーンのさまざまなパラメータを変更することを可能にする。
【0161】
図7の風水の例では、特定の調和スコアが、既知の入力パラメータとして指定される場合に、家具のさまざまな位置を、その位置が未知数として指定された家具のアイテムについて提案することができる。たとえば、おそらく複数の矢印が、家具から発出し、より高い調和スコアを得るためにその家具を移動すべき方向、水スコアを最大にするために移動すべき異なる方向、最大限まで水スコアを移動するための異なる方向などを提案する。ビューコンポーネントは、特定のスコアを増やすために椅子を移動できる場合にシャドウを示すこともできる。したがって、ユーザは、最適化されることが望まれる特定のパラメータを中心としてデザインを改善するために、これらのビジュアルプロンプトを使用することができる。別の例では、おそらく、ユーザはコストを削減することを望む。ユーザは、最小化すべき未知数としてコストを指定することができ、提案される家具選択の異なるセットがもたらされる。
【0162】
図23は、複数のビジュアルアイテムを表示するユーザインターフェースと相互作用する方法の流れ図を示す。コンピュータは、前に説明したように、ディスプレイ上にデータ駆動ビジュアルアイテムをレンダリングする(行為2301)。データ駆動ビジュアルアイテムのそれぞれが、パラメータ化されたビューコンポーネントにデータを供給することによって定式化されることを想起されたい。そのデータは、データがパイプライン201の分析部分400に供給されることに応答して、またはデータがパイプライン201のデータ部分300に供給されることに応答して、分析モデルによって入手されたものとすることができる。さらに、ビジュアルアイテムの1つ、いくつか、またはすべてが、ビジュアルキューまたは他のビジュアル強調を有し(行為2302)、ビジュアルアイテムと相互作用できることおよび/または相互作用のタイプをユーザに伝える。一実施形態では、ビジュアルキューは、当初に、対応するビジュアルアイテムが対話型であることを表すのみであり、ビジュアルキューが相互作用のタイプを伝えるために変更されまたは補足されるのは、ユーザがビジュアルアイテムを選択した(ポインタを用いてビジュアルアイテム上でホバリングすることによって)後である。
【0163】
次に、コンピューティングシステムは、ユーザとビジュアルアイテムとの間の所定の物理的相互作用が発生したことを検出する(行為2303)。それに応答して、その特定のビジュアルアイテムについて相互作用がイネーブルされ、またはアクティブ化される(行為2304)。適当な応答は、その相互作用がナビゲーション相互作用、リンキング相互作用、または編集相互作用のどれであるのかに依存する。編集相互作用の場合に、結果は、パイプラインの分析部分400によって定義されるさまざまなビジュアルアイテムの間の分析的関係にも依存する。
【0164】
相互作用を、ナビゲーション相互作用、リンキング相互作用、および編集相互作用のうちの複数の組合せとすることができる。たとえば、図20の米国の例では、ニューメキシコビジュアルアイテム2001の高さの上向きの調整が、ネバダビジュアルアイテム2002およびフロリダビジュアルアイテム2003の高さの下向きの調整をもたらすことができる(編集相互作用の例を表す)。しかし、これが、3つのフレームがそれぞれ3つの州ネバダ、ニューメキシコ、およびフロリダのうちの1つにズームインする4つのフレームにディスプレイを分割することをももたらすこともできる(スコーピング相互作用の例)。さらに、第4のフレームは、ニューメキシコの住居の消費プリファレンスに関する調査情報を含むことができる(リンキング相互作用の例)。
【0165】
図24は、もう1つのアプリケーション例を表すユーザインターフェース2400を抽象的に示す。このアプリケーション例では、ユーザが本明細書で説明される原理を使用してデータ駆動ビジュアルシーンを簡単に構築することを可能にする便利なユーザインターフェースが説明される。
【0166】
ユーザインターフェース2400は、ビジュアルアイテム(1つまたは複数)の第1セット2411を含む。この図示の場合では、セット2411は、単一のビジュアルアイテム2411だけを含む。しかし、本明細書で説明される原理は、ビジュアルアイテムセット2411内の1つのみのビジュアルアイテムに限定されない。ビジュアルアイテム(1つまたは複数)2411は、関連するデータ2412を含み、したがって、本明細書で、時々「データビジュアルアイテム(1つまたは複数)」2411と呼ばれる。
【0167】
要求されないが、この例では、関連するデータが、複数のデータグループに副分割される。任意の個数のグループが、十分である。しかし、4つのデータグループ2413A、2413B、2413C、および2413Dが、図24の関連するデータ2412内に含まれるものとして図示されている。図示された関連するデータ2412内では、データグループのそれぞれが、それぞれが関連する複数のデータフィールドを有して平行に編成される。図示の場合では、図示された関連するデータ2412内のデータグループのそれぞれが、対応するフィールドa、b、およびcを含む。データグループ2413Aのフィールドa、b、およびcは、以下ではそれぞれデータフィールド2413Aa、2413Ab、および2413Acと呼ばれる。データグループ2413Bのフィールドa、b、およびcは、以下ではそれぞれデータフィールド2413Ba、2413Bb、および2413Bcと呼ばれる。データグループ2413Cのフィールドa、b、およびcは、以下ではそれぞれデータフィールド2413Ca、2413Cb、および2413Ccと呼ばれる。最後に、データグループ2413Dのフィールドa、b、およびcは、以下ではそれぞれデータフィールド2413Da、2413Db、および2413Dcと呼ばれる。
【0168】
ユーザインターフェース2400は、ビジュアルアイテムの第2セット2420をも含む。図示の場合では、セット2420は、3つの対応するビジュアルアイテム2421、2422、および2423を含む。しかし、第2セット2420内のビジュアルアイテムの個数に対する限定はなく、第2セット内のビジュアルアイテムが同一タイプのアイテムであるという要件もない。以下では、ビジュアルアイテム2421、2422、および2423を、「要素ビジュアルアイテム」と呼ぶ場合もある。各ビジュアルアイテム2421、2422、および2423を、たとえば、入力パラメータを使用してそれぞれのビューコンポーネントの対応するロジックを実行することによって構築することができる。そのようなビューコンポーネントは、ビューコンポーネント521から524について図5に関して説明したものに類似するものとすることができる。したがって、ビジュアルアイテム2421、2422、および2423のそれぞれは、入力パラメータを有するものとして図示されている。そのような入力パラメータを、ビューコンポーネントに供給される入力パラメータとすることができ、または、ビジュアルアイテムのレンダリングを駆動するある他の入力パラメータとすることができる。例としてのみ、ビジュアルアイテム2421、2422、および2423のそれぞれは、それぞれが3つの入力パラメータを有するものとして図示されている。具体的に言うと、ビジュアルアイテム2421は、入力パラメータ2421a、2421b、および2421cを有するものとして図示されている。ビジュアルアイテム2422は、入力パラメータ2422a、2422b、および2422cを有するものとして図示されている。ビジュアルアイテム2423は、入力パラメータ2423a、2423b、および2423cを有するものとして図示されている。
【0169】
ユーザインターフェース2400は、ユーザ相互作用機構2440をも含む。ユーザ相互作用機構2440は、ユーザが(1つまたは複数のユーザジェスチャを介して)データビジュアルアイテム(1つまたは複数)2411のデータ2412を要素ビジュアルアイテム2420の入力パラメータに適用させることを可能にする。一実施形態では、ユーザジェスチャ(1つまたは複数)は、実際に、関連するデータを要素ビジュアルアイテム2420の入力パラメータにバインドさせることができる。そのようなユーザジェスチャは、ドラッグまたはドロップ動作、ホバー動作、ドラッグアンドクリック、もしくは任意の他のユーザジェスチャ、またはジェスチャの組合せとすることができる。したがって、ユーザは、データビジュアルアイテム(1つまたは複数)2410からのデータを要素ビジュアルアイテムの入力パラメータに適用しまたはバインドすることができ、これによって、単純なジェスチャを使用して要素ビジュアルアイテムの外見を変更する。一実施形態では、これは、ユーザが関連するデータのいずれかを入力することすら含まず、ジェスチャの単一のセットがデータを複数の要素ビューアイテムに適用しかつ/またはバインドすることを可能にする。1つのデータビジュアルアイテムから複数の要素ビジュアルアイテムへデータを適用しまたはバインドするためのユーザジェスチャのユーザの例を、下でさらに説明する。
【0170】
一実施形態では、ユーザ相互作用機構2440は、1)データグループのそれぞれの1つのデータグループが、第2の複数のビジュアルアイテムの別個のビジュアルアイテムの1つまたは複数の入力パラメータのセットに適用され、2)複数のデータグループの各データグループからの同一タイプの単一のフィールドが、要素ビジュアルアイテムの別個のビジュアルアイテムの1つまたは複数の入力パラメータのセットの入力パラメータに適用されるように、ユーザがデータビジュアルアイテム2411からのデータ2412をデータグループごとの基礎で要素ビジュアルアイテム2420の入力パラメータに適用することを可能にする。
【0171】
例として、図24を参照すると、ユーザは、データビジュアルアイテム(1つまたは複数)2411のデータフィールド2413Aaを要素ビジュアルアイテム2421の入力パラメータ2421bに、データビジュアルアイテム(1つまたは複数)2411のデータフィールド2413Baを要素ビジュアルアイテム2422の入力パラメータ2422bに、およびデータビジュアルアイテム(1つまたは複数)2411のデータフィールド2413Caを要素ビジュアルアイテム2423の入力パラメータ2423bに、同時に適用しまたはバインドするためにジェスチャの単一のセットを使用することができる。第4の要素ビジュアルアイテムがある場合には、データフィールド2413Daが、第4要素ビジュアルアイテムの対応する入力パラメータに適用された可能性がある。
【0172】
ジェスチャのこの同一セットの結果として、またはおそらくはジェスチャの追加のセットに応答して、さらなるアプリケーションまたはバインディングを作ることができる。たとえば、ユーザジェスチャに応答して、データビジュアルアイテム(1つまたは複数)2411のデータフィールド2413Abを要素ビジュアルアイテム2421の入力パラメータ2421aに適用するかバインドすることができ、データビジュアルアイテム(1つまたは複数)2411のデータフィールド2413Bbを要素ビジュアルアイテム2422の入力パラメータ2422aに適用するかバインドすることができ、データビジュアルアイテム(1つまたは複数)2411のデータフィールド2413Cbを要素ビジュアルアイテム2423の入力パラメータ2423aに適用するかバインドすることができる。さらに、データビジュアルアイテム(1つまたは複数)2411のデータフィールド2413Acを要素ビジュアルアイテム2421の入力パラメータ2421cに適用するかバインドすることができ、データビジュアルアイテム(1つまたは複数)2411のデータフィールド2413Bcを要素ビジュアルアイテム2422の入力パラメータ2422cに適用するかバインドすることができ、データビジュアルアイテム(1つまたは複数)2411のデータフィールド2413Ccを要素ビジュアルアイテム2423の入力パラメータ2432cに適用するかバインドすることができる。
【0173】
ユーザインターフェース2400は、潜在的に、関連するプロパティ2431を有する第3ビジュアルアイテム2430をも含む。第2ユーザ相互作用機構2450は、1)各第2オフセット2420ビジュアルアイテムの1つまたは複数の入力パラメータが第3ビジュアルアイテム2430の関連するプロパティ2431を使用してセットされ、かつ/または2)第3ビジュアルアイテム2430のプロパティ2431がビジュアルアイテムの第2セット2420のそれぞれの1つまたは複数の入力パラメータを変更するのに使用されるように、ユーザがビジュアルアイテム2420の第2セットを第3ビジュアルアイテム2430に合併するのにジェスチャ(1つまたは複数)のセットを使用することを可能にする。これを達成するのに使用されるジェスチャは、ドラッグアンドドロップ動作、ホバー動作、または任意の他のユーザジェスチャとすることができ、全体的にまたは部分的に、データビジュアルアイテム(1つまたは複数)2410からのデータを要素ビジュアルアイテム2420に適用するのに使用されたものと同一のユーザジェスチャを使用して達成された可能性がある。
【0174】
たとえば、ビジュアルアイテムの第2セット2420と第3ビジュアルアイテム2430とを合併するのに使用されるユーザジェスチャ(1つまたは複数)(すなわち、ジェスチャ(1つまたは複数)の第2セット)が、データビジュアルアイテム(1つまたは複数)2411からのデータを要素ビジュアルアイテム2420の入力パラメータに適用するかバインドするのに使用されるユーザジェスチャ(1つまたは複数)(すなわち、ジェスチャ(1つまたは複数)の第1セット)と少なくとも部分的にオーバーラップする場合に、ジェスチャ(1つまたは複数)の第1セットとジェスチャ(1つまたは複数)の第2セットとの両方内に、少なくとも1つの共通のジェスチャがある。しかし、これは、全く必要ではない。実際に、ジェスチャの第1セットとジェスチャの第2セットとの間に共通のジェスチャ(1つまたは複数)がない場合がある。したがって、要素ビジュアルアイテム2420をビジュアルアイテム2430と合併するのと比較して、別個のユーザアクションを使用してデータビジュアルアイテム2411からのデータを要素ビジュアルアイテム2420に適用することができる。
【0175】
一実施形態では、データビジュアルアイテム(1つまたは複数)2411を、それぞれ、図5のビューコンストラクションモジュール521から524を使用して図5で構築されたビューアイテムに似たものとすることができる。その場合に、関連するデータ2412を、対応するビューコンポーネントの入力パラメータ(1つまたは複数)に供給されるデータとすることができる。この関連するデータ2412を、ユーザが関連するデータに関するビューを有することを可能にする、ビジュアルアイテム自体内のビジュアルとして表面に出すことさえできる。ビジュアルアイテム2430も、ビューコンストラクションモジュール521から524を使用して構築されたビジュアルアイテムに似たものとすることができる。その場合に、おそらく、ビジュアルアイテム2430のプロパティ2431の1つまたは複数を、対応するビューコンポーネントの入力パラメータを使用してセットすることができる。
【0176】
要素ビジュアルアイテム2420の入力パラメータへのデータビジュアルアイテム(1つまたは複数)2411の関連するデータ2412の適用は、分析モデルに再び解かせることができる。たとえば、図4は、パイプライン200の分析部分400を説明する。関連するデータ2412の適用を適用することによって、要素ビジュアルアイテム2420の入力パラメータをさらに再設定するために再計算される必要があるデータが生じる可能性がある。さらに、要素ビジュアルアイテム2420を第3ビジュアルアイテム2430に合併することは、これによってビジュアルアイテム2420または2430の入力パラメータを変更するために分析部分400の再解決を引き起こす可能性もある。
【0177】
もちろん、図24は、ユーザインターフェースの抽象的な表現である。ユーザが要素ビジュアルアイテムに適用されるデータビジュアルアイテム(1つまたは複数)の関連するデータを指定することを可能にし、要素ビジュアルアイテムを別のより高いレベルのビジュアルアイテムと合併することを可能にするユーザインターフェースのより具体的な例を、これから図25から29に関して提示する。
【0178】
図25は、その中で螺旋2530が提示されるユーザインターフェース2500を示す。螺旋2530は、第3ビジュアルアイテム2430の具体的な例である。この場合に、螺旋2530のプロパティ(プロパティ2431の例)を、曲率半径、ピッチ(または上昇の角度)、色、線の厚さ、線の断面プロファイル、巻き線の長さ、開始角度などとすることができる。プロパティのそれぞれを、たとえば、実行された時に螺旋をレンダリングするコンストラクションロジックを有する螺旋ビュー構成要素に供給される入力プロパティとすることができる。螺旋形状タイプを、ユーザインターフェースの作業面2501にドラッグアンドドロップすることができる複数の形状のうちの1つとすることができる。螺旋は、その入力パラメータに、作業面にドラッグされる時にデフォルト値を設定されるものとすることができるが、これらのデフォルト値を変更させることができる。
【0179】
ユーザは、別々の立方形オブジェクト2521を作業面にドラッグすることもできた。立方形オブジェクト2521は、図24の要素ビジュアルオブジェクト2421の例である。立方形オブジェクト2521は、通常、お互いに平行または垂直の6つの長方形の側面を有する。立方形オブジェクト2521が、螺旋2530以外の、作業面の別の部分にドラッグされた場合には、立方形オブジェクト2521は、これらの基礎的な立方形の特性を保持した可能性がある。しかし、この場合には、ユーザは、立方形オブジェクト2521と螺旋2530とが合併されることをジェスチャで示した(おそらくは、ポインタ2550を使用して立方形2521を螺旋2530の一部の上にドラッグすることを介して)。この場合に、立方形2521は、その中心線が螺旋に従うように、その入力パラメータを調整される。これは、螺旋ビジュアルアイテムと合併される要素ビジュアルアイテムのタイプ(たとえば、この場合には立方形)を定義するための機構とすることもできる。
【0180】
この合併動作を考慮して、図26は、ユーザインターフェースのこの特定の例の別のステージ2600を示す。ここでは、ユーザが、データビジュアルアイテム2610、この場合には、おそらくはスプレッドシート文書を獲得した。スプレッドシート文書2610は、図24のデータビジュアルアイテム2411の例である。このスプレッドシート文書は、さまざまな精神治療薬をリストしたテーブルを含む。データは、完全に虚構であるが、この例を示すために提供される。第4列2614は、行ごとに1つの薬の名前をリストするが、この例では、このフィールドは、単純にデータが虚構なので空白である。第3列2613は、各行に対応する薬のカテゴリをリストする。第1列2611は、各行に対応する薬が処方使用について承認された開始日(年)をリストする。第2列2612は、各行に対応する薬が使用について承認された期間(年)をリストする。開始日、期間、カテゴリ、および名前は、図24の関連するデータ2412のデータグループのフィールドの例である。スプレッドシート文書2610の行は、図24の関連するデータ2412のデータグループの例である。
【0181】
ここで、入力データテーブル2620が現れて、どの入力パラメータが設定のターゲットであるものとして選択されたのかをユーザに示す。ユーザは、「螺旋上の位置」入力パラメータを設定するために第1列2611(すなわち、開始日フィールド)を選択した。立方形ビジュアルアイテムが、データグループごと(グラフ2610内の行ごと)に生成される。プレビュー2630は、螺旋2530を示すが、複数の立方形要素および螺旋の合併された版がどのように見えるのかのプレビューを伴う。
【0182】
図27は、ユーザインターフェース2700を示す。ここで、ユーザは、さまざまな立方形が、切り取られるのではなく、積み重ねの基礎として働く螺旋(今は不可視)と共に他の立方形の上に積み重ねられることを選択した。積み重ねられた立方形2710は、要素ビジュアルアイテムの例を表す。螺旋ビジュアルアイテムのプロパティが、各立方形の入力パラメータによって継承されたことに留意されたい。さらに、データビジュアルアイテム2610からのデータは、各立方形によって継承された。たとえば、立方形の積み重ね内の各立方形は、対応する薬の開始日に対応する螺旋上の位置を使用して構築された。各立方形の長さは、対応する薬の期間によって継承される。さらに、立方形は、螺旋から位置プロパティおよび曲率プロパティを継承する。
【0183】
図28は、完全なビジュアルシーンを示す。このユーザインターフェース2800では、色を、対応する薬のカテゴリに従って各立方形に割り当てることができる。したがって、対応する薬の開始日は、螺旋内の曲がった立方形の開始位置を定義する。たとえば、ユーザは、スプレッドシートビジュアルアイテム2411からの開始日データを立方形ビジュアルアイテムに適用するために、1)スプレッドシートの第1列を選択し、2)その列を入力パラメータテーブル2620の「螺旋上の位置」セクションにドラッグするというジェスチャを使用した可能性がある。さらに、対応する薬の期間は、螺旋内の曲がった立方形の長さを定義する。たとえば、ユーザは、スプレッドシートビジュアルアイテム2411からの期間データを立方形ビジュアルアイテムに適用するために、1)スプレッドシートの第1列を選択し、2)その列を入力パラメータテーブル2320の「長さ」セクションにドラッグするというジェスチャを使用した可能性がある。最後に、対応する薬のカテゴリは、螺旋内の曲がった立方形の色を定義する。ユーザは、スプレッドシートビジュアルアイテム2411からのカテゴリデータを立方形ビジュアルアイテムに適用するために、1)スプレッドシートの第1列を選択し、2)その列を入力パラメータテーブル2620の「色」セクションにドラッグするというジェスチャを使用した可能性がある。ユーザは、状況を考慮して、データのどのビジュアル表現が最良であるのかを知るために、入力パラメータフィールドの異なるセクションにスプレッドシートの異なるフィールドをドラッグアンドドロップすることができる。
【0184】
本明細書で説明されるこれらの原理を使用して、複雑なジオメトリを、他のビジュアル要素およびジオメトリを用いて構築し、構成することができる。ジオメトリの構成を理解するために、4つの主要な概念を、まず説明する。主要な概念は、1)データ系列、2)形状、3)次元セット、および4)ジオメトリを含む。
【0185】
まず、データ系列を説明する。データ系列は、データに対するラッパーである。データ系列オブジェクトの例は、図6に図示され、図6に関して説明された。データ系列オブジェクトは、データ自体ではない。しかし、データ系列は、データをどのようにして列挙すべきかを知っている。たとえば、図6を参照すると、列挙モジュール601は、データストリームオブジェクトに対応するデータ系列を列挙する。さらに、データ系列は、プロットの範囲、量子化、および分解能を宣言する属性を有する。データ系列によってラップされ得るデータタイプの例は、テーブル列、テーブル内の繰り返す行、階層、次元階層などを含む。
【0186】
形状を、正規ビュー構成から構築された正規ビジュアルアイテムとすることができる。そのような正規ビジュアルアイテムの例は、たとえば、点、棒、角柱、泡、表面パッチ、イメージファイル、2次元または3次元の形状などを含む。しかし、形状を、データからの正規コンストラクションとすることができる。そのようなデータからの正規コンストラクションの例は、ラベルを含む。その代わりに、形状を、データ系列および形状を用いてジオメトリを設定した結果とすることができる(用語ジオメトリは、下でさらに説明される)。
【0187】
正規形状は、複数の形状を処理するためにジオメトリの「バインダ−アレンジャ(binder−arranger)」(下で説明される)をパラメータ化することを潜在的に可能にするメタデータを担持する。このメタデータは、やはり下で説明される「レイアウトヘルパ」のヒントをも提供する。メタデータは、形状が直線または曲線のどちらであるのか、形状が平坦または体積を占めるのどちらであるのか、形状がある次元に関して対称であるのかどうか、形状がテキスト的な意味(たとえば、ラベル)形状で読まれる必要があるのかどうか、形状を着色しまたはテクスチャに重畳できるのかどうかなど、形状の諸態様を示す。
【0188】
形状が、絶対次元を有するのではなく、オプションでその次元での比率を指定できることに留意されたい。たとえば、角柱は、その高さHのある最小パーセンテージである基部LおよびWを有するように指定され得る。形状は、オプションで、たとえば2つの棒の間の最小距離など、その形状の複数のインスタンスをどのようにレイアウトできるのかにおける制約を指定することができる。
【0189】
次元セットに関して、これは、座標系から区別される。次元セットは、視覚化されるデータの次元と同数の次元を含む。次元は、通常のユークリッド軸x、y、およびzならびに時間tより多数とすることができる。次元セットでは、いくつかを、ユークリッド(たとえば、デカルト座標もしくは極座標x、y、z、または高さのzを伴う地図座標)とすることができる。後に、ジオメトリによって使用される時に、これらのユークリッド軸の影響は、形状インスタンス系列(Shape Instance Series)内の形状が、いくつかの座標で適当なスケーリング、変換、および分配を伴ってどのように挿入されまたは変換されるのかを詳細に叙述し、制御することである。他の次元は、クラスタ化および積み重ねなどのレイアウト効果を介して明示される。さらに他の次元は、アニメーションまたは運動速度など、より高いビジュアル次元を含むことができる。
【0190】
例として、既存の国を含むビジュアルアイテムを検討されたい。このビジュアルアイテムは、それぞれ、形状(国の形状を記述する)およびその国の中央の極座標に対応することができる。国の色に従ってレンダリングされるデータ系列もある場合がある。たとえば、青は、その国で対外援助に費やされる少量のリソースを表すことができる。赤は、その国で対外援助に費やされる、より大量のリソースを表すことができる。
【0191】
もう1つの次元をアニメートすることができる。たとえば、各国に関連する独楽があるものとすることができる。各国のその独楽次元を、政治的安定性スコアがどのようにして導出されるのかにかかわりなく、その国の政治的安定性に関するデータを用いて設定することができる。より低い政治的安定性を有する国は、より遅い動きおよびより大きい不安定とを伴ってアニメートされる独楽を有することができる。より高い政治的安定性を有する国は、より速い動きおよびより少ない不安定とを伴ってアニメートされる独楽を有することができる。他の非ユークリッド次元は、テクスチャを含むことができる。
【0192】
次元セットは、可視性/条件隠蔽、スクロール可能性、チルト、ラベリング、副分割、プロット可能な粒度、許容される範囲(たとえば、負数が許容されるかどうか)などの宣言を含むことができる。
【0193】
「ジオメトリ」は、1つのコンテナおよび1つまたは複数のバインダ−アレンジャからなる。
【0194】
コンテナに関して、ジオメトリは、その中でデータが形状によって視覚化されるコンテナのビジュアル要素/レイアウトの記述を含む。たとえば、最も単純な可能な棒グラフは、境界長方形の形状、コンテナの2/3D次元での均整(その代わりに、絶対次元)、座標系(たとえば、デカルト)を指定する。より洗練された視覚化は、追加の概念を指定することができる。たとえば、地図は、座標系内のどこに形状を配置できるのかを制限するジオメトリ内の副分割(ゾーン、街路など)を指定することができる。四分図は、そのデカルト軸が負値、色、テクスチャ、透明度、および他の制御可能なビジュアルパラメータに対処することを指定することができる。
【0195】
コンテナは、オプションで、対応するバインダ−アレンジャ内で必要なインテリジェンスの重要な部分を(しばしばソルバベースの)レイアウトヘルパの小さいセットに要因としてわけることを潜在的に可能にするメタデータを指定することができる。このメタデータは、たとえば、ユークリッド軸(さらなる軸タイプがある)が直線または曲線のどちらであるのか、コンテナが平坦または体積を占めるのどちらであるのか、コンテナがある次元に関して対称であるのかどうか、その他など、コンテナの諸態様を示す。
【0196】
第2に、ジオメトリは、1)データ値をどのようにして形状の次元属性(たとえば、高さ)またはビジュアル属性(たとえば、色)にマッピングするのか、および/またはデータ値に基づいて形状のセットからどのようにして選択すべきかを記述するDataShapeBindingParamsに、渡されたデータ系列およびオリジナルの形状(1つまたは複数)を適用することによって、形状インスタンス系列をどのように生成すべきか、2)渡された軸セットをコンテナの座標系およびコンテナの他のビジュアル要素(積み重ね、クラスタ化、着色、動きなど)にどのようにマッピングすべきか、3)ShapeAxisBindingParamsに従って、コンテナにマッピングされた1つまたは複数の次元上に形状インスタンス系列をどのようにレイアウトすべきか、ならびに4)たとえば線を接続するか小さいサーフェス−レット(surface−let)またはパッチから連続面を作成するために、必要な場合にレイアウトされた形状の間でどのように補間すべきかを知っている「バインダ−アレンジャ」の宣言を、それと共に担持する。
【0197】
設定されたジオメトリ(すなわち、1つまたは複数のデータ系列および対応する形状を用いてインスタンス化されたジオメトリ)自体を、別のジオメトリに渡すために形状として扱うことができる。たとえば、積み重ねられ/クラスタ化された棒グラフでは、最も内側のジオメトリは、最も単純なコンテナすなわち他の棒をその中で積み重ねることができる棒を有する。最も内側のジオメトリを設定することは、第2のジオメトリに進む形状をもたらし、この第2のジオメトリでは、コンテナが、棒のクラスタである。最後に、第2のジオメトリを設定することから生じる形状は、最も外側のジオメトリに供給され、この最も外側のジオメトリは、水平軸に沿って形状をどのようにレイアウトすべきかを知っており、y軸上でその高さを示しもする。
【0198】
上の積み重ねられ/クラスタ化された棒グラフの例では、最も内側のジオメトリは、高さだけを有し、第2のジオメトリは、(ソートされたまたはソートされていない)クラスタ化を有し、最も外側のジオメトリは、単純な(すなわち、積み重ねられていない)垂直次元および単純な(すなわち、クラスタ化を知らない)水平次元を有した。しかし、複合的な積み重ねられ/クラスタ化された棒グラフを、3つの態様すなわち積み重ねを知っている高さ次元、クラスタ次元、および水平X次元を有する次元セットにおいて解釈できる単一のジオメトリとして扱うこともできる。
【0199】
レイアウトヘルパは、アルゴリズムまたはソルバに頼り、含むジオメトリ内の形状の「正しい」または「最適の」位置ならびに形状の間の補間を判定するのを助ける。上で述べたように、レイアウトヘルパというアイデアは、バインダ−アレンジャ内の特異性を減らすためのものである。2種類のレイアウトヘルパすなわち、特定のバインダ−アレンジャのレベルで呼び出されるローカルレイアウトヘルパと、含むジオメトリ全体(その間に、ジオメトリ内の複数のB−Aのプッティング形状(B−A’s putting shape)の結果を含む)を調べるグローバルレイアウトヘルパとがある。
【0200】
したがって、パイプラインは、さまざまなドメインにまたがる複雑な相互作用を可能にする。
【0201】
追加の例のアプリケーション
図1および2のアーキテクチャは、ドメインにかかわりなく、無数のデータ駆動分析モデルを構築することを可能にすることができる。これらのドメインに関して似ている必要があるものは、全くない。ビジュアルに対して分析を適用することが役立つ可能性がある、解かれるべき問題がある場合には必ず、本明細書で説明される原理が、有益になる可能性がある。ここまででは、風水部屋レイアウトアプリケーションを含む少数の例のアプリケーションだけが、説明された。本明細書で説明される原理の広い範囲にわたる適用可能性を示すために、複数の追加の広い範囲にわたる多様な例のアプリケーションを、これから説明する。
【0202】
追加の例#1−小売業者棚配置
製品セールスマンは、しばしば、棚配置、エンドディスプレイ、および新しい販売促進を小売業者に売り込むために、3D視覚化を使用する。パイプライン201を用いて、セールスマンは、現場でwhat−ifを行うことができる。ある製品配置を与えられ、最小限の毎日の売上/リニアフットしきい値を考慮して、セールスマンは、最小限の必要な手元の在庫を計算し、視覚化することができる。逆に、ある手元の在庫を与えられ、隔週の補充サイクルを考慮して、セールスマンは、所望の売上/リニアフットを与える製品配置を計算することができる。小売業者は、影響を視覚化し、シナリオを比較し、利益を比較することができる。図29は、例の小売業者棚配置視覚化を示す。入力データは、製品のビジュアルイメージ、製品の個数、製品ごとに割り当てられるリニア平方フィート単位の面積、および製品ごとの棚番号などを含むことができる。図29の例は、仮想世界内のグラフの適用を示す。ここでは、プランシート2901および棚レイアウト2902を、棚レイアウト2902の変化がプランシート2901に影響し、逆も同様になるように分析的に関係付けることができる。
【0203】
追加の例#2−都市計画
都市計画マッシュアップは、顕著になりつつある。本明細書で説明される原理を使用して、分析を、そのような解決策に統合することができる。都市計画立案者は、専門家によって作成されたトラフィックモデルを開き、道路改善のギャラリから橋をドラッグする。この橋は、長さ制約および暴風動作制限などの分析的挙動をそれと共に持ってくる。適当な視覚化を介して、立案者は、異なる橋タイプおよび配置のトラフィックに対する影響を見、比較する。本明細書で説明される原理を、地図がさまざまな目的のためのものである可能性がある任意の地図シナリオに適用することができる。地図を、地域の将来を理解し、ある位置への指示を見つけるためのものとすることができる。地図を、地域化されたデータを比較するための視覚的背景とすることもできる。より最近に、地図は、ビルディング、インテリア、および任意の2Dオブジェクトもしくは3Dオブジェクトを地図内でオーバーレイするか位置決めすることのできる仮想世界を作成するのに使用されつつある。図30は、例の視覚化された都市計画を示す。やはり、グラフを、仮想世界(この例では1都市)の地図と機能的におよび分析的に統合できることに留意されたい。グラフが変化する時に、仮想世界も変化することができ、逆も同様である。
【0204】
追加の例#3−ビジュアル教育
ドメイン実務家だけではなく公衆によって複雑なデータが理解される必要がある科学、医学、および人口統計などのドメインでは、作成者は、本明細書で説明される原理を使用して、大衆の好奇心をそそり、引き込むデータ視覚化を作成することができる。作成者は、ドメイン固有メタファを使用し、作成者のスタイルのセンスを分け与える。図31は、子供の教育に関する図である。図32は、人口密度に関する従来の図である。従来、そのような視覚化は、静的な図にすぎない。本明細書で説明される原理を用いると、これらが、生きた対話型経験になることができる。たとえば、入力データとして地理的に分布する増加パターンを入力することによって、ユーザは、人口ピークが変化するのを見ることができる。作成されたモデルがこれをサポートする、いくつかの視覚化は、ユーザがwhat−ifを行うことを許す。すなわち、作成者は、いくつかの値を変更し、他の値に対するその変化の影響を見ることができる。
【0205】
追加の例#4−パラメトリックターゲットにビューコンポーネントを適用する
いくつかの場合に、たとえば図33および34に示されているように、さまざまなパラメトリックターゲット(たとえば、他のビューコンポーネント)にビューコンポーネントを適用することが望ましい可能性がある。具体的に言うと、図33と34との両方のパネルの高さは、1812年の不運なロシア方面作戦中のナポレオンの軍勢を表す。図33では、パネルは、ナポレオン軍がたどった実際の経路を表すパラメトリックターゲットに適用される。図34では、パネルは、異なるパラメトリックターゲットすなわち螺旋に適用される。したがって、ビューコンポーネント(パネルなど)を、異なるパラメトリックターゲット(たとえば、ナポレオン軍がたどった実際の経路を表すビューコンポーネントまたは螺旋を表すビューコンポーネント)に適用することができる。
【0206】
ビューコンポーネントを、それが適用されるパラメトリックターゲットの子とすることができる。たとえば、図33のパネルを、軍経路の子とすることができ、図34のパネルを、図34の螺旋の子とすることができる。さらに、軍勢を表すラベルを、その高さが軍勢を表すパネルの子とすることができる。
【0207】
望ましくは、子ビューコンポーネントのプロパティに結び付けられたソルバおよび親ビューコンポーネントのプロパティに結び付けられたソルバを、依存関係ツリーを介して明示的に構成することができ、または、そのようなソルバを含むプロパティ−セッターの相互関係を介して暗黙のうちに構成することができる。
【0208】
したがって、子でプロパティをセットすることは、親のプロパティの再解決(時々、「エスカレーション」と呼ばれる)をトリガすることができ、親でプロパティをセットすることは、子のプロパティの再解決(時々、「委任」と呼ばれる)をトリガすることができる。たとえば、図33を参照すると、ユーザは、パネルの高さを変更することを試みることができ、この変更は、パネルのスケールを増やすためにそのパネルのプロパティ−セッターをトリガすることができる。さらに、パネルのスケールのプロパティ−セッターは、パネルのセットのスケールに関するプロパティ−セッターを呼び出すことができる(エスカレーション)。次に、パネルのセットのスケールプロパティ−セッターは、パネルのそれぞれの個々のスケールプロパティ−セッターを呼び出すことができる(委任)。
【0209】
特に、図33が、仮想世界へのグラフの適用の例であることに留意されたい。「仮想世界」とは、架空の地図のある現実のコンピュータ化された表現である。この地図は、2次元とすることができ、または、3次元とすることができる。たとえば、都市地図は、すべてが地理的関係においてレイアウトされる、街路、ビルディング、川などを含むことができる。その一方で、「グラフ」は、変数に適用されるデータ系列を表す。グラフを、グラフによって表されるデータ系列を仮想世界のある態様に適用することによって、本明細書で説明される原理を使用して仮想世界に適用することができる。その仮想世界の態様は、水平面、垂直面、3次元オブジェクトの外部サービス、ルートなどとすることができる。仮想世界は、実際の物理空間を表すことができ、または、仮定のエリアを表すのみとすることができる。仮想世界は、町の一部、都市、州、県、領域、ビルディング、近隣、惑星、または任意の他の物理的エリアのすべてを表すことができる。
【0210】
たとえば、図33の例では、グラフデータは、複数の時間期間のそれぞれについて、その時点のナポレオン軍の人数を含む。この情報を、ナポレオン軍のルートに適用することができる。各棒の高さは、軍の行程の特定のセグメントでのナポレオン軍の兵隊の数を表す。望まれる場合に、川、都市、海、その他などの他の地理的特徴を、この地図に含めることができる。グラフを、座標系、軸、またはマーカーなどのグラフ特徴を表面などの仮想世界特徴に適用することによって、仮想世界に適用することができる。
【0211】
仮想世界へのグラフの適用の他の例として、ある会社が、従業員モラルを表すデータを有すると仮定する。このグラフデータを、各従業員のウィンドウの色をモラルに従ってある色にレンダリングすることによって、会社キャンパスの3次元レンダリングなどの仮想世界に適用することができる。たとえば、青のウィンドウは、幸福な従業員を表すことができ、赤のウィンドウは、不幸な従業員を表すことができる。その後、適当な分析を行うことができる。たとえば、キャンパス地図の高水準のビューをとり、どのビルディングがより赤い傾向があるのかを判定することができる。おそらく、ビルディングのうちの1つが、他のビルディングから分離され、対話のより少ない機会およびより低いモラルをもたらす可能性がある。次に、その会社は、将来にそのビルディングを貸し出すことを再検討し、これらの従業員のために、全体により近いビルディングを建てることを試みることができる。
【0212】
したがって、本明細書で説明される原理は、視覚化された問題解決および分析の世界における重大なパラダイムシフトをもたらす。このパラダイムシフトは、本明細書で説明される原理がすべてのドメインにあてはまり得るので、すべてのドメインにまたがってあてはまる。
【0213】
データのドメイン固有分類
戻って図2を参照すると、パイプライン201は、データ駆動である。たとえば、入力データ211は、データ部分210に供給され、分析データ221は、分析部分220に供給され、ビューデータ231は、ビュー部分230に供給される。これらのデータのそれぞれの例は、既に説明された。特に、ますます複雑なモデルを構成するためにモデルの諸部分を1つのモデルにインポートできる構成のたやすさを考慮すると、オーサリングコンポーネント240によって選択できるデータの量が、非常に多くなり得ると言えば十分である。正しいデータ211、221、および231を選択できるようにするためにデータを通ってナビゲートするのを助けるために、分類コンポーネント260は、入力データの複数のドメイン固有分類を提供する。
【0214】
図35は、分類コンポーネント260が動作できる分類環境3500を示す。分類は、カテゴリへのアイテムの類別と、これらのカテゴリの関係付けとを含む。したがって、環境3500は、分類にかけられるアイテムのコレクション3510を含む。図35では、アイテムのコレクション3510は、アイテム3511Aから3511P(集合的に「メンバアイテム3511」と呼ばれる)を含む少数のアイテムのみを全体的に含むものとして図示されている。少数のメンバアイテム3511だけが図示されているが、任意の個数のアイテム、おそらくは、省略記号3511Qによって表されるように、類別され分類されなければならない数百個、数千個、または数百万個ものアイテムがある可能性がある。メンバアイテム3511は、オーサリングコンポーネント240がパイプライン201にデータ211、221、および231を供給するためにそこから選択できるメンバアイテムのプールを含む。
【0215】
ドメインに敏感な分類コンポーネント3520は、メンバアイテム3511のすべてまたは一部にアクセスし、メンバアイテム3511の別個の分類を生成することもできる。たとえば、分類コンポーネント3520は、ドメイン固有分類3521を生成する。この場合には、省略記号3521Fによって表される潜在的な他の分類の中で、5つのドメイン固有分類3521Aから3521Eがある。分類コンポーネント3520によって作成され管理される、5つより少数のドメイン固有分類がある場合もある。
【0216】
例として、分類3521Aは、風水ドメインに適切なメンバアイテムを分類することができ、分類3521Bは、モーターサイクル設計ドメインに適切なメンバアイテムを分類することができ、分類3521Cは、同様に都市計画ドメインに適切とすることができ、分類3521Dは、在庫管理ドメインに適切とすることができ、分類3521Eは、抽象芸術作品ドメインに適切とすることができる。もちろん、これらは、パイプライン201によって供給できる潜在的に無数のドメインのうちの5つにすぎない。分類のそれぞれは、対応する分類で類別するために使用可能なメンバアイテムのすべてまたはサブセットを使用することができる。
【0217】
図36は、メンバアイテムの分類の一特定の単純な例3600を示す。たとえば、分類を、図35のドメイン固有分類3521Aとすることができる。後続の図は、より複雑な例を示す。分類3600は、メンバアイテム3511Aおよび3511Eを除くメンバアイテム3511のすべてを含むカテゴリノード3610を含む。カテゴリノード3610は、たとえば、成分メンバアイテムへのポインタを含むオブジェクトとすることができ、したがって、論理的な意味で、メンバアイテムを、カテゴリノード3610「内に含まれる」と考えることができる。カテゴリノード3610は、候補メンバアイテムのプロパティを使用してカテゴリノード3610のメンバシップ資格を記述するプロパティ相関記述子3611を関連付けられもする。あるメンバアイテムをあるカテゴリに含めるべきか否かを判定する時に、プロパティ相関記述子を使用して、そのメンバアイテムのプロパティに対してその記述子を評価することができる。
【0218】
分類では、2つのカテゴリを、複数の異なる形でお互いに関係付けることができる。1つの一般的な関係は、あるカテゴリが別のカテゴリのサブセットであることである。たとえば、乗物を表すすべてのオブジェクトを含む「乗物」カテゴリがある場合に、乗物カテゴリのサブセットを含む「自動車」カテゴリがある場合がある。両方のカテゴリのプロパティ相関記述子は、特定の関係を定義することができる。たとえば、乗物カテゴリのプロパティ相関記述子は、1)オブジェクトが可動である、2)オブジェクトが人間を含むことができるというプロパティを有するオブジェクトが、そのカテゴリに含まれることを示すことができる。自動車カテゴリのプロパティ相関記述子は、この2つのプロパティ要件を明示的にまたは暗黙のうちにのいずれかで含むことができ、1)オブジェクトがオブジェクトの移動中に地球との接触を維持する少なくとも3つの車輪を含み、2)オブジェクトが自動推進であり、3)オブジェクトの高さが6フィート(1.83m)を超えないというプロパティ要件を含むこともできる。カテゴリごとのプロパティ相関記述子に基づいて、分類コンポーネントは、任意の所与のドメイン固有分類内の1つまたは複数のカテゴリにオブジェクトを割り当てることができ、カテゴリの間の関係を理解することもできる。
【0219】
図36では、別のプロパティ相関記述子3621を含む第2のカテゴリノード3620が図示されている。カテゴリノード3620は、プロパティ相関記述子3621を満足するすべてのメンバアイテムを論理的に含む。この場合に、そのカテゴリノードに論理的に含まれるメンバアイテムは、第1のカテゴリノード3610に含まれるメンバアイテムのサブセットである(たとえば、メンバアイテム3511F、3511J、3511N、および3511Pを含む)。これは、第2のカテゴリノード3620のプロパティ相関記述子3621が、1つまたは複数の追加のプロパティ要件を除いて、第1のカテゴリノード3610の相関記述子3611と同一のプロパティ要件を指定するからである可能性がある。第1のカテゴリノード3610と第2のカテゴリノード3620との間の関係は、関係3615によって論理的に表される。
【0220】
乗物−自動車の例では、カテゴリの間の関係は、サブセット関係である。すなわち、一方のカテゴリ(たとえば、自動車カテゴリ)が、他方(たとえば、乗物カテゴリ)のサブセットである。しかし、さまざま他のタイプの関係もあり、おそらく、以前に全く認識されず、使用されなかった新しい関係さえある。たとえば、あるカテゴリ内のオブジェクトの過半数(またはある指定されたパーセンテージ)が特定のプロパティ値を有する場合に、別のカテゴリ内のオブジェクトが、このプロパティを有し、このプロパティ値を継承する、過半数継承関係がある可能性がある。オブジェクトの一方のカテゴリが、可視光のある波長範囲内の原色を有する場合に、他方のカテゴリが、可視光のある隣接する波長範囲内の原色を有するオブジェクトを含む、「類似色」関係がある可能性がある。あるカテゴリが、主に特定のウィルスによって引き起こされる、ある種の感染症を表すオブジェクトを含む場合に、関連するカテゴリが、そのウィルスの突然変異型によって引き起こされるある種の感染症を表すオブジェクトを含むことができる、「ウィルス突然変異」関係がある可能性がある。これらの例は、量に関して延々と続く可能性がある。当業者は、この説明を再検討した後に、カテゴリの間の関係の種類が制限されないことを認めるであろう。
【0221】
さらに、単一の分類が、多数の異なるタイプの関係を有することができる。明瞭さのために、さまざまな分類を、これから抽象的な意味で説明する。抽象的に表された分類の例を、図37Aから37Cに示す。その後、本明細書で説明される原理がデータ駆動視覚化でドメイン固有分類の無数のアプリケーションを可能にすることを理解して、特定の例を説明する。
【0222】
図36の例は、単純な2カテゴリノード分類であるが、図37Aから37Cの例は、より複雑である。図37Aから37Cの分類3700Aから3700C内の各ノードは、0個以上のメンバアイテムを含むカテゴリノードを表し、本質的にカテゴリノードへのメンバアイテムの参加を許可する受付ポリシである、それぞれに関連するプロパティ相関記述子を有することができる。しかし、不当な複雑さを回避するために、分類3700Aから3700Cのカテゴリノードのそれぞれのメンバアイテムおよびプロパティ相関記述子は、図示されていない。カテゴリノードの間の線は、カテゴリノードの間の関係を表す。これらの関係は、限定なしに、サブセット関係またはある他の種類の関係とすることができる。カテゴリノードの間の関係の正確な性質は、重要ではない。それでも、分類においてカテゴリノードの間のさまざまな関係タイプがある可能性があることを強調するために、関係に、A、B、C、D、またはEのラベルを付ける。
【0223】
図37Aから37Cは、例としてのみ提供される。図37Aから37Cの分類の正確な構造は、重要ではないだけではなく、本明細書で説明される原理は、どの種類の分類を入力候補メンバアイテムの同一のセットに基づいてさえ生成できることにおける高い柔軟性を可能にする。これらの例では、分類3700Aは、関係タイプA、B、およびCを使用して互いに関係付けられたカテゴリノード3701Aから3710Aを含む。分類3700Bは、関係タイプB、C、およびDを使用して互いに関係付けられたカテゴリノード3701Bから3708Bを含む。分類3700Cは、関係タイプC、D、およびEを使用して互いに関係付けられたカテゴリノード3701Cから3712Cを含む。この例では、分類3700Aおよび3700Bは、階層的であるが、分類3700Cは、より非階層的なネットワークである。
【0224】
新しい候補メンバアイテムが使用可能になる時に、これらの候補メンバアイテムを、各分類内のカテゴリノードのそれぞれのプロパティ相関記述子に対して評価することができる。メンバアイテムのプロパティが、そのメンバアイテムがプロパティ相関記述子の要件(すなわち、受付ポリシ)を満足することを可能にする値を有する場合には、そのメンバアイテムは、そのカテゴリノードへの参加を許可される。たとえば、おそらくは、そのメンバアイテムへのポインタが、そのカテゴリノードに追加される。したがって、新しいメンバアイテムが、十分な数のプロパティを有する場合には、新しいメンバアイテムが、すべての分類内の適当なカテゴリに自動的にインポートされる可能性がある。
【0225】
図38は、複数のプロパティ3801を含むメンバアイテム3800を示す。単一のプロパティがある場合があるが、メンバアイテム3800に関連する潜在的に数千個のプロパティがある可能性もある。図38では、メンバアイテム3800は、省略記号3801Fによって表される潜在的に他のプロパティの中で、4つのプロパティ3801A、3801B、3801C、および3801Dを含むものとして図示されている。これらのプロパティを何にすることができるのかに対する制限はない。これらを、メンバアイテムを分類に類別する際に有用である可能性がある何にでもすることができる。
【0226】
一実施形態で、データ部分210、分析部分220、およびビュー部分230のそれぞれの潜在的データを、分類することができる。たとえば、作成者が、個人(消費者または近隣住人)が都市の地図とインターフェースすることを可能にする消費者アプリケーションをその中で構成しているドメインを検討されたい。
【0227】
この消費者ドメインには、選択できるビューデータ231の分類がある可能性がある。たとえば、ビルディングのすべてを含むビルディングカテゴリがある可能性がある。異なるタイプのビルディングすなわち、政府ビルディング、病院、レストラン、家屋などがある可能性がある。鉄道サブカテゴリ、車道サブカテゴリ、および運河サブカテゴリを含む公共輸送カテゴリもある可能性がある。車道カテゴリは、街路、ハイウェイ、自転車専用道路、陸橋などを表すカテゴリまたはオブジェクトを含む可能性がある。街路カテゴリは、一方通行街路、マルチライン街路、右左折専用車線、中央車線などのビジュアル表現のオブジェクトまたはカテゴリを含む可能性がある。駐車場の異なるタイプのビジュアル表現または駐車場の他のサブカテゴリ(たとえば、立体駐車場、地下駐車場、路上駐車場、パーキングロットなど)を示す駐車場カテゴリがある可能性がある。駐車場を、駐車が無料であるか否か、またはコストがあるかどうかによって副類別することもできる。
【0228】
この消費者ドメインに、入力データの分類もある可能性がある。たとえば、駐車場構造は、たとえば、1)駐車場がバレットパーキングであるかどうか、2)駐車に関する1時間あたりの料金はどれほどか、3)駐車場が営業中の時間、4)駐車場が警備によって巡視されているかどうか、および、そうである場合に、駐車場の単位面積あたり何人の警備員がいるのか、5)駐車場のレベル数、6)1レベルだけがある場合には駐車場の平方フィート単位の面積、立体駐車場の場合には各レベルの平方フィート単位の面積、7)駐車場構造内で発生する自動車泥棒の毎年の過去の回数、8)駐車場の体積使用量、9)駐車場が1つまたは複数の条件(すなわち、近くの会社の従業員、レストランまたは商店街の得意客など)の満足に制限されるかどうか、または役立つ可能性がある任意の他のデータなどのデータを関連付けられる可能性がある。他のビジュアルアイテムにも関連するデータ、およびビジュアルアイテムがどのようにレンダリングされるのかには絶対に影響しない可能性があるが、ある点で計算に使用される可能性があるデータも、ある可能性がある。
【0229】
しかし、この消費者地図ドメインに固有の分析データ221の分類もある可能性がある。たとえば、分析は、あるカテゴリでのコストベースの分析、もう1つのカテゴリでの時間ベースの分析、もう1つのカテゴリでの距離ベースの分析、もう1つのカテゴリでのディレクトリ分析、およびもう1つのカテゴリでのルーティング分析を提示することができる。ここで、分析は、作成者が所望のアプリケーションのために分析モデルを定式化するのを助けるために分類される。たとえば、ルーティング分析カテゴリは、ルートを計算する式、ルーティングに対してどの制限を行えるのかを指定する制約(最短ルート、ハイウェイの最大使用、街路の回避など)、またはルール(特定の道路上のトラフィック方向など)のカテゴリを含むことができる。類似するサブカテゴリを、他のカテゴリのためにも含めることもできる。
【0230】
ここで、やはり都市のレイアウトを扱うが、今回はドメインが都市計画である、別のドメインを検討されたい。ここで、消費者にとってほとんど関心のないものである、都市計画立案者には興味深い分析がある。たとえば、あるトラフィック使用量を考慮して舗装をどれほど厚くしなければならないのか、あるエリア内に配置されるある道路タイプのリニアフットあたりの総設置および保守コストはどれほどか、次の20年間の期待されるトラフィックパターン予想を考慮して、ある橋の安全係数をどれほどにするのか、現在の都市計画でトラフィックボトルネックは何か、特定のビルディングが特定の位置に建築された場合の環境影響はどれほどか、ある制限がその特定のビルディングの使用に対して課せられる場合にその影響はどれほどか、などを計算する分析がある可能性がある。ここで、解かれるべき問題は、消費者ドメインで解かれるべき問題とは異なる。したがって、分析の分類は、消費者ドメインと比較して、両方が都市トポロジを扱う場合であっても、都市計画ドメインについて大きく異なってレイアウトされる可能性がある。
【0231】
その一方で、トラクタ設計ドメインは、分析の全く異なるセットで関心を持たれる可能性があり、異なる分類を使用するはずである。たとえば、トラクタ設計ドメインのビジュアルアイテムは、都市計画ドメインのビジュアルアイテムとは全く異なる可能性がある。もはや、都市ビジュアル要素には関係がない。今は、トラクタを構成するさまざまなビジュアル要素が、分類される。例として、ビジュアルアイテムは、何を何に接続できるのかの関係を使用して分類される可能性がある。たとえば、「シートに接続できるもの」、「キャブレタに接続できるもの、「後車軸に接続できるもの」などのカテゴリがある可能性がある。異なる分析分類がある可能性もある。たとえば、トラクタが濡れた土を通ってナビゲートする必要があることを考慮すると、タイヤのトレッドデプスに関する制約がある可能性がある。トラクタまたはその副構成要素の総重量を計算する分析などがある可能性がある。
【0232】
図39は、ドメイン固有分類3900を示し、図35のドメイン固有分類3521の一例を表す。一実施形態で、ドメイン固有分類は、使用可能なデータアイテムの少なくともいくつかが対応する関係するカテゴリに分類されるデータ分類3901と、使用可能なビューコンポーネントの少なくともいくつかが対応する関係するビューコンポーネントカテゴリに分類されるビューコンポーネント分類3903と、使用可能な分析の少なくともいくつかが相関する関係する分析カテゴリに分類される分析分類3902とを含む。データ、分析、およびビューコンポーネントがドメインに固有の形で分類されるそのようなドメイン固有分類の例は、既に説明された。
【0233】
図40は、分析をナビゲートし、使用する方法を示す。分析コンポーネント220が、対応するドメイン固有分析分類(行為4003)と一緒にアクセスされる(行為4001)。複数のドメイン固有分析分類がある場合には、ドメイン固有分析分類にアクセスできるようになる(行為4003)前に、まずドメインを識別することができる(行為4002)。
【0234】
次に、関係付けられたカテゴリをトラバースすることによって、分析分類をナビゲートすることができる(行為4004)。このナビゲーションを、コンピューティングシステムの助けを得て人間によって実行することができ、または、人間の同時発生の支援なしでコンピューティングシステムだけによって実行することさえできる。コンピュータまたは人間は、分析を各カテゴリに入れるための受付ポリシを定義する、カテゴリごとの相関プロパティ記述子から情報を導出することができる。情報を、カテゴリの間の関係によって導出することもできる。ナビゲーションを使用して、これによって出力モデルパラメータについて解き、またはおそらくは複数のモデルからの分析を合併するために、分析問題を解くことができる。代替案では、ナビゲーションを使用して、最初の段階で分析モデルを構成することができる。
【0235】
たとえば、分析分類が、解かれるべき問題のタイプのアイデンティティに関して関係を類別すると仮定する。コンポーザは、関心を持たれている問題タイプカテゴリ内のこれらの分析のすべてを再検討することによって開始することができる。そのカテゴリは、解かれるべき問題の諸部分を定義する関係付けられたカテゴリを有する可能性がある。ユーザは、これらの関係付けられたカテゴリにすばやくナビゲートし、そのドメインで関係する分析を見つけることができる。
【0236】
検索および探索
前に述べたように、データ駆動分析モデルを使用して、分析集中型の検索動作および探索動作を形成することができる。図41は、データ駆動分析モデルを使用して検索する方法4100の流れ図を示す。方法4100を、検索ツール242が検索要求を受け取るか他の形でこれにアクセスする(行為4101)たびに実行することができる。
【0237】
本明細書で説明される原理は、ユーザが検索要求を入力するのに使用できる機構に限定されない。それでも、少数の例を、さまざまな検索要求入力機構を示すためにこれから提供する。一例では、おそらく、検索要求は、テキストベースであり、テキスト検索フィールドに直接に入力される。別の例では、おそらく、ラジオボタンが、検索パラメータを入力するために書き込まれる。おそらく、スライダも、検索パラメータの範囲を入力するために使用され得る。検索要求生成は、ユーザを伴う対話型の形で生成された可能性がある。たとえば、ユーザが、ある雑音レベル範囲を経験する不動産を要求する場合に、アプリケーションは、徐々に大きくなる雑音を生成し、雑音が、ユーザが我慢したいものより大きくなった時に「うるさすぎる雑音」ボタンを押すようにユーザに求めることができる。
【0238】
検索要求は、従来の検索要求ではなく、データ駆動分析モデルの解く動作を要求することができる。しかし、解く前に、図2の検索ツール242は、要求に応答できるようになるために、それについて解かれるべきすべてのモデルパラメータを識別する(行為4102)。これは、たとえば、上で述べたさまざまな分離を使用して達成され得る。たとえば、ユーザが、1年のどの時点でも9時15分の後に山の陰に入らない不動産を検索している場合に、それについて解かれるべき「山の陰」と呼ばれるモデル変数がある可能性がある。ユーザが、ある雑音レベルを経験する不動産を検索する場合に、特定の座標を与えられて、それについて解かれるべき「平均雑音」と呼ばれるモデル変数がある可能性がある。
【0239】
関連する出力変数が識別された後に、分析部分220の分析関係が、出力変数について解くのに使用される(行為4103)。次に、解かれた出力変数(1つまたは複数)が、解かれた値(1つまたは複数)を使用して検索要求への応答を定式化するために検索ツール242によって使用される(行為4104)。いくつかの場合に、ユーザが、方法4100が実行されつつある時に方法4100と相互作用する可能性があるが、方法4100は、人間からの同時発生の支援なしでコンピューティングシステムによって実行され得る。検索要求を、ユーザによって、またはおそらくは別のコンピューティングモジュールまたはソフトウェアモジュールによってさえ、発行することができる。
【0240】
方法4100を、何回も、検索要求が処理されるたびに繰り返すことができる。それについて解かれるべきモデル変数は、検索要求ごとに異なるものとすることができるが、そうである必要はない。たとえば、ある価格範囲および雑音レベルを有する家屋に関する3つの検索要求がある場合がある。たとえば、4000,000ドルから600,000ドルまでの価格範囲内で、その平均雑音レベルが50デシベル未満の家屋に関する検索要求がある可能性がある。ここでのそれについて解かれるべきパラメータは、雑音レベルになるはずである。第2の検索要求を、200,000ドルから500,000ドルまでの価格範囲内で、その雑音レベルが60デシベル未満の家屋に関するものとすることができる、ここでのそれについて解かれるべきパラメータは、やはり雑音レベルになるはずである。しかし、第2の検索要求では、解く動作のいくつかが、検索要求について既に行われたことに留意されたい。たとえば、第1の検索要求に基づいて、システムは、既に、その平均雑音レベルが50デシベル未満である、4000,000ドルから500,000ドルまでの価格範囲内の家屋を識別した。したがって、これらの家屋について、雑音レベルを再計算する必要はない。解かれた後に、これらの値を、将来の検索のために保存することができる。したがって、これは、ユーザが、追加の要求をサブミットすることによって探索を実行することを可能にする。その後、ユーザは、400,000ドルから500,000ドルまでの価格範囲内で、45デシベル未満の雑音レベルを有する家屋に関する第3の検索要求をサブミットすることができる。この家屋の雑音レベルは、既にそれについて解かれているので、それらについてもう一度解く必要はない。したがって、検索結果を、はるかにより少ない計算を用いて返すことができる。本質的に、このシステムは、問題を解くことによって新しい情報を学習することができ、他の問題を解くのにその新しい情報を利用することができる。
【0241】
前に述べたように、各検索要求は、異なる出力モデル変数について解くことを含む可能性がある。たとえば、説明したばかりの検索要求を実行した後に、ユーザは、山の陰に入らない家屋に関する検索要求をサブミットする可能性がある。システムがこれについて解いた後に、このユーザまたは別のユーザが類似する要求をサブミットする時には必ず、その解決からの結果を、その後続の検索要求を満足するのに使用することができる。ユーザは、マグニチュード8.0の地震で立ったままでいる家屋に関する検索要求をサブミットし、シミュレーションに、各家屋が立ったままでいるか倒れるかのいずれかになることを検証させ、またはおそらくはその家屋が立ったままになる、あるパーセンテージ可能性を提供させることができる。正確なシミュレーションを実行するのに不十分な構造情報があった家屋について、システムは、結果が確定的でないと単純に述べることができる。地震シミュレーションが実行された後に、再シミュレーションを必要とした家屋に対するある構造的変更があった場合を除き、また、ある改善されたシミュレーションソルバがあった場合を除いて、その結果は、誰かがあるマグニチュードの地震に耐えることのできる家屋に関する検索要求をサブミットする時に必ず、使用され得る。ユーザは、カテゴリ5のハリケーンが発生した場合に洪水を受けず、破壊されない、ある価格範囲内の家屋に関する検索要求を実行することもできる。
【0242】
諸実施形態をある詳細で説明したが、注記として、本明細書で説明されるさまざまな動作および構造を、コンピューティングシステムによって実施することができるが、そうである必要はない。したがって、この説明の最後に、例のコンピューティングシステムを、図25に関して説明する。
【0243】
図42は、コンピューティングシステム4200を示す。コンピューティングシステムは、今やますますさまざまな形をとりつつある。コンピューティングシステムは、たとえば、ハンドヘルドデバイス、機器、ラップトップコンピュータ、デスクトップコンピュータ、メインフレーム、分散コンピューティングシステム、または従来はコンピューティングシステムではなかったデバイスにさえすることができる。この説明および特許請求の範囲では、用語「コンピューティングシステム」は、少なくとも1つのプロセッサと、プロセッサによって実行され得るコンピュータ実行可能命令をその上に有することができるメモリとを含む任意のデバイスまたはシステム(またはその組合せ)を含むものとして広義に定義される。メモリは、任意の形をとることができ、コンピューティングシステムの性質および形態に依存することができる。コンピューティングシステムは、ネットワーク環境を介して分散させることができ、複数の成分コンピューティングシステムを含むことができる。
【0244】
図42に示されているように、その最も基本的な構成で、コンピューティングシステム4200は、通常、少なくとも1つの処理ユニット4202およびメモリ4204を含む。メモリ4204は、物理システムメモリとすることができ、物理システムメモリは、揮発性、不揮発性、またはこの2つのある組合せとすることができる。用語「メモリ」は、本明細書で、物理記憶媒体などの不揮発性大容量記憶装置を指すのに使用される場合もある。コンピューティングシステムが分散される場合には、処理能力、メモリ能力、および/または記憶能力をも分散させることができる。本明細書で使用される時に、用語「モジュール」または「コンポーネント」は、コンピューティングシステム上で実行するソフトウェアオブジェクトまたはルーチンを指すことができる。本明細書で説明される異なるコンポーネント、モジュール、エンジン、およびサービスを、コンピューティングシステム上で実行するオブジェクトまたはプロセスとして(たとえば、別々のスレッドとして)実施することができる。
【0245】
これに続く説明では、諸実施形態が、1つまたは複数のコンピューティングシステムによって実行される行為を参照して説明される。そのような行為がソフトウェアで実施される場合に、その行為を実行する関連するコンピューティングシステムの1つまたは複数のプロセッサは、コンピュータ実行可能命令を実行したことに応答してコンピューティングシステムの動作を指示する。そのような動作の例は、データの操作を伴う。コンピュータ実行可能命令(および操作されたデータ)を、コンピューティングシステム4200のメモリ4204に格納することができる。
【0246】
コンピューティングシステム4200は、コンピューティングシステム4200がたとえばネットワーク4210を介して他のメッセージプロセッサと通信することを可能にする通信チャネル4208をも含むことができる。通信チャネル4208は、通信媒体の例である。通信媒体は、通常、搬送波または他のトランスポート機構などの変調されたデータ信号内でコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを実施し、任意の情報配送媒体を含む。限定ではなく例として、通信媒体は、有線ネットワークおよび直接配線接続などの有線媒体と、音響、無線、赤外線、および他の無線媒体などの無線媒体とを含む。用語コンピュータ可読媒体は、本明細書で使用される時に、記憶媒体と通信媒体との両方を含む。
【0247】
実施形態:
実施形態1について説明する。
ビュー構成の1つまたは複数のビューコンポーネントのプロパティを定義する複数のモデル変数を使用する、コンピュータにより実施される方法であって、
前記複数のモデル変数の未知の第2のモデル変数(1503b)について解く(1401)ために前記複数のモデル変数の既知の第1のモデル変数(1503a)を使用することと、
ここで、前記第2のモデル変数(1503b)は、前記ビュー構成の第1のビューコンポーネントの第1のプロパティを定義するものであり、
前記解かれた第2のモデル変数(1503b)の値に前記ビュー構成の前記第1のビューコンポーネント第1のビューコンポーネントの前記第1のプロパティをセットする(1403)ことと、
前記第1のビューコンポーネントを含む前記ビュー構成をレンダリングする(1404)ことと
を具えたことを特徴とする方法。
【0248】
実施形態2について説明する。
コンピューティングシステムの1つまたは複数のプロセッサによって実行される時に、前記コンピューティングシステムに方法を実行させるコンピュータ実行可能命令をその上に有する1つまたは複数の物理コンピュータ可読媒体を含むコンピュータプログラムであって、前記コンピュータ実行可能命令は、
第1のプロパティ−セッター(1502a)を呼び出す(1601)1つまたは複数のコンピュータ実行可能命令であって、前記第1のプロパティ−セッター(1502a)は、ビュー構成の少なくとも1つのビューコンポーネントの少なくとも1つのプロパティをセットし(1602)、第2のプロパティ−セッター(1502b)を呼び出す(1603)ように構成され、前記第2のプロパティ−セッター(1502b)は、
前記ビュー構成の1つまたは複数のビューコンポーネントのプロパティを定義する複数のモデル変数の未知の第1のモデル変数について解くように構成されたソルバ(1501b)を呼び出し(1604)、
前記解かれた第1のモデル変数の値に前記ビュー構成の第1のビューコンポーネントの第1のプロパティをセットする(1605)
ように構成される、1つまたは複数のコンピュータ実行可能命令
を具えたことを特徴とするコンピュータプログラム。
【0249】
本発明の範囲内の実施形態は、その内部に格納されたコンピュータ実行可能命令またはデータ構造を担持しまたは有するコンピュータ可読媒体をも含む。そのようなコンピュータ可読媒体は、汎用コンピュータまたは特殊目的コンピュータによってアクセスされ得るすべての使用可能な媒体とすることができる。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイスなどの物理記憶媒体および/もしくはメモリ媒体、またはコンピュータ実行可能命令もしくはデータ構造の形で所望のプログラムコード手段を担持するか格納するのに使用でき、汎用コンピュータもしくは特殊目的コンピュータによってアクセスされ得る任意の他の媒体を含むことができる。上記の組合せも、コンピュータ可読媒体の範囲に含まれなければならない。
【0250】
コンピュータ実行可能命令は、たとえば、汎用コンピュータ、特殊目的コンピュータ、または特殊目的処理デバイスにある機能または機能のグループを実行させる命令およびデータを含む。本主題を、構造的特徴および/または方法論的行為に固有の言語で説明したが、添付の特許請求の範囲で定義される本主題が、必ずしも本明細書で説明された特定の特徴または行為に限定されないことを理解されたい。そうではなく、本明細書で説明される特定の特徴および行為は、特許請求の範囲を実施する例の形として開示されたものである。
【0251】
本発明を、その趣旨または本質的特性から逸脱せずに他の特定の形で実施することができる。説明された実施形態は、すべての面で、制限的ではなく例示的であるのみと考えられなければならない。したがって、本発明の範囲は、前述の説明ではなく添付の特許請求の範囲によって示される。特許請求の範囲の意味および同等性の範囲に含まれるすべての変更は、その範囲に含まれなければならない。
【技術分野】
【0001】
本発明は、ソルバベースの視覚化フレームワークに関する。
【背景技術】
【0002】
しばしば、情報を人間に伝える最も有効な形は、視覚的に伝えることである。したがって、数百万人の人が、情報を伝えるか受け取るため、および共同して働くために、広範囲のビジュアルアイテムを用いて働く。そのようなビジュアルアイテムは、たとえば、コンセプトスケッチ、工学図面、部品表の展開、ビルディングまたは分子構造などのさまざまな構造物を示す3次元モデル、トレーニング材料、図示されたインストール指示、プラニング図などを含むことができる。
【0003】
より最近に、これらのビジュアルアイテムは、たとえばコンピュータ支援設計(CAD)およびソリッドモデリングアプリケーションを使用して電子的に構築される。しばしば、これらのアプリケーションは、作成者がジオメトリにデータおよび制約を添付することを可能にする。たとえば、部品表を構築するアプリケーションは、各部品に関連する部品番号および供給業者、2つの構成要素の間の最大角度、または類似物などの属性を許容する場合がある。ある競技場の電子版を構築するアプリケーションが、座席の間の最大クリアランスなどを指定するツールを有する場合がある。
【発明の概要】
【発明が解決しようとする課題】
【0004】
そのようなアプリケーションは、設計および技術の進歩に非常に貢献した。しかし、あらゆる所与のアプリケーションが、視覚的に伝えることができる情報のタイプ、情報をどのように視覚的に伝えるのか、またはさまざまな視覚的表現に帰することができるデータおよび挙動の範囲に関する制限を有する。アプリケーションが、これらの制限を超えて変更されなければならない場合には、新しいアプリケーションは、通常、そのアプリケーションの能力を拡張するか完全に新規のアプリケーションを提供するコンピュータプログラマによって作成される。また、ユーザ(モデルの実際の作成者以外)がさまざまなシナリオをテストするためにどれほどモデルを操作できるのかに対する制限がある。
【課題を解決するための手段】
【0005】
本明細書で説明される実施形態は、ソルバを使用してビューコンポーネントのプロパティを判定できる視覚化フレームワークに関する。いくつかの場合に、ソルバを、依存関係ツリーなどの関係構造を使用して明示的に構成することができる。いくつかの場合に、ソルバを、ソルバを有するプロパティ−セッターがソルバを有する他のプロパティ−セッターを呼び出すことに基づいて暗黙のうちに構成することができる。これは、作成者が、ビュー構成をよりすばやく作成し、考案することを可能にすることができる。
【0006】
この要約は、請求される主題の主要な特徴または本質的特徴を識別することを意図されたものではなく、請求される主題の範囲を判定する際の助けとして使用されることも意図されていない。
【図面の簡単な説明】
【0007】
上で列挙されたおよび他の利益および特徴を入手できる形を説明するために、さまざまな実施形態のより特定の説明を、添付図面を参照することによって描写する。これらの図面がサンプルの実施形態のみを示し、したがって本発明の範囲について限定的と考えられてはならないことを理解して、実施形態を、添付図面の使用を介して追加の限定性および詳細を伴って記述し、説明する。
【0008】
【図1】入力データに依存するビュー構成を構築するデータ駆動構成フレームワークを含む、本発明の原理を実施できる実施形態を示す図である。
【図2】図1の環境の一例を表すパイプライン環境を示す図である。
【図3】図2のパイプラインのデータ部分の実施形態を概略的に示す図である。
【図4】図2のパイプラインの分析部分の実施形態を概略的に示す図である。
【図5】図2のパイプラインのビュー部分の実施形態を概略的に示す図である。
【図6】データストリームの要素のすべてまたはサブセットを列挙することのできるデータストリームオブジェクトを概略的に示す図である。
【図7】図2のパイプラインによって構築できるビュー構成のレンダリングを示す図である。
【図8】図2のパイプライン環境を使用してビュー構成を生成する方法を示す流れ図である。
【図9】図2のパイプライン構成を使用してビュー構成とのユーザ相互作用に応答してビュー構成を再生成する方法を示す流れ図である。
【図10】特殊化されたソルバのコレクションを含むさらなる詳細において図4の分析部分のソルバを概略的に示す図である。
【図11】特殊化されたソルバのコレクションのアクションを調整することによって未知のモデルパラメータについて解く図10のソルバを示す流れ図である。
【図12】図10のソルバの例を表すソルバ環境を概略的に示す図である。
【図13】モデル分析について解くのに図12のソルバ環境を使用する方法を示す流れ図である。
【図14】モデル変数について解くのに図10のソルバ環境を使用する方法を示す流れ図である。
【図15】ソルバ環境の実施形態を概略的に示す図である。
【図16】図15に示されたソルバ環境によって実行できる方法を示す流れ図である。
【図17】図7の例を拡張する統合されたビュー構成のレンダリングを示す図である。
【図18A】複数のビジュアルアイテムが、対応するビジュアルアイテムが実行スクローリングを用いて相互作用できることを表すビジュアルキューで装飾された、ビュー構成を示す図である。
【図18B】スクローリング相互作用の後の図18Aのビュー構成を示す図である。
【図19A】ズーミング相互作用が使用可能にされているビュー構成を示す図である。
【図19B】ズームイン相互作用の後の図19Aのビュー構成を示す図である。
【図20】各州の高度がデータを表し、州ビジュアルアイテムのうちのいくつかがその州ビジュアルアイテムとの可能な相互作用を示すビジュアルキューを含む、米国地図の形のビュー構成を示す図である。
【図21】可能な相互作用を示すビジュアルキューを含む組み合わされた相互に関係付けられた円グラフおよび棒グラフの形のビュー構成を示す図である。
【図22】さまざまなビジュアルキューが相互作用を識別する、ハリケーン経路進行図の形のビュー構成を示す図である。
【図23】ビュー構成内で相互作用を提供する方法を示す流れ図である。
【図24】さまざまなビジュアルアイテムを統合し、合併できるユーザインターフェースを示す図である。
【図25】単なる螺旋がその上でデータがマッピングされる形状として示される、統合の第1ステージを示す図である。
【図26】図25の螺旋が1つのデータ系列に結び付けられる、統合の第2ステージを示す図である。
【図27】図25の螺旋が2つのデータ系列に結び付けられる、統合の第3ステージを示す図である。
【図28】図25の螺旋が図示のグラフに結び付けられる、統合の最終ステージを示す図である。
【図29】棚レイアウトの視覚化を示し、本明細書で説明される原理を適用できる無数のアプリケーションのうちの1つを表す図である。
【図30】本明細書で説明される原理を適用できる都市計画の視覚化を表す図である。
【図31】本発明の原理を適用でき、これによってより動的な学習環境を作成する、子供の教育を比較する従来の視覚化を示す図である。
【図32】本発明の原理を適用でき、これによってより動的な学習環境を作成する、人口密度を比較する従来の視覚化を示す図である。
【図33】第1のパラメトリックターゲットに適用されたビューコンポーネントの視覚化を示す図である。
【図34】第2のパラメトリックターゲットに適用された図33に示されたビューコンポーネントの視覚化を示す図である。
【図35】図2の分類コンポーネントが動作できる分類環境を示す図である。
【図36】図35のメンバアイテムの分類の例を示す図である。
【図37A】関係付けられたカテゴリの分類の一例を示す図である。
【図37B】関係付けられたカテゴリの分類の一例を示す図である。
【図37C】関係付けられたカテゴリの分類の一例を示す図である。
【図38】複数のプロパティを含むメンバアイテムを示す図である。
【図39】ドメイン固有分類を示し、図35のドメイン指定された分類の一例を表す図である。
【図40】分析をナビゲートし、使用する方法を示す流れ図である。
【図41】分析を使用して検索する方法を示す流れ図である。
【図42】図1の構成フレームワーク(またはその諸部分)を実施できる環境を提示するコンピューティングシステムを示す図である。
【発明を実施するための形態】
【0009】
図1は、ユーザ駆動分析および分析結果の視覚化を使用するビジュアル構成環境100を示す。環境100(以下では「パイプライン」とも呼ばれる)は、ビューコンストラクション130の問題ドメインと独立に実行されるロジックを実行する構成フレームワーク110を含む。たとえば、同一の構成フレームワーク110を、都市計画、分子モデル、食品雑貨店棚レイアウト、機械性能分析、機械組立分析、または他のドメイン固有レンダリングの対話型ビュー構成を構成するのに使用することができる。下で説明するように、分析を、さまざまなシナリオでの検索および探索に使用することができる。しかし、まず、基本的な構成フレームワーク110を詳細に説明する。
【0010】
構成フレームワーク110は、ドメインに固有の実際のビューコンストラクション130(本明細書では「ビュー構成」とも呼ばれる)を構築するためにドメイン固有の形で分類的に編成されるドメイン固有データ120を使用して分析121を実行する。したがって、構成フレームワーク110自体を再コーディングする必要があるのではなく、同一の構成フレームワーク110を、ドメイン固有データ120を変更することによって任意の個数の異なるドメインのビュー構成を構築するのに使用することができる。したがって、パイプライン100の構成フレームワーク110は、再コーディングおよび再コンパイルではなくデータを変更することによって、潜在的に無制限の個数の問題ドメインまたは少なくともさまざまな問題ドメインに適用することができる。次に、ビューコンストラクション130を、適当な2Dレンダリングモジュールまたは3Dレンダリングモジュールに命令として供給することができる。本明細書で説明されるアーキテクチャは、基本構成要素として既存のビュー構成を新しいビュー構成に便利に組み込むことを可能にもする。一実施形態で、複数のビュー構成を統合されたビュー構成に含めて、1つのモデルに対する2つの可能な解決策の間での簡単な比較を可能にすることができる。
【0011】
図2は、パイプライン環境200の形での構成フレームワーク110の例のアーキテクチャを示す。パイプライン環境200は、とりわけ、パイプライン201自体を含む。パイプライン201は、データ部分210、分析部分220、およびビュー部分230を含み、これらのそれぞれを、それぞれ後続の図3から5および付随する説明に関して詳細に説明する。さしあたり、全体的なレベルでは、パイプライン201のデータ部分210は、さまざまな異なるタイプのデータを受け入れることができ、そのデータを正規形式でパイプライン201の分析部分220に提示する。分析部分220は、データをさまざまなモデルパラメータにバインドし、モデル分析を使用して、モデルパラメータ内の未知数について解く。次に、さまざまなパラメータ値が、ビュー部分230に供給され、ビュー部分230は、モデルパラメータのこれらの値を使用して複合ビューを構築する。
【0012】
パイプライン環境200は、パイプライン201の作成者または他のユーザがパイプライン201に供給されるデータを定式化し、かつ/または選択することを可能にするオーサリングコンポーネント240をも含む。たとえばオーサリングコンポーネント240を使用して、データ部分210(入力データ211によって表される)、分析部分220(分析データ221によって表される)、およびビュー部分230(ビューデータ231によって表される)のそれぞれにデータを供給することができる。さまざまなデータ211、221、および231は、図1のドメイン固有データ120の例を表し、後でさらに詳細に説明される。オーサリングコンポーネント240は、たとえばデータスキーマ、モデルによって使用される実際のデータ、外部ソースから持ち込まれるデータの位置または可能な位置の範囲、ビジュアル(グラフィカルまたはアニメーション)オブジェクト、ビジュアル上で実行できるユーザインターフェース相互作用、モデリングステートメント(たとえば、ビュー、式、制約)、バインディングなどを含むさまざまなデータの供給をサポートする。
【0013】
一実施形態で、オーサリングコンポーネントは、総合的なマネージャコンポーネント(図2には図示されていないが、図1の構成フレームワーク110によって表される)によって提供される機能性の1つの部分にすぎない。このマネージャは、イベント(ユーザ相互作用イベント、外部データイベント、およびソルバ、オペレーティングシステムその他などの他のコンポーネントのいずれかからのイベントなど)に応答して他のコンポーネント(データコネクタ、ソルバ、ビューワその他など)のすべての動作を制御し、シーケンシングする総合的なディレクタである。
【0014】
オーサリングコンポーネント240は、検索を実行することを可能にする検索ツール242をも含む。検索ツール242は、複雑な検索動作を実行するためにパイプライン201のデータ駆動分析能力を利用することができる。たとえば、いくつかの場合に、検索の1つまたは複数のパラメータが、まず、その検索を完了するためにそれについて解かれる必要がある場合がある。
【0015】
一例として、データ駆動分析が、都市地図であり、分析の一部が、その都市内の特定の座標での通常の雑音レベルについて解くことができると仮定する。その場合に、居住用不動産を検索する人は、平方フィート単位の面積、価格帯、部屋数などの通常の検索パラメータに対する検索を実行できるだけではなく、分析集中型のパラメータに対する検索をも実行することができる。たとえば、本原理を適用できる制限されない形があるが、不動産の柔軟な検索をどのようにして達成できるのかの選択された少数の多様な例を、これから提供する。
【0016】
検索パラメータを指定することの一部として、ユーザは、
1)ある上限未満の平均雑音レベルを経験する家屋のみ、
2)月曜から木曜までのそれぞれにユーザの仕事場およびジムまで累積300分以下の通勤時間を有する家屋のみ、
3)1/5マイル(320m)以内のいずれかの道路上であるしきい値未満のトラフィックを経験し、今後10年にわたってそのレベル未満のトラフィックが予測される家屋のみ、
4)1年のどの時点でも午前9時15分の後に山の陰にならない家屋のみ、
5)10年で木が屋根の面積の少なくとも50%を陰にするように、所有地に十分な既存の木を有する家屋のみ、
6)その他
のうちの任意の1つまたは複数または他の検索アイテムに関する望みを示すことができる。
【0017】
そのような不動産検索は、従来の技術を使用してたやすく達成可能ではない。これらの例のそれぞれで、要求される家屋検索データが存在しない場合があるが、本明細書で説明される原理は、検索が実行されつつある時にオンザフライでさまざまなカスタマイズされたパラメータに関する検索データを生成することを可能にすることができる。また、検索は、以前にそれについて解かれた任意の検索データを利用することができる。これは、ユーザのためのさまざまな検索能力および探索能力を可能にし、解かれるべき問題を探索する完全に新しい形を開発する。これらのタイプの検索をサポートする基礎になるデータ駆動分析機構に関するより多くを、これから説明する。
【0018】
伝統的に、対話型ビュー構成アプリケーションのライフサイクルは、2つの主要な時間すなわち、オーサリング時(authoring time)および使用時(use time)を伴う。オーサリング時には、対話型ビュー構成アプリケーションの機能性が、所望のドメインに固有の対話型ビュー構成を提供するためにプログラマによってコーディングされる。たとえば、インテリアデザインアプリケーションの作成者(たとえば、通常はコンピュータプログラマ)は、ユーザがインテリアデザインに固有のアクションの有限のセットを実行することを可能にするアプリケーションをコーディングすることができる。
【0019】
使用時には、ユーザ(たとえば、おそらくは家屋の所有者またはプロフェッショナルインテリアデザイナ)が、そのアプリケーションを使用して、そのアプリケーションにハードコードされた有限のアクションのセットのうちの任意の1つまたは複数を実行することができる。このインテリアデザインアプリケーションの例では、ユーザは、表示される仮想の部屋の寸法を指定し、その部屋に家具および他のインテリアデザインコンポーネントを追加し、おそらくはその部屋のさまざまなアングルを得るためにビューを回転し、各アイテムの色をセットするなどを行うことができる。しかし、ユーザが、そのインテリアデザインアプリケーションをリバースエンジニアリングし、変更することをいとわないプログラマである場合を除いて、そのユーザは、アプリケーション作成者によって使用可能にされたアクションの有限のセットに制限される。たとえば、アプリケーションによって提供されない限り、ユーザは、どの窓配置が環境雑音を最小にするのか、風水ルールに従って部屋レイアウトをどのように実行するのか、または太陽熱寄与をどのように最小化するのかを自動的に計算するのにそのアプリケーションを使用することはできないはずである。
【0020】
しかし、図2のパイプライン環境200では、オーサリングコンポーネント240が、既存のパイプライン201にデータを供給するのに使用され、ここで、入力データの定義から分析モデルの定義、分析の結果がビュー構成内でどのように視覚化されるかの定義までプロセス全体を駆動するのは、そのデータである。したがって、パイプライン201をさまざまなドメインおよび問題のうちの任意の1つに適合させるために、コーディングを実行する必要はない。パイプライン201に供給されるデータだけが、全く異なる問題ドメインからまたはおそらくは既存ドメインに関する問題解決の調整のためのいずれかで異なるビュー構成を視覚化するためにパイプライン201を適用するために変更されるべきものである。パイプライン環境200は、パイプライン201に供給されるデータを編成し、類別し、関係付ける、分類コンポーネント260をも含むことができる。分類コンポーネント260は、ドメインに敏感とすることができる。したがって、インテリアデザインドメイン、道路設計ドメイン、アーキテクチャドメイン、風水ドメインは、それぞれ、データを通ってナビゲートするのに使用できる異なる分類を有することができる。これが役立つ可能性があるのは、下で説明するように、パイプライン環境200から使用可能にされるデータセットがますます増加しつつある可能性がある構成アクティビティに起因して、ふるいにかけるために使用可能なかなりのデータがある可能性があるからである。
【0021】
さらに、データを、使用時(すなわち、ランタイム)ならびにオーサ時に変更できるので、モデルを、ランタイムに変更し、かつ/または拡張することができる。したがって、モデルのオーサリングとモデルの実行との間の区別は、あるとしても、より少ない。すべてのオーサリングがデータアイテムの編集を含み、ソフトウェアがその挙動のすべてをデータから実行するので、データに対する変更のすべてが、再コーディングおよび再コンパイルの必要なしに、即座に挙動に影響する。
【0022】
パイプライン環境200は、ユーザが表示されるビュー構成と相互作用した時を検出し、その後、それに応答して何をすべきかを判定するユーザ相互作用応答モジュール250をも含む。たとえば、あるタイプの相互作用が、パイプライン201に供給されるデータの変更を必要とせず、したがって、ビュー構成に対する変更を必要としない場合がある。他のタイプの相互作用が、データ211、221、または231のうちの1つまたは複数を変更する場合がある。その場合に、この新しいまたは変更されたデータが、新しい入力データがデータ部分210に供給されることを引き起こす場合があり、分析部分220による入力データの再分析を要求する場合があり、かつ/またはビュー部分230によるビュー構成の再視覚化を要求する場合がある。
【0023】
したがって、パイプライン201を使用して、データ駆動分析視覚化を、おそらくは無制限の個数の問題ドメインに、または少なくともさまざまな問題ドメインに拡張することができる。さらに、さまざまな問題に対処するためにビュー構成を変更するために、プログラマである必要はない。パイプライン201のデータ部分210、分析部分220、およびビュー部分230のそれぞれを、これから、図3のデータ部分300、図4の分析部分400、および図5のビュー部分500に関して、この順番で説明する。さらに、データの分類は、ドメインに固有であり、したがって、データの編成をそのドメインで活動する者にとってより直観的にすることを可能にする。図3から5から明白になるように、パイプライン201を、一連の変換コンポーネントとして構築することができ、ここで、これらの変換コンポーネントは、それぞれ、1)ある適当な入力データを受け取り、2)その入力データに応答してあるアクションを実行し(入力データに対して変換を実行するなど)、3)次の変換コンポーネントへの入力データとして働くデータを出力する。
【0024】
パイプライン201を、クライアント上、サーバ上で実施することができ、または、制約なしにクライアントおよびサーバの間で分散させることさえできる。たとえば、パイプライン201を、サーバ上で実施し、レンダリング命令を出力として供給することができる。次に、クライアント側のブラウザは、サーバから受信されたレンダリング命令に従って単にレンダリングすることができる。このスペクトルの他方の端では、パイプライン201を、クライアント上に含めることができ、オーサリングおよび/または使用は、そのクライアントで実行される。パイプライン201が、完全にクライアントにある場合であっても、パイプライン201は、それでも、適当な情報(たとえば、モデル、コネクタ、カノニカライザ(canonicalizer)、スキーマ、その他)についてクライアントの外部のデータソースを検索することができる。この2つの手法のハイブリッドを提供する実施形態もある。たとえば、1つのそのようなハイブリッド手法では、モデルはサーバ上でホスティングされるが、ウェブブラウザモジュールは、クライアント上で動的にロードされ、その結果、モデルの相互作用およびビューイングロジックの一部が、クライアント上で動作するようにされる(したがって、より豊かで高速な相互作用およびビューを可能にする)。
【0025】
図3は、図2のパイプライン201のデータ部分300の多数の可能な実施形態のうちの1つを示す。データ部分300の機能の1つは、図4に関して述べるパイプラインの分析部分400によって理解されるスキーマと一貫する正規フォーマットでデータを供給することである。データ部分は、異種データ301にアクセスするデータアクセスコンポーネント310を含む。入力データ301は、そのデータがデータアクセスコンポーネント310に正規形式で提示される場合がある(が、そうである必要はない)という意味で「異種」とすることができる。実際に、データ部分300は、異種データをさまざまなフォーマットのものとすることができるように構成される。モデルによってアクセスでき操作できるさまざまな種類のドメインデータの例は、テキスト文書、XML文書、テーブル、リスト、階層(木)、SQLデータベースクエリ結果、BI(ビジネスインテリジェンス)キューブクエリ結果、さまざまなフォーマットの2Dドローイングおよび3Dビジュアルモデルなどのグラフィカル情報、およびその組合せ(すなわち、複合物)を含む。さらに、アクセスできるデータの種類を、アクセスされるデータの定義(たとえば、スキーマ)を提供することによって、宣言的に拡張することができる。したがって、データ部分300は、モデルへのさまざまな異種入力を許容し、アクセス可能なデータタイプのランタイムの宣言的拡張をもサポートする。
【0026】
一実施形態で、データアクセス部分300は、複数の異なるデータソースからデータを入手する複数のコネクタを含む。コネクタの主要な機能の1つは、対応するデータを正規形式にすることなので、そのようなコネクタは、しばしば、本明細書および図面で「カノニカライザ」と呼ばれる。各カノニカライザは、その対応するデータソースの特定のアプリケーションプログラミングインターフェース(API)の理解を有することができる。カノニカライザは、データをデータソースから読み取り、かつ/またはデータソースに書き込むためにその対応するAPIとインターフェースする対応するロジックをも含むことができる。したがって、カノニカライザは、外部データソースとデータのメモリイメージとの間で橋をわたす。
【0027】
データアクセスコンポーネント310は、入力データ301を評価する。入力データが、既に正規であり、したがって分析部分400によって処理可能である場合には、入力データを、分析部分400に入力される正規データ340として直接に供給することができる。
【0028】
しかし、入力データ301が正規ではない場合には、適当なデータ正規化コンポーネント330が、入力データ301を正規フォーマットに変換することができる。データ正規化コンポーネント330は、実際には、それぞれが特定の特性を有する入力データを正規形式に変換できる、データ正規化コンポーネント330のコレクションである。データ正規化コンポーネント330のコレクションは、4つの正規化コンポーネント331、332、333、および334を含むものとして図示されている。しかし、省略記号335は、他の個数の正規化コンポーネントも存在する可能性があり、おそらくは図示された4つより少数さえ存在する可能性があることを表す。
【0029】
入力データ301は、カノニカライザ自体ならびに相関されたデータ特性(1つまたは複数)の識別さえ含むことができる。次に、データ部分300は、相関されたデータ特性を登録し、正規化コンポーネントをデータ正規化コンポーネントコレクション330に供給し、このデータ正規化コンポーネントコレクション330で、その正規化コンポーネントを使用可能な正規化コンポーネントに追加することができる。これらの相関された特性を有する入力データが、その後に受け取られる場合に、データ部分310は、その入力データを相関された正規化コンポーネントに割り当てることができる。正規化コンポーネントを、ウェブ上の定義されたコンポーネントライブラリからなど、外部ソースから動的に見つけることもできる。たとえば、所与のデータソースのスキーマが既知であるが、必要なカノニカライザが存在しない場合には、そのカノニカライザを、外部コンポーネントライブラリから突き止めることができる(そのようなライブラリを見つけることができ、そのライブラリが必要なコンポーネントを含む場合に)。パイプラインは、そのスキーマがまだ知られていないデータを解析し、解析結果を既知のコンポーネントライブラリ内のスキーマ情報と比較して、データのタイプの動的判定を試み、したがって、必要なカノニカライザコンポーネントを突き止めることもできる。
【0030】
代替案では、入力データが正規化コンポーネントのすべてを含むのではなく、入力データが、その代わりに、正規化変換を定義する変換定義を提供することができる。次に、その変換定義を、0個以上の標準デフォルト正規化変換と一緒に変換を実施する対応する正規化コンポーネントに変換するように、コレクション330を構成することができる。これは、データ部分300が、入力データを消費するが、対応する正規化されたデータをパイプラインのさらに下に供給しない場合の例を表す。しかし、おそらくはほとんどの場合に、入力データ301は、対応する正規データ340が生成されることをもたらす。
【0031】
一実施形態では、データアクセスコンポーネント310を、入力データのファイルタイプおよび/またはフォーマットタイプを基礎としてデータ正規化コンポーネントに入力データを割り当てるように構成することができる。他の特性、たとえば入力データのソースを含めることができる。デフォルト正規化コンポーネントを、指定された対応する正規化コンポーネントを有しない入力データに割り当てることができる。デフォルト正規化コンポーネントは、入力データを正規化することを試みるためにルールのセットを適用することができる。デフォルト正規化コンポーネントが、データを正規化できない場合には、デフォルト正規化コンポーネントは、図2のオーサリングコンポーネント240をトリガして、入力データのスキーマ定義を提供するようにユーザに促すことができる。スキーマ定義がまだ存在しない場合には、オーサリングコンポーネント240は、入力データを正規形式に変換するのに使用できる対応するスキーマ定義を作成者が生成するのを助けるためにスキーマ定義アシスタントを提示することができる。データが正規形式になった後に、そのデータに付随するスキーマは、パイプライン201の残りがそのデータを解釈するために新しいコードを必要としなくなる、そのデータの十分な記述を提供する。その代わりに、パイプライン201は、アクセス可能なスキーマ宣言言語を表現可能なすべてのスキーマを考慮してデータを解釈できるコードを含む。
【0032】
データの1つのタイプは、図6に関して図示し、説明するデータストリームオブジェクト600などのデータストリームオブジェクトである。データストリームオブジェクト600は、そのデータストリームオブジェクトに関連するデータストリーム602内のある範囲を列挙できる列挙モジュール601を含む。その範囲は、実際にデータストリーム602の全範囲を含むことができる。その一方で、データストリーム602を、「擬似無限」または「部分的擬似無限」データストリームとすることができる。この説明および特許請求の範囲で、「擬似無限」データストリームは、データストリームオブジェクト600を扱っているコンピューティングシステムの揮発性メモリに完全に収まるには大きすぎるデータストリームである。「部分的擬似無限」データストリームは、そのデータストリームオブジェクトを扱っているコンピューティングシステムの揮発性メモリの少なくとも半分を占めるデータストリームと定義される。列挙モジュール601は、たとえば図2のデータ部分210、分析部分220、またはおよびビュー部分230など、外部モジュールからの要求に応答してデータストリームの一部だけを列挙することができる。列挙モジュール601は、データストリームの最初の要素から始まる列挙を要求することができる。その一方で、列挙モジュール601は、まずデータストリームの初めから列挙することなく、データストリームの任意の他の部分から始まる列挙を可能にすることができる(すなわち、列挙中央ストリームを可能にすることができる)。
【0033】
データストリームオブジェクト600は、データのストリームの要求されたメンバ要素に関連するプロパティに基づいて、データストリームの要求された部分(1つまたは複数)を識別できるものとすることができる。その場合に、データストリームオブジェクトは、要求を処理し、要求されたプロパティを有するデータストリームの全メンバ要素を識別するロジックを含むことができる。たとえば、要求を、特定の経度座標および緯度座標から下向きに見て1000フィート(304.8m)の高度から可視の都市のすべての要素に関するものとすることができる。その一方で、データストリームオブジェクトを、メンバ要素に関する要求を表すために応答できるものとすることもできる。
【0034】
一例として、擬似無限データストリームを、実際のまたは仮想の都市の記述であって、その都市内のすべてのアイテムの記述(これらのアイテムのすべての想像できるすべてのレベルの記述を含む)を含む記述とすることができる。その情報は、単純に、すべて同時にメモリ内で表すには多すぎる可能性がある。したがって、データストリームオブジェクト600は、現在のビューをレンダリングするのに必要な関連情報のみを提供することができる。たとえば、その都市が、100マイル(160km)の高度で見られている場合に、おそらくはその都市の境界情報だけが関連する。その都市の一部が、10マイル(16km)の高度で見られている場合に、おそらくは、より大きい物体(空港、公園、貯水池、および類似物などに関する情報だけが、ビュー内にある場合に限って提供され得る)。その都市の一部が、1マイル(1.6km)の高度で見られている場合に、おそらくは、ビュー内の街路およびビルディングをレンダリングするのに必要な情報が、データストリームオブジェクトによって提供される。その都市の一部が、1000フィート(304.8m)の高度で見られている場合に、おそらくは、街路のさらなる詳細(すなわち、レーン数、街路の名前、矢印など)およびビルディングに関するさらなる詳細(テクスチャおよび窓位置など)が提供される可能性がある。当然、このズームイン動作が発生する時には、情報は、ますます小さくなる地理的面積に関係する。100フィート(30.5m)ビューでは、データストリームは、低木、マンホール、側溝、階段、自動販売機、横断歩道、および類似物に関する情報を提供する可能性がある。そのデータの量は、従来のコンピュータが都市全体についてメモリ内に保持するにはむずかしい可能性がある。
【0035】
もう1つの例として、擬似無限データストリームが、フラクタルの場合のように、文字どおり無限である場合がある。フラクタルは、フラクタルの一部にどれほどズームインするかに無関係に、繰り返す形状が必ず見えてくるように数学的に定義される。必ず、さらに、さらに、際限なくズームインすることができる。同一のことが、ズームアウトにもあてはまる。そのようなフラクタルのジオメトリを文字どおりに表すことは、無限の量の情報を要するはずである。しかし、データストリームオブジェクトは、フラクタルが数学的にどのように定義されるのかに関する概念を有することができる。データストリームオブジェクトが、詳細の特定のレベルでフラクタルを作ることを求められる場合には、データストリームオブジェクトは、詳細のその特定のレベルにあてはまるデータを計算し、そのデータを提供することができる。
【0036】
したがって、擬似無限データオブジェクトは、詳細を定義する式を評価することによっておよび/またはデータストリームオブジェクトの外部のデータにアクセスすることによってのいずれかで、データの要求された範囲を生成することができる。そのような範囲は、パイプライン201の分析部分400に供給される階層データの例である。一実施形態で、データストリームオブジェクトと通信するプロトコルを、データストリーム自体がどれほど大きいのかにかかわりなく、同一とすることができる。したがって、作成者は、したがって、より小さいデータストリームオブジェクトに関連するデータストリームオブジェクトに関するモデルをテストすることができる。その後、他者がそのモデルを確信した後に、作成者は、モデル自体を変更する必要なしに、データストリームオブジェクトを、無限データストリーム、擬似無限データストリーム、または部分的擬似無限データストリームに関連するデータストリームオブジェクトに切り替えることができる。
【0037】
正規データ340の形にかかわりなく、正規データ340は、データ部分300からの出力データとして、および分析部分400への入力データとして供給される。正規データは、さまざまなデータタイプを含むフィールドを含むことができる。たとえば、フィールドは、整数、浮動小数点数、文字列、ベクトル、配列、コレクション、階層構造、テキスト、XML文書、テーブル、リスト、SQLデータベースクエリ結果、BI(ビジネスインテリジェンス)キューブクエリ結果、さまざまなフォーマットの2Dドローイングおよび3Dビジュアルモデルなどのグラフィカル情報などのデータタイプ、またはこれらのさまざまなデータタイプの複雑な組合せさえ含むことができる。別の利益として、正規化プロセスは、さまざまな入力データを正規化することができる。さらに、データ部分300が受け入れることのできるさまざまな入力データは、拡張可能である。これは、本明細書で後で述べるように、複数のモデルが組み合わされる場合に役立つ。
【0038】
図4は、図2のパイプライン201の分析部分220の例を表す分析部分400を示す。データ部分300が、正規化されたデータ401をデータモデルバインディングコンポーネント410に供給した。正規化されたデータ401は、任意の正規化された形および任意の個数のパラメータを有することができ、この形およびパラメータの個数は、入力データの部分ごとに異なることさえできる。しかし、議論のために、正規データ401は、フィールド402Aから402Hを有し、これらのフィールドを、本明細書で集合的に「フィールド402」と呼ぶ場合がある。
【0039】
その一方で、分析部分400は、複数のモデルパラメータ411を含む。モデルパラメータのタイプおよび個数は、モデルに従って異なるものとすることができる。しかし、特定の例の議論のために、モデルパラメータ411は、モデルパラメータ411A、411B、411C、および411Dを含むものとして議論される。一実施形態では、モデルパラメータのアイデンティティおよびモデルパラメータの間の分析的関係を、強制的コーディングを使用せずに宣言的に定義することができる。
【0040】
データモデルバインディングコンポーネント410は、正規化されたデータフィールド402とモデルパラメータ411との間に入って、これによってフィールドとパラメータとの間のバインディングを提供する。この場合に、データフィールド402Bは、矢印403Aによって表されるように、モデルパラメータ411Aにバインドされる。言い換えると、データフィールド402Bからの値が、モデルパラメータ411Aを設定するのに使用される。また、この例では、データフィールド402Eは、モデルパラメータ411Bにバインドされ(矢印403Bによって表されるように)、データフィールド402Hは、モデルパラメータ411Cにバインドされる(矢印403Cによって表されるように)。
【0041】
データフィールド402A、402C、402D、402F、および402Gは、モデルパラメータのいずれにもバインドされずに図示されている。これは、入力データからのデータフィールドのすべてが必ずモデルパラメータとして使用されることを要求されるのではないことを強調するためである。一実施形態では、これらのデータフィールドのうちの1つまたは複数を使用して、正規化されたデータからのどのフィールドが(この正規化されたデータまたはおそらくはすべての将来の類似する正規化されたデータについて)どのモデルパラメータにバインドされなければならないのかに関する命令をデータモデルバインディングコンポーネント410に提供することができる。これは、図2の分析部分220に供給できる分析データ221の種類の例を表す。正規化されたデータフィールドからのどのデータフィールドがどのモデルパラメータにバインドされるのかの定義を、複数の形で定式化することができる。たとえば、バインディングを、1)オーサリング時に作成者によって明示的にセットされる、2)使用時にユーザによって明示的にセットされる(作成者によって課せられるすべての制限の対象になる)、3)アルゴリズム的ヒューリスティックに基づくオーサリングコンポーネント240による自動的バインディング、および/または4)バインディングをアルゴリズム的に行うことができないと判定される時にバインディングを指定するように作成者および/またはユーザにオーサリングコンポーネントによって促すこととすることができる。したがって、バインディングを、モデルロジック自体の一部として解決することもできる。
【0042】
どのデータフィールドがどのモデルパラメータにマッピングされるのかを定義する、作成者の能力は、作成者に、モデルパラメータを定義するためにその作成者が快適であるシンボルを使用できるという点で高い柔軟性を与える。たとえば、モデルパラメータのうちの1つが圧力を表す場合に、作成者は、そのモデルパラメータに「Pressure(圧力)」もしくは「P」またはその作成者にとって意味をなす任意の他のシンボルという名前を付けることができる。作成者は、モデルパラメータの名前を変更することさえでき、これは、一実施形態で、データモデルバインディングコンポーネント410に、以前に古い名前のモデルパラメータへのものであったバインディングをその代わりに新しい名前のモデルパラメータにバインドすることを可能にするために自動的に更新させ、これによって、所望のバインディングを保存することができる。バインディングに関するこの機構は、バインディングをランタイムに宣言的に変更することをも可能にする。
【0043】
モデルパラメータ411Dは、この例でモデルパラメータ411Dがデータモデルバインディングコンポーネント410によって値を割り当てられなかったことを強調するために、アスタリスクと共に図示されている。したがって、モデルパラメータ411Dは、未知数のままになる。言い換えると、モデルパラメータ411Dは、値を割り当てられない。
【0044】
モデリングコンポーネント420は、複数の機能を実行する。まず、モデリングコンポーネント420は、モデルパラメータ411の間の分析的関係421を定義する。分析的関係421は、式431、ルール432、および制約433を含む3つのカテゴリに類別される。しかし、ソルバのこのリストは、拡張可能である。たとえば、一実施形態では、対応するシミュレーションエンジンが提供され、ソルバとして登録されるならば、1つまたは複数のシミュレーションを、分析的関係の一部として組み込むことができる。
【0045】
用語「式」は、本明細書で使用される時に、数学の分野で使用される時のこの用語と一致する。
【0046】
用語「ルール」は、本明細書で使用される時に、条件ステートメントを意味し、ここで、1つまたは複数の条件が満足される場合に(条件ステートメントの条件部分すなわち「if」部分)、1つまたは複数のアクションが行われなければならない(条件ステートメントの結果部分すなわち「then」部分)。ルールは、1つもしくは複数のモデルパラメータが条件ステートメント内で表される場合、または1つもしくは複数のモデルパラメータが結果ステートメント内で表される場合に、モデルパラメータに適用される。
【0047】
用語「制約」は、本明細書で使用される時に、制限が1つまたは複数のモデルパラメータに適用されることを意味する。たとえば、都市計画モデルで、特定の家屋要素が、全体的な可能な地域制指定のサブセットを有する地図位置での配置に制限される場合がある。橋要素が、ある最大長未満またはあるレーン数未満に制限される場合がある。
【0048】
モデルに馴染みのある作成者は、そのモデルにあてはまるこれらの式、ルール、および制約の表現を提供することができる。シミュレーションの場合に、作成者は、モデルパラメータの間の適当なシミュレーション関係を提供する適当なシミュレーションエンジンを提供することができる。モデリングコンポーネント420は、作成者が式、ルール、および制約の自然なシンボリック表現を提供するための機構を提供することができる。たとえば、熱力学関連モデルの作成者は、熱力学教科書から式を単純にコピーし、貼り付けることができる。モデルパラメータをデータフィールドにバインドする能力は、作成者が、その作成者に馴染みのあるどのシンボルでも(その作成者が頼る教科書で使用される正確なシンボルなど)またはその作成者が使用したいと思う正確なシンボルを使用することを可能にする。
【0049】
解く前に、モデリングコンポーネント420は、モデルパラメータのどれについて解くべきか(すなわち、以下では、単数の場合に「出力モデル変数(output model variable)」、複数の場合に「出力モデル変数(output model variables)」、単一のまたは複数の出力モデル変数があり得る場合に「出力モデル変数(1つまたは複数)(output model variable(s))」)をも識別する。出力モデル変数(1つまたは複数)は、未知パラメータとすることができ、または、既知のモデルパラメータの値が解く動作で変更の対象になる場合に既知のモデルパラメータとすることができる。図4の例では、データモデルバインディング動作の後に、モデルパラメータ411A、411B、および411Cは既知であり、モデルパラメータ411Dは未知である。したがって、未知のモデルパラメータ411Dを、出力モデル変数のうちの1つとすることができる。その代わりにまたはそれに加えて、既知のモデルパラメータ411A、411B、および411Cのうちの1つまたは複数を出力モデル変数にすることもできる。次に、ソルバ440が、可能な場合に、出力モデル変数(1つまたは複数)について解く。下で説明する一実施形態では、ソルバ440は、解く動作を実行するのを可能にするのに十分な入力モデル変数が提供される限り、単一のモデル内であっても、さまざまな出力モデル変数について解くことができる。入力モデル変数は、たとえば、その値が解く動作中に変更の対象にならない既知のモデルパラメータとすることができる。たとえば、図4で、モデルパラメータ411Aおよび411Dが入力モデル変数である場合に、ソルバは、その代わりに、出力モデル変数411Bおよび411Cについてその代わりに解くことができる。一実施形態で、ソルバは、単一のモデルパラメータについて複数の異なるデータタイプのうちの任意の1つを出力することができる。たとえば、いくつかの式動作(加算、減算、および類似物など)は、オペランドが整数、浮動小数点数、そのベクトル、またはその行列のいずれであるかにかかわりなく適用される。
【0050】
決して好ましい実施形態ではないが、ソルバ440が、複数のスプレッドシートがある(この複数のスプレッドシートが複数のタブ内の単一のスプレッドシートファイル内にあるかどうかおよび/またはこの複数のスプレッドシートが異なるスプレッドシートファイル内の単一のスプレッドシートファイル内にあるかどうかにかかわりなく)スプレッドシートプログラムによって実施される一実施形態がある。通常のスプレッドシートには、複数のセルがある。各セルは、リテラル値またはリテラル値に解決できる関連する式を有することができる。式の場合に、その式が、他のセルからの値に頼る場合があり、その値が、他のセルに関連する対応する式を介して潜在的に解かれた可能性がある。
【0051】
スプレッドシートは、入力モデルパラメータおよび出力モデルパラメータが既知である1方向で解く時に有効である。しかし、ソルバ440にあるとされる利益の1つは、どのモデルパラメータ(1つまたは複数)が入力パラメータ(1つまたは複数)として識別されるのかおよびどのモデルパラメータ(1つまたは複数)が出力モデルパラメータ(1つまたは複数)として識別されるのかに依存して異なる解決方向が使用可能にされ、入力モデルパラメータ(1つまたは複数)および/または出力モデルパラメータ(1つまたは複数)のアイデンティティが変化する時に解決方向がおそらくは解決ごとに変化することである。これには、スプレッドシートプログラムで、可能な解決方向ごとに異なるスプレッドシートを割り当てることによって対処することができる。たとえば、20個の可能な解決方向がある場合には、解決方向ごとに1つの、合計20個のスプレッドシートを設けることができる。
【0052】
各スプレッドシートは、その方向で解くための適当な式を有する適当にリンクされたセルを有する。この実施形態では、スプレッドシートプログラムの内部またはスプレッドシートプログラムの外部のいずれかのマクロまたは他の実行可能ファイルが、どのパラメータが入力パラメータであるのかおよびどれについて解くべきなのかを判定する際にモデリングコンポーネント420のために記述された関数を実行し、その解決方向を考慮して適当なスプレッドシートを選択し、選択された解決方向について適当なスプレッドシートフィールドを設定することができる。適当な入力パラメータフィールドが設定された後に、スプレッドシートは、出力モデルパラメータ(1つまたは複数)について解き、スプレッドシート内のリンクされた式を使用して適当な出力モデルパラメータフィールド(1つまたは複数)に値を設定する。しかし、スプレッドシート実施態様が、本明細書で説明される原理の好ましい実施形態ではないことを想起されたい。たとえば、数百個の可能な解決方向がある場合には、1つのスプレッドシートが各解決方向専用である実施形態に、数百個のスプレッドシートがある可能性がある。したがって、分析が、このスプレッドシート実施形態で変更される場合には、このスプレッドシート実施形態は、リンクされた分析式をどのように変更しなければならないのかを調べるためにスプレッドシートのそれぞれを手作業でふるいにかけることを伴う。この説明は、ここで、このスプレッドシート実施形態からより離れて焦点を合わせ、もう一度、ソルバ400機能性の一般的議論に移る。
【0053】
一実施形態では、ソルバ440が、特定の出力モデル変数について解くことができない時であっても、ソルバ400は、それでも、実際の数値結果(または何であれそれについて解かれるデータタイプ)への完全な解決が可能ではない場合であっても、出力モデル変数に関する部分的な解を提示する。これは、完全な解決に達するためにどの情報が必要なのかに関して作成者にプロンプトを出すことによって、パイプラインが増分開発を容易にすることを可能にする。これは、オーサ時と使用時との間の区別を除去するのを助けもする。というのは、少なくとも部分的な解決が、さまざまなオーサリングステージ全体を通じて使用可能であるからである。抽象的な例について、分析モデルが式a=b+c+dを含むと仮定する。次に、a、c、およびdが出力モデル変数であり、bが、5という既知の値(この場合には整数)を有する入力モデル変数であると仮定する。解くプロセスでは、ソルバ440は、出力モデル変数のうちの1つ「d」について解き、「d」と呼ばれるモデルパラメータに6(整数)という値を割り当てることだけができるが、ソルバ440は、「c」について解くことができない。「a」は「c」に依存するので、「a」と呼ばれるモデルパラメータも、未知数で、それについて解かれないままになる。この場合に、整数値を「a」に割り当てるのではなく、ソルバは、部分的な解決を行い、モデルパラメータ「a」に「c+11」というストリング値を出力することができる。前に述べたように、これは、ドメイン専門家が分析モデルを作成しつつある時に特に役立つ可能性があり、本質的に、モデルパラメータ「a」の内容に関する部分的情報を提供するように働き、「c」モデルパラメータについて解くことを可能にする、あるさらなるモデル分析が提供される必要があることの手がかり(キュー)を作成者に与えるようにも働く。この部分的な解決を、おそらく、ドメイン専門家が部分的結果を見ることを可能にするために、ある形でビュー構成内で出力することができる。
【0054】
ソルバ440は、図4では単純化された形で図示されている。しかし、ソルバ440は、図10から16に関して説明するように、複数の構成ソルバの動作を指示することができる。図4では、モデリングコンポーネント420が、モデルパラメータ411(現在は既知のそれについて解かれた出力モデル変数を含む)を、図5のビュー部分500に提供される出力として使用可能にする。
【0055】
図5は、図2のビュー部分230の例を表すビュー部分500を示す。ビュー部分500は、図4の分析部分400からモデルパラメータ411を受け取る。ビュー部分は、ビューコンポーネントのコレクションを含むビューコンポーネントリポジトリ520をも含む。たとえば、この例のビューコンポーネントリポジトリ520は、ビューコンポーネント521から524を含むものとして図示されているが、ビューコンポーネントリポジトリ520は、任意の個数のビューコンポーネントを含むことができる。ビューコンポーネントのそれぞれは、0個以上の入力パラメータを含むことができる。たとえば、ビューコンポーネント521は、入力パラメータを全く含まない。しかし、ビューコンポーネント522は、2つの入力パラメータ542Aおよび542Bを含む。ビューコンポーネント523は、1つの入力パラメータ543を含み、ビューコンポーネント524は、1つの入力パラメータ544を含む。とは言うものの、これは単なる例である。入力パラメータは、ビジュアルアイテムがどのようにレンダリングされるのかに影響することができるが、必ずそうである必要はない。ビューコンポーネント521が入力パラメータを含まないという事実は、モデルパラメータを全く参照せずに生成されるビューがあり得ることを強調するものである。変化しない固定された(組込み)データだけを含むビューを検討されたい。そのようなビューは、たとえば、ユーザの参照情報を構成することができる。その代わりに、モデルにインポートするためにアイテムをカタログから選択できるようにするために、カタログをブラウズする形を提供するだけのビューを検討されたい。
【0056】
各ビューコンポーネント521から524は、対応するビューコンポーネント入力パラメータ(1つまたは複数)がある場合にそれを使用してビュー構成コンポーネント540によって実行された時に、対応するビューアイテムを仮想空間550内に配置させる、対応するロジックを含むか、それに関連付けられる。その仮想アイテムは、静的なイメージもしくはオブジェクトとすることができ、または、動的にアニメートされるビジュアルアイテムまたはオブジェクトとすることができる。たとえば、ビューコンポーネント521から524のそれぞれは、実行された時にそれぞれ対応する仮想アイテム551から554を仮想空間550内にレンダリングさせる対応するロジック531から534に関連する。仮想アイテムは、単純な形状として図示されている。しかし、仮想アイテムは、形状において非常に複雑にすることができ、おそらくはアニメーションさえ含む。この説明では、ビューアイテムが仮想空間内でレンダリングされる時に、それは、レンダリングエンジンに供給された時にレンダリングエンジンがディスプレイ上で指定された位置に指定された形でビューアイテムを表示できる十分な命令をビュー構成コンポーネントが作成したことを意味する。
【0057】
ビューコンポーネント521から524を、おそらくは、たとえば図2のオーサリングコンポーネント240を使用してビュー部分500にビューデータとして提供することさえできる。ビューデータを、図6に関して上で説明したようにデータストリームオブジェクトによって提供される擬似無限データストリームまたは部分的擬似無限データストリームの範囲とすることさえできる。たとえば、オーサリングコンポーネント240は、作成者が複数の幾何的形から選択しまたはおそらくは他の幾何的形を構成することを可能にするセレクタを提供することができる。作成者は、ビューコンポーネントごとに入力パラメータのタイプを指定することもできるが、入力パラメータの一部を、ビュー部分500によって課せられるデフォルト入力パラメータとすることができる。各ビューコンポーネント521から524に関連するロジックに、ビューデータを与えることができ、かつ/または各ビューコンポーネント521から524に関連するロジックが、ビュー部分500自体によって提供されるあるデフォルト機能性を含むこともできる。
【0058】
ビュー部分500は、モデルパラメータのうちの少なくともいくつかをビューコンポーネント521から524の対応する入力パラメータにバインドするように構成されたモデル−ビューバインディングコンポーネント510を含む。たとえば、モデルパラメータ411Aは、矢印511Aによって表されるように、ビューコンポーネント522の入力パラメータ542Aにバインドされる。モデルパラメータ411Bは、矢印511Bによって表されるように、ビューコンポーネント522の入力パラメータ542Bにバインドされる。また、モデルパラメータ411Dは、矢印511Cによって表されるように、それぞれビューコンポーネント523および524の入力パラメータ543および544にバインドされる。モデルパラメータ411Cは、どの対応するビューコンポーネントパラメータにもバインドされずに図示され、すべてのモデルパラメータが、これらのモデルパラメータが分析部分で必須である場合であってもパイプラインのビュー部分によって使用される必要があるのではないことを強調する。また、モデルパラメータ411Dは、ビューコンポーネントの2つの異なる入力パラメータにバインドされて図示され、モデルパラメータを複数のビューコンポーネントパラメータにバインドできることを表す。一実施形態では、モデルパラメータとビューコンポーネントパラメータとの間のバインディングの定義を、1)オーサリング時に作成者によって明示的にセットされる、2)使用時にユーザによって明示的にセットされる(作成者によって課せられるすべての制限の対象になる)、3)アルゴリズム的ヒューリスティックに基づくオーサリングコンポーネント240による自動的バインディング、および/または4)バインディングをアルゴリズム的に行うことができないと判定される時にバインディングを指定するように作成者および/またはユーザにオーサリングコンポーネントによって促すことによって定式化することができる。
【0059】
やはり、好ましくはないが、ビュー部分500の一部またはすべてを、スプレッドシートによって実施することができる。たとえば、単一のスプレッドシートが、1つまたは複数のビューコンポーネントの基礎として働くことができ、そのビューコンポーネントのそれぞれの入力パラメータ(1つまたは複数)は、対応するスプレッドシートセル内で表される。ビューコンポーネントの関連するビューコンストラクションロジックを、少なくとも部分的にスプレッドシートプログラム内のリンクされた式を使用して表すことができる。スプレッドシートプログラムのレンダリング能力、マクロ、またはある他の実行可能プログラムを使用して、対応するビジュアルアイテムのレンダリングを完成させることができる。しかし、前に述べたように、このスプレッドシートベースの実施態様は、好ましい実施形態ではなく、したがって、この説明は、ビュー部分500のより一般的な実施形態に戻る。
【0060】
前に述べたように、ビューアイテムは、アニメーションを含むことができる。単純な例を挙げると、たとえば、ある会社の、販売地域による所与の時点(所与の暦四半期)の過去の収入、予測収入、広告宣伝費、および利益をプロットする棒グラフを検討されたい。棒グラフを、所望のタイムスパン内の暦四半期ごとに描くことができる。ここで、これらのグラフのうちの1つ、たとえば、タイムスパン内の最も古い時のグラフを描き、1/2秒おきにそれを次のタイムスパン(たとえば、次の四半期)のグラフに置換すると想像されたい。その結果は、地域ごとの利益、売上、および広告宣伝費を表す棒が、アニメーションが進行する時に高さにおいて変化するのを見ることである。この例では、時間期間ごとのグラフが、アニメーションの「セル」であり、セルは、動きの間の瞬間を示し、次々に示されるセルの集合は、動きをシミュレートする。従来のアニメーションモデルは、組込みのハードコーディングされたグラフタイプの経時的なアニメーションを可能にする。
【0061】
しかし、パイプライン201を使用すると、対照的に、すべての種類のビジュアルをアニメートすることができ、アニメーションを、ビジュアルコンポーネントのパラメータの任意の1つまたは任意の組合せを変更することによって駆動することができる。上の棒グラフの例に戻って、時間によるアニメーションではなく、広告宣伝費によるアニメーションを行うと想像されたい。このアニメーションの各「セル」は、広告宣伝費の所与の値に関する経時的な売上および利益を示す棒グラフである。したがって、広告宣伝費が変更される時に、棒は、広告宣伝費の変化に応答して伸び縮みする。
【0062】
アニメートされたデータディスプレイの威力は、それらが、どのパラメータが他のパラメータの変化に最も敏感であるのかを非常に目に見えるものにすることである。というのは、各パラメータの値がアニメーションパラメータの変更に応答してどれほど速くおよびどれほど大きく変化するのかが即座に見えるからである。
【0063】
また、パイプライン201は、次の特性に起因して、アニメーションを行う能力において区別される。
【0064】
第1に、アニメーション変数のステップのシーケンスを、事前定義の範囲にわたるステップの固定されたシーケンスであることに対して、モデルの分析によって計算することができる。たとえば、アニメーション変数として広告宣伝費を変更する例で、指定されるものが、「ステップごとに、広告宣伝費を5%だけ増やす場合の広告宣伝費によってアニメーションを行う」または「広告宣伝費がそのステップの総経費の10%である場合」であると想像されたい。はるかにより洗練された例は、「広告宣伝費が経時的な売上の変化の割合を最大化するように最適化された場合の広告宣伝費によってアニメーションを行う」である。言い換えると、ソルバは、売上の増加の割合が最大化されるように、経時的に(すなわち、四半期などの連続する時間期間ごとに)費やされる広告のステップのセットを判定する。ここで、ユーザは、おそらく、広告宣伝費を変更することによって売上をどれほど速く増やすことができるかを知りたいだけではなく、その成長を達成する広告宣伝費の四半期ごとの量をも知りたい(値のシーケンスを、複合ビジュアルの一部としてプロットすることができる)。
【0065】
第2に、伝統的なデータグラフだけではなく、すべての種類のビジュアルをアニメートすることができる。たとえば、a)対気速度パラメータによってアニメートされ、2)タービンの回転速度が対気速度の関数であり、3)タービンベアリングの温度が対気速度の関数である、ジェットエンジンのコンピュータ支援設計(CAD)モデルを検討されたい。ジェットエンジンは、タービンブレードが完全性を失うかベアリングが過熱するかのいずれかになる前にタービンをどれほど速く回転できるかに関する制限を有する。したがって、このアニメーションでは、我々は、対気速度が変更される時に、タービンブレードおよびベアリングの色が、青(安全)から赤(臨界)に変更されなければならないことを望む。「安全」および「臨界」のタービンRPMおよびベアリング温度の値は、これらの部品の物理的特性に基づいてモデルによって計算することができるであろう。ここで、アニメーションが、定義された範囲にわたって対気速度を変更する時に、我々は、タービンブレードおよびベアリングのそれぞれの色が変化するのを見る。ここで興味深いのは、どれが最初に臨界に達するのか、およびどちらかが臨界への突然の(制御がきかない)進行を経験するかどうかに注意することである。この種類の影響は、グラフまたは一連の図を見ることによって区別するのがむずかしいが、アニメーションでは即座に明白になる。これは、任意のパラメータ(対気速度)によって任意のビジュアル(CADモデル)をアニメートする1つの例にすぎず、アニメーションは、さらに他の任意のパラメータ(タービンRPMおよびベアリング温度)に影響する。任意のビジュアル(1つまたは複数)の任意のパラメータ(1つまたは複数)を、アニメーション変数として働く任意の所望のパラメータ(1つまたは複数)に従ってアニメートすることができる。
【0066】
第3に、パイプライン201を、データおよびパラメータをユーザによって変更できるようにするために、ストリームの途中で停止することができ、その後、アニメーションを、再開始するか再開することができる。したがって、たとえば、ジェットエンジンの例では、制御のきかない加熱が所与の対気速度で始まることがわかる場合に、ユーザは、その制御のきかない加熱が始まる点でアニメーションを停止し、ベアリングまたはベアリング表面材料の種類などのエンジン設計判断基準を変更し、その後、その変更の影響を見るためにアニメーションを継続することができる。
【0067】
本明細書で論じる他の能力と同様に、アニメーションを、作成者によって定義することができ、かつ/またはさまざまなシナリオをテストするためにユーザが操作するために残しておくことができる。たとえば、モデルを、ユーザ自身が選択するパラメータに従って、および/またはユーザが選択するアニメーション変数のデータ範囲にわたって、いくつかのビジュアルをユーザによってアニメートすることを可能にするように作成することができる(計算された範囲が望まれる場合に、その範囲を指定する能力を含む)。そのようなアニメーションを、他のwhat−if比較ディスプレイのように、並べて表示することもできる。たとえば、ユーザは、将来の異なる一般の金利または異なる広告宣伝費ランプ(advertising expenses ramp)を有する2つのシナリオで、時間によってアニメートされる経時的な売上および利益のアニメーションを比較することができる。ジェットエンジンの例では、ユーザは、ベアリング設計を変更する前と後との両方の場合のエンジンのアニメーションを比較することができる。
【0068】
この点で、ビュー構成を実際に構成するために構成フレームワークをどのように使用できるのかの特定の例を、図7に関して説明し、図7は、室内にレイアウトされた家具を有する部屋レイアウト701を含み、風水メータ702をも含むビュー構成の3Dレンダリング700を示した。この例は、単に、本明細書で説明される原理を、ドメインにかかわりなく任意のビュー構成にどのように適用できるのかを示すために提供される。したがって、図7の例および本明細書で説明されるすべての他の例のビュー構成は、本発明のより広い範囲を定義するのではなく、厳密に、非限定的な具体的な例を参照することによって抽象概念をより十分に理解することを可能にする例にすぎないと見なされねばならない。本明細書で説明される原理を、無数のさまざまなビュー構成を構築するために適用することができる。それでも、具体的な例の参照は、より広義の抽象的な原理を明瞭にすることができる。
【0069】
図8は、ビュー構成を生成する方法800の流れ図を示す。方法800を、図2のパイプライン環境200によって実行することができ、したがって、図2のパイプライン環境200を頻繁に参照すると同時に、それぞれ図2のパイプラインの特定の部分を示す図3から5を参照して、説明する。方法800を、任意のビュー構成を構築するために実行することができるが、方法800を、図7のビュー構成700に関して説明する。方法800の行為のいくつかは、図2のデータ部分210によって実行することができ、図8の左の列で見出し「データ」の下にリストされている。方法800の他の行為は、図2の分析部分220によって実行することができ、図8の左から2番目の列で見出し「分析」の下にリストされている。この方法の他の行為は、図2のビュー部分230によって実行することができ、図8の右から2番目の列で見出し「ビュー」の下にリストされている。方法800の行為の1つは、レンダリングモジュールによって実行することができ、図8の右の列で見出し「他」の下にリストされている。
【0070】
図8を参照すると、データ部分は、どのビジュアルアイテムが表示されるのかまたはビジュアルアイテムのうちの所与の1つまたは複数がどのように表示されるのかに少なくとも集合的に影響する入力データにアクセスする(行為811)。たとえば、図7を参照すると、入力データは、家具のアイテムのそれぞれのビューコンポーネントを含むことができる。たとえば、長椅子、椅子、植物、机、花、および部屋自体のそれぞれを、対応するビューコンポーネントによって表すことができる。ビューコンポーネントは、そのビューコンポーネントに適切な入力パラメータを有することができる。たとえば、アニメーションが使用される場合に、入力パラメータのいくつかが、アニメーションの流れに影響する場合がある。パラメータのいくつかが、ビジュアルアイテムの表示に影響する可能性があり、いくつかのパラメータが影響しない可能性がある。
【0071】
たとえば、部屋自体を、ビューコンポーネントとすることができる。入力パラメータのいくつかは、部屋の寸法、部屋の方位、壁の色、壁のテクスチャ、床の色、床のタイプ、床のテクスチャ、室内の光源の位置および強さなどを含むことができる。このビュー構成では必ずしも反映されないが、この部屋コンポーネントの他のビューおよび使用で反映される可能性がある部屋パラメータもある可能性がある。たとえば、部屋パラメータは、度、分、秒単位の緯度および経度で表された部屋の位置を有することができる。部屋パラメータは、部屋コンポーネントの作成者の識別および部屋の平均賃貸コストを含む可能性もある。
【0072】
室内のさまざまなコンポーネントを、対応するパラメータ化されたビューコンポーネントによって表すこともできる。たとえば、各植物を、鉢のスタイル、鉢の色、鉢の寸法、植物の色、植物の回復力、太陽光への植物の依存性、植物の毎日の水摂取量、植物の毎日の酸素産生、植物の位置、および類似物を指定する入力パラメータを用いて構成することができる。やはり、表示されているものの性質に依存して、これらのパラメータのいくつかは、ディスプレイがどのようにレンダリングされるのかに影響する可能性があり、他のパラメータは影響しない可能性がある。
【0073】
風水メータ702も、ビューコンポーネントとすることができる。このメータは、直径、メータの直径内に含まれるくさび形の個数、テキストの色、および類似物などの入力パラメータを含むことができる。風水メータのさまざまなくさび形も、ビューコンポーネントとすることができる。その場合に、それらのビューコンポーネントへの入力パラメータを、タイトル(たとえば、水、山、雷、風、火、地、沢、天)、おそらくはくさび形内に現れるグラフィック、色調、または類似物とすることができる。
【0074】
分析部分は、入力データをモデルパラメータにバインドし(行為821)、出力モデル変数を判定し(行為822)、出力モデル変数について解くためにモデルパラメータの間のモデル固有分析的関係を使用する(行為823)。行為821のバインドする動作は、上で述べたものであり、本質的に、モデル作成者が快適なシンボルを使用して作成者がモデル分析の式、ルール、および制約を定義することを可能にする際の柔軟性を可能にする。図10から16に関して説明するより複雑なソルバは、出力モデル変数について解く(行為823)ように働くことができる。
【0075】
出力モデル変数の識別は、解く動作ごとに異なる可能性がある。モデルパラメータが同一のままである可能性がある場合であっても、どのモデルパラメータが出力モデル変数であるのかの識別は、特定のモデルパラメータにバインドするためのデータの可用性に依存する。これは、ユーザが所与のビュー構成でwhat−ifシナリオを実行することを可能にすることに関して注目すべき密接な関係を有する。
【0076】
たとえば、図7の風水部屋の例で、ユーザが、彼らの居間に置くために新しい椅子を買ったと仮定する。ユーザは、部屋のデザインをパイプラインへのデータとして提供することができる。これを、部屋の寸法を入力し、おそらくは仮想部屋内の実際の家具が実際の部屋に配置される適当な位置にドラッグアンドドロップするためにユーザが仮想家具を選択することを可能にする選択ツールを提供するようにオーサリングコンポーネントがユーザに促すことによって、容易にすることができる。次に、ユーザは、ユーザによって購入された新しい椅子の特性を有するように編集できる1つの家具を選択することができる。次に、ユーザは、その椅子を部屋にドラッグアンドドロップすることができる。風水メータ702は、自動的に更新するはずである。この場合に、椅子の位置および他の属性が、入力モデル変数になり、風水スコアが、出力モデル変数になる。ユーザが、仮想椅子をさまざまな位置にドラッグする時に、風水メータの風水スコアは、更新し、したがって、ユーザは、仮想椅子をさまざまな位置に配置することの風水結果をテストすることができる。ユーザが、どれが最良の風水を与えるのかを調べるために可能なすべての位置に椅子をドラッグする必要を避けるために、ユーザは、椅子をその現在位置から特定の方向に移動することが状況をよりよくまたはより悪くするかどうか、およびどれほどよりよくまたはより悪くするのかをユーザに知らせるローカルな視覚的手がかり(たとえば、傾斜した線または矢印など)を得ることができる。
【0077】
しかし、ユーザは、従来のビュー構成には見られない他のことを行うこともできる。ユーザは、出力モデル変数を実際に変更することができる。たとえば、ユーザは、風水メータ内で所望の風水スコアを示し、出力モデル変数として仮想椅子の位置を残すことができる。その後、ソルバは、出力モデル変数について解き、少なくとも指定された風水スコアを達成する椅子の提案される1つまたは複数の位置を提供する。ユーザは、複数のパラメータを出力モデル変数にすることを選択することができ、システムは、出力モデル変数に対する複数の解決策を提供することができる。これは、図10から16に関してさらに詳細に説明される複雑なソルバによって容易にされる。
【0078】
図8に戻って、出力モデル変数について解かれた後に、モデルパラメータが、パラメータ化されたビューコンポーネントの入力パラメータにバインドされる(行為831)。たとえば、風水の例では、未知の風水スコアについて解かれた後に、スコアが、入力パラメータとして風水メータビューコンポーネントに、またはおそらくはそのメータに含まれる適当なくさび形にバインドされる。代替案では、風水スコアが入力モデル変数である場合に、仮想椅子の位置を、それについて解き、入力パラメータとして椅子ビューコンポーネントに提供することができる。
【0079】
どのようにしてソルバが式を再配置し、すべてが1つの分析モデルから駆動される入力モデル変数および出力モデル変数の指定を変更するのかの原理を示す単純化された例を、これから提示する。ユーザ自身が、式を再配置する必要はない。この単純化された例は、風水のルールを正確に表さない可能性があるが、それでも原理を示す。部屋の総合的風水(FS)(FSroom)が、椅子のFS(FSchair)および植物のFS(FSplant)と等しいと仮定する。FSchairが、定数Aと壁からの椅子の距離dとの積と等しいと仮定する。FSplantが、定数Bであると仮定する。部屋の総FSは、FSroom=A*d+Bである。dが入力モデル変数である場合には、FSroomは出力変数であり、メータ上に示されるその値は、ユーザが椅子の位置を変更する時に変化する。ここで、ユーザがメータをクリックし、これを入力変数にし、dを未知の出力モデル変数状況にすると仮定する。この場合に、ソルバは、上の式をd=(FSroom−B)/Aとして有効に内部的に書き直す。その場合に、ビューコンポーネントは、ユーザがメータ上で所望の値FSroomを変更する時に、椅子をあちこちに動かし、dすなわち壁からのその距離を変更することができる。
【0080】
次に、ビュー部分は、おそらくはビュー構成内のビューアイテムのコンストラクションを駆動するために、入力パラメータ(1つまたは複数)がある場合にその入力パラメータを使用してビューコンポーネントに関連するコンストラクションロジックを実行することによって、ビジュアルアイテムのビューを構築する(行為832)。その後、このビューコンストラクションを、レンダリングモジュールに供給することができ、その後、レンダリングモジュールは、そのビューコンストラクションをレンダリング命令として使用する(行為841)。
【0081】
一実施形態では、ビューを構築するプロセスが、ソルバによって実行されるデータ変換として扱われる。すなわち、所与の種類のビュー(たとえば、棒グラフを検討されたい)について、グラフィックスハードウェアを駆動するためにレンダリングソフトウェアが必要とする低水準ジオメトリおよび関連する属性のすべてを符号化する表示可能出力データ構造(シーングラフと呼ばれる)に入力データを変換することによってビューを生成する、ルール、式、および制約からなるモデルがある。棒グラフの例では、入力データは、たとえば、グラフタイトル、軸ラベルその他などのものの属性と一緒に、プロットされるデータ系列である。棒を生成するモデルは、1)何本の棒を描くべきかを判定するためにデータ系列が何個のエントリからなるのかを数え、2)各軸のスケールおよび開始値/終了値などを計算するためにデータ系列がまたがる範囲(最小、最大)を計算し、3)以前に計算されたスケール係数に基づいてデータ系列内のデータ点ごとに棒の高さを計算し、4)タイトルがグラフに関して正しく配置され、センタリングされるようにするためにタイトルの開始位置およびサイズを計算するためにグラフタイトル内に何個の文字があるのかを数えるなどを行う、ルール、式、および制約を有する。要するに、モデルは、入力データに基づいて幾何形状のセットを計算するように設計され、これらの幾何形状は、タイプ「シーングラフ」の階層データ構造内に配置される。言い換えると、シーングラフは、モデルが入力データに基づいてそれについて解く出力変数である。したがって、作成者は、その作成者が任意の種類のモデルを作成し、カスタマイズし、構成するのに使用するものと同一のフレームワークを使用して、完全に新しい種類のビューを設計し、既存のビューをカスタマイズし、前から存在するビューを複合物に構成することができる。したがって、プログラマではない作成者が、新しいコードを立案することなく新しいビューを作成することができる。
【0082】
図2に戻って、ユーザ相互作用応答モジュール250が、ユーザがビュー構成と相互作用する時を検出し、パイプラインに適当に応答させることを想起されたい。図9は、ビュー構成とのユーザ相互作用に応答する方法900の流れ図を示す。具体的に言うと、ユーザ相互作用応答モジュールは、ビューを再生成するためにパイプラインのどのコンポーネントがさらなる作業を実行すべきかを判定し、ユーザ相互作用を表すデータまたは少なくともユーザ相互作用に依存するデータをそのパイプラインコンポーネントに供給もする。一実施形態では、これが、逆(アップストリーム)ビュー/分析/データ方向に走り、(ダウンストリーム)データ/分析/ビューパイプラインに平行である、変換パイプラインを介して行われる。
【0083】
相互作用は、アップストリームパイプラインへイベントとしてポストされる。データ/分析/ビューパイプライン内の各トランスフォーマは、着信相互作用データを処理するアップストリームトランスフォーマを提供する。これらのトランスフォーマは、ヌル(パススルー、パスから外れて最適化される)またはさらにアップストリームに供給される相互作用データに対して変換動作を実行できるのいずれかとすることができる。これは、1)ソースデータに影響しないビュー操作などのアップストリーム変換に影響しない相互作用挙動を、パイプライン内の最も適当な(最もダウンストリームの)点で処理でき、2)中間トランスフォーマが、さらにアップストリームのトランスフォーマから最終的に来る最後の更新の前にヒューリスティック的に判定された更新をダウンストリームに送り返すことによってビュー更新性能を最適化できるという点で、パイプラインの向上する性能および応答性を提供する。たとえば、データ編集相互作用の受取時に、ビューレベルトランスフォーマは、ビューに関するシーングラフへ直接に即座のビュー更新を行うことができ(それが解釈の仕方を知っている編集について)、最終的な完全な更新は、アップストリームデータトランスフォーマから後に来、このアップストリームデータトランスフォーマでは、ソースデータが実際に編集される。
【0084】
所与のビュー相互作用のセマンティクスが、必要とされる基礎になるデータ編集への自明ではないマッピングを有する時には、中間のトランスフォーマが、必要なアップストリームマッピングを提供することができる。たとえば、計算結果のグラフ上の点をドラッグすることは、グラフ上の計算された値を供給する複数のソースデータアイテムの新しい値を計算する逆方向解決を要求することができる。ソルバレベルアップストリームトランスフォーマは、必要な解決を呼び出し、必要なデータ編集をアップストリームに伝搬させることができる。
【0085】
図9は、ビューコンストラクションとのユーザ相互作用に応答する方法900の流れ図を示す。ユーザがディスプレイ上のビュー構成のレンダリングと相互作用したことを検出する時に(行為901)、まず、ユーザ相互作用がビューの再生成を必要とするか否かが判定される(判断ブロック902)。これは、図2のユーザ相互作用応答コンポーネント250によって解釈されるイベントをレンダリングエンジンが送出することによって実行することができる。ユーザ相互作用が、ビューの再生成を必要としない場合に(判断ブロック902のNo)、パイプラインは、ビューを再構築するためにさらなるアクションを全く実行しない(行為903)が、レンダリングエンジン自体は、ビューに対するある変換を実行することができる。そのようなユーザ相互作用の例を、ユーザがビューコンストラクションのレンダリングのコントラストを高める場合またはビューコンストラクションを回転する場合とすることができる。これらのアクションは、レンダリングエンジン自体によって行うことができるので、パイプラインは、ユーザ相互作用に応答してビューを再構築するために作業を実行する必要がない。
【0086】
その一方で、ユーザ相互作用のタイプが、ビューコンストラクションの再構成を必要とすると判定される場合に(判断ブロック902のYes)、ビューは、パイプラインによって再構築される(行為904)。これは、パイプラインに供給されたデータのある変更を含むことができる。たとえば、風水の例で、ユーザが、仮想部屋内で仮想椅子の位置を移動し、したがって、仮想椅子コンポーネントの位置パラメータが、変更されると仮定する。イベントが点火され、仮想椅子の位置を表す対応するモデルパラメータも変更されなければならないことを分析部分に知らせる。次に、分析コンポーネントは、風水スコアについて再び解き、風水メータまたはくさび形の対応する入力パラメータを再設定し、風水メータに、椅子の新しい位置に適切な最新の風水スコアを用いて更新させる。
【0087】
ユーザ相互作用は、以前に既知であったモデルパラメータが、現在は未知であることと、以前に未知のパラメータが、現在は既知であることとを要求する場合がある。それは、以前に指定された入力モデル変数が出力モデル変数になり、その逆になる、入力モデル変数および出力モデル変数の指定の変更を必要とする可能性がある複数の可能な例の1つである。その場合に、分析部分は、新しい出力モデル変数(1つまたは複数)について解き、これによって、ビュー構成の再コンストラクションを駆動する。
【0088】
このタイプの再コンストラクションは、異なるデータによって駆動されるビュー構成の代替ビューを構築する際に役立つ。しかし、これは、あるビュー構成から次のビュー構成へのビューの遷移を発生させることによって、物語を話すことにも役立つ。伝統的に、この物語を話すことは、視覚化内のデータの複数の異なる構成のスナップショットを撮り(視覚化も異なることを意味する)、その後、これらのスナップショットをスライドの間の単純な遷移を有するスライドにすることによって行われてきた。
【0089】
しかし、この手法は、おそらくは風水の例の部屋の視覚化またはおそらくはトラクタなどの機械装置の複雑な部分の視覚化など、より洗練されたビジュアルをよくは得ない。グラフで使用される単純な視覚化とは異なって、実際の世界または他の洗練された視覚化では、変更できるものの多数の順列がある。さらに、ビジュアルに対する可能な変更内に連続体がある(たとえば、トラクタアームが複数の位置に連続的に移動することができ、そのアーム移動が、多数の他の要素の再位置決め(おそらくは連続的な)につながる可能性がある。または、おそらく、任意の個数の家具もしくは他の部屋要素が、あちこちに移動され、変更される場合がある。
【0090】
採用される別の手法は、ストーリーボードへの視覚化のスクリプト作成である。ここでの問題は、スクリプトをデータ駆動にすることがむずかしく、スクリプトが、ユーザが行えるデータおよびビジュアルの非常に多数の変更およびビジュアルに対する結果の伝搬される変更を、データおよびビジュアル内の制約および他の関係を尊重する形で予言し、可能にすることがむずかしいことである。
【0091】
その一方で、本明細書で説明されるパイプライン201を使用して構築される時には、非常に複雑なビュー構成を構築することができる。各ビュー構成を、複雑なシーンのストーリーボード内の1シーンとすることができる。ストーリーボードは、さまざまな可能な形のうちの1つでビュー構成を変更することによって、あるシーンから別のシーンに遷移することができる。たとえば、遷移は、次の遷移のうちの1いくつかまたはすべてを含むことができる。
【0092】
1)ビジュアル変換:この変換では、ビュー構成を駆動するデータが同一のままであることができるが、ビュー構成を構築するのに使用されるビューコンポーネントのセットが、変化することができる。言い換えると、データに対するビューが変化する。たとえば、データのセットは、温度と、風速と、落雷などの環境アクティビティのシーケンスを表す他のデータとを含む環境データを含むことができる。1つのシーンが、その環境を通って飛行する航空機の文脈でそのデータを明示することができる。ストーリーボード内の次のシーンは、完全に同一の環境条件にさらされる別の航空機について話すことができる。
【0093】
2)データ変換:ここでは、ビューコンポーネントは同一のままになる。言い換えると、ビューは同一に保たれるが、ビジュアルプロパティに影響するデータが変化し、これによって、ビューがどのようにレンダリングされるのかが変更される。たとえば、データが変化することができ、かつ/またはモデルパラメータへのデータのバインディングが変化する。
【0094】
3)座標系変換。ここでは、データとビューコンポーネントのセットとが、同一のままであることができるが、座標系が、ある座標系から別の座標系に変更される。
【0095】
4)ターゲット世界変換。ここでは、すべてが同一のままであることができるが、ターゲット仮想世界が変化する。たとえば、あるジオメトリを、別のジオメトリに重畳することができる。ジオメトリの例および重畳されたジオメトリを、後で提供する。
【0096】
ソルバフレームワーク
図10は、図4のソルバ440の例を表すことができるソルバ環境1000を示す。ソルバ環境1000を、ソフトウェア、ハードウェア、または組合せで実施することができる。ソルバ環境1000は、特殊化されたソルバのコレクション1010の動作を管理し、調整するソルバフレームワーク1001を含む。コレクション1010は、3つの特殊化されたソルバ1011、1012、および1013を含むものとして図示されているが、省略記号1014は、他の個数の(すなわち、3つより多いまたは3つより少ない)特殊化されたソルバがあることもできることを表す。さらに、省略記号1014は、特殊化されたソルバのコレクション1010が拡張可能であることをも表す。モデル分析についいて助けることができる新しい特殊化されたソルバが、発見されかつ/または開発される時に、これらの新しい特殊化されたソルバを、既存の特殊化されたソルバを補足するため、またはおそらくは既存のソルバのうちの1つもしくは複数を置換するために、コレクション1010に組み込むことができる。たとえば、図10は、新しいソルバ1015が、ソルバ登録モジュール1021を使用してコレクション1010に登録されようとしていることを示す。一例として、新しいソルバを、おそらくは、1つまたは複数の既知の値を受け入れ、1つまたは複数の未知の値について解くシミュレーションソルバとすることができる。他の例は、連立一次方程式、微分方程式、多項式、積分、ルートファインダ(root−finder)、ファクトライザ(factorizer)、オプティマイザなどのソルバを含む。すべてのソルバが、数モード、シンボリックモード、または混合−数シンボリックモードで働くことができる。解の数部分は、パラメータ化されたレンダリングダウンストリームを駆動することができる。解のシンボリック部分は、部分的解レンダリングを駆動することができる。
【0097】
特殊化されたソルバのコレクションは、出力モデル変数について解くのに適するすべてのソルバを含むことができる。たとえば、モデルが、自転車の抵抗を判定する場合には、複素微積分方程式を解くことを保証することができる。その場合に、特殊化された複素微積分ソルバを、おそらくは既存の式ソルバを補足するか置換するためにコレクション1010に組み込むことができる。一実施形態では、各ソルバは、特定の種類の分析関係において1つまたは複数の出力モデル変数について解くように設計される。たとえば、ある式の未知数について解くように構成された1つまたは複数の式ソルバがあるものとすることができる。未知数について解くためにルールを適用するように構成された1つまたは複数のルールソルバがあるものとすることができる。これによって未知数について解くために制約を適用するように構成された1つまたは複数の制約ソルバがあるものとすることができる。他のタイプのソルバは、たとえば、これによって対応する出力データを構築するために入力データを使用してシミュレーションを実行するシミュレーションソルバとすることができる。
【0098】
ソルバフレームワーク1001は、これによって1つまたは複数の出力モデル変数について解かせるために、コレクション1010内の特殊化されたソルバのうちの1つまたは複数またはすべての処理を調整するように構成される。次に、ソルバフレームワーク1001は、それについて解かれた値を1つまたは複数の他の外部コンポーネントに供給するように構成される。たとえば、図2を参照すると、ソルバフレームワーク1001は、パイプラインのビュー部分230にモデルパラメータ値を提供することができ、その結果、解く動作が、これによって、ビューコンポーネントがビューアイテムをレンダリングするためにどのように実行するのかに影響し、またはこれによってビューアイテムに関連する他のデータに影響するようになる。解くことのもう1つの潜在的な影響として、モデル分析自体を変更することができる。たとえば、これを実施できる多数の例のうちの1つとして、モデルを、変更可能なルールセットを伴って作成することができ、その結果、所与の解決中に、当初にインアクティブであるいくつかのルール(1つまたは複数)および/または制約(1つまたは複数)がアクティブ化され、当初にアクティブであるいくつかのルール(1つまたは複数)および/または制約(1つまたは複数)がインアクティブ化されるようになる。式を、この形で変更することもできる。
【0099】
図11は、ソルバフレームワーク1001がコレクション1010内の特殊化されたソルバの中で処理を調整する方法1100の流れ図を示す。図11の方法1100を、これから、図10のソルバ環境1000を頻繁に参照して説明する。
【0100】
ソルバフレームワークは、モデルパラメータのどれが入力モデル変数であるのかを識別すること(行為1101)と、モデルパラメータのどれが出力モデル変数であるのかを識別すること(行為1102)と、モデルパラメータの間の関係を定義するモデル分析を識別すること(行為1103)とによって解決動作を開始する。この情報を考慮して、ソルバフレームワークは、モデルパラメータ内の依存関係を分析する(行為1104)。モデルパラメータの固定されたセットを考慮し、モデル分析の固定されたセットを考慮しても、依存関係は、モデルパラメータのどれが入力モデル変数であり、モデルパラメータのどれが出力モデル変数であるのかに依存して変化する場合がある。したがって、システムは、解決動作が実行されるたびに、どのモデルパラメータが入力であるのかの識別を使用して、モデル分析に基づいて、依存関係グラフを推論することができる。ユーザが各解決の依存関係グラフを指定する必要はない。すべての解決動作について依存関係を評価することによって、ソルバフレームワークは、1つの解決動作中に1つまたは複数のモデル変数の1つのセットについて解き、次の解決動作中に1つまたは複数のモデル変数の別のセットについて解く柔軟性を有する。図2から5の文脈では、それは、ビュー構成との相互作用によってどれが入力でありどれが出力であるのかをユーザが指定するためのより高い柔軟性を意味する。
【0101】
いくつかの解決動作では、モデルが、出力モデル変数を全く有しない場合がある。その場合に、解決は、ひとまとめにされた既知のモデルパラメータ値のすべてが、そのモデルについて分析によって表されたすべての関係を満足することを検証する。言い換えると、任意の1つのデータ値が消去され、未知数にされ、解かれる場合に、消去された値は、モデルによって再計算され、前と同一になるはずである。したがって、ロードされたモデルが、解かれた形で既に存在する可能性があり、もちろん、未知数を有し、解決を得るモデルも、解かれた形で存在する。重要なものは、解かれたモデルのビューと相互作用するユーザが、それでも、ビューを編集することができ、これが、1つまたは複数のデータ値を変更するという影響を有する場合があり、したがって、データ値の新しいセットが分析と一貫するようにするために出力モデル変数のデータ値の再計算を試みる再解決を引き起こす場合があることでる。どのデータ値をユーザが編集できるか(モデルが出力モデル変数を伴って始まるか否か)は、作成者によって制御され、実際に、これは、どの変数が許容される未知数を表したかを作成者が定義することによって制御される。
【0102】
まず他の式内の他の未知数について解くことなく独立に解くことができる1つまたは複数の未知数を有する式がある場合に(判断ブロック1105のYes)、これらの式を、おそらくは他の解くステップと並列にさえ、いつでも解くことができる(行為1106)。その一方で、まず別の式内の未知数について解くことなく解くことができない式がある場合には、解決依存関係が見つかっている。その場合には、その式は、別の式に関する動作の特定の順序を定義する関係構造(依存関係ツリーなど)の一部になる。
【0103】
他の式からの相互に連結された解決依存関係を有する式の場合には、分析された依存関係に基づいて、特殊化されたソルバの実行の順序が判定される(行為1107)。次に、ソルバが、判定された順序で実行される(行為1108)。一例では、モデル分析が式、制約、およびルールとして表される場合に、実行の順序を、1)依存関係を有する式または独立の式として完全に解くことができるものではない式が、制約として書き直され、2)制約が解かれ、3)式が解かれ、4)ルールが解かれるとすることができる。ルールを解くことが、データを更新させる場合がある。
【0104】
ソルバが指定された順序で実行された後に、解くことを停止すべきか否かが判定される(判断ブロック1109)。たとえば、出力モデル変数のすべてについて解かれた場合、または、出力モデル変数のすべてについて解かれてはいないが、特殊化されたソルバが出力モデル変数のより多くについて解くためにそれ以上何もすることができない場合には、解くプロセスを停止しなければならない。解くプロセスを終了してはならない場合に(判断ブロック1109のNo)、このプロセスは、依存関係の分析(行為1104)に戻る。しかし、今回は、入力モデル変数および出力モデル変数のアイデンティティが、それについて解かれた1つまたは複数の出力モデル変数に起因して変化している場合がある。その一方で、解くプロセスを終了しなければならない場合に(判断ブロック1109のYes)、解決は終了する(行為1110)。しかし、出力モデル変数が多すぎるのでモデルを完全には解くことができない場合には、そのモデルは、それでも、部分的な解の生成に成功している可能性があり、この場合に、出力モデル変数は、解決がどれほど進行できたのかを反映するシンボリック値を割り当てられている。たとえば、モデルが式A=B+Cを有し、Bが、「2」であることがわかっており、入力モデル変数であるが、Cが出力モデル変数であり、Aも出力モデル変数であり、それについて解かれる必要がある場合には、モデルソルバは、Bは既知だがCが未知なので、Aの数値を作ることができず、したがって、ソルバは、完全な解決ではなく、Aの値として「2+C」を返す。したがって、どの追加変数が既知になる(それに値を供給することによってまたは他の入力データから必要な値を成功して作ることができるさらなるルール/式/制約またはシミュレーションを追加することによってのいずれかで)必要があるのかは、作成者には明白である。
【0105】
既知のモデルパラメータのいずれかの値の変化があったことをソルバフレームワークが検出するたびに、ならびに/または既知のおよび未知のモデルパラメータのアイデンティティが変化したことをソルバフレームワークが判定するたびに、この方法1100を繰り返すことができる。解くことは、少なくとも2つの形で進行することができる。第1に、モデルをシンボリックに完全に解くことができる場合(すなわち、すべての式、ルール、および制約をアルゴリズム的に書き直すことができ、その結果、計算可能な式が未知数ごとに存在するようになる場合)には、終了であり、その後、モデルが計算される。言い換えると、データ値は、未知数ごとに生成され、かつ/または調整が許可されるデータ値は、調整される。第2の可能な形として、モデルをシンボリックに完全に解くことができない場合には、モデルは、シンボリックに部分的に解かれ、その後、1つまたは複数の数値法を使用して必要な解をもたらすことができるかどうかが判定される。さらに、第1の場合であっても、数値法の使用が、シンボリック解決法の実行に対して、必要な値を計算するより高速の形である可能性があるかどうかが判定されるように、最適化ステップが行われる。シンボリック法がより高速である可能性があるが、シンボリック解決があまりに多数の項の書き直しおよび/またはあまりに多数のルール検索の書き直しを実行し、この方法を棄て、数値法を使用して解くことがより高速になる場合がある。
【0106】
図12は、図10のソルバ環境1000の例を表すソルバ環境1200を示す。この場合に、ソルバ調整モジュール1210は、入力モデル変数1201を受け取り、モデル変数1202(出力モデル変数を含む)が生成されるように、順方向ソルバ1221、シンボリックソルバ1222(または、「インバータ」)、および数値ソルバ1223を調整するように働く。順方向ソルバ1221、シンボリックソルバ1222、および数値ソルバ1223は、図10のソルバコレクション1010内にある可能性があるソルバの例である。
【0107】
ソルバ調整モジュール1210は、対応するモデル変数を有するモデル分析の依存関係グラフを維持する。解決動作ごとに、ソルバ調整モジュール1210は、モデル変数のどれが入力モデル変数であり、モデル変数のどれが出力モデル変数であり、したがってそれについて解かれなければならないのかを判定することができる。
【0108】
順方向ソルバ1221は、順方向に解けるようになるために正しく提示されたモデル分析を解く。たとえば、モデル分析内に1つの式A=B+Cだけがあり、BおよびCが入力モデル変数である場合には、BおよびCの値を式に入力し、Aの結果の値を判定することによって、Aについて、順方向解決を使用して解くことができる。
【0109】
シンボリックソルバ1222は、順方向に解けるようになるように、モデル分析を書き直す。たとえば、式A=B+Cにおいて、入力変数であるのが変数AおよびCであり、それについて解くべき出力変数が変数Bであると仮定する。この状況では、まずモデル分析を逆転する(この場合には、式を逆転する)ことなしに、モデル分析を順方向に解くことはできない。したがって、シンボリックソルバ1222は、式A=B+CをB=A−Cとして書き直す。今や、変数Bの値を得るために入力変数AおよびCが式B=A−Cに入力されるように、逆転された式を、順方向ソルバ1221による順方向解決にかけることができる。
【0110】
いくつかの式は、数学的に逆転可能ではなく、または、少なくとも、いくつかのタイプの式を逆転する方法はまだ発見されていない。さらに、式が逆転可能であるか、式をどのように逆転すべきかが知られている場合であっても、シンボリックソルバ1222が、単純に、式を逆転でない場合がある。または、おそらくは、数値的に解くことなどの他の解く方法に頼ることと比較して、シンボリックソルバ1222が式を逆転することが、単純に非効率的である。したがって、数値ソルバ1223は、モデル分析が正しく逆転可能ではない(逆転が不可能である、知られていない、またはシンボリックソルバによって使用可能にされないのいずれかのゆえに)場合に、モデル分析を使用してモデル分析を解くために提供される。
【0111】
ソルバ調整モジュール1210は、各解決動作を管理するように構成される。たとえば、図13は、モデル分析について解くことができるように解決を管理する方法1300の流れ図を示す。方法1300を、ソルバ調整モジュール1210の指示の下でソルバ環境1200によって管理することができる。
【0112】
ソルバ調整モジュール1210は、モデル分析のモデル変数のどれが特定の解決について入力変数(1つまたは複数)であり、モデル変数のどれが特定の解決について出力モデル変数(1つまたは複数)であるのかを識別する(行為1301)。たとえば、入力モデル変数および出力モデル変数が、図4でデータモデルバインダコンポーネント410によって定義される場合に、モデル変数の一定のセットを考慮しても、入力モデル変数および出力モデル変数のアイデンティティは、ある解決動作と次の解決動作とで変化する可能性がある。したがって、解決動作の調整は、ある解決動作と次の解決動作とで変化する可能性がある。たとえば、モデル分析の一定のセットを考慮しても、入力モデル変数に応じて、順方向解決が、ある解決動作に十分である場合があり、逆転および逆転された分析の順方向解決が、別の解決動作に十分である場合があり、おそらくは、数値解決が、さらに別の解決動作に十分である場合がある。
【0113】
しかし、パイプライン201の分析部分220の文脈で実施される場合には、モデル分析さえもが、前に述べたようにモデル分析が定式化されるかおそらくは他のモデル分析と組み合わされる時に変化する可能性がある。ソルバ環境1200は、変化がある時に必ず入力モデル変数および出力モデル変数を識別することと、すべての変化したモデル分析を計上することと、適当に解くこととによって、これらの変化を計上することができる。
【0114】
解決ごとに、入力モデル変数および出力モデル変数が識別(行為1301)された後に、ソルバ調整モジュール1210は、出力パラメータ(1つまたは複数)の順方向解決が、まずモデル分析を逆転することなく入力モデル変数(1つまたは複数)を考慮して実行されるべきか否かを判定する(判断ブロック1302)。順方向解決が実行されるべきである場合に(判断ブロック1302のYes)、順方向ソルバ1221が、モデル分析を順方向に解くようにされる(行為1303)。この順方向解決は、モデル分析全体の解決またはモデル分析の一部だけの解決とすることができる。後者の場合に、方法1300を、今回のみ、順方向解決でそれについて解かれるモデル変数を含む入力モデル変数のより完全なセットを用いて、もう一度実行することができる。
【0115】
出力パラメータ(1つまたは複数)の順方向解決が、少なくともまずモデル分析を逆転することなしではなく、特定の解決について実行すべきではないと判定される場合に(判断ブロック1302のNo)、次に、順方向解決を出力パラメータ(1つまたは複数)について解くことができるように、特定の解決についてモデル分析を逆転すべきか否かが判定される(判断ブロック1304)。モデル分析(またはモデル分析の少なくとも一部)を逆転すべきである場合に(判断ブロック1304のYes)、モデル分析が、シンボリックソルバによって逆転される(行為1305)。その後、逆転されたモデル分析について、順方向解決を使用して解くことができる(行為1303)。やはり、モデル分析の一部だけについてこの形で解く場合には、方法1300を、入力モデル変数の拡張されたセットを用いて、もう一度実行することができる。
【0116】
モデル分析を、特定の解決について逆転すべきではないと判定される場合に(判断ブロック1304のNo)、数値ソルバが、数値法を使用して出力変数(1つまたは複数)について解くことができる(行為1306)。やはり、モデル分析の一部だけについてこの形で解く場合には、方法1300を、入力モデル変数の拡張されたセットを用いて、もう一度実行することができる。
【0117】
したがって、どのモデル変数が入力であり、どのモデル変数がある解決動作から次の解決動作への出力であるのかにかかわりなく、さまざまなモデル分析について解くことができる、柔軟なソルバ環境1300を説明した。
【0118】
図14は、図10に示されたソルバフレームワーク1001によって実行できる別の方法1400の流れ図を示す。具体的に言うと、ソルバは、モデル変数について解き(行為1401)、このモデル変数は、ビュー構成のビューコンポーネントのプロパティを定義することができる。たとえば、ソルバは、未知のモデル変数について解くのに既知のモデル変数を使用することができる。いくつかの例で、既知のモデル変数は、ソルバが上で図10および11に関して述べた依存関係ツリーなどの関係構造の一部を形成する時など、別のソルバによって提供される出力である場合がある。
【0119】
解決動作は、正規データの実際の変化を引き起こす(行為1402)。ソルバがモデル変数について解いた後に、ビュー構成のビューコンポーネントのプロパティに、解かれたモデル変数の値がセットされる(行為1403)。たとえば、解かれたモデル変数を、図5に示されたモデルパラメータ411の一部として提供することができ、このモデルパラメータ411を、第1のビューコンポーネント520の入力パラメータ542にバインドすることができる。いくつかの場合に、解かれたモデル変数について解くのに使用された既知のモデル変数が、第1のビューコンポーネント520の別のプロパティを定義する場合がある。その場合には、既知のモデル変数および解かれたモデル変数を、第1のビューコンポーネント520のさまざまな入力パラメータ542にバインドすることができる。他の例では、既知のモデル変数が、第1のビューコンポーネントが第2のビューコンポーネントの親または子である時など、第2のビューコンポーネント520のプロパティを定義する場合がある。これらの他の場合には、解かれたモデル変数を、第1のビューコンポーネント520の入力パラメータ542にバインドすることができ、既知のモデル変数を、第2のビューコンポーネント520の入力パラメータ542にバインドすることができる。
【0120】
ビューコンポーネントのプロパティに解かれたモデル変数の値をセットした後に、ビューコンポーネントを含むビュー構成が、レンダリングされる(行為1404)。
【0121】
望まれる場合には、さまざまな環境を、方法1400に関連して使用することができる。たとえば、図15は、方法1400に関連して使用され得、ソフトウェア、ハードウェア、または組合せで実施され得る環境1500を示す。具体的に言うと、環境1500は、プロパティ−セッター1502a、1502b、1502cの一部を形成し、かつ/またはこれによって呼び出され得る1つまたは複数のソルバ1501a、1501b、1501cを含むことができる。ソルバ1501を、たとえば未知のモデル変数について解くのに既知のモデル変数を使用することによって、未知のモデル変数について解く(図14の行為1401)ように構成することができる。さらに、プロパティ−セッター1502は、ビューコンポーネントのプロパティに、解かれたモデル変数の値をセットすることができる(図14の行為1403)。しかし、プロパティ−セッター1502は、ソルバ1501を含む必要がなく、単純に既知のモデル変数を受け取り、その後、ビューコンポーネントのプロパティに受け取られたモデル変数の値をセットすることができる。
【0122】
図16は、図15に示された環境1500によって実行できるもう1つの方法1600の流れ図を示す。さらなる詳細で、環境1500の第1のプロパティ−セッター1502aが、呼び出される(行為1601)。第1のプロパティ−セッター1502aおよび他のプロパティ−セッター1502は、望まれる場合に、図5に示されたモデル−ビューバインディングコンポーネント510によって呼び出され、かつ/またはその一部を形成することができる。
【0123】
呼び出された後に、第1のプロパティ−セッター1502aは、ビュー構成のビューコンポーネントの第1のプロパティをセットする(行為1602)。たとえば、第1のプロパティ−セッター1502aは、第1のプロパティにモデル変数1503aの値をセットすることができる。いくつかの例で、第1のプロパティ−セッター1502aは、単純に既知のモデル変数1503aを受け取り、その後、受け取られたモデル変数の値を第1のプロパティにセットすることができる。他の例では、第1のプロパティ−セッター1502aは、モデル変数1503aについて解くことができるソルバ1501aを呼び出すことができ、その後、解かれたモデル変数の値を第1のプロパティにセットすることができる。
【0124】
第1のプロパティをセットすることに加えて、第1のプロパティ−セッター1502aは、第2のプロパティ−セッター1502bをも呼び出す(行為1603)。次に、第2のプロパティ−セッター1502bは、ソルバ1501bなどの、モデル変数について解くように構成され得るソルバを呼び出す(行為1604)。具体的に言うと、図15に示されているように、ソルバ1501bは、第2のプロパティ−セッター1502bによって呼び出され、かつ/またはその一部を構成することができ、呼び出された時に、ソルバ1501bは、未知のモデル変数1503bについて解くことができる。いくつかの例で、ソルバ1501bは、既知のモデル変数、たとえばモデル変数1503aを使用することによって、未知のモデル変数1503bについて解くことができる。たとえば、第1のプロパティ−セッター1502aが第2のプロパティ−セッター1502bを呼び出す(行為1603)時に、第1のプロパティ−セッター1502aは、モデル変数1503aを第2のプロパティ−セッター1502bに渡すことができる。その後、ソルバ1501bは、モデル変数1503aを使用することによって未知のモデル変数1503bについて解くことができる。もちろん、第1のプロパティ−セッター1502aが、モデル変数1503aを第2のプロパティ−セッター1502bに渡す必要はなく、第2のプロパティ−セッター1502bは、任意の他の適切な形でモデル変数1503aにアクセスすることができる。
【0125】
次に、第2のプロパティ−セッター1502bは、ビュー構成のビューコンポーネントの第2のプロパティに、たとえば解かれたモデル変数1503bの値をセットする(行為1605)。もちろん、いくつかの場合に、第2のプロパティ−セッター1502bは、単純に既知のモデル変数1503bを受け取ることができ、その後、第2のプロパティ−セッターは、受け取られたモデル変数の値を第2のプロパティにセットすることができる。したがって、第2のプロパティ−セッター1502bは、ソルバを呼び出すこと(行為1604)を必要としない。第2のプロパティ−セッター1502bが第2のプロパティをセットした後に、ビューコンポーネントを含むビュー構成が、レンダリングされる(行為1606)。
【0126】
いくつかの場合に、第1のプロパティおよび第2のプロパティを、ビュー構成の単一のビューコンポーネントのプロパティとすることができる。したがって、単一のビューコンポーネントのプロパティ−セッター1502a、1502bが、モデル変数1503a、1503bの値を第1のプロパティおよび第2のプロパティにセットすることができ(行為1602、1605)、したがって、モデル変数1503a、1503bが第1および第2のプロパティを定義することを可能にする。
【0127】
他の例では、第1のプロパティを、第1のビューコンポーネントのプロパティとすることができ、第2のプロパティを、第2のビューコンポーネントのプロパティとすることができる。したがって、第1のビューコンポーネントのプロパティ−セッター1502aは、モデル変数1503aの値を第1のプロパティにセットすることができ(行為1602)、したがって、モデル変数1503aが第1のプロパティを定義することを可能にする。さらに、第2のビューコンポーネントのプロパティ−セッター1502bは、モデル変数1503bの値を第2のプロパティにセットすることができ(行為1605)、したがって、モデル変数1503bが第2のプロパティを定義することを可能にする。望まれる場合に、第1のビューコンポーネントを、第2のビューコンポーネントの子または親にすることができ、第2のビューコンポーネントを、第1のビューコンポーネントの子または親にすることができる。
【0128】
したがって、図11に関して上で示したように、複数のソルバは、明示的な順序で構成され(行為1107)、その後、その順序に従って解かれる(行為1108)ものとすることができる。たとえば、ソルバを、依存関係ツリーなどの関係構造を使用して明示的に構成することができる。さらに、図14から16に関して示したように、複数のソルバを、ソルバ1501を有する他のプロパティ−セッター1502を呼び出す、ソルバ1501を有するプロパティ−セッター1502の能力に基づいて、暗黙のうちに構成することができる。
【0129】
複合ビュー構成
図2を参照すると、パイプライン環境200は、モデルインポート機構241をも含み、モデルインポート機構241は、おそらくはオーサリングコンポーネント240の一部として含まれる。モデルインポート機構241は、作成者が前から存在する分析駆動モデルの少なくとも一部を、ユーザが構築しつつある現在の分析駆動モデルにインポートすることを可能にするために作成者にユーザインターフェースまたは他のアシスタンスを提供する。したがって、作成者は、新しい分析モデルを作成する時に、必ず一から始める必要はない。インポートは、分析駆動モデル全体またはおそらくはそのモデルの一部のインポートとすることができる。たとえば、インポートは、次の6つの潜在的な影響の1つまたは複数またはすべてを引き起こすことができる。
【0130】
インポートの第1の潜在的影響として、追加のモデル入力データを、パイプラインに追加することができる。たとえば、図2を参照すると、追加のデータを、入力データ211、分析データ221、および/またはビューデータ231に追加することができる。追加のモデル入力データは、追加のコネクタが図3のデータアクセスコンポーネント310またはおそらくは異なる正規化コンポーネント330に追加されることを含むこともできる。
【0131】
インポートの第2の潜在的影響として、モデル入力データとモデルパラメータとの間の追加のまたは変更されたバインディングがある場合がある。たとえば、図4を参照すると、データモデルバインダ410は、正規化されたデータ401とモデルパラメータ411との間で追加のバインディングを発生させることができる。これは、既知のモデルパラメータの個数の増加を引き起こす場合がある。
【0132】
インポートの第3の潜在的影響として、モデルパラメータの補足セットを生成するための追加のモデルパラメータがある場合がある。たとえば、図4を参照すると、モデルパラメータ411が、インポートされたモデルの分析的挙動のインポートに起因して増補される場合がある。
【0133】
インポートの第4の潜在的影響として、モデルに追加される追加の分析的関係(式、ルール、および制約など)がある場合がある。第1の潜在的影響から生じる追加の入力データ、第2の潜在的影響から生じる追加のバインディング、第3の潜在的影響から生じる追加のモデルパラメータ、および第4の影響から生じる追加の分析的関係。これらの追加アイテムの任意の1つまたは複数を、ビュー構成に影響する追加のデータと見なすことができる。さらに、これらの影響の任意の1つまたは複数は、図4のソルバ440の挙動を変更することができる。
【0134】
インポートの第5の潜在的影響として、モデルパラメータとビューの入力パラメータとの間の追加のまたは異なるバインディングがある場合がある。たとえば、図5を参照すると、モデル−ビューバインディングコンポーネント510は、モデルパラメータ411の潜在的に増補されたセットを、ビューコンポーネントリポジトリ520内のビューコンポーネントの潜在的に増補されたセットにバインドする。
【0135】
インポートの第6の潜在的影響として、おそらくはビュー構成に追加される新しいビューアイテムをもたらす、図5のビューコンポーネントリポジトリ520に追加される追加のパラメータ化されたビューコンポーネントがある場合がある。
【0136】
したがって、別のモデルのすべてまたは一部をインポートすることによって、そのモデルに関連するデータが、インポートされる。ビュー構成はデータ駆動なので、これは、モデルのインポートされた部分が、現在のビュー構成に即座に組み込まれることを意味する。
【0137】
前から存在する分析駆動分析モデルの一部がインポートされる時には、パイプライン201に供給されるデータの変化が発生し、これによって、パイプライン201に、即座にまたはある他のイベントに応答して、ビュー構成の再生成を引き起こさせる。したがって、本質的に既存モデルからのコピーアンドペースト動作であるものの際に、その結果の複合モデルが、再解決動作に起因してディスプレイ上で即座に見られるようになる可能性がある。
【0138】
この特徴がどれほど有用になり得るかの例として、図7の風水部屋ビュー構成を検討されたい。このアプリケーションの作成者は、風水専門家とすることができ、標準的な部屋レイアウトビュー構成モデルから始めることを望む可能性がある。したがって、前から存在する部屋レイアウトモデルをインポートすることによって、風水専門家は、今や、瞬間的ではないとしても相対的にすばやく、図7に示されたディスプレイ上に示された部屋レイアウト701を見ることができる。それだけではなく、今や、標準的な部屋レイアウトビュー構成モデルに通常付属する可能性がある家具および部屋アイテムのカタログが、今や、図7の風水アプリケーションから使用可能になっている。
【0139】
ここで、風水専門家は、風水グラフ要素702をビルドするための基礎として基本的な円グラフ要素をインポートすることを望む可能性がある。しかし、今、風水専門家は、おそらくは合計8つのくさび形があることと、おそらくは各くさび形の背景イメージおよびタイトルとを含む、グラフ要素の特定の固定された入力パラメータを指定することができる。ここで、風水専門家は、モデルパラメータがどのように相互に関係付けられるのかを指定する分析的関係を指定することだけを必要とする。具体的に言うと、家具または他の部屋アイテムの色、位置、およびタイプが、特定の風水スコアに影響する可能性がある。専門家は、単純にこれらの関係を書き留めて、これによって部屋レイアウト601と風水スコアとを分析的に相互に連結することができる。他者の成果を足場とするこのタイプの共同作業能力は、問題を解決し、ビジュアル分析を可能にするアプリケーションを作成する際の想像力の巨大な波を生み出すことができる。これは、特に、ユーザが固定された依存関係グラフを使用して一方向データをビジュアルにプログラムすることを可能にすることができるシステムとよい対照をなす。これらのシステムは、一方向解決を行うことができ、その方向は、最初に入力から出力へプログラムされる。本明細書で説明される原理は、ユーザとの対話型セッションを与えられて、いつでも、何が既知であり何が未知であるのかに応じて、複数の形での解決を可能にする。
【0140】
ビジュアル相互作用
ビュー構成プロセスを、この点までで、ある時にレンダリングされる単一のビュー構成であるものとして説明した。たとえば、図7は、入力データのセットから生成された単一のビュー構成を示す。しかし、本明細書で説明される原理を、複数の成分ビュー構成を含む統合されたビュー構成がある例に拡張することができる。これは、複数の異なる状況で役立つ可能性がある。
【0141】
たとえば、入力データの単一のセットを考慮すると、ソルバ機構が出力モデル変数について解いている時に、複数の可能な解がある可能性がある。成分ビュー構成は、それぞれ、複数の可能な解のうちの1つを表すことができ、ここで、別の成分ビュー構成は、別の可能な解を表すことができる。
【0142】
もう1つの例では、ユーザは、単純に、入力データの特定のセットを使用して生成された以前のビュー構成を保持し、その後、これによって新しいビュー構成を生成するために新しいシナリオを試みるために入力データを変更することを望む場合がある。次に、ユーザは、その第2のビュー構成をも保持し、入力データをもう一度変更することによって第3の可能なシナリオを試みることを望む場合がある。次に、ユーザは、一時に1つのビュー構成を見ることだけによって得ることが他の形ではむずかしい可能性がある情報を入手するために、おそらくは並べた比較を介して、この3つのシナリオを同時に見ることができる。
【0143】
図17は、図7の風水の例から拡張する統合されたビュー構成1700を示す図である。この統合されたビュー構成では、図7の第1ビュー構成700が、正確に図7に示されているように、要素701および702を使用してもう一度表されている。しかし、ここでは、強調される第2のビュー構成が表されている。第2のビュー構成は、2つの要素すなわち部屋ディスプレイおよび風水スコアメータがあるという点で、第1のビュー構成に似ている。しかし、第2のビュー構成の入力データは、第1のビュー構成の入力データとは異なった。たとえば、この場合に、家具のアイテムのうちの複数の位置データが、異なり、これによって、第2ビュー構成の部屋レイアウト1701でのその位置を、第1ビュー構成の部屋レイアウト701の位置とは異なるものにする。しかし、さまざまな家具アイテムの異なる位置は、第2ビュー構成の風水メータ1702内の、第1ビュー構成の風水メータ702と比較して異なる風水スコアに相関する。
【0144】
統合されたビュー構成は、以前に作成されたビュー構成と現在表示されているビュー構成とのすべてのうちのいくつかにまたがる少なくとも1つのパラメータの値の比較をビジュアルに表す比較要素を含むこともできる。たとえば、図13では、表示されるビュー構成ごとに、おそらくはコストおよび配送時間を示す棒グラフがあるものとすることができる。そのような比較要素を、ビューコンポーネントリポジトリ520内の追加のビューコンポーネントとすることができる。おそらく、その比較ビュー要素は、表示される複数のビュー構成がある場合に限って表示される可能性がある。その場合に、比較ビュー構成入力パラメータを、モデルの異なる解く反復に関するモデルパラメータにマッピングすることができる。たとえば、比較ビュー構成入力パラメータを、図17の第1と第2とのビュー構成の生成の両方について生成されたコストパラメータにマッピングすることができ、第1と第2とのビュー構成の生成の両方について生成された配送パラメータにマッピングすることができる。
【0145】
図17を参照すると、使用可能な以前に構築されたビュー構成全体の選択されたサブセットをユーザがビジュアルに強調することを可能にする選択機構もある。選択機構1710は、サムネイルの形で示されるかある他の強調されない形で示される3つの可能なビューコンストラクション1711、1712、および1713を含むものとして図示されている。各サムネイルビュー構成1711から1713は、対応するチェックボックス1721から1723を含む。ユーザは、ビジュアルに強調されなければならないビュー構成に対応するチェックボックスにチェックマークを付けることができる。この場合に、チェックボックス1721および1723が、チェックマークを付けられ、これによって、より大きい形の対応するビューコンストラクションを表示させる。
【0146】
統合されたビュー構成は、またはそれに関してどの単一のビュー構成であっても、どのモデルパラメータがこれによって分析ソルバ機構による別の解決をトリガする未知数として扱われなければならないのかを指定するためにユーザがビュー構成と相互作用するための機構を有することができる。たとえば、図17の部屋ディスプレイ1701内で、家具の特定のアイテムを右クリックし、特定のパラメータ(たとえば、位置)を右クリックすることができ、ドロップダウンメニューが、現れることができ、そのパラメータを未知数として扱わなければならないことをユーザが指定することを可能にする。次に、ユーザは、調和パーセンテージ(たとえば、風水スコアメータ1702内の95%)を右クリックすることができ、その結果、ユーザが異なる調和パーセンテージを指定することを可能にするスライダが現れることができる(または、他のユーザ入力機構のテキストボックス)。これは、既知のパラメータおよび未知のパラメータのアイデンティティが変更されることをもたらすので、再解決が生じ、その位置が未知数として指定された家具のアイテムが、新しい位置に現れる可能性がある。
【0147】
相互作用ビジュアルキュー
一実施形態では、統合されたビュー構成は、ビジュアルアイテムに関連するビジュアルプロンプトまたはビジュアルキューを含むこともできる。ビジュアルキューは、1)関連するビジュアルアイテムと相互作用できること、2)そのビジュアルアイテムとのどのタイプの相互作用が可能であるのか、3)ビジュアルアイテムとの特定の相互作用が行われる場合に結果がどうなるのか、および/または4)1つもしくは複数の他のビジュアルアイテムとの相互作用が結果を達成するために必要であるかどうかのあるビジュアル表示をユーザに与える。
【0148】
前に図5を参照して述べたように、ビュー部分500は、複数のビューコンポーネント521、522、523、524を含むビューリポジトリ520を含む。ビューコンポーネントのいくつか522、523、および524は、対応する入力パラメータ(ビューコンポーネント522についてパラメータ542Aおよび542B、ビューコンポーネント523についてパラメータ543、ならびにビューコンポーネント524についてパラメータ544)内で設定される値によって駆動される。入力パラメータ(1つまたは複数)に供給されるデータは、そのデータがビジュアルアイテムのコンストラクションを制御するように、対応するビューコンポーネントの実行ロジックを駆動する。たとえば、ビジュアルアイテム522の構造は、入力パラメータ542Aおよび/または入力パラメータ542Bに供給されるデータに依存するものとすることができる。
【0149】
一実施形態では、所与のビューコンポーネントの入力パラメータの1つまたは複数を、相互作用パラメータとすることができる。その相互作用パラメータは、ビジュアルアイテムが相互作用を伴ってレンダリングされるか否かを定義することができる。その代わりにまたはそれに加えて、相互作用パラメータは、特定のタイプの相互作用を、対応するビューコンポーネントの実行ロジックを実行した結果として構築された対応するビジュアルアイテムに適用させることができる。少なくとも1つのそのような相互作用パラメータを含むビューコンポーネントを、以下では「ビジュアルキュー付き対話型(visually cued interactive)」ビューコンポーネントと呼ぶ。相互作用を可能にすることに加えて、相互作用パラメータに提供されたデータは、1)ビジュアルアイテムが対話型であることおよび潜在的に相互作用のタイプをユーザにビジュアルに知らせるために、対応するビジュアルアイテムが、レンダリングされる時に、どのようにビジュアルにキューを付けられるのかを定義することもできる。レンダリングされるビジュアルアイテムの1つ、いくつか、またはすべてさえ、この形で対話型とし、ビジュアルキュー付きとすることができる。
【0150】
ビジュアルアイテムによって提供できる複数の異なるタイプの相互作用がある。1つが、本明細書ではナビゲーション相互作用と呼ばれる。ユーザが、ビジュアルアイテムとナビゲーション的に相互作用する時に、レンダリングのためにビジュアルアイテムを構築するのに使用されるビューコンポーネントのサブセットが、変化する。
【0151】
たとえば、ナビゲーション相互作用の1タイプが、本明細書ではスコーピング相互作用と呼ばれる。スコーピング相互作用は、ナビゲーション相互作用の直前に表示されたビジュアルアイテムの少なくともいくつかが、ナビゲーション相互作用の直後にも表示されるように、レンダリングされるビジュアルアイテムのサブセットを相互作用的に変更する。たとえば、図5を参照すると、仮想空間500は、4つのビジュアルアイテム551、552、553、および554を含むものとして図示されている。ビジュアルアイテム552が、スコーピング相互作用を有する場合に、ユーザは、ビジュアルアイテム551および554がもはや仮想空間550内でレンダリングされなくなるように、ビジュアルアイテム552と相互作用することができる。しかし、ビジュアルアイテム552および553は、仮想空間550内に残ることができる。その代わりにまたはそれに加えて、さらなるビジュアルアイテムをビジュアル空間内に構築することができる。
【0152】
スコーピング相互作用の1タイプが、レンダリングのためにビジュアルアイテムを生成するのに使用されるビューコンポーネントの範囲を変更するスクローリング相互作用である。図18Aおよび18Bは、スクローリング相互作用の例を表す。図18Aは、スクローリング相互作用の前の仮想空間1800Aを表す。ここで、ビュー構成コンポーネント(図5を参照されたい)は、6つのビジュアルアイテム1811、1812、1813、1814、1818、および1816を構築した。ビジュアルアイテム1811は、このビジュアルアイテムが左スクロール相互作用を使用可能にされていることを示すビジュアルキュー(アスタリスク1801によって表される)で装飾されている。ビジュアルアイテム1816は、このビジュアルアイテムが右スクロール相互作用を使用可能にされていることを示すビジュアルキュー(アスタリスク1899によって表される)で装飾されている。図18Bは、右にスクロールするためのビジュアルアイテム1816とのユーザ相互作用の後の仮想空間1800Bを表す。ここでは、ビジュアルアイテム1811が、仮想空間から除去されている。さらに、新しいビジュアルアイテム1817が、仮想空間に追加されている。編集相互作用の例では、この場合のスクローリング相互作用は、ビジュアルアイテム1812が、左向きスクローリング相互作用が使用可能にされていることを表したビジュアルキューで装飾されることをも引き起こした。さらに、ビジュアルアイテム1816は、そのビジュアルキューおよび相互作用を失い、この相互作用は、その代わりにビジュアルアイテム1817に提供される。ビジュアルキューおよび相互作用機能性は、所与のビジュアルアイテムについて、対応するビューコンポーネントの入力パラメータ(1つまたは複数)を設定するために提供されるデータを単純に変更することによってイネーブルされ、ディスエーブルされ得る。
【0153】
別のタイプのスコーピング相互作用が、レンダリングのためにビジュアルアイテムを生成するのに使用されるビューコンポーネントの詳細のレベルを変更する「ディテーリング相互作用(detailing interactivity)」である。「ズームイン」相互作用は、おそらく以前のビジュアルアイテムのいくつかがビューから消えることと共に、ビジュアルアイテムのより特定の粒度が現れることを引き起こすことができる。「ズームアウト」相互作用は、おそらくアイテムの以前のより特定の粒度のいくつかが消えることと共に、ビジュアルアイテムのより粗い粒度が現れることを引き起こすことができる。たとえば、見える宇宙の地図でのズームインの場合に、銀河団が見え始める場合がある。その銀河団にズームインする場合に、個々の銀河が形をなし始める可能性がある。天の川銀河など、これらの個々の銀河の1つにズームインする場合に、個々の星が見え始める場合がある。太陽など、これらの星の1つにズームインする場合に、太陽の詳細が、ますます明白になる可能性があり、おそらくは惑星が見え始める。地球など、これらの惑星の1つにズームインする場合に、大陸などの大規模な地形学的特徴が現れる可能性がある。さらにズームインする場合に、国境が現れる可能性があり、その後、都市が現れる可能性があり、その後、街路が形をなす可能性がある。これは、原子を構成する粒子が形をなすまで継続する可能性がある。そのようなズームする地形での粒度の粗さは、宇宙のモデルのように、物理的に関係付けられる必要がない。他の地形を通ってナビゲートすることもでき、各スコーピング相互作用は、以前のビジュアルアイテムに消えさせ、新しいビジュアルアイテムに現れさせる。やはり、擬似無限データ系列の使用は、この動作を容易にすることができる。
【0154】
図19Aに、特定のディテーリング相互作用動作の前の例の仮想空間1900Aを示す。ここでは、表示され始める2つのビジュアルアイテム1911および1912だけがある。図19Bの仮想空間1900Bに見られるように、ビジュアルアイテム1911が拡大され、今や、いくつかのビジュアルアイテム1921および1922が、ビジュアルアイテム1911の内部にレンダリングされ、今や、ビジュアルアイテム1912は、ビューから外れている。これは、ズームイン相互作用の例である。ズームアウト相互作用の例について、図19Bの仮想空間1900Bから始めることができ、仮想空間1900Aは、ズームアウト相互作用の後の状態を表す。
【0155】
相互作用のタイプを、少なくとも1つのレンダリングされたフレーム(およびおそらくはディスプレイ全体)に、前に表示された完全に異なるビジュアルアイテムを表示させる、リンキング相互作用とすることもできる。たとえば、上の図7の風水部屋の例では、特定のビジュアルアイテム(風水メータ702など)をクリックすることが、風水に関するウェブページを風水部屋ビューの代わりに表示させることができる。その代わりに、おそらく、相互作用された場合に全く異なる部屋が現れることを引き起こすことができるビジュアルアイテムがある。
【0156】
相互作用のもう1つのタイプを、レンダリングされるビジュアルシーンと独立なアクションが行われることを引き起こす外部アクション相互作用とすることができる。たとえば、電子メールを送信させるか、アラームをセットし、データバックアップをスケジューリングし、性能チェックを実行するなどを行うことができるビジュアルアイテムと相互作用することができる。
【0157】
相互作用のタイプを、編集相互作用とすることもできる。編集相互作用は、1つまたは複数のビューコンポーネントの1つまたは複数の入力パラメータ値が変化する形でデータを変更する。その入力パラメータが、あるビジュアルアイテムがどのように構築されるのかに影響する場合には、そのビジュアルアイテムは、結果として変化する。データの変更は、入力モデルパラメータの値を変化させ、または入力モデルパラメータおよび/もしくは出力モデルパラメータのアイデンティティを変化させることもできる。したがって、ビジュアルアイテムに課せられる編集相互作用は、分析部分400の完全な再計算を引き起こすことができる。編集相互作用の複数の例を、これから提供する。
【0158】
図20は、連続的な米国のレンダリング2000を示す。米国ビジュアルアイテムを、1つのビューコンポーネントから構築することができる。しかし、構成する州を、それぞれ、対応する子ビューコンポーネントから構築することができる。その州に対応するビジュアルアイテムの高度は、その州のあるパラメータ(たとえば、評価される特定の製品の1人あたりの消費量)を表す。ここで、ニューメキシコビジュアルアイテム2001は、上に向かう矢印2011の形のビジュアルキューを有する。これは、ビジュアルアイテムの高さを変更できるようにニューメキシコビジュアルアイテム2001と相互作用できることをユーザに思い付かせる。また、それぞれ対応する下に向かう矢印2012および2013を有するネバダビジュアルアイテム2002およびフロリダビジュアルアイテム2003。これらの矢印は、ニューメキシコの矢印2011の高さの上向きの調整が、分析部分400を介するモデルの再分析の後に、ネバダビジュアルアイテム2002およびフロリダビジュアルアイテム2003の高さの下向きの調整を引き起こすことをユーザに視覚的に知らせることができる。その代わりにまたそれに加えて、矢印2012および2013は、ネバダビジュアルアイテム2002とフロリダビジュアルアイテム2003との高さの両方がユーザによって下向きに調整される場合に、ニューメキシコビジュアルアイテム2001の高さが上向きに調整されることを示すことができる。特定のユーザ相互作用の結果を判定するために、パイプライン201は、ユーザがレンダリングされたビジュアルアイテムとどのように相互作用できるのかを検討し、結果がどうなるのかを判定するために分析モデルのコンティンジェンシ解決(contingency solve)を実行することができる。
【0159】
図21は、関係付けられた棒グラフ2110および円グラフ2120を含むグラフ2100を示す。棒グラフ2110は、複数の棒を含む。棒の1つ2111Aは、この高さを垂直に調整できることを表すために矢印2111Bと共に図示されている。これは、円グラフ2120内のさまざまなくさび形の割当のある調整を引き起こす可能性がある。棒グラフ2110および円グラフ2120を、視覚的に合併することができる。たとえば、結果の円グラフが、その厚さが棒グラフの関連する棒の高さに依存するくさび形を含むことができる。
【0160】
図22は、ハリケーン2211の経路2201がグラフ化されつつあるハリケーンマッピンググラフ2200を示す。ビジュアルキュー2220は、ユーザが経路2101をたとえば経路2202に変更するために経路2201と対話型とすることができることを示す。これは、ユーザが、ハリケーンの経路に関する可能な代替の現実を評価することを可能にする。コントロール2221、2222、2223、および2224も、たとえば風速、温度、スピン、およびハリケーン移動速度などのハリケーンのさまざまなパラメータを変更することを可能にする。
【0161】
図7の風水の例では、特定の調和スコアが、既知の入力パラメータとして指定される場合に、家具のさまざまな位置を、その位置が未知数として指定された家具のアイテムについて提案することができる。たとえば、おそらく複数の矢印が、家具から発出し、より高い調和スコアを得るためにその家具を移動すべき方向、水スコアを最大にするために移動すべき異なる方向、最大限まで水スコアを移動するための異なる方向などを提案する。ビューコンポーネントは、特定のスコアを増やすために椅子を移動できる場合にシャドウを示すこともできる。したがって、ユーザは、最適化されることが望まれる特定のパラメータを中心としてデザインを改善するために、これらのビジュアルプロンプトを使用することができる。別の例では、おそらく、ユーザはコストを削減することを望む。ユーザは、最小化すべき未知数としてコストを指定することができ、提案される家具選択の異なるセットがもたらされる。
【0162】
図23は、複数のビジュアルアイテムを表示するユーザインターフェースと相互作用する方法の流れ図を示す。コンピュータは、前に説明したように、ディスプレイ上にデータ駆動ビジュアルアイテムをレンダリングする(行為2301)。データ駆動ビジュアルアイテムのそれぞれが、パラメータ化されたビューコンポーネントにデータを供給することによって定式化されることを想起されたい。そのデータは、データがパイプライン201の分析部分400に供給されることに応答して、またはデータがパイプライン201のデータ部分300に供給されることに応答して、分析モデルによって入手されたものとすることができる。さらに、ビジュアルアイテムの1つ、いくつか、またはすべてが、ビジュアルキューまたは他のビジュアル強調を有し(行為2302)、ビジュアルアイテムと相互作用できることおよび/または相互作用のタイプをユーザに伝える。一実施形態では、ビジュアルキューは、当初に、対応するビジュアルアイテムが対話型であることを表すのみであり、ビジュアルキューが相互作用のタイプを伝えるために変更されまたは補足されるのは、ユーザがビジュアルアイテムを選択した(ポインタを用いてビジュアルアイテム上でホバリングすることによって)後である。
【0163】
次に、コンピューティングシステムは、ユーザとビジュアルアイテムとの間の所定の物理的相互作用が発生したことを検出する(行為2303)。それに応答して、その特定のビジュアルアイテムについて相互作用がイネーブルされ、またはアクティブ化される(行為2304)。適当な応答は、その相互作用がナビゲーション相互作用、リンキング相互作用、または編集相互作用のどれであるのかに依存する。編集相互作用の場合に、結果は、パイプラインの分析部分400によって定義されるさまざまなビジュアルアイテムの間の分析的関係にも依存する。
【0164】
相互作用を、ナビゲーション相互作用、リンキング相互作用、および編集相互作用のうちの複数の組合せとすることができる。たとえば、図20の米国の例では、ニューメキシコビジュアルアイテム2001の高さの上向きの調整が、ネバダビジュアルアイテム2002およびフロリダビジュアルアイテム2003の高さの下向きの調整をもたらすことができる(編集相互作用の例を表す)。しかし、これが、3つのフレームがそれぞれ3つの州ネバダ、ニューメキシコ、およびフロリダのうちの1つにズームインする4つのフレームにディスプレイを分割することをももたらすこともできる(スコーピング相互作用の例)。さらに、第4のフレームは、ニューメキシコの住居の消費プリファレンスに関する調査情報を含むことができる(リンキング相互作用の例)。
【0165】
図24は、もう1つのアプリケーション例を表すユーザインターフェース2400を抽象的に示す。このアプリケーション例では、ユーザが本明細書で説明される原理を使用してデータ駆動ビジュアルシーンを簡単に構築することを可能にする便利なユーザインターフェースが説明される。
【0166】
ユーザインターフェース2400は、ビジュアルアイテム(1つまたは複数)の第1セット2411を含む。この図示の場合では、セット2411は、単一のビジュアルアイテム2411だけを含む。しかし、本明細書で説明される原理は、ビジュアルアイテムセット2411内の1つのみのビジュアルアイテムに限定されない。ビジュアルアイテム(1つまたは複数)2411は、関連するデータ2412を含み、したがって、本明細書で、時々「データビジュアルアイテム(1つまたは複数)」2411と呼ばれる。
【0167】
要求されないが、この例では、関連するデータが、複数のデータグループに副分割される。任意の個数のグループが、十分である。しかし、4つのデータグループ2413A、2413B、2413C、および2413Dが、図24の関連するデータ2412内に含まれるものとして図示されている。図示された関連するデータ2412内では、データグループのそれぞれが、それぞれが関連する複数のデータフィールドを有して平行に編成される。図示の場合では、図示された関連するデータ2412内のデータグループのそれぞれが、対応するフィールドa、b、およびcを含む。データグループ2413Aのフィールドa、b、およびcは、以下ではそれぞれデータフィールド2413Aa、2413Ab、および2413Acと呼ばれる。データグループ2413Bのフィールドa、b、およびcは、以下ではそれぞれデータフィールド2413Ba、2413Bb、および2413Bcと呼ばれる。データグループ2413Cのフィールドa、b、およびcは、以下ではそれぞれデータフィールド2413Ca、2413Cb、および2413Ccと呼ばれる。最後に、データグループ2413Dのフィールドa、b、およびcは、以下ではそれぞれデータフィールド2413Da、2413Db、および2413Dcと呼ばれる。
【0168】
ユーザインターフェース2400は、ビジュアルアイテムの第2セット2420をも含む。図示の場合では、セット2420は、3つの対応するビジュアルアイテム2421、2422、および2423を含む。しかし、第2セット2420内のビジュアルアイテムの個数に対する限定はなく、第2セット内のビジュアルアイテムが同一タイプのアイテムであるという要件もない。以下では、ビジュアルアイテム2421、2422、および2423を、「要素ビジュアルアイテム」と呼ぶ場合もある。各ビジュアルアイテム2421、2422、および2423を、たとえば、入力パラメータを使用してそれぞれのビューコンポーネントの対応するロジックを実行することによって構築することができる。そのようなビューコンポーネントは、ビューコンポーネント521から524について図5に関して説明したものに類似するものとすることができる。したがって、ビジュアルアイテム2421、2422、および2423のそれぞれは、入力パラメータを有するものとして図示されている。そのような入力パラメータを、ビューコンポーネントに供給される入力パラメータとすることができ、または、ビジュアルアイテムのレンダリングを駆動するある他の入力パラメータとすることができる。例としてのみ、ビジュアルアイテム2421、2422、および2423のそれぞれは、それぞれが3つの入力パラメータを有するものとして図示されている。具体的に言うと、ビジュアルアイテム2421は、入力パラメータ2421a、2421b、および2421cを有するものとして図示されている。ビジュアルアイテム2422は、入力パラメータ2422a、2422b、および2422cを有するものとして図示されている。ビジュアルアイテム2423は、入力パラメータ2423a、2423b、および2423cを有するものとして図示されている。
【0169】
ユーザインターフェース2400は、ユーザ相互作用機構2440をも含む。ユーザ相互作用機構2440は、ユーザが(1つまたは複数のユーザジェスチャを介して)データビジュアルアイテム(1つまたは複数)2411のデータ2412を要素ビジュアルアイテム2420の入力パラメータに適用させることを可能にする。一実施形態では、ユーザジェスチャ(1つまたは複数)は、実際に、関連するデータを要素ビジュアルアイテム2420の入力パラメータにバインドさせることができる。そのようなユーザジェスチャは、ドラッグまたはドロップ動作、ホバー動作、ドラッグアンドクリック、もしくは任意の他のユーザジェスチャ、またはジェスチャの組合せとすることができる。したがって、ユーザは、データビジュアルアイテム(1つまたは複数)2410からのデータを要素ビジュアルアイテムの入力パラメータに適用しまたはバインドすることができ、これによって、単純なジェスチャを使用して要素ビジュアルアイテムの外見を変更する。一実施形態では、これは、ユーザが関連するデータのいずれかを入力することすら含まず、ジェスチャの単一のセットがデータを複数の要素ビューアイテムに適用しかつ/またはバインドすることを可能にする。1つのデータビジュアルアイテムから複数の要素ビジュアルアイテムへデータを適用しまたはバインドするためのユーザジェスチャのユーザの例を、下でさらに説明する。
【0170】
一実施形態では、ユーザ相互作用機構2440は、1)データグループのそれぞれの1つのデータグループが、第2の複数のビジュアルアイテムの別個のビジュアルアイテムの1つまたは複数の入力パラメータのセットに適用され、2)複数のデータグループの各データグループからの同一タイプの単一のフィールドが、要素ビジュアルアイテムの別個のビジュアルアイテムの1つまたは複数の入力パラメータのセットの入力パラメータに適用されるように、ユーザがデータビジュアルアイテム2411からのデータ2412をデータグループごとの基礎で要素ビジュアルアイテム2420の入力パラメータに適用することを可能にする。
【0171】
例として、図24を参照すると、ユーザは、データビジュアルアイテム(1つまたは複数)2411のデータフィールド2413Aaを要素ビジュアルアイテム2421の入力パラメータ2421bに、データビジュアルアイテム(1つまたは複数)2411のデータフィールド2413Baを要素ビジュアルアイテム2422の入力パラメータ2422bに、およびデータビジュアルアイテム(1つまたは複数)2411のデータフィールド2413Caを要素ビジュアルアイテム2423の入力パラメータ2423bに、同時に適用しまたはバインドするためにジェスチャの単一のセットを使用することができる。第4の要素ビジュアルアイテムがある場合には、データフィールド2413Daが、第4要素ビジュアルアイテムの対応する入力パラメータに適用された可能性がある。
【0172】
ジェスチャのこの同一セットの結果として、またはおそらくはジェスチャの追加のセットに応答して、さらなるアプリケーションまたはバインディングを作ることができる。たとえば、ユーザジェスチャに応答して、データビジュアルアイテム(1つまたは複数)2411のデータフィールド2413Abを要素ビジュアルアイテム2421の入力パラメータ2421aに適用するかバインドすることができ、データビジュアルアイテム(1つまたは複数)2411のデータフィールド2413Bbを要素ビジュアルアイテム2422の入力パラメータ2422aに適用するかバインドすることができ、データビジュアルアイテム(1つまたは複数)2411のデータフィールド2413Cbを要素ビジュアルアイテム2423の入力パラメータ2423aに適用するかバインドすることができる。さらに、データビジュアルアイテム(1つまたは複数)2411のデータフィールド2413Acを要素ビジュアルアイテム2421の入力パラメータ2421cに適用するかバインドすることができ、データビジュアルアイテム(1つまたは複数)2411のデータフィールド2413Bcを要素ビジュアルアイテム2422の入力パラメータ2422cに適用するかバインドすることができ、データビジュアルアイテム(1つまたは複数)2411のデータフィールド2413Ccを要素ビジュアルアイテム2423の入力パラメータ2432cに適用するかバインドすることができる。
【0173】
ユーザインターフェース2400は、潜在的に、関連するプロパティ2431を有する第3ビジュアルアイテム2430をも含む。第2ユーザ相互作用機構2450は、1)各第2オフセット2420ビジュアルアイテムの1つまたは複数の入力パラメータが第3ビジュアルアイテム2430の関連するプロパティ2431を使用してセットされ、かつ/または2)第3ビジュアルアイテム2430のプロパティ2431がビジュアルアイテムの第2セット2420のそれぞれの1つまたは複数の入力パラメータを変更するのに使用されるように、ユーザがビジュアルアイテム2420の第2セットを第3ビジュアルアイテム2430に合併するのにジェスチャ(1つまたは複数)のセットを使用することを可能にする。これを達成するのに使用されるジェスチャは、ドラッグアンドドロップ動作、ホバー動作、または任意の他のユーザジェスチャとすることができ、全体的にまたは部分的に、データビジュアルアイテム(1つまたは複数)2410からのデータを要素ビジュアルアイテム2420に適用するのに使用されたものと同一のユーザジェスチャを使用して達成された可能性がある。
【0174】
たとえば、ビジュアルアイテムの第2セット2420と第3ビジュアルアイテム2430とを合併するのに使用されるユーザジェスチャ(1つまたは複数)(すなわち、ジェスチャ(1つまたは複数)の第2セット)が、データビジュアルアイテム(1つまたは複数)2411からのデータを要素ビジュアルアイテム2420の入力パラメータに適用するかバインドするのに使用されるユーザジェスチャ(1つまたは複数)(すなわち、ジェスチャ(1つまたは複数)の第1セット)と少なくとも部分的にオーバーラップする場合に、ジェスチャ(1つまたは複数)の第1セットとジェスチャ(1つまたは複数)の第2セットとの両方内に、少なくとも1つの共通のジェスチャがある。しかし、これは、全く必要ではない。実際に、ジェスチャの第1セットとジェスチャの第2セットとの間に共通のジェスチャ(1つまたは複数)がない場合がある。したがって、要素ビジュアルアイテム2420をビジュアルアイテム2430と合併するのと比較して、別個のユーザアクションを使用してデータビジュアルアイテム2411からのデータを要素ビジュアルアイテム2420に適用することができる。
【0175】
一実施形態では、データビジュアルアイテム(1つまたは複数)2411を、それぞれ、図5のビューコンストラクションモジュール521から524を使用して図5で構築されたビューアイテムに似たものとすることができる。その場合に、関連するデータ2412を、対応するビューコンポーネントの入力パラメータ(1つまたは複数)に供給されるデータとすることができる。この関連するデータ2412を、ユーザが関連するデータに関するビューを有することを可能にする、ビジュアルアイテム自体内のビジュアルとして表面に出すことさえできる。ビジュアルアイテム2430も、ビューコンストラクションモジュール521から524を使用して構築されたビジュアルアイテムに似たものとすることができる。その場合に、おそらく、ビジュアルアイテム2430のプロパティ2431の1つまたは複数を、対応するビューコンポーネントの入力パラメータを使用してセットすることができる。
【0176】
要素ビジュアルアイテム2420の入力パラメータへのデータビジュアルアイテム(1つまたは複数)2411の関連するデータ2412の適用は、分析モデルに再び解かせることができる。たとえば、図4は、パイプライン200の分析部分400を説明する。関連するデータ2412の適用を適用することによって、要素ビジュアルアイテム2420の入力パラメータをさらに再設定するために再計算される必要があるデータが生じる可能性がある。さらに、要素ビジュアルアイテム2420を第3ビジュアルアイテム2430に合併することは、これによってビジュアルアイテム2420または2430の入力パラメータを変更するために分析部分400の再解決を引き起こす可能性もある。
【0177】
もちろん、図24は、ユーザインターフェースの抽象的な表現である。ユーザが要素ビジュアルアイテムに適用されるデータビジュアルアイテム(1つまたは複数)の関連するデータを指定することを可能にし、要素ビジュアルアイテムを別のより高いレベルのビジュアルアイテムと合併することを可能にするユーザインターフェースのより具体的な例を、これから図25から29に関して提示する。
【0178】
図25は、その中で螺旋2530が提示されるユーザインターフェース2500を示す。螺旋2530は、第3ビジュアルアイテム2430の具体的な例である。この場合に、螺旋2530のプロパティ(プロパティ2431の例)を、曲率半径、ピッチ(または上昇の角度)、色、線の厚さ、線の断面プロファイル、巻き線の長さ、開始角度などとすることができる。プロパティのそれぞれを、たとえば、実行された時に螺旋をレンダリングするコンストラクションロジックを有する螺旋ビュー構成要素に供給される入力プロパティとすることができる。螺旋形状タイプを、ユーザインターフェースの作業面2501にドラッグアンドドロップすることができる複数の形状のうちの1つとすることができる。螺旋は、その入力パラメータに、作業面にドラッグされる時にデフォルト値を設定されるものとすることができるが、これらのデフォルト値を変更させることができる。
【0179】
ユーザは、別々の立方形オブジェクト2521を作業面にドラッグすることもできた。立方形オブジェクト2521は、図24の要素ビジュアルオブジェクト2421の例である。立方形オブジェクト2521は、通常、お互いに平行または垂直の6つの長方形の側面を有する。立方形オブジェクト2521が、螺旋2530以外の、作業面の別の部分にドラッグされた場合には、立方形オブジェクト2521は、これらの基礎的な立方形の特性を保持した可能性がある。しかし、この場合には、ユーザは、立方形オブジェクト2521と螺旋2530とが合併されることをジェスチャで示した(おそらくは、ポインタ2550を使用して立方形2521を螺旋2530の一部の上にドラッグすることを介して)。この場合に、立方形2521は、その中心線が螺旋に従うように、その入力パラメータを調整される。これは、螺旋ビジュアルアイテムと合併される要素ビジュアルアイテムのタイプ(たとえば、この場合には立方形)を定義するための機構とすることもできる。
【0180】
この合併動作を考慮して、図26は、ユーザインターフェースのこの特定の例の別のステージ2600を示す。ここでは、ユーザが、データビジュアルアイテム2610、この場合には、おそらくはスプレッドシート文書を獲得した。スプレッドシート文書2610は、図24のデータビジュアルアイテム2411の例である。このスプレッドシート文書は、さまざまな精神治療薬をリストしたテーブルを含む。データは、完全に虚構であるが、この例を示すために提供される。第4列2614は、行ごとに1つの薬の名前をリストするが、この例では、このフィールドは、単純にデータが虚構なので空白である。第3列2613は、各行に対応する薬のカテゴリをリストする。第1列2611は、各行に対応する薬が処方使用について承認された開始日(年)をリストする。第2列2612は、各行に対応する薬が使用について承認された期間(年)をリストする。開始日、期間、カテゴリ、および名前は、図24の関連するデータ2412のデータグループのフィールドの例である。スプレッドシート文書2610の行は、図24の関連するデータ2412のデータグループの例である。
【0181】
ここで、入力データテーブル2620が現れて、どの入力パラメータが設定のターゲットであるものとして選択されたのかをユーザに示す。ユーザは、「螺旋上の位置」入力パラメータを設定するために第1列2611(すなわち、開始日フィールド)を選択した。立方形ビジュアルアイテムが、データグループごと(グラフ2610内の行ごと)に生成される。プレビュー2630は、螺旋2530を示すが、複数の立方形要素および螺旋の合併された版がどのように見えるのかのプレビューを伴う。
【0182】
図27は、ユーザインターフェース2700を示す。ここで、ユーザは、さまざまな立方形が、切り取られるのではなく、積み重ねの基礎として働く螺旋(今は不可視)と共に他の立方形の上に積み重ねられることを選択した。積み重ねられた立方形2710は、要素ビジュアルアイテムの例を表す。螺旋ビジュアルアイテムのプロパティが、各立方形の入力パラメータによって継承されたことに留意されたい。さらに、データビジュアルアイテム2610からのデータは、各立方形によって継承された。たとえば、立方形の積み重ね内の各立方形は、対応する薬の開始日に対応する螺旋上の位置を使用して構築された。各立方形の長さは、対応する薬の期間によって継承される。さらに、立方形は、螺旋から位置プロパティおよび曲率プロパティを継承する。
【0183】
図28は、完全なビジュアルシーンを示す。このユーザインターフェース2800では、色を、対応する薬のカテゴリに従って各立方形に割り当てることができる。したがって、対応する薬の開始日は、螺旋内の曲がった立方形の開始位置を定義する。たとえば、ユーザは、スプレッドシートビジュアルアイテム2411からの開始日データを立方形ビジュアルアイテムに適用するために、1)スプレッドシートの第1列を選択し、2)その列を入力パラメータテーブル2620の「螺旋上の位置」セクションにドラッグするというジェスチャを使用した可能性がある。さらに、対応する薬の期間は、螺旋内の曲がった立方形の長さを定義する。たとえば、ユーザは、スプレッドシートビジュアルアイテム2411からの期間データを立方形ビジュアルアイテムに適用するために、1)スプレッドシートの第1列を選択し、2)その列を入力パラメータテーブル2320の「長さ」セクションにドラッグするというジェスチャを使用した可能性がある。最後に、対応する薬のカテゴリは、螺旋内の曲がった立方形の色を定義する。ユーザは、スプレッドシートビジュアルアイテム2411からのカテゴリデータを立方形ビジュアルアイテムに適用するために、1)スプレッドシートの第1列を選択し、2)その列を入力パラメータテーブル2620の「色」セクションにドラッグするというジェスチャを使用した可能性がある。ユーザは、状況を考慮して、データのどのビジュアル表現が最良であるのかを知るために、入力パラメータフィールドの異なるセクションにスプレッドシートの異なるフィールドをドラッグアンドドロップすることができる。
【0184】
本明細書で説明されるこれらの原理を使用して、複雑なジオメトリを、他のビジュアル要素およびジオメトリを用いて構築し、構成することができる。ジオメトリの構成を理解するために、4つの主要な概念を、まず説明する。主要な概念は、1)データ系列、2)形状、3)次元セット、および4)ジオメトリを含む。
【0185】
まず、データ系列を説明する。データ系列は、データに対するラッパーである。データ系列オブジェクトの例は、図6に図示され、図6に関して説明された。データ系列オブジェクトは、データ自体ではない。しかし、データ系列は、データをどのようにして列挙すべきかを知っている。たとえば、図6を参照すると、列挙モジュール601は、データストリームオブジェクトに対応するデータ系列を列挙する。さらに、データ系列は、プロットの範囲、量子化、および分解能を宣言する属性を有する。データ系列によってラップされ得るデータタイプの例は、テーブル列、テーブル内の繰り返す行、階層、次元階層などを含む。
【0186】
形状を、正規ビュー構成から構築された正規ビジュアルアイテムとすることができる。そのような正規ビジュアルアイテムの例は、たとえば、点、棒、角柱、泡、表面パッチ、イメージファイル、2次元または3次元の形状などを含む。しかし、形状を、データからの正規コンストラクションとすることができる。そのようなデータからの正規コンストラクションの例は、ラベルを含む。その代わりに、形状を、データ系列および形状を用いてジオメトリを設定した結果とすることができる(用語ジオメトリは、下でさらに説明される)。
【0187】
正規形状は、複数の形状を処理するためにジオメトリの「バインダ−アレンジャ(binder−arranger)」(下で説明される)をパラメータ化することを潜在的に可能にするメタデータを担持する。このメタデータは、やはり下で説明される「レイアウトヘルパ」のヒントをも提供する。メタデータは、形状が直線または曲線のどちらであるのか、形状が平坦または体積を占めるのどちらであるのか、形状がある次元に関して対称であるのかどうか、形状がテキスト的な意味(たとえば、ラベル)形状で読まれる必要があるのかどうか、形状を着色しまたはテクスチャに重畳できるのかどうかなど、形状の諸態様を示す。
【0188】
形状が、絶対次元を有するのではなく、オプションでその次元での比率を指定できることに留意されたい。たとえば、角柱は、その高さHのある最小パーセンテージである基部LおよびWを有するように指定され得る。形状は、オプションで、たとえば2つの棒の間の最小距離など、その形状の複数のインスタンスをどのようにレイアウトできるのかにおける制約を指定することができる。
【0189】
次元セットに関して、これは、座標系から区別される。次元セットは、視覚化されるデータの次元と同数の次元を含む。次元は、通常のユークリッド軸x、y、およびzならびに時間tより多数とすることができる。次元セットでは、いくつかを、ユークリッド(たとえば、デカルト座標もしくは極座標x、y、z、または高さのzを伴う地図座標)とすることができる。後に、ジオメトリによって使用される時に、これらのユークリッド軸の影響は、形状インスタンス系列(Shape Instance Series)内の形状が、いくつかの座標で適当なスケーリング、変換、および分配を伴ってどのように挿入されまたは変換されるのかを詳細に叙述し、制御することである。他の次元は、クラスタ化および積み重ねなどのレイアウト効果を介して明示される。さらに他の次元は、アニメーションまたは運動速度など、より高いビジュアル次元を含むことができる。
【0190】
例として、既存の国を含むビジュアルアイテムを検討されたい。このビジュアルアイテムは、それぞれ、形状(国の形状を記述する)およびその国の中央の極座標に対応することができる。国の色に従ってレンダリングされるデータ系列もある場合がある。たとえば、青は、その国で対外援助に費やされる少量のリソースを表すことができる。赤は、その国で対外援助に費やされる、より大量のリソースを表すことができる。
【0191】
もう1つの次元をアニメートすることができる。たとえば、各国に関連する独楽があるものとすることができる。各国のその独楽次元を、政治的安定性スコアがどのようにして導出されるのかにかかわりなく、その国の政治的安定性に関するデータを用いて設定することができる。より低い政治的安定性を有する国は、より遅い動きおよびより大きい不安定とを伴ってアニメートされる独楽を有することができる。より高い政治的安定性を有する国は、より速い動きおよびより少ない不安定とを伴ってアニメートされる独楽を有することができる。他の非ユークリッド次元は、テクスチャを含むことができる。
【0192】
次元セットは、可視性/条件隠蔽、スクロール可能性、チルト、ラベリング、副分割、プロット可能な粒度、許容される範囲(たとえば、負数が許容されるかどうか)などの宣言を含むことができる。
【0193】
「ジオメトリ」は、1つのコンテナおよび1つまたは複数のバインダ−アレンジャからなる。
【0194】
コンテナに関して、ジオメトリは、その中でデータが形状によって視覚化されるコンテナのビジュアル要素/レイアウトの記述を含む。たとえば、最も単純な可能な棒グラフは、境界長方形の形状、コンテナの2/3D次元での均整(その代わりに、絶対次元)、座標系(たとえば、デカルト)を指定する。より洗練された視覚化は、追加の概念を指定することができる。たとえば、地図は、座標系内のどこに形状を配置できるのかを制限するジオメトリ内の副分割(ゾーン、街路など)を指定することができる。四分図は、そのデカルト軸が負値、色、テクスチャ、透明度、および他の制御可能なビジュアルパラメータに対処することを指定することができる。
【0195】
コンテナは、オプションで、対応するバインダ−アレンジャ内で必要なインテリジェンスの重要な部分を(しばしばソルバベースの)レイアウトヘルパの小さいセットに要因としてわけることを潜在的に可能にするメタデータを指定することができる。このメタデータは、たとえば、ユークリッド軸(さらなる軸タイプがある)が直線または曲線のどちらであるのか、コンテナが平坦または体積を占めるのどちらであるのか、コンテナがある次元に関して対称であるのかどうか、その他など、コンテナの諸態様を示す。
【0196】
第2に、ジオメトリは、1)データ値をどのようにして形状の次元属性(たとえば、高さ)またはビジュアル属性(たとえば、色)にマッピングするのか、および/またはデータ値に基づいて形状のセットからどのようにして選択すべきかを記述するDataShapeBindingParamsに、渡されたデータ系列およびオリジナルの形状(1つまたは複数)を適用することによって、形状インスタンス系列をどのように生成すべきか、2)渡された軸セットをコンテナの座標系およびコンテナの他のビジュアル要素(積み重ね、クラスタ化、着色、動きなど)にどのようにマッピングすべきか、3)ShapeAxisBindingParamsに従って、コンテナにマッピングされた1つまたは複数の次元上に形状インスタンス系列をどのようにレイアウトすべきか、ならびに4)たとえば線を接続するか小さいサーフェス−レット(surface−let)またはパッチから連続面を作成するために、必要な場合にレイアウトされた形状の間でどのように補間すべきかを知っている「バインダ−アレンジャ」の宣言を、それと共に担持する。
【0197】
設定されたジオメトリ(すなわち、1つまたは複数のデータ系列および対応する形状を用いてインスタンス化されたジオメトリ)自体を、別のジオメトリに渡すために形状として扱うことができる。たとえば、積み重ねられ/クラスタ化された棒グラフでは、最も内側のジオメトリは、最も単純なコンテナすなわち他の棒をその中で積み重ねることができる棒を有する。最も内側のジオメトリを設定することは、第2のジオメトリに進む形状をもたらし、この第2のジオメトリでは、コンテナが、棒のクラスタである。最後に、第2のジオメトリを設定することから生じる形状は、最も外側のジオメトリに供給され、この最も外側のジオメトリは、水平軸に沿って形状をどのようにレイアウトすべきかを知っており、y軸上でその高さを示しもする。
【0198】
上の積み重ねられ/クラスタ化された棒グラフの例では、最も内側のジオメトリは、高さだけを有し、第2のジオメトリは、(ソートされたまたはソートされていない)クラスタ化を有し、最も外側のジオメトリは、単純な(すなわち、積み重ねられていない)垂直次元および単純な(すなわち、クラスタ化を知らない)水平次元を有した。しかし、複合的な積み重ねられ/クラスタ化された棒グラフを、3つの態様すなわち積み重ねを知っている高さ次元、クラスタ次元、および水平X次元を有する次元セットにおいて解釈できる単一のジオメトリとして扱うこともできる。
【0199】
レイアウトヘルパは、アルゴリズムまたはソルバに頼り、含むジオメトリ内の形状の「正しい」または「最適の」位置ならびに形状の間の補間を判定するのを助ける。上で述べたように、レイアウトヘルパというアイデアは、バインダ−アレンジャ内の特異性を減らすためのものである。2種類のレイアウトヘルパすなわち、特定のバインダ−アレンジャのレベルで呼び出されるローカルレイアウトヘルパと、含むジオメトリ全体(その間に、ジオメトリ内の複数のB−Aのプッティング形状(B−A’s putting shape)の結果を含む)を調べるグローバルレイアウトヘルパとがある。
【0200】
したがって、パイプラインは、さまざまなドメインにまたがる複雑な相互作用を可能にする。
【0201】
追加の例のアプリケーション
図1および2のアーキテクチャは、ドメインにかかわりなく、無数のデータ駆動分析モデルを構築することを可能にすることができる。これらのドメインに関して似ている必要があるものは、全くない。ビジュアルに対して分析を適用することが役立つ可能性がある、解かれるべき問題がある場合には必ず、本明細書で説明される原理が、有益になる可能性がある。ここまででは、風水部屋レイアウトアプリケーションを含む少数の例のアプリケーションだけが、説明された。本明細書で説明される原理の広い範囲にわたる適用可能性を示すために、複数の追加の広い範囲にわたる多様な例のアプリケーションを、これから説明する。
【0202】
追加の例#1−小売業者棚配置
製品セールスマンは、しばしば、棚配置、エンドディスプレイ、および新しい販売促進を小売業者に売り込むために、3D視覚化を使用する。パイプライン201を用いて、セールスマンは、現場でwhat−ifを行うことができる。ある製品配置を与えられ、最小限の毎日の売上/リニアフットしきい値を考慮して、セールスマンは、最小限の必要な手元の在庫を計算し、視覚化することができる。逆に、ある手元の在庫を与えられ、隔週の補充サイクルを考慮して、セールスマンは、所望の売上/リニアフットを与える製品配置を計算することができる。小売業者は、影響を視覚化し、シナリオを比較し、利益を比較することができる。図29は、例の小売業者棚配置視覚化を示す。入力データは、製品のビジュアルイメージ、製品の個数、製品ごとに割り当てられるリニア平方フィート単位の面積、および製品ごとの棚番号などを含むことができる。図29の例は、仮想世界内のグラフの適用を示す。ここでは、プランシート2901および棚レイアウト2902を、棚レイアウト2902の変化がプランシート2901に影響し、逆も同様になるように分析的に関係付けることができる。
【0203】
追加の例#2−都市計画
都市計画マッシュアップは、顕著になりつつある。本明細書で説明される原理を使用して、分析を、そのような解決策に統合することができる。都市計画立案者は、専門家によって作成されたトラフィックモデルを開き、道路改善のギャラリから橋をドラッグする。この橋は、長さ制約および暴風動作制限などの分析的挙動をそれと共に持ってくる。適当な視覚化を介して、立案者は、異なる橋タイプおよび配置のトラフィックに対する影響を見、比較する。本明細書で説明される原理を、地図がさまざまな目的のためのものである可能性がある任意の地図シナリオに適用することができる。地図を、地域の将来を理解し、ある位置への指示を見つけるためのものとすることができる。地図を、地域化されたデータを比較するための視覚的背景とすることもできる。より最近に、地図は、ビルディング、インテリア、および任意の2Dオブジェクトもしくは3Dオブジェクトを地図内でオーバーレイするか位置決めすることのできる仮想世界を作成するのに使用されつつある。図30は、例の視覚化された都市計画を示す。やはり、グラフを、仮想世界(この例では1都市)の地図と機能的におよび分析的に統合できることに留意されたい。グラフが変化する時に、仮想世界も変化することができ、逆も同様である。
【0204】
追加の例#3−ビジュアル教育
ドメイン実務家だけではなく公衆によって複雑なデータが理解される必要がある科学、医学、および人口統計などのドメインでは、作成者は、本明細書で説明される原理を使用して、大衆の好奇心をそそり、引き込むデータ視覚化を作成することができる。作成者は、ドメイン固有メタファを使用し、作成者のスタイルのセンスを分け与える。図31は、子供の教育に関する図である。図32は、人口密度に関する従来の図である。従来、そのような視覚化は、静的な図にすぎない。本明細書で説明される原理を用いると、これらが、生きた対話型経験になることができる。たとえば、入力データとして地理的に分布する増加パターンを入力することによって、ユーザは、人口ピークが変化するのを見ることができる。作成されたモデルがこれをサポートする、いくつかの視覚化は、ユーザがwhat−ifを行うことを許す。すなわち、作成者は、いくつかの値を変更し、他の値に対するその変化の影響を見ることができる。
【0205】
追加の例#4−パラメトリックターゲットにビューコンポーネントを適用する
いくつかの場合に、たとえば図33および34に示されているように、さまざまなパラメトリックターゲット(たとえば、他のビューコンポーネント)にビューコンポーネントを適用することが望ましい可能性がある。具体的に言うと、図33と34との両方のパネルの高さは、1812年の不運なロシア方面作戦中のナポレオンの軍勢を表す。図33では、パネルは、ナポレオン軍がたどった実際の経路を表すパラメトリックターゲットに適用される。図34では、パネルは、異なるパラメトリックターゲットすなわち螺旋に適用される。したがって、ビューコンポーネント(パネルなど)を、異なるパラメトリックターゲット(たとえば、ナポレオン軍がたどった実際の経路を表すビューコンポーネントまたは螺旋を表すビューコンポーネント)に適用することができる。
【0206】
ビューコンポーネントを、それが適用されるパラメトリックターゲットの子とすることができる。たとえば、図33のパネルを、軍経路の子とすることができ、図34のパネルを、図34の螺旋の子とすることができる。さらに、軍勢を表すラベルを、その高さが軍勢を表すパネルの子とすることができる。
【0207】
望ましくは、子ビューコンポーネントのプロパティに結び付けられたソルバおよび親ビューコンポーネントのプロパティに結び付けられたソルバを、依存関係ツリーを介して明示的に構成することができ、または、そのようなソルバを含むプロパティ−セッターの相互関係を介して暗黙のうちに構成することができる。
【0208】
したがって、子でプロパティをセットすることは、親のプロパティの再解決(時々、「エスカレーション」と呼ばれる)をトリガすることができ、親でプロパティをセットすることは、子のプロパティの再解決(時々、「委任」と呼ばれる)をトリガすることができる。たとえば、図33を参照すると、ユーザは、パネルの高さを変更することを試みることができ、この変更は、パネルのスケールを増やすためにそのパネルのプロパティ−セッターをトリガすることができる。さらに、パネルのスケールのプロパティ−セッターは、パネルのセットのスケールに関するプロパティ−セッターを呼び出すことができる(エスカレーション)。次に、パネルのセットのスケールプロパティ−セッターは、パネルのそれぞれの個々のスケールプロパティ−セッターを呼び出すことができる(委任)。
【0209】
特に、図33が、仮想世界へのグラフの適用の例であることに留意されたい。「仮想世界」とは、架空の地図のある現実のコンピュータ化された表現である。この地図は、2次元とすることができ、または、3次元とすることができる。たとえば、都市地図は、すべてが地理的関係においてレイアウトされる、街路、ビルディング、川などを含むことができる。その一方で、「グラフ」は、変数に適用されるデータ系列を表す。グラフを、グラフによって表されるデータ系列を仮想世界のある態様に適用することによって、本明細書で説明される原理を使用して仮想世界に適用することができる。その仮想世界の態様は、水平面、垂直面、3次元オブジェクトの外部サービス、ルートなどとすることができる。仮想世界は、実際の物理空間を表すことができ、または、仮定のエリアを表すのみとすることができる。仮想世界は、町の一部、都市、州、県、領域、ビルディング、近隣、惑星、または任意の他の物理的エリアのすべてを表すことができる。
【0210】
たとえば、図33の例では、グラフデータは、複数の時間期間のそれぞれについて、その時点のナポレオン軍の人数を含む。この情報を、ナポレオン軍のルートに適用することができる。各棒の高さは、軍の行程の特定のセグメントでのナポレオン軍の兵隊の数を表す。望まれる場合に、川、都市、海、その他などの他の地理的特徴を、この地図に含めることができる。グラフを、座標系、軸、またはマーカーなどのグラフ特徴を表面などの仮想世界特徴に適用することによって、仮想世界に適用することができる。
【0211】
仮想世界へのグラフの適用の他の例として、ある会社が、従業員モラルを表すデータを有すると仮定する。このグラフデータを、各従業員のウィンドウの色をモラルに従ってある色にレンダリングすることによって、会社キャンパスの3次元レンダリングなどの仮想世界に適用することができる。たとえば、青のウィンドウは、幸福な従業員を表すことができ、赤のウィンドウは、不幸な従業員を表すことができる。その後、適当な分析を行うことができる。たとえば、キャンパス地図の高水準のビューをとり、どのビルディングがより赤い傾向があるのかを判定することができる。おそらく、ビルディングのうちの1つが、他のビルディングから分離され、対話のより少ない機会およびより低いモラルをもたらす可能性がある。次に、その会社は、将来にそのビルディングを貸し出すことを再検討し、これらの従業員のために、全体により近いビルディングを建てることを試みることができる。
【0212】
したがって、本明細書で説明される原理は、視覚化された問題解決および分析の世界における重大なパラダイムシフトをもたらす。このパラダイムシフトは、本明細書で説明される原理がすべてのドメインにあてはまり得るので、すべてのドメインにまたがってあてはまる。
【0213】
データのドメイン固有分類
戻って図2を参照すると、パイプライン201は、データ駆動である。たとえば、入力データ211は、データ部分210に供給され、分析データ221は、分析部分220に供給され、ビューデータ231は、ビュー部分230に供給される。これらのデータのそれぞれの例は、既に説明された。特に、ますます複雑なモデルを構成するためにモデルの諸部分を1つのモデルにインポートできる構成のたやすさを考慮すると、オーサリングコンポーネント240によって選択できるデータの量が、非常に多くなり得ると言えば十分である。正しいデータ211、221、および231を選択できるようにするためにデータを通ってナビゲートするのを助けるために、分類コンポーネント260は、入力データの複数のドメイン固有分類を提供する。
【0214】
図35は、分類コンポーネント260が動作できる分類環境3500を示す。分類は、カテゴリへのアイテムの類別と、これらのカテゴリの関係付けとを含む。したがって、環境3500は、分類にかけられるアイテムのコレクション3510を含む。図35では、アイテムのコレクション3510は、アイテム3511Aから3511P(集合的に「メンバアイテム3511」と呼ばれる)を含む少数のアイテムのみを全体的に含むものとして図示されている。少数のメンバアイテム3511だけが図示されているが、任意の個数のアイテム、おそらくは、省略記号3511Qによって表されるように、類別され分類されなければならない数百個、数千個、または数百万個ものアイテムがある可能性がある。メンバアイテム3511は、オーサリングコンポーネント240がパイプライン201にデータ211、221、および231を供給するためにそこから選択できるメンバアイテムのプールを含む。
【0215】
ドメインに敏感な分類コンポーネント3520は、メンバアイテム3511のすべてまたは一部にアクセスし、メンバアイテム3511の別個の分類を生成することもできる。たとえば、分類コンポーネント3520は、ドメイン固有分類3521を生成する。この場合には、省略記号3521Fによって表される潜在的な他の分類の中で、5つのドメイン固有分類3521Aから3521Eがある。分類コンポーネント3520によって作成され管理される、5つより少数のドメイン固有分類がある場合もある。
【0216】
例として、分類3521Aは、風水ドメインに適切なメンバアイテムを分類することができ、分類3521Bは、モーターサイクル設計ドメインに適切なメンバアイテムを分類することができ、分類3521Cは、同様に都市計画ドメインに適切とすることができ、分類3521Dは、在庫管理ドメインに適切とすることができ、分類3521Eは、抽象芸術作品ドメインに適切とすることができる。もちろん、これらは、パイプライン201によって供給できる潜在的に無数のドメインのうちの5つにすぎない。分類のそれぞれは、対応する分類で類別するために使用可能なメンバアイテムのすべてまたはサブセットを使用することができる。
【0217】
図36は、メンバアイテムの分類の一特定の単純な例3600を示す。たとえば、分類を、図35のドメイン固有分類3521Aとすることができる。後続の図は、より複雑な例を示す。分類3600は、メンバアイテム3511Aおよび3511Eを除くメンバアイテム3511のすべてを含むカテゴリノード3610を含む。カテゴリノード3610は、たとえば、成分メンバアイテムへのポインタを含むオブジェクトとすることができ、したがって、論理的な意味で、メンバアイテムを、カテゴリノード3610「内に含まれる」と考えることができる。カテゴリノード3610は、候補メンバアイテムのプロパティを使用してカテゴリノード3610のメンバシップ資格を記述するプロパティ相関記述子3611を関連付けられもする。あるメンバアイテムをあるカテゴリに含めるべきか否かを判定する時に、プロパティ相関記述子を使用して、そのメンバアイテムのプロパティに対してその記述子を評価することができる。
【0218】
分類では、2つのカテゴリを、複数の異なる形でお互いに関係付けることができる。1つの一般的な関係は、あるカテゴリが別のカテゴリのサブセットであることである。たとえば、乗物を表すすべてのオブジェクトを含む「乗物」カテゴリがある場合に、乗物カテゴリのサブセットを含む「自動車」カテゴリがある場合がある。両方のカテゴリのプロパティ相関記述子は、特定の関係を定義することができる。たとえば、乗物カテゴリのプロパティ相関記述子は、1)オブジェクトが可動である、2)オブジェクトが人間を含むことができるというプロパティを有するオブジェクトが、そのカテゴリに含まれることを示すことができる。自動車カテゴリのプロパティ相関記述子は、この2つのプロパティ要件を明示的にまたは暗黙のうちにのいずれかで含むことができ、1)オブジェクトがオブジェクトの移動中に地球との接触を維持する少なくとも3つの車輪を含み、2)オブジェクトが自動推進であり、3)オブジェクトの高さが6フィート(1.83m)を超えないというプロパティ要件を含むこともできる。カテゴリごとのプロパティ相関記述子に基づいて、分類コンポーネントは、任意の所与のドメイン固有分類内の1つまたは複数のカテゴリにオブジェクトを割り当てることができ、カテゴリの間の関係を理解することもできる。
【0219】
図36では、別のプロパティ相関記述子3621を含む第2のカテゴリノード3620が図示されている。カテゴリノード3620は、プロパティ相関記述子3621を満足するすべてのメンバアイテムを論理的に含む。この場合に、そのカテゴリノードに論理的に含まれるメンバアイテムは、第1のカテゴリノード3610に含まれるメンバアイテムのサブセットである(たとえば、メンバアイテム3511F、3511J、3511N、および3511Pを含む)。これは、第2のカテゴリノード3620のプロパティ相関記述子3621が、1つまたは複数の追加のプロパティ要件を除いて、第1のカテゴリノード3610の相関記述子3611と同一のプロパティ要件を指定するからである可能性がある。第1のカテゴリノード3610と第2のカテゴリノード3620との間の関係は、関係3615によって論理的に表される。
【0220】
乗物−自動車の例では、カテゴリの間の関係は、サブセット関係である。すなわち、一方のカテゴリ(たとえば、自動車カテゴリ)が、他方(たとえば、乗物カテゴリ)のサブセットである。しかし、さまざま他のタイプの関係もあり、おそらく、以前に全く認識されず、使用されなかった新しい関係さえある。たとえば、あるカテゴリ内のオブジェクトの過半数(またはある指定されたパーセンテージ)が特定のプロパティ値を有する場合に、別のカテゴリ内のオブジェクトが、このプロパティを有し、このプロパティ値を継承する、過半数継承関係がある可能性がある。オブジェクトの一方のカテゴリが、可視光のある波長範囲内の原色を有する場合に、他方のカテゴリが、可視光のある隣接する波長範囲内の原色を有するオブジェクトを含む、「類似色」関係がある可能性がある。あるカテゴリが、主に特定のウィルスによって引き起こされる、ある種の感染症を表すオブジェクトを含む場合に、関連するカテゴリが、そのウィルスの突然変異型によって引き起こされるある種の感染症を表すオブジェクトを含むことができる、「ウィルス突然変異」関係がある可能性がある。これらの例は、量に関して延々と続く可能性がある。当業者は、この説明を再検討した後に、カテゴリの間の関係の種類が制限されないことを認めるであろう。
【0221】
さらに、単一の分類が、多数の異なるタイプの関係を有することができる。明瞭さのために、さまざまな分類を、これから抽象的な意味で説明する。抽象的に表された分類の例を、図37Aから37Cに示す。その後、本明細書で説明される原理がデータ駆動視覚化でドメイン固有分類の無数のアプリケーションを可能にすることを理解して、特定の例を説明する。
【0222】
図36の例は、単純な2カテゴリノード分類であるが、図37Aから37Cの例は、より複雑である。図37Aから37Cの分類3700Aから3700C内の各ノードは、0個以上のメンバアイテムを含むカテゴリノードを表し、本質的にカテゴリノードへのメンバアイテムの参加を許可する受付ポリシである、それぞれに関連するプロパティ相関記述子を有することができる。しかし、不当な複雑さを回避するために、分類3700Aから3700Cのカテゴリノードのそれぞれのメンバアイテムおよびプロパティ相関記述子は、図示されていない。カテゴリノードの間の線は、カテゴリノードの間の関係を表す。これらの関係は、限定なしに、サブセット関係またはある他の種類の関係とすることができる。カテゴリノードの間の関係の正確な性質は、重要ではない。それでも、分類においてカテゴリノードの間のさまざまな関係タイプがある可能性があることを強調するために、関係に、A、B、C、D、またはEのラベルを付ける。
【0223】
図37Aから37Cは、例としてのみ提供される。図37Aから37Cの分類の正確な構造は、重要ではないだけではなく、本明細書で説明される原理は、どの種類の分類を入力候補メンバアイテムの同一のセットに基づいてさえ生成できることにおける高い柔軟性を可能にする。これらの例では、分類3700Aは、関係タイプA、B、およびCを使用して互いに関係付けられたカテゴリノード3701Aから3710Aを含む。分類3700Bは、関係タイプB、C、およびDを使用して互いに関係付けられたカテゴリノード3701Bから3708Bを含む。分類3700Cは、関係タイプC、D、およびEを使用して互いに関係付けられたカテゴリノード3701Cから3712Cを含む。この例では、分類3700Aおよび3700Bは、階層的であるが、分類3700Cは、より非階層的なネットワークである。
【0224】
新しい候補メンバアイテムが使用可能になる時に、これらの候補メンバアイテムを、各分類内のカテゴリノードのそれぞれのプロパティ相関記述子に対して評価することができる。メンバアイテムのプロパティが、そのメンバアイテムがプロパティ相関記述子の要件(すなわち、受付ポリシ)を満足することを可能にする値を有する場合には、そのメンバアイテムは、そのカテゴリノードへの参加を許可される。たとえば、おそらくは、そのメンバアイテムへのポインタが、そのカテゴリノードに追加される。したがって、新しいメンバアイテムが、十分な数のプロパティを有する場合には、新しいメンバアイテムが、すべての分類内の適当なカテゴリに自動的にインポートされる可能性がある。
【0225】
図38は、複数のプロパティ3801を含むメンバアイテム3800を示す。単一のプロパティがある場合があるが、メンバアイテム3800に関連する潜在的に数千個のプロパティがある可能性もある。図38では、メンバアイテム3800は、省略記号3801Fによって表される潜在的に他のプロパティの中で、4つのプロパティ3801A、3801B、3801C、および3801Dを含むものとして図示されている。これらのプロパティを何にすることができるのかに対する制限はない。これらを、メンバアイテムを分類に類別する際に有用である可能性がある何にでもすることができる。
【0226】
一実施形態で、データ部分210、分析部分220、およびビュー部分230のそれぞれの潜在的データを、分類することができる。たとえば、作成者が、個人(消費者または近隣住人)が都市の地図とインターフェースすることを可能にする消費者アプリケーションをその中で構成しているドメインを検討されたい。
【0227】
この消費者ドメインには、選択できるビューデータ231の分類がある可能性がある。たとえば、ビルディングのすべてを含むビルディングカテゴリがある可能性がある。異なるタイプのビルディングすなわち、政府ビルディング、病院、レストラン、家屋などがある可能性がある。鉄道サブカテゴリ、車道サブカテゴリ、および運河サブカテゴリを含む公共輸送カテゴリもある可能性がある。車道カテゴリは、街路、ハイウェイ、自転車専用道路、陸橋などを表すカテゴリまたはオブジェクトを含む可能性がある。街路カテゴリは、一方通行街路、マルチライン街路、右左折専用車線、中央車線などのビジュアル表現のオブジェクトまたはカテゴリを含む可能性がある。駐車場の異なるタイプのビジュアル表現または駐車場の他のサブカテゴリ(たとえば、立体駐車場、地下駐車場、路上駐車場、パーキングロットなど)を示す駐車場カテゴリがある可能性がある。駐車場を、駐車が無料であるか否か、またはコストがあるかどうかによって副類別することもできる。
【0228】
この消費者ドメインに、入力データの分類もある可能性がある。たとえば、駐車場構造は、たとえば、1)駐車場がバレットパーキングであるかどうか、2)駐車に関する1時間あたりの料金はどれほどか、3)駐車場が営業中の時間、4)駐車場が警備によって巡視されているかどうか、および、そうである場合に、駐車場の単位面積あたり何人の警備員がいるのか、5)駐車場のレベル数、6)1レベルだけがある場合には駐車場の平方フィート単位の面積、立体駐車場の場合には各レベルの平方フィート単位の面積、7)駐車場構造内で発生する自動車泥棒の毎年の過去の回数、8)駐車場の体積使用量、9)駐車場が1つまたは複数の条件(すなわち、近くの会社の従業員、レストランまたは商店街の得意客など)の満足に制限されるかどうか、または役立つ可能性がある任意の他のデータなどのデータを関連付けられる可能性がある。他のビジュアルアイテムにも関連するデータ、およびビジュアルアイテムがどのようにレンダリングされるのかには絶対に影響しない可能性があるが、ある点で計算に使用される可能性があるデータも、ある可能性がある。
【0229】
しかし、この消費者地図ドメインに固有の分析データ221の分類もある可能性がある。たとえば、分析は、あるカテゴリでのコストベースの分析、もう1つのカテゴリでの時間ベースの分析、もう1つのカテゴリでの距離ベースの分析、もう1つのカテゴリでのディレクトリ分析、およびもう1つのカテゴリでのルーティング分析を提示することができる。ここで、分析は、作成者が所望のアプリケーションのために分析モデルを定式化するのを助けるために分類される。たとえば、ルーティング分析カテゴリは、ルートを計算する式、ルーティングに対してどの制限を行えるのかを指定する制約(最短ルート、ハイウェイの最大使用、街路の回避など)、またはルール(特定の道路上のトラフィック方向など)のカテゴリを含むことができる。類似するサブカテゴリを、他のカテゴリのためにも含めることもできる。
【0230】
ここで、やはり都市のレイアウトを扱うが、今回はドメインが都市計画である、別のドメインを検討されたい。ここで、消費者にとってほとんど関心のないものである、都市計画立案者には興味深い分析がある。たとえば、あるトラフィック使用量を考慮して舗装をどれほど厚くしなければならないのか、あるエリア内に配置されるある道路タイプのリニアフットあたりの総設置および保守コストはどれほどか、次の20年間の期待されるトラフィックパターン予想を考慮して、ある橋の安全係数をどれほどにするのか、現在の都市計画でトラフィックボトルネックは何か、特定のビルディングが特定の位置に建築された場合の環境影響はどれほどか、ある制限がその特定のビルディングの使用に対して課せられる場合にその影響はどれほどか、などを計算する分析がある可能性がある。ここで、解かれるべき問題は、消費者ドメインで解かれるべき問題とは異なる。したがって、分析の分類は、消費者ドメインと比較して、両方が都市トポロジを扱う場合であっても、都市計画ドメインについて大きく異なってレイアウトされる可能性がある。
【0231】
その一方で、トラクタ設計ドメインは、分析の全く異なるセットで関心を持たれる可能性があり、異なる分類を使用するはずである。たとえば、トラクタ設計ドメインのビジュアルアイテムは、都市計画ドメインのビジュアルアイテムとは全く異なる可能性がある。もはや、都市ビジュアル要素には関係がない。今は、トラクタを構成するさまざまなビジュアル要素が、分類される。例として、ビジュアルアイテムは、何を何に接続できるのかの関係を使用して分類される可能性がある。たとえば、「シートに接続できるもの」、「キャブレタに接続できるもの、「後車軸に接続できるもの」などのカテゴリがある可能性がある。異なる分析分類がある可能性もある。たとえば、トラクタが濡れた土を通ってナビゲートする必要があることを考慮すると、タイヤのトレッドデプスに関する制約がある可能性がある。トラクタまたはその副構成要素の総重量を計算する分析などがある可能性がある。
【0232】
図39は、ドメイン固有分類3900を示し、図35のドメイン固有分類3521の一例を表す。一実施形態で、ドメイン固有分類は、使用可能なデータアイテムの少なくともいくつかが対応する関係するカテゴリに分類されるデータ分類3901と、使用可能なビューコンポーネントの少なくともいくつかが対応する関係するビューコンポーネントカテゴリに分類されるビューコンポーネント分類3903と、使用可能な分析の少なくともいくつかが相関する関係する分析カテゴリに分類される分析分類3902とを含む。データ、分析、およびビューコンポーネントがドメインに固有の形で分類されるそのようなドメイン固有分類の例は、既に説明された。
【0233】
図40は、分析をナビゲートし、使用する方法を示す。分析コンポーネント220が、対応するドメイン固有分析分類(行為4003)と一緒にアクセスされる(行為4001)。複数のドメイン固有分析分類がある場合には、ドメイン固有分析分類にアクセスできるようになる(行為4003)前に、まずドメインを識別することができる(行為4002)。
【0234】
次に、関係付けられたカテゴリをトラバースすることによって、分析分類をナビゲートすることができる(行為4004)。このナビゲーションを、コンピューティングシステムの助けを得て人間によって実行することができ、または、人間の同時発生の支援なしでコンピューティングシステムだけによって実行することさえできる。コンピュータまたは人間は、分析を各カテゴリに入れるための受付ポリシを定義する、カテゴリごとの相関プロパティ記述子から情報を導出することができる。情報を、カテゴリの間の関係によって導出することもできる。ナビゲーションを使用して、これによって出力モデルパラメータについて解き、またはおそらくは複数のモデルからの分析を合併するために、分析問題を解くことができる。代替案では、ナビゲーションを使用して、最初の段階で分析モデルを構成することができる。
【0235】
たとえば、分析分類が、解かれるべき問題のタイプのアイデンティティに関して関係を類別すると仮定する。コンポーザは、関心を持たれている問題タイプカテゴリ内のこれらの分析のすべてを再検討することによって開始することができる。そのカテゴリは、解かれるべき問題の諸部分を定義する関係付けられたカテゴリを有する可能性がある。ユーザは、これらの関係付けられたカテゴリにすばやくナビゲートし、そのドメインで関係する分析を見つけることができる。
【0236】
検索および探索
前に述べたように、データ駆動分析モデルを使用して、分析集中型の検索動作および探索動作を形成することができる。図41は、データ駆動分析モデルを使用して検索する方法4100の流れ図を示す。方法4100を、検索ツール242が検索要求を受け取るか他の形でこれにアクセスする(行為4101)たびに実行することができる。
【0237】
本明細書で説明される原理は、ユーザが検索要求を入力するのに使用できる機構に限定されない。それでも、少数の例を、さまざまな検索要求入力機構を示すためにこれから提供する。一例では、おそらく、検索要求は、テキストベースであり、テキスト検索フィールドに直接に入力される。別の例では、おそらく、ラジオボタンが、検索パラメータを入力するために書き込まれる。おそらく、スライダも、検索パラメータの範囲を入力するために使用され得る。検索要求生成は、ユーザを伴う対話型の形で生成された可能性がある。たとえば、ユーザが、ある雑音レベル範囲を経験する不動産を要求する場合に、アプリケーションは、徐々に大きくなる雑音を生成し、雑音が、ユーザが我慢したいものより大きくなった時に「うるさすぎる雑音」ボタンを押すようにユーザに求めることができる。
【0238】
検索要求は、従来の検索要求ではなく、データ駆動分析モデルの解く動作を要求することができる。しかし、解く前に、図2の検索ツール242は、要求に応答できるようになるために、それについて解かれるべきすべてのモデルパラメータを識別する(行為4102)。これは、たとえば、上で述べたさまざまな分離を使用して達成され得る。たとえば、ユーザが、1年のどの時点でも9時15分の後に山の陰に入らない不動産を検索している場合に、それについて解かれるべき「山の陰」と呼ばれるモデル変数がある可能性がある。ユーザが、ある雑音レベルを経験する不動産を検索する場合に、特定の座標を与えられて、それについて解かれるべき「平均雑音」と呼ばれるモデル変数がある可能性がある。
【0239】
関連する出力変数が識別された後に、分析部分220の分析関係が、出力変数について解くのに使用される(行為4103)。次に、解かれた出力変数(1つまたは複数)が、解かれた値(1つまたは複数)を使用して検索要求への応答を定式化するために検索ツール242によって使用される(行為4104)。いくつかの場合に、ユーザが、方法4100が実行されつつある時に方法4100と相互作用する可能性があるが、方法4100は、人間からの同時発生の支援なしでコンピューティングシステムによって実行され得る。検索要求を、ユーザによって、またはおそらくは別のコンピューティングモジュールまたはソフトウェアモジュールによってさえ、発行することができる。
【0240】
方法4100を、何回も、検索要求が処理されるたびに繰り返すことができる。それについて解かれるべきモデル変数は、検索要求ごとに異なるものとすることができるが、そうである必要はない。たとえば、ある価格範囲および雑音レベルを有する家屋に関する3つの検索要求がある場合がある。たとえば、4000,000ドルから600,000ドルまでの価格範囲内で、その平均雑音レベルが50デシベル未満の家屋に関する検索要求がある可能性がある。ここでのそれについて解かれるべきパラメータは、雑音レベルになるはずである。第2の検索要求を、200,000ドルから500,000ドルまでの価格範囲内で、その雑音レベルが60デシベル未満の家屋に関するものとすることができる、ここでのそれについて解かれるべきパラメータは、やはり雑音レベルになるはずである。しかし、第2の検索要求では、解く動作のいくつかが、検索要求について既に行われたことに留意されたい。たとえば、第1の検索要求に基づいて、システムは、既に、その平均雑音レベルが50デシベル未満である、4000,000ドルから500,000ドルまでの価格範囲内の家屋を識別した。したがって、これらの家屋について、雑音レベルを再計算する必要はない。解かれた後に、これらの値を、将来の検索のために保存することができる。したがって、これは、ユーザが、追加の要求をサブミットすることによって探索を実行することを可能にする。その後、ユーザは、400,000ドルから500,000ドルまでの価格範囲内で、45デシベル未満の雑音レベルを有する家屋に関する第3の検索要求をサブミットすることができる。この家屋の雑音レベルは、既にそれについて解かれているので、それらについてもう一度解く必要はない。したがって、検索結果を、はるかにより少ない計算を用いて返すことができる。本質的に、このシステムは、問題を解くことによって新しい情報を学習することができ、他の問題を解くのにその新しい情報を利用することができる。
【0241】
前に述べたように、各検索要求は、異なる出力モデル変数について解くことを含む可能性がある。たとえば、説明したばかりの検索要求を実行した後に、ユーザは、山の陰に入らない家屋に関する検索要求をサブミットする可能性がある。システムがこれについて解いた後に、このユーザまたは別のユーザが類似する要求をサブミットする時には必ず、その解決からの結果を、その後続の検索要求を満足するのに使用することができる。ユーザは、マグニチュード8.0の地震で立ったままでいる家屋に関する検索要求をサブミットし、シミュレーションに、各家屋が立ったままでいるか倒れるかのいずれかになることを検証させ、またはおそらくはその家屋が立ったままになる、あるパーセンテージ可能性を提供させることができる。正確なシミュレーションを実行するのに不十分な構造情報があった家屋について、システムは、結果が確定的でないと単純に述べることができる。地震シミュレーションが実行された後に、再シミュレーションを必要とした家屋に対するある構造的変更があった場合を除き、また、ある改善されたシミュレーションソルバがあった場合を除いて、その結果は、誰かがあるマグニチュードの地震に耐えることのできる家屋に関する検索要求をサブミットする時に必ず、使用され得る。ユーザは、カテゴリ5のハリケーンが発生した場合に洪水を受けず、破壊されない、ある価格範囲内の家屋に関する検索要求を実行することもできる。
【0242】
諸実施形態をある詳細で説明したが、注記として、本明細書で説明されるさまざまな動作および構造を、コンピューティングシステムによって実施することができるが、そうである必要はない。したがって、この説明の最後に、例のコンピューティングシステムを、図25に関して説明する。
【0243】
図42は、コンピューティングシステム4200を示す。コンピューティングシステムは、今やますますさまざまな形をとりつつある。コンピューティングシステムは、たとえば、ハンドヘルドデバイス、機器、ラップトップコンピュータ、デスクトップコンピュータ、メインフレーム、分散コンピューティングシステム、または従来はコンピューティングシステムではなかったデバイスにさえすることができる。この説明および特許請求の範囲では、用語「コンピューティングシステム」は、少なくとも1つのプロセッサと、プロセッサによって実行され得るコンピュータ実行可能命令をその上に有することができるメモリとを含む任意のデバイスまたはシステム(またはその組合せ)を含むものとして広義に定義される。メモリは、任意の形をとることができ、コンピューティングシステムの性質および形態に依存することができる。コンピューティングシステムは、ネットワーク環境を介して分散させることができ、複数の成分コンピューティングシステムを含むことができる。
【0244】
図42に示されているように、その最も基本的な構成で、コンピューティングシステム4200は、通常、少なくとも1つの処理ユニット4202およびメモリ4204を含む。メモリ4204は、物理システムメモリとすることができ、物理システムメモリは、揮発性、不揮発性、またはこの2つのある組合せとすることができる。用語「メモリ」は、本明細書で、物理記憶媒体などの不揮発性大容量記憶装置を指すのに使用される場合もある。コンピューティングシステムが分散される場合には、処理能力、メモリ能力、および/または記憶能力をも分散させることができる。本明細書で使用される時に、用語「モジュール」または「コンポーネント」は、コンピューティングシステム上で実行するソフトウェアオブジェクトまたはルーチンを指すことができる。本明細書で説明される異なるコンポーネント、モジュール、エンジン、およびサービスを、コンピューティングシステム上で実行するオブジェクトまたはプロセスとして(たとえば、別々のスレッドとして)実施することができる。
【0245】
これに続く説明では、諸実施形態が、1つまたは複数のコンピューティングシステムによって実行される行為を参照して説明される。そのような行為がソフトウェアで実施される場合に、その行為を実行する関連するコンピューティングシステムの1つまたは複数のプロセッサは、コンピュータ実行可能命令を実行したことに応答してコンピューティングシステムの動作を指示する。そのような動作の例は、データの操作を伴う。コンピュータ実行可能命令(および操作されたデータ)を、コンピューティングシステム4200のメモリ4204に格納することができる。
【0246】
コンピューティングシステム4200は、コンピューティングシステム4200がたとえばネットワーク4210を介して他のメッセージプロセッサと通信することを可能にする通信チャネル4208をも含むことができる。通信チャネル4208は、通信媒体の例である。通信媒体は、通常、搬送波または他のトランスポート機構などの変調されたデータ信号内でコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを実施し、任意の情報配送媒体を含む。限定ではなく例として、通信媒体は、有線ネットワークおよび直接配線接続などの有線媒体と、音響、無線、赤外線、および他の無線媒体などの無線媒体とを含む。用語コンピュータ可読媒体は、本明細書で使用される時に、記憶媒体と通信媒体との両方を含む。
【0247】
実施形態:
実施形態1について説明する。
ビュー構成の1つまたは複数のビューコンポーネントのプロパティを定義する複数のモデル変数を使用する、コンピュータにより実施される方法であって、
前記複数のモデル変数の未知の第2のモデル変数(1503b)について解く(1401)ために前記複数のモデル変数の既知の第1のモデル変数(1503a)を使用することと、
ここで、前記第2のモデル変数(1503b)は、前記ビュー構成の第1のビューコンポーネントの第1のプロパティを定義するものであり、
前記解かれた第2のモデル変数(1503b)の値に前記ビュー構成の前記第1のビューコンポーネント第1のビューコンポーネントの前記第1のプロパティをセットする(1403)ことと、
前記第1のビューコンポーネントを含む前記ビュー構成をレンダリングする(1404)ことと
を具えたことを特徴とする方法。
【0248】
実施形態2について説明する。
コンピューティングシステムの1つまたは複数のプロセッサによって実行される時に、前記コンピューティングシステムに方法を実行させるコンピュータ実行可能命令をその上に有する1つまたは複数の物理コンピュータ可読媒体を含むコンピュータプログラムであって、前記コンピュータ実行可能命令は、
第1のプロパティ−セッター(1502a)を呼び出す(1601)1つまたは複数のコンピュータ実行可能命令であって、前記第1のプロパティ−セッター(1502a)は、ビュー構成の少なくとも1つのビューコンポーネントの少なくとも1つのプロパティをセットし(1602)、第2のプロパティ−セッター(1502b)を呼び出す(1603)ように構成され、前記第2のプロパティ−セッター(1502b)は、
前記ビュー構成の1つまたは複数のビューコンポーネントのプロパティを定義する複数のモデル変数の未知の第1のモデル変数について解くように構成されたソルバ(1501b)を呼び出し(1604)、
前記解かれた第1のモデル変数の値に前記ビュー構成の第1のビューコンポーネントの第1のプロパティをセットする(1605)
ように構成される、1つまたは複数のコンピュータ実行可能命令
を具えたことを特徴とするコンピュータプログラム。
【0249】
本発明の範囲内の実施形態は、その内部に格納されたコンピュータ実行可能命令またはデータ構造を担持しまたは有するコンピュータ可読媒体をも含む。そのようなコンピュータ可読媒体は、汎用コンピュータまたは特殊目的コンピュータによってアクセスされ得るすべての使用可能な媒体とすることができる。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイスなどの物理記憶媒体および/もしくはメモリ媒体、またはコンピュータ実行可能命令もしくはデータ構造の形で所望のプログラムコード手段を担持するか格納するのに使用でき、汎用コンピュータもしくは特殊目的コンピュータによってアクセスされ得る任意の他の媒体を含むことができる。上記の組合せも、コンピュータ可読媒体の範囲に含まれなければならない。
【0250】
コンピュータ実行可能命令は、たとえば、汎用コンピュータ、特殊目的コンピュータ、または特殊目的処理デバイスにある機能または機能のグループを実行させる命令およびデータを含む。本主題を、構造的特徴および/または方法論的行為に固有の言語で説明したが、添付の特許請求の範囲で定義される本主題が、必ずしも本明細書で説明された特定の特徴または行為に限定されないことを理解されたい。そうではなく、本明細書で説明される特定の特徴および行為は、特許請求の範囲を実施する例の形として開示されたものである。
【0251】
本発明を、その趣旨または本質的特性から逸脱せずに他の特定の形で実施することができる。説明された実施形態は、すべての面で、制限的ではなく例示的であるのみと考えられなければならない。したがって、本発明の範囲は、前述の説明ではなく添付の特許請求の範囲によって示される。特許請求の範囲の意味および同等性の範囲に含まれるすべての変更は、その範囲に含まれなければならない。
【特許請求の範囲】
【請求項1】
ビュー構成の1つまたは複数のビューコンポーネントのプロパティを定義する複数のモデル変数を使用する、コンピュータ実施される方法であって、
前記複数のモデル変数の未知の第2のモデル変数について解くために前記複数のモデル変数の既知の第1のモデル変数を使用することと、
ここで、前記第2のモデル変数は、前記ビュー構成の第1のビューコンポーネントの第1のプロパティを定義するものであり、
前記解かれた第2のモデル変数の値に前記ビュー構成の前記第1のビューコンポーネント第1のビューコンポーネントの前記第1のプロパティをセットすることと、
前記第1のビューコンポーネントを含む前記ビュー構成をレンダリングすることと
を具えたことを特徴とするコンピュータ実施される方法。
【請求項2】
前記既知の第1のモデル変数は、前記第1のビューコンポーネントの第2のプロパティ第2のプロパティを定義することを特徴とする請求項1記載のコンピュータ実施される方法。
【請求項3】
前記第1のビューコンポーネントの前記第1のプロパティのプロパティ−セッターによって呼び出されるソルバは、前記複数のモデル変数の前記未知の第2のモデル変数について解くために前記複数のモデル変数の前記既知の第1のモデル変数を使用することを実行し、
前記第1のビューコンポーネントの前記第1のプロパティの前記プロパティ−セッターは、前記解かれた第2のモデル変数の前記値に前記ビュー構成の前記第1のビューコンポーネントの前記第1のプロパティをセットすることを実行することを特徴とする請求項2記載のコンピュータ実施される方法。
【請求項4】
前記第1のビューコンポーネントの前記第1のプロパティの前記プロパティ−セッターは、前記第1のビューコンポーネントの前記2プロパティのプロパティ−セッターによって呼び出されることを特徴とする請求項3記載のコンピュータ実施される方法。
【請求項5】
前記既知の第1のモデル変数は、前記ビュー構成の第2のビューコンポーネントの第1のプロパティを定義することを特徴とする請求項1記載のコンピュータ実施される方法。
【請求項6】
前記第1のビューコンポーネントの前記第1のプロパティのプロパティ−セッターによって呼び出されるソルバは、前記複数のモデル変数の前記未知の第2のモデル変数について解くために前記複数のモデル変数の前記既知の第1のモデル変数を使用することを実行し、
前記第1のビューコンポーネントの前記第1のプロパティの前記プロパティ−セッターは、前記解かれた第2のモデル変数の前記値に前記ビュー構成の前記第1のビューコンポーネントの前記第1のプロパティをセットすることを実行することを特徴とする請求項5記載のコンピュータ実施される方法。
【請求項7】
前記第1のビューコンポーネントの前記第1のプロパティの前記プロパティ−セッターは、前記第2のビューコンポーネントの前記1プロパティのプロパティ−セッターによって呼び出されることを特徴とする請求項6記載のコンピュータ実施される方法。
【請求項8】
前記第1のビューコンポーネントは、前記第2のビューコンポーネントの子であることを特徴とする請求項7記載のコンピュータ実施される方法。
【請求項9】
前記第2のビューコンポーネントは、前記第1のビューコンポーネントの子であることを特徴とする請求項7記載のコンピュータ実施される方法。
【請求項10】
前記第1のビューコンポーネントの前記第1のプロパティのプロパティ−セッターによって呼び出されるソルバは、前記複数のモデル変数の前記未知の第2のモデル変数について解くために前記複数のモデル変数の前記既知の第1のモデル変数を使用することを実行し、
前記第1のビューコンポーネントの前記第1のプロパティの前記プロパティ−セッターは、前記解かれた第2のモデル変数の前記値に前記ビュー構成の前記第1のビューコンポーネントの前記第1のプロパティをセットすることを実行することを特徴とする請求項1記載のコンピュータ実施される方法。
【請求項11】
コンピューティングシステムの1つまたは複数のプロセッサによって実行される時に、前記コンピューティングシステムに方法を実行させるコンピュータ実行可能命令をその上に有する1つまたは複数の物理コンピュータ可読媒体を含むコンピュータプログラムであって、前記コンピュータ実行可能命令は、
第1のプロパティ−セッターを呼び出す1つまたは複数のコンピュータ実行可能命令であって、前記第1のプロパティ−セッターは、ビュー構成の少なくとも1つのビューコンポーネントの少なくとも1つのプロパティをセットし、第2のプロパティ−セッターを呼び出すように構成され、前記第2のプロパティ−セッターは、
前記ビュー構成の1つまたは複数のビューコンポーネントのプロパティを定義する複数のモデル変数の未知の第1のモデル変数について解くように構成されたソルバを呼び出し、
前記解かれた第1のモデル変数の値に前記ビュー構成の第1のビューコンポーネントの第1のプロパティをセットする
ように構成される、1つまたは複数のコンピュータ実行可能命令
を具えたことを特徴とするコンピュータプログラム。
【請求項12】
前記第1のプロパティ−セッターは、前記ビュー構成の前記第1のビューコンポーネントの第2のプロパティをセットするように構成されることを特徴とする請求項11記載のコンピュータプログラム。
【請求項13】
前記第1のプロパティ−セッターは、前記ビュー構成の第2のビューコンポーネントの第1のプロパティをセットするように構成されることを特徴とする請求項11記載のコンピュータプログラム。
【請求項14】
前記第1のビューコンポーネントは、前記第2のビューコンポーネントの子であることを特徴とする請求項13記載のコンピュータプログラム。
【請求項15】
前記第2のビューコンポーネントは、前記第1のビューコンポーネントの子であることを特徴とする請求項13記載のコンピュータプログラム。
【請求項1】
ビュー構成の1つまたは複数のビューコンポーネントのプロパティを定義する複数のモデル変数を使用する、コンピュータ実施される方法であって、
前記複数のモデル変数の未知の第2のモデル変数について解くために前記複数のモデル変数の既知の第1のモデル変数を使用することと、
ここで、前記第2のモデル変数は、前記ビュー構成の第1のビューコンポーネントの第1のプロパティを定義するものであり、
前記解かれた第2のモデル変数の値に前記ビュー構成の前記第1のビューコンポーネント第1のビューコンポーネントの前記第1のプロパティをセットすることと、
前記第1のビューコンポーネントを含む前記ビュー構成をレンダリングすることと
を具えたことを特徴とするコンピュータ実施される方法。
【請求項2】
前記既知の第1のモデル変数は、前記第1のビューコンポーネントの第2のプロパティ第2のプロパティを定義することを特徴とする請求項1記載のコンピュータ実施される方法。
【請求項3】
前記第1のビューコンポーネントの前記第1のプロパティのプロパティ−セッターによって呼び出されるソルバは、前記複数のモデル変数の前記未知の第2のモデル変数について解くために前記複数のモデル変数の前記既知の第1のモデル変数を使用することを実行し、
前記第1のビューコンポーネントの前記第1のプロパティの前記プロパティ−セッターは、前記解かれた第2のモデル変数の前記値に前記ビュー構成の前記第1のビューコンポーネントの前記第1のプロパティをセットすることを実行することを特徴とする請求項2記載のコンピュータ実施される方法。
【請求項4】
前記第1のビューコンポーネントの前記第1のプロパティの前記プロパティ−セッターは、前記第1のビューコンポーネントの前記2プロパティのプロパティ−セッターによって呼び出されることを特徴とする請求項3記載のコンピュータ実施される方法。
【請求項5】
前記既知の第1のモデル変数は、前記ビュー構成の第2のビューコンポーネントの第1のプロパティを定義することを特徴とする請求項1記載のコンピュータ実施される方法。
【請求項6】
前記第1のビューコンポーネントの前記第1のプロパティのプロパティ−セッターによって呼び出されるソルバは、前記複数のモデル変数の前記未知の第2のモデル変数について解くために前記複数のモデル変数の前記既知の第1のモデル変数を使用することを実行し、
前記第1のビューコンポーネントの前記第1のプロパティの前記プロパティ−セッターは、前記解かれた第2のモデル変数の前記値に前記ビュー構成の前記第1のビューコンポーネントの前記第1のプロパティをセットすることを実行することを特徴とする請求項5記載のコンピュータ実施される方法。
【請求項7】
前記第1のビューコンポーネントの前記第1のプロパティの前記プロパティ−セッターは、前記第2のビューコンポーネントの前記1プロパティのプロパティ−セッターによって呼び出されることを特徴とする請求項6記載のコンピュータ実施される方法。
【請求項8】
前記第1のビューコンポーネントは、前記第2のビューコンポーネントの子であることを特徴とする請求項7記載のコンピュータ実施される方法。
【請求項9】
前記第2のビューコンポーネントは、前記第1のビューコンポーネントの子であることを特徴とする請求項7記載のコンピュータ実施される方法。
【請求項10】
前記第1のビューコンポーネントの前記第1のプロパティのプロパティ−セッターによって呼び出されるソルバは、前記複数のモデル変数の前記未知の第2のモデル変数について解くために前記複数のモデル変数の前記既知の第1のモデル変数を使用することを実行し、
前記第1のビューコンポーネントの前記第1のプロパティの前記プロパティ−セッターは、前記解かれた第2のモデル変数の前記値に前記ビュー構成の前記第1のビューコンポーネントの前記第1のプロパティをセットすることを実行することを特徴とする請求項1記載のコンピュータ実施される方法。
【請求項11】
コンピューティングシステムの1つまたは複数のプロセッサによって実行される時に、前記コンピューティングシステムに方法を実行させるコンピュータ実行可能命令をその上に有する1つまたは複数の物理コンピュータ可読媒体を含むコンピュータプログラムであって、前記コンピュータ実行可能命令は、
第1のプロパティ−セッターを呼び出す1つまたは複数のコンピュータ実行可能命令であって、前記第1のプロパティ−セッターは、ビュー構成の少なくとも1つのビューコンポーネントの少なくとも1つのプロパティをセットし、第2のプロパティ−セッターを呼び出すように構成され、前記第2のプロパティ−セッターは、
前記ビュー構成の1つまたは複数のビューコンポーネントのプロパティを定義する複数のモデル変数の未知の第1のモデル変数について解くように構成されたソルバを呼び出し、
前記解かれた第1のモデル変数の値に前記ビュー構成の第1のビューコンポーネントの第1のプロパティをセットする
ように構成される、1つまたは複数のコンピュータ実行可能命令
を具えたことを特徴とするコンピュータプログラム。
【請求項12】
前記第1のプロパティ−セッターは、前記ビュー構成の前記第1のビューコンポーネントの第2のプロパティをセットするように構成されることを特徴とする請求項11記載のコンピュータプログラム。
【請求項13】
前記第1のプロパティ−セッターは、前記ビュー構成の第2のビューコンポーネントの第1のプロパティをセットするように構成されることを特徴とする請求項11記載のコンピュータプログラム。
【請求項14】
前記第1のビューコンポーネントは、前記第2のビューコンポーネントの子であることを特徴とする請求項13記載のコンピュータプログラム。
【請求項15】
前記第2のビューコンポーネントは、前記第1のビューコンポーネントの子であることを特徴とする請求項13記載のコンピュータプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18A】
【図18B】
【図19A】
【図19B】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37A】
【図37B】
【図37C】
【図38】
【図39】
【図40】
【図41】
【図42】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18A】
【図18B】
【図19A】
【図19B】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37A】
【図37B】
【図37C】
【図38】
【図39】
【図40】
【図41】
【図42】
【公表番号】特表2012−530975(P2012−530975A)
【公表日】平成24年12月6日(2012.12.6)
【国際特許分類】
【出願番号】特願2012−516357(P2012−516357)
【出願日】平成22年6月18日(2010.6.18)
【国際出願番号】PCT/US2010/039268
【国際公開番号】WO2010/148364
【国際公開日】平成22年12月23日(2010.12.23)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】
【公表日】平成24年12月6日(2012.12.6)
【国際特許分類】
【出願日】平成22年6月18日(2010.6.18)
【国際出願番号】PCT/US2010/039268
【国際公開番号】WO2010/148364
【国際公開日】平成22年12月23日(2010.12.23)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】
[ Back to top ]