階層データとの対話を効率的に編成し、提示し、提供するためのシステム、方法、およびインタフェースが開示される。本開示のシステム、方法およびインタフェースをクライアント・サーバ・システムの文脈で説明するが、本明細書で説明した技術を、ネットワーク上で動作可能に接続されたクライアント・サーバ・システム以外のシステムに適用できることは理解されるべきである。例えば、クライアント・デバイス、サード・パーティ・サーバ、データ・サーバ等が、かかる機能提供するために、本明細書で説明した機能の一部または全部を提供してもよく、サーバのクラスタを使用してもよい。
階層データとの対話を効率的に編成し、提示し、提供するための本明細書で説明した技術が幾つかの例において、主にニュース記事の例において表されているが、多数の他のタイプの階層データが可能であり考慮されていることは理解されるべきである。例えば、本明細書で定義された階層データが、複数のレベル・グループ、またはデータツリー、例えば、写真、ソーシャルネットワークデータ、製品情報、メディア(映画、音楽、および他のオーディオビジュアル)情報等に編成またはソートしうる任意のデータを含んでもよい。
当該複数のレベルのデータは少なくとも2つのレベルの階層データを含む。本明細書の例示の目的のため、高レベル、中間レベル、および低レベルが説明される。高レベル・グループは1つまたは複数の中間レベル・アイテムまたはサブグループを含む。例えば、高レベル・グループはカテゴリであってもよく、例えば、ニュース記事の例では、トップ、世界、ビジネス、政治等のニュースのカテゴリであってもよく、これらがイベントまたはトピックにより編成された記事または記事のグループを含んでもよい。高レベル・グループデータは、高レベル・グループに対する表示可能情報、当該高レベル・グループに対するメタデータ、および/または当該高レベル・グループ内のアイテムに対するデータを含んでもよい。中間レベルのサブグループは高レベル・グループ内に入り、また、1つまたは複数の低レベル・アイテムを含んでもよい。例えば、中間レベルのサブグループは、例えば、ニュース記事の例においては、イベント周りの記事のグループ、個人、または組織といったアイテムのクラスタであってもよい。中間レベルデータは、メタデータ、当該中間レベルのサブグループに対する表示不可能および/または表示可能情報、および/または当該中間レベルのサブグループ内のアイテムに対するデータを含んでもよい。低レベル・アイテムは中間レベルのサブグループに入り、任意のタイプのコンテンツ、例えば、記事(例えば、ニュース記事)、媒体(オーディオ、ビデオ、ゲーム等)、ソーシャルネットワーク情報、写真、製品等を含んでもよい。低レベルデータ(例えば、低レベル・アイテムに対応するかまたはそれを表示するデータ)が、当該低レベル・アイテムに対するメタデータ、表示可能、および/または表示不可能情報を含んでもよい。1組のデータまたはデータ・セットは、1つまたは複数の高レベル・グループ、中間レベルのサブグループ、または低レベル・アイテムに対する当該データの一部または全部を含む。本開示はこれらのタームにおいて当該複数のレベルを説明するが、本明細書で説明した技術は他の実装、レベルの量等に適用可能であることは理解されるべきである。
本明細書で説明した技術は、それらが有限なディスプレイ(例えば、コンピューティング・デバイス上の当該スクリーン)上での大量の情報の高速なナビゲーションおよび消費を可能とし、(例えば、低レイテンシにつながる)要求された計算リソースを削減し、使用されるデータ通信帯域幅を削減するので、特に有利である。例えば、本明細書で説明した技術により、非常に制限された計算リソースおよび非常に制限されたディスプレイサイズを有するコンピューティング・デバイス、例えば、安価なスマートフォンまたはウェラブルデバイス(例えば、スマートウォッチ)は、制限された量のデータを用いつつ(例えば、多数のモバイル・デバイスは少量のデータのみをダウンロードできるようにする低速データ接続または制限されたセルラデータ・プランを有する)ニュースを多数のカテゴリおよび記事から効率的に提示することができる。
さらに、本明細書で説明した当該技術によりユーザは、ユーザが高速に要素をナビゲートし、参照し、選択できるように、グラフィカル・ユーザ・インタフェースの要素と対話を編成することで階層データを迅速に消費することができる。本発明の技術の幾つかの実装は、当該ディスプレイの第1のエッジでのスクラブ可能高レベル選択バー、当該ディスプレイの第2のエッジでの中間レベル対話領域、および当該ディスプレイのどちら側が当該中間レベル対話領域を含むかをトグルする能力を提供することで、特にタッチ・スクリーンに対してこれらの目的を達成する。
さらに、本明細書で説明した技術の幾つかの実装は、Fittsの法則を考慮してグラフィカル要素(および特に階層データ)をナビゲートするのに必要な時間を削減する。Fittsの法則は、人間が(例えば、グラフィカル・ユーザ・インタフェース上で)オブジェクトを選択するのに必要な時間はインジケータ(例えば、オブジェクトを選択するのに使用されるデバイス、例えば、指、スタイラスペン、またはコンピュータカーソル)の現在の位置からのオブジェクトの距離に比例し、当該オブジェクトのサイズに反比例することを記述する。したがって、本明細書で説明した技術の実装は、特に小型のタッチ・スクリーン(例えば、片手で、例えば、モバイル・フォンまたはウェラブルデバイスで使用可能)を用いて、グラフィカル・ユーザ・インタフェースの第1のエッジ(例えば、底)に沿って配置されたスクラブ可能高レベル対話領域602および選択可能な当該グラフィカル・ユーザ・インタフェースの第2のエッジ(例えば、左側または右側)に沿って配置された中間レベル選択領域の要素を結合することで、Fittsの法則を階層データのナビゲーションに適用することができる。これらの要素を結合することで、オブジェクトをより高速に選択できるだけでなく、表示されているデータは当該インジケータ(例えば、タッチ・スクリーン上の指)により不明瞭とされないままである。本発明の技術のこれらのおよび他の実装が本明細書にわたって他所で説明される。
本明細書で説明した技術の幾つかの実装はまた、グラフィカル要素を一貫した位置で維持し、アニメーションを回避し、冗長なまたは過剰なデータの提供を回避することで、階層データの高速なナビゲーションの目標を達成する。例えば、幾つかの実装は、スクロールが必要とされず防止さないように、データを表示でき、当該グリッド内に表示できるよりも多くのデータを表示または抽出可能としない固定されたグリッドを含む。特に、スクローリングは本来、当該ユーザの目が当該グラフィカル・ユーザ・インタフェースをスキャンして情報を見つけなければならないように情報の位置を変化させるので、スクローリングを防止するのが有利である。例えば、ユーザが特定の高レベル・グループを選択すると、当該ユーザは、当該特定の高レベル・グループに関する各タイプの情報がどこに配置されるかを、当該グラフィカル・ユーザ・インタフェースで検索する時間を費やすことなく、自動的に知る必要がある。さらに、幾つかの事例では、選択された表示領域は静的なままであり、当該インタフェースの他の領域は当該選択された情報を反映するように変化する。例えば、特定の中間レベルのサブグループが選択されているとき、その中間レベルのサブグループに対応する(例えば、データツリー/階層内のそのサブグループの下/内部の)低レベルデータが変化し、当該中間レベルのサブグループに対して表示されたデータは当該インタフェース上で不変なままである。幾つかの事例では、当該表示領域は、複数の中間レベルのサブグループに対応するデータを表示し、特定の中間レベルのサブグループが選択されているとき、当該選択されていない中間レベルのサブグループに対応するデータの上にまたはそれに代わって、当該選択された中間レベルのサブグループに対応する低レベルデータを拡張する固定されたグリッドとして配置される。さらに、当該データの表示選択領域が、本明細書で説明したように、固定されたグリッドに表示されている実装により、当該インタフェースは同一の情報および当該グラフィカル・ユーザ・インタフェース上の同一のグラフィカル位置における選択を表示しうるので、情報をユーザにより迅速に読み出しナビゲートすることができる。
データ提供モジュール908が階層データを受信し編成するようにクライアント・デバイス906で動作可能であるとして説明されているが、その機能の幾つかのまたは全てを1つまたは複数のサーバ、例えば、データ・サーバ916で実装してもよいことは理解されるべきである。同様に、データ分析エンジン918が階層データを取り出して処理し、ついで当該階層データをクライアント・デバイス906上のデータ提供モジュール908に送信するようにデータ・サーバ916上で動作可能であるとして説明されているが、データ分析エンジン918の機能の一部または全部はシステム900のクライアント・デバイス906または別のコンポーネントで動作可能であってもよい。さらに、当該サード・パーティ・アプリケーションの機能の一部または全部が、例えば、データ・サーバ916で動作可能であってもよい。
図1は、階層データとの対話を効率的に編成し、提示し、提供するための例示的な方法100の流れ図である。102で、データ提供モジュール908(データ提供モジュール908およびそのコンポーネント1020、1022、1024、および1026が図9および10で示され、以下でより詳細に説明される)は、複数のデータ・セットを表示するために定義されたレイアウトを含むクライアント・デバイス906で表示するための動的グラフィカルインタフェースを生成し、当該インタフェースは高レベル対話領域602および表示領域608、610、612、および614を含む。当該定義されたレイアウトが、任意数のディスプレイおよび/または対話領域を含んでもよい。幾つかの実装では、当該ディスプレイおよび/または対話領域は当該グラフィカルインタフェース内に静的に配置されたままであり、これらの領域内のコンテンツのみがデータ提供モジュール908により変更される。例えば、表示領域608、610、612、および614を、選択されたレベルのデータ・セットを表示するグリッドに編成してもよい。例示的な定義されたレイアウトが図6乃至8Bを参照して説明されているが、他の構成が可能であり本明細書で説明した技術で考えられている。
104で、インタフェース・モジュール1022(例えば、図9および10を参照して以下で説明される)が入力をクライアント・デバイス906(例えば、入力デバイス1005を介して)から受信し、ブロック106、110、および114で、インタフェース・モジュール1022は、どのタイプの入力が受信されたかおよびどのアクションを当該ユーザ入力に応答してとるべきかを決定する。ユーザ入力が106、110、および114で決定されると、インタフェース・モジュール1022はそれぞれ当該アクションを108、112、および116で実施する。インタフェース・モジュール1022が106、110、または114での当該ユーザ入力の認識に失敗し、かつ/または、108、112、および116で実施される当該アクションが完了すると、方法100は104に再度戻ってユーザ入力を待機してもよい。例えば、ブロック104の後で、方法100はブロック106に続く。
106で、インタフェース・モジュール1022は入力が高レベル対話領域スクラブであったかどうかを判定する。スクラブが、当該グラフィカル・ユーザ・インタフェースにわたるインジケータ(例えば、指、スタイラスペン、カーソル、または他の入力デバイス)の任意の移動またはスライドを含んでもよい。例えば、当該スクラブ入力を認識しそれに応答して当該ユーザ・インタフェースを更新するステップが図6A乃至6Dに示されている。インタフェース・モジュール1022が106でスクラブを登録してもよいが、幾つかの実装では、それが、高レベル・グループを高レベル対話領域602から選択する任意の入力(例えば、クリック、ホバー、タッチ・スクリーン上のタッチ等)であってもよくまたはそれらを登録してもよい。スクラブ可能高レベル対話領域602は、高速な対話能力を保持しつつグラフィカル・ユーザ・インタフェース上の非常に小さな領域を必要とする正確な選択領域を提供する。例えば、スクラブ可能対話領域602は、(上述のようにFittsの法則に従う追加の時間/工数を要する)小さな領域をユーザが正確に選択することを必要とせず、したがって、スクラブ可能領域は、位置だけでなく移動を追跡することでオブジェクトの高速選択を依然として可能としつつ、より小さいことができる。例示的な高レベル対話領域602が本明細書のどこかでさらに詳細に説明される。
インタフェース・モジュール1022が、入力が高レベル対話領域スクラブであったと判定した場合106、方法100はブロック108において継続する。ブロック108で、インタフェース・モジュール1022は、データ提供モジュール908の他のコンポーネントと関連して、本明細書で説明したように、当該入力が高レベル対話領域スクラブを含むとの判定106に応答して、選択された高レベル・グループに対応する中間レベルデータで表示領域(複数可)を更新する。当該中間レベルデータは中間レベルのサブグループ内の低レベル・アイテムを反映してもよい。幾つかの実装では、当該中間レベルデータは当該サブグループ内の低レベル・アイテムのサマリであってもよい。幾つかの実装では、当該中間レベルデータは、当該サブグループ内の低レベル・アイテムのうち1つに対する低レベルデータを含んでもよい。例えば、幾つかの事例では、中間レベルのサブグループがニュース・イベントを記述するニュース記事のクラスタであってもよく、そのグループに対する中間レベルデータが当該イベントのサマリであってもよく、または、以下でさらに詳細に説明するように、当該中間レベルデータが選択された記事(例えば、提示のための指定された優先度記事)からの情報を含んでもよい。108で高レベル対話領域スクラブ/選択を受信したことに応答して表示領域608、610、612、および614を更新するステップを、図2を参照してさらに詳細に説明する。
ブロック106および108の例示的な実装において、ユーザは、タッチ・スクリーン(例えば、図6A乃至8Bに示すように入力デバイス1008および出力デバイス1010の組合せ)の下底で彼の親指を高レベル対話領域602にわたってスクラブして、ニュースカテゴリを選択してもよい。データ提供モジュール908は当該スクラブを本明細書で説明したように登録および認識し、表示領域608、610、612、および614を更新して、本明細書の図6A乃至6Dを参照して説明したように階層データ・セットを取り出し当該データを表示することで、当該スクラブにより選択されたニュースカテゴリを反映してもよい。表示領域608、610、612、および614の各々が、当該選択された高レベル・グループまたはニュースカテゴリ内の記事のサブグループまたはクラスタに対応する画像およびテキストを含んでもよい。
インタフェース・モジュール1022が、入力が高レベル対話領域スクラブでなかったとブロック106で判定した場合、方法100はブロック110に継続する。ブロック110で、インタフェース・モジュール1022が104で受信された入力が表示領域選択を含むかどうかを判定する。例えば、当該入力を認識しユーザ・インタフェースを更新するステップが図7A乃至7Cに示されている。表示領域(例えば、608、610、612、または614)がグラフィカル・ユーザ・インタフェース600の領域を含んでもよく、当該領域を、データを表示するための情報領域814およびそのデータを選択するための選択領域816に分割してもよい。例えば、情報領域814は中間または低レベルデータを表示してもよく、かつ/または選択領域816は中間レベルのサブグループを選択してもよい。さらに、表示領域608、610、612、および614が行のグリッドまたは列に編成されるケースでは、選択領域816(本明細書では816a乃至816dを単に814と称してもよい)が選択カラム822(本明細書では822aおよび822bを単に822と称してもよい)に編成されてもよく、情報領域(本明細書では814a乃至814dを単に814と称してもよい)が情報カラム(本明細書では820aおよび820bを単に820と称してもよい)に編成されてもよい。
インタフェース・モジュール1022が、受信された入力が表示領域選択を含むと判定した場合110、方法100はブロック112に進む。ブロック112で、インタフェース・モジュール1022は、ユーザ入力が表示領域選択を含んだとの判定110に応答して、当該選択された中間レベルのサブグループに対応する低レベルデータで表示領域(複数可)を更新する。例えば、幾つかの実装では、当該低レベルデータはニュース記事のクラスタ内の個々の記事に関する情報を含んでもよい。表示領域選択を受信したことに応答して低レベルデータで表示領域608、610、612、および614を更新するステップを、図4を参照してさらに詳細に説明される。
ブロック104、110、および112の例示的な実装において、ユーザは、(例えば、表示領域内の画像上の特定の選択領域816を介して)表示領域を、タッチ・スクリーン上で彼の親指で選択して、ニュースクラスタを選択してもよい。データ提供モジュール908は本明細書で説明したように表示領域選択を登録および認識し、入力により選択されたニュースクラスタを反映するように表示領域608、610、612、および614を更新する。表示領域608、610、612、および614を、表示領域608、610、612、および614の各々におけるニュースアイテム/記事を反映するように更新してもよい。当該ユーザはついで、必要に応じて、当該表示領域を再度選択することで当該表示領域/ニュースクラスタを選択解除してもよく、例えば、当該ユーザは選択領域916を2回タップして、表示されている中間レベルのサブグループのリストに戻ってもよい。
インタフェース・モジュール1022が、受信された入力が表示領域選択を含まなかったと判定した場合110、方法100はブロック114に進む。ブロック114で、インタフェース・モジュール1022は、104で受信された入力が水平選択領域スワイプを含むかどうかを判定する。スワイプが、グラフィカルインタフェースの領域にわたるインジケータの任意の移動またはスライドを含んでもよい。特に、水平選択領域スワイプは、選択領域816で始まるグラフィカル・ユーザ・インタフェースにわたってインジケータを水平にスライドすることを含む。例えば、水平選択領域スワイプおよび対応するユーザ・インタフェースの更新が図8Aおよび8Bに示されている。インタフェース・モジュール1022が106での高レベル対話領域スクラブおよびブロック114での水平選択領域スワイプ(例えば、高レベル対話領域602が水平に向いているとき)の間で区別するために、インタフェース・モジュール1022は当該スワイプの位置に対する当該スクラブの位置を決定してもよい。スクラブは、106で決定されるように、高レベル対話領域602上に(おおよそまたは厳密に)配置される。スワイプは、114で決定されるように、(おおよそまたは厳密に)当該表示領域(複数可)上に配置される。例えば、スワイプが、本明細書のどこかで説明される選択領域/カラム816/822の選択とドラッグを含んでもよい。
インタフェース・モジュール1022が、104で受信された入力が水平選択領域スワイプであったと判定した場合114、方法100はブロック116に進む。ブロック116で、インタフェース・モジュール1022は、当該入力が選択領域の水平スワイプを含んだとの判定114に応答して右手から左手レイアウト(またはその逆)にトグルするように表示領域(複数可)を更新する。幾つかの実装では、前述のように、当該表示領域(複数可)が、当該グラフィカルインタフェースの左手または右手レイアウトを提供するために再配置できる情報および選択カラム820および822を含んでもよい。例えば、選択カラム822をドラッグ/スワイプして、当該表示領域(複数可)を(例えば、図8Aのように)右手から(例えば、図8Bのように)左手レイアウトにトグルして、グラフィカルインタフェースがタッチ・スクリーンデバイス(例えば、クライアント・デバイス906)上にあるときのより容易な入力アクセスを提供し、指が当該タッチ・スクリーンと対話することによる情報領域814の妨害を防止することができる。水平選択領域スワイプに応答して右手および左手レイアウトの間でトグルするように表示領域608、610、612、および614を更新するステップが図5、8A、および8Bを参照してさらに詳細に説明される。他方、インタフェース・モジュール1022が、104で受信された当該入力が水平選択領域スワイプでなかったと判定した場合114、方法100はステップ104にループする。
図2は、高レベル対話領域スクラブ/選択を受信したことに応答して、表示領域608、610、612、および614を更新するための例示的な方法200の流れ図である。方法200は、図1に示されるブロック106および108に対するさらなる詳細を提供する。202で、インタフェース・モジュール1022は複数のデータ・セットを表示するための定義されたレイアウトを含む動的グラフィカルインタフェースを生成し、当該データ・セットは複数のレベルを含み、204でインタフェース・モジュール1022はクライアント・デバイス906に表示するためのサブ領域を含む高レベル対話領域602を提供し、各サブ領域は高レベル・グループに対応する。
例示的な高レベル対話領域602が図6に表示されている。示すように、高レベル対話領域602は、(例えば、図6A乃至6Dに示されるように)タッチ・スクリーンクライアント・デバイス上での(例えば、インジケータ630により示されるように)指による容易なアクセスを提供するために、グラフィカルインタフェース600の下底の近くに静的に配置されてもよい。例えば、図6に示される高レベル対話領域602の配置は有利なことに、ユーザが片方の手を用いて親指を高レベル対話領域602に沿ってスライドすることで高レベル・グループをスクラブ/選択することを可能とする。さらに、示すように、高レベル対話領域602が複数のサブ領域604a乃至604hを含んでもよい。例えば、当該サブ領域はカテゴリまたはサブジェクトに対応してもよい。図6に示す例において、各サブ領域はニュースカテゴリ(例えば、トップ・ストーリ、世界、US、ビジネス、技術、科学、健康、エンターテインメント等)に関する。当該サブ領域および高レベル対話領域602が静的に配置される事例では、ユーザは有利にもサブ領域/高レベル・グループを選択するために高レベル対話領域602またはサブ領域を見る必要はない。幾つかの実装では、当該インタフェースに表示された特定のサブ領域604a乃至604hがカスタマイズ可能または拡張可能であってもよい。さらに、幾つかの事例では、当該グラフィカルインタフェースが、どの高レベル・グループが(例えば、サブ領域604a乃至604hから)選択されるかを表示する高レベル・グループ選択インジケータ606を含んでもよい。8個のサブ領域604a乃至604hが示されているが、本明細書で説明した技術の範囲を逸脱することなくより少ないまたは追加のサブ領域を使用してもよい。高レベル対話領域602、サブ領域604a乃至604h、および選択インジケータ606が図6の特定の構成で表示されているが、他の実装が可能であり、本明細書で考慮されていることは理解されるべきである。例えば、高レベル対話領域602をグラフィカル・ユーザ・インタフェースの左側または右側に沿って垂直に配向でき、または当該選択インジケータが当該選択されたサブ領域のハイライトのみで構成されてもよい。
図6Aは初期グラフィカル・ユーザ・インタフェース600の1例を示し、インタフェース・モジュール1022がユーザ入力を受信するのを待機している。例えば、サブ領域604aにより表されるカテゴリが最初にグラフィカル・ユーザ・インタフェース600に示されてもよい。図6Bはインジケータ630による入力を受信した際の例示的なグラフィカル・ユーザ・インタフェース600を示し、示すように、サブ領域604aはそれが選択されていることを反映するようにハイライトされ(または変更され)てもよい。同様に、選択インジケータ606は選択されたサブ領域604aに対応するカテゴリを示す。図6Cは例示的なグラフィカル・ユーザ・インタフェース600を示し、スクラブ入力が受信されている。例えば、インジケータ630は高レベル対話領域602にわたってスクラブしている。図6Cに示す例において、インタフェース・モジュール1022は当該スクラブを認識するが、当該インジケータが特定のサブ領域の上でまたはおおよそその上で停止または減速するのを待機してもよい。
図6Dは例示的なグラフィカル・ユーザ・インタフェース600を示し、インタフェース・モジュール1022が、スクラブ入力がサブ領域604bを選択したことを認識している。サブ領域604dは、図示した実装において、ワールド・ニュースカテゴリに対応し、これが選択インジケータ606に表示されてもよい。さらに、図6Dにおいて、表示領域608、610、612、および614、ならびにそれらの夫々の要素の各々が、グラフィカル・ユーザ・インタフェース600に静的に配置されたままであることがわかる。しかし、表示領域608、610、612、614内に表示された情報は、選択されたサブ領域604bを反映するように変更されている。幾つかの実装では、インタフェース・モジュール1022は、入力がサブ領域604b、したがってワールド・ニュースカテゴリを選択すると認識してもよく、データ分析エンジン918(例えば、本明細書で説明したように、データ・ハンドラ1020、通信モジュール1002、およびネットワーク902を介して)と通信して、選択された高レベル・グループ(例えば、サブ領域604bで選択されたカテゴリ)に対する階層データを含むデータ・セットを取り出してもよい。
図2に戻ると、206で、データ・ハンドラ1020はデータ・セット(複数可)をデータ・サーバ916から取り出す。例えば、データ・ハンドラ1020は特定の信号に応答してデータ・セットを取り出してもよく、当該信号がウェブ・ページまたはウェブ・アプリのオープン、アプリケーションの実行、またはユーザ入力の受信を含んでもよい。例えば、幾つかの実装では、インタフェース・モジュール1022は、それが、データ・セット(複数可)をデータ・サーバ916から(例えば、図9のネットワーク902を介して)取り出すためにデータ・ハンドラ1020に何を信号送信するかに応答して、ユーザ入力を受信する。
幾つかの実装では、データ・ハンドラ1020は、サブ領域604a乃至604hにより表されるグループに対するデータ・セット(例えば、各高レベル・グループの高、中、および低レベルに対応するデータ)を取り出す。幾つかの実装では、データ・ハンドラ1020は、選択された高レベル・グループに対応する1組のデータのみを取り出す。幾つかの実装では、データ・ハンドラ1020は、データ(例えば、中間レベルデータ、低レベルデータ等)を、当該情報を当該グラフィカルインタフェースに表示するのに必要なものとしてのみ取り出す。例えば、ユーザが特定の高レベル・グループおよび中間レベルのサブグループを選択した場合、データ・ハンドラ1020は、選択されたデータを当該インタフェースに表示するのに必要なデータ(例えば、当該選択された中間レベルのサブグループに対する利用可能な表示領域に対応する数の低レベル・アイテムを表示するのに必要なデータ)のみを取り出してもよい。
データ・ハンドラ1020はデータ・サーバ916から取り出されたデータをさらなる処理のためにインタフェース・モジュール1022に送信してもよく、または、幾つかの事例では、データ・ハンドラ1020は、当該取り出されたデータを、データ提供モジュール908の他のコンポーネントによるアクセスのためにデータ・ストア1012に格納してもよい。
208で、インタフェース・モジュール1022は、クライアント・デバイス906に表示するための定義されたレイアウトを有する表示領域608、610、612、および614を提供し、各表示領域は、中間レベルのサブグループに対する中間レベルデータを表示するように構成される。例えば、インタフェース・モジュール1022は、データ・ハンドラ1020によりデータ・ストア1012に格納されたデータ・セット1014aにアクセスし、表示領域608、610、612、および614内のデータ・セットを用いてインタフェースを生成する。説明したように本明細書のどこかで、中間レベルデータは中間レベルのサブグループのコンテンツを反映する。例えば、各表示領域は、高レベル・グループ内の中間レベルのサブグループごとに中間レベルデータを表示する。複数の例示的な表示領域608、610、612、および614が図6乃至8Bで示されている。図6A乃至6Dの図示した実装では、各表示領域608、610、612、および614は中間レベル・グループに対する中間レベルデータを表示している。例えば、ニュースデータが例示的なインタフェース600に表示されおり、各中間レベル・グループは「トップ・ストーリ」の選択された高レベル・グループ604a内のイベントに対応する。
定義されたレイアウトが、図6A乃至8Bに示すように、表示領域のカラム内に互いに積層された長方形領域でありうる1つまたは複数の表示領域608、610、612、および614を含んでもよい。幾つかの事例では、表示領域608、610、612、および614は図6A乃至8B内のブラケットにより示すように画されている。表示領域608、610、612、および614は当該グラフィカル・ユーザ・インタフェースの左側から右側に拡張されてもよく、構成要素、例えば、情報領域814および選択領域816に分解されてもよい。さらに、情報領域814が、情報、例えば、図7A乃至7Cに表示されるようにタイトル702a、ソース704a、サブジェクト706a、カテゴリ710a等を表示するために1つまたは複数の領域にさらに分解されてもよく、情報領域814内の特定の領域に表示されてもよい。幾つかの実装では、当該定義されたレイアウトは当該グラフィカル・ユーザ・インタフェース(例えば、図6A乃至8Bに表示されるように600、700、または800)の上部の近くに配置された選択インジケータ606、当該グラフィカル・ユーザ・インタフェースの下底の近くに配置された高レベル対話領域602を含み、幾つかの(例えば、4乃至6個の)表示領域608、610、612、および614は、選択インジケータ606および高レベル対話領域602の間の領域を埋める。
図2に戻ると、210で、インタフェース・モジュール1022が高レベル対話領域602にわたるスクラビングを含むユーザ入力を受信し、当該スクラビングはサブ領域/高レベル・グループの選択を反映し、212で、当該スクラブ入力を受信したことに応答して、インタフェース・モジュール1022は、本明細書でより詳細に説明するように、選択された高レベル・グループに対応する中間レベルデータを含むように表示領域608、610、612、および614を更新する。
図3は、クライアント・デバイス906での提示とナビゲーションのためのデータを受信するための例示的な方法300の流れ図である。302で、データ・ハンドラ1020は、図2のブロック206を参照して上述したように、データをデータ・サーバ916から受信する。データ・ハンドラ1020により取り出されたデータ・セットが、既に(例えば、データ・ハンドラ1020によりダウンロードされる前に)高、中、および低レベルにソートされ、特定の基準に従って順位づけられ、かつ/または(図9に示されるように)データ分析エンジン918によりタグ付けされてもよいことは理解されるべきである。特に、当該データ・セットは、重い処理がデータ提供モジュール908により実施されないように、データ・ハンドラ1020により受信される前に、データ分析エンジン918により処理されるべきである。したがって、データ分析エンジン918により実施される処理の一部または全部をデータ提供モジュール908により実施してもよいが、方法300は主に、当該データ・セットがデータ分析エンジン918により処理されついでデータ提供モジュール908による使用のために取り出されるとして説明される。さらに、データ提供モジュール908を参照して説明される追加の動作および機能をデータ分析エンジン918により実施してもよいことは理解されるべきである。
304で、カテゴリ化モジュール1024はデータ・ハンドラ1020により取り出されたデータ・セット(複数可)にアクセスし、当該データを高レベル・グループ、中間レベルのサブグループ、および低レベル・アイテムにソートしてもよい。幾つかの実装では、当該高、中、および低レベルデータは、各低レベル・アイテムのデータの順位を記述し、レベル(高、中、低等)を示し、かつ/または階層グループまたはサブグループ各アイテムが属するタグを含む(例えば、データ分析エンジン918によりタグ付けされデータ・アイテムのメタデータに含まれる)。例えば、低レベル・アイテムが、当該アイテムが特定の中間レベルのサブグループおよび特定の高レベル・グループに属することを示すタグを含んでもよい。カテゴリ化モジュール1024はこれらのデータ・アイテムを当該タグに従って中間レベルのサブグループおよび高レベル・グループにソートしてもよい。
306で、順序付けモジュール1026は、ソートされたデータ・セットを処理して、(例えば、カテゴリ化モジュール1024から受信されるかまたはクライアント・デバイス906のメモリにある)各高レベル・グループ内に表示される中間レベルのサブグループを決定する。幾つかの実装では、データ・ハンドラ1020により取り出されたデータ・セットは、当該インタフェース内の表示領域608、610、612、および614の数に対応する量の中間レベルのサブグループを含む。例えば、図6に示す例において、4つの表示領域608、610、612、および614のみが描画されており、したがって各高レベル・グループ内の最大で4つの中間レベルのサブグループに対応する(例えば、それに属するようにタグ付けされた)データがデータ・サーバ916から取り出される。
同様に、幾つかの実装では、データ・ハンドラ1020により取り出されたデータ・セットが、インタフェース内の表示領域608、610、612、および614の数に対応する量の低レベル・アイテムのみを含んでもよい。例えば、図7に示す例において、4つの表示領域608、610、612、および614のみが描画されており、したがって、各中間レベルのサブグループ内の最大で4つの低レベル・アイテムに対応する(例えば、それに属するようにタグ付けされた)データがデータ・サーバ916から取り出される。
308で、順序付けモジュール1026は、ソートされたデータ・セットを処理して各中間レベルのサブグループ内で表示される低レベル・アイテムを決定する。幾つかの実装では、データ・ハンドラ1020は、低レベル・アイテムごとに事前定義されたデータのみを取り出し、それらは各中間レベルのサブグループ内で低レベルデータとして表示され、他の実装において、データ・ハンドラ1020が低レベル・アイテム(例えば、ニュース記事)を全体として取り出すことが可能であり、順序付けモジュール1026は、どの低レベルデータを、テキスト分析、メタデータ・タグ等を用いて表示するかを判定する。
(例えば、表示領域(複数可)内で)表示された低レベルデータが、低レベル・アイテムごとに特定の情報を含んでもよい。例えば、図7の例示的な実装で示すように、表示された低レベルデータが、タイトル702、ソース704、分類706、サブジェクト710、および/または画像712を含んでもよいが、以下のブロック312を参照して説明するように他の実装が可能である。図7に示す例において、(以下の310を参照して定義されるように)指定された優先度の記事は分類706ではなくサブジェクト708を含むが、他の実装が可能であり考慮されている。さらに、幾つかの実装では、当該指定された優先度記事のみが(その記事に対して、データ・ハンドラ1020により取り出されうる)表示画像を含むが、例えば、(利用可能な場合)低レベルデータ・アイテム/記事の各々が画像を含む他の実装が可能である。
310で、順序付けモジュール1026は、各中間レベルのサブグループにおける低レベルデータ提供優先度を決定する。当該低レベルデータ提供優先度は低レベル・アイテムを提示する順番を定義し、幾つかの実装では、これらのアイテムのうちどれが指定された優先度アイテムであるかを定義する。指定された優先度アイテムに対する低レベルデータが中間レベルのサブグループを表すように表示されてもよい。例えば、指定された優先度アイテムがイベントに対するニュース記事のクラスタ内の最も人気のあるニュース記事であってもよく、当該指定された優先度記事に対する低レベルデータが記事の中間レベルのサブグループまたはクラスタ全体のコンテンツを反映するように中間レベルデータとして表示されてもよい。幾つかの事例では、当該指定された優先度アイテムは順位付けられその順位が閾値を満たすアイテムであってもよい。例えば、当該順位が、(例えば、アイテムの人気度を示す)低レベル・アイテム上のメタデータ・タグ、および、当該低レベル・アイテムが関連付けられた画像を含むかどうか(例えば、ニュース記事のケースでは、当該ニュース記事が画像を含むかどうか)に基づいてもよい。
幾つかの実装では、データ・セットをデータ提供モジュール908に送る前に、データ分析エンジン918は、指定された優先度アイテム、残りのアイテムに対する表示順序、および/または低レベル・アイテムおよび/または中間レベルのサブグループに対する順位を決定し(またはデータ提供モジュール908によるサービス要求に応答して決定してもよい)、順序付けモジュール1026による認識のために当該アイテムをタグ付けする。指定された優先度アイテムは、定義された1組の基準内にあるかまたはそれに最も密接に対応する最高優先度または順位に適合する、例えばそれらを有するアイテムに対応する任意のアイテムである。例えば、低レベル・アイテムが、全体の人気度、カテゴリ内の(例えば、中間レベルのサブグループ内、高レベル・グループ内等)人気度、コンテンツの深さ、そのソースの評価等に基づいて順位づけられてもよい。別の例では、低レベル・アイテムは、当該低レベル・アイテムの分類を記述する(例えば、データ分析エンジン918により決定される)タグを含む。例えば、図7Cに示す例において、分類(710a、710c、および710d)が、「詳細」、「意見」、および「国際」を含んでもよいが、最高順位の記事、ローカルソース、特定のソース、(例えば、ソーシャルネットワーク上の、人気度での)アイテムのトレンディング、頻繁に引用されている、頻繁に共有されている、最も視聴されている等を含んでもよい。
幾つかの実装では、順序付けモジュール1026は、各アイテムを評価し、関連付けられた画像を有する最高順位のアイテムを決定することで提示優先度を決定し、当該最高順位のアイテムがついで所与の表示領域における指定された優先度アイテムとして表示される。当該所与の表示領域は、中間レベルのサブグループデータがその特定の指定された優先度アイテムが属するサブグループに対して表示されていた/表示されている表示領域に対応する。例えば、指定された優先度ニュース記事が図7A乃至7Cの表示領域610に表示されている。
図7A乃至7Cに示す例において、ユーザは、図7Aに表示されたサブグループのリストから表示領域/中間レベルのサブグループ610を選択しており、その選択の際、データ提供モジュール908は、指定されていない優先度低レベルデータを反映するように他の表示領域608、612、および614の全てを更新する。幾つかの事例では、指定されていない優先度アイテムが、(例えば、前述のように順位に従って)残りの表示領域(例えば、608、612、614)に順番に表示されている。例えば、指定された優先度記事が第3位に順位づけられ、表示領域610に表示される場合、第1位、第2位、および第4位に順位付けられた残りの記事はそれぞれ表示領域608、612、および614内に提示される。選択された中間レベルのサブグループに対する表示データは表示領域が低レベルデータで更新されるときに変更されないままであるので、当該変更はユーザにはあまり不快に見えない。
あるいはまたはさらに、幾つかの実装では、当該アイテムが表示領域608、610、612、および614内に表示される順番は(例えば、上述のように)それらの分類により記述される。例えば、図7Cで、表示領域608は分類710a「詳細」を有するアイテムを表示し、表示領域612は分類710c「意見」を有するアイテムを表示し、表示領域614は分類710d「国際」を有するアイテムを表示する。表示された配置および特定の分類は(例えば、管理者設定、利用可能な分類等に従って)データ提供モジュール908に対して予め決定されてもよく、または、データ分析エンジン918により提供される利用可能な低レベル・アイテムおよび分類により記述されてもよい。例えば、1実装では、指定された優先度低レベル・アイテムが或る表示領域に表示され、当該表示領域の残りが上述の当該分類の1つまたは複数を有する低レベル・アイテムで埋められる。
312で、順序付けモジュール1026は、表示領域608、610、612、および614に対する表示可能情報を、上述のように、表示優先度、表示領域内の利用可能なデータフィールド、および/またはメタデータ・タグに基づいて、データ・サーバ916から取り出されたデータ・セットから決定する。幾つかの実装では、当該表示可能情報が、サマリ、タイトル702a乃至702d、ソース704a乃至704d、分類710a乃至710d、サブジェクト706a乃至706d、画像708a乃至708d、および/または(例えば、アイテム/記事および/または当該アイテム/記事に関連付けられたメタデータ・タグのコンテンツに基づいて)アイテムに対してそれぞれ決定されうる任意の他のテキストまたはグラフィカル情報を含んでもよい。
幾つかの実装では、当該表示可能情報が低レベル・アイテムの1つまたは複数に対して変化してもよい。例えば、指定されていない優先度アイテムと異なる情報/低レベルデータを、当該指定された優先度アイテムに対して表示してもよい。例えば、図7Cで示す例示的な実装では、表示領域610内の指定された優先度記事に対する表示可能情報はサブジェクト706b、タイトル702b、ソース704b、および画像708bを含み、指定された優先度アイテム以外のアイテム/記事に対する表示可能情報は、例えば、608に表示されるように、分類710a、タイトル712a、およびソース714aを含むが、画像は含まなくてもよい。図7A乃至7Cに示す実装は記事、タイトル、分類等を指すが、明細書で説明した技術による他の実装が可能であり考慮されていることは理解されるべきである。
314で、順序付けモジュール1026は低レベルデータに対する表示可能情報を中間レベルのサブグループに関連付ける。特に、幾つかの実装では、順序付けモジュール1026は、指定された優先度アイテムに対する表示可能情報をその指定された優先度アイテムが属する中間レベル・グループに関連付ける。特に、中間レベルのサブグループごとの表示情報が単に、特定の低レベル・アイテム、例えば、指定された優先度アイテムに対する低レベルデータであってもよい。例えば、図7の表示領域708bで表示される情報は図6の表示領域608b内の中間レベルのサブグループデータとしても表示される。
図4は、表示領域選択を受信したことに応答して表示領域608、610、612、および614を低レベルデータで更新するための例示的な方法400の流れ図である。方法400は図1に示すブロック110および112に対するさらなる詳細を提供する。402で、インタフェース・モジュール1022は少なくとも1つの1組のデータを表示するための定義されたレイアウトを含む動的グラフィカルインタフェースを生成し、各1組のデータは複数のレベルを含む。404で、データ・ハンドラ1020は1つまたは複数の高レベル・グループに対する中間レベルデータを取り出してもよい。406で、インタフェース・モジュール1022はクライアント・デバイス906に表示するための定義されたレイアウトを有する複数の表示領域608、610、612、および614を提供し、各表示領域は各中間レベルのサブグループに対する中間レベルデータを表示するように構成されている。特に、406でインタフェース・モジュール1022により生成された表示領域608、610、612、および614は、選択された高レベル・グループに対する中間レベルのサブグループデータを表示でき、中間レベルのサブグループを選択するための低レベルデータを表示するために更新されることができる。
408で、インタフェース・モジュール1022は、表示領域の複数の表示領域608、610、612、および614からの選択を示すユーザ入力を受信する。410で、データ・ハンドラ1020は、受信されたユーザ入力に基づいて信号をインタフェース・モジュール1022から受信したことに応答して、当該選択された表示領域に対応する中間レベルのサブグループに対する低レベルデータをデータ・サーバ916から取り出す。幾つかの実装では、当該低レベルデータは選択された高レベル・グループに対する中間レベルデータとともにまたはそれとして取り出され、したがって、410で、当該低レベルデータはデータ・ハンドラ1020により図10を参照して説明されるデータ・ストア1012から取り出される。
412で、インタフェース・モジュール1022は、データ・ハンドラ1020により取り出された情報を用いて、選択された中間レベルのサブグループ内で低レベル・アイテムに対応する低レベルデータを含むように、複数の表示領域608、610、612、および614を更新する。特に、インタフェース・モジュール1022は、表示領域608、610、612、および614に表示された中間レベルのサブグループデータを、(例えば、図3を参照して説明したように)低レベル・アイテムごとの表示可能情報で置き換えてもよい。幾つかの実装では、表示領域608、610、612、および614の各々は低レベルデータを表示しうる(例えば、図8Aおよび8Bに示される)選択および表示領域を含む。表示領域が、例えば、図7A乃至7Cに示されるように、タイトル702a、ソース704a、分類710a、サブジェクト706a、画像708a等をロードし表示する領域を含んでもよい。例えば、低レベル・アイテムが、例えば、タイトル、ソース、分類、サブジェクト、画像等としてタグ付けまたは編成される様々な低レベルデータを含んでもよく、これらは例えば、図6A乃至8Bを参照してさらに詳細に説明するように1つまたは複数の表示領域内の指定された領域にロードされる。
幾つかの事例では、表示領域(例えば、選択領域816)内の画像を、あたかも中間レベルのサブグループが高レベル・グループの上で拡張されるかのようにグレーアウトしてもよい。例えば、示された画像708a、708c、および708dは、それらが選択されていない中間レベルのサブグループに対応することを示すようにグレーアウトされる。選択されていないサブグループに対応する画像(例えば、708a、708c、および708d)がグレーアウトされているが依然として可視である実装では、ユーザは、その中間レベルのサブグループに対応するグレーアウトされた画像を選択することで異なる中間レベルのサブグループを容易に選択でき、これは、選択された中間レベルのサブグループを拡張させる。あるいはまたはさらに、当該ユーザは、選択された表示領域を再度選択して、(例えば、図7Aに示されるように)中間レベルのサブグループのリストを含む以前のビューに再び戻ることができる。
したがって、図7Aは、表示領域608、610、612、および614がそれぞれ、選択された高レベル・グループにおける中間レベルデータと、中間レベルのサブグループに対応する画像とを表示する、例示的なグラフィカル・ユーザ・インタフェース700を示す。例えば、幾つかの実装では、中間レベルのサブグループごとに表示された中間レベルデータが、タイトル702a乃至702d、ソース704a乃至704d、サブジェクト706a乃至706d、および画像708a乃至708dを含んでもよい。図7Bはグラフィカル・ユーザ・インタフェース700を示し、表示領域610はインジケータ630により選択されている。
図7Cはグラフィカル・ユーザ・インタフェース700を示し、表示領域610がインジケータ730により選択されている。当該図示した実装において、表示領域610で表示された中間レベルデータは同一のままであるが、表示領域608、612、および614の各々に対して情報領域(例えば、814)で表示されたデータは、当該選択された中間レベルのサブグループ内の低レベル・アイテムを反映するように更新されている。例えば、表示領域608は、当該選択された中間レベルのサブグループ内の低レベル・アイテム(例えば、イベントベース記事クラスタ内の記事)に対するデータを含むように更新されている。
幾つかの実装では、低レベル・アイテムがいったん表示されると、ユーザは、単一の低レベル・アイテムを選択(例えば、情報領域814を選択)して、そのアイテムに対する追加の低レベルデータを表示してもよい。例えば、ユーザは表示領域内の情報領域を選択して、その表示領域に対応する記事を開いてもよい。別の例では、当該ユーザは複数の低レベル・アイテム(例えば、記事)を選択して、選択されたアイテムの各々に対するより多くの情報を表示(例えば、当該記事を開く)してもよい。
図5は、表示領域608、610、612、および614を更新して水平選択領域スワイプに応答して右手および左手レイアウトの間でトグルするための例示的な方法500の流れ図である。方法500は図1に示すブロック114および116に対するさらなる詳細を提供する。502で、インタフェース・モジュール1022は少なくとも1つの1組のデータを表示するための動的グラフィカルインタフェースを生成し、各1組のデータは複数のレベルを含む。504で、データ・ハンドラ1020は中間レベルおよび低レベルデータをデータ・サーバ916から取り出す。
506で、インタフェース・モジュール1022はクライアント・デバイス906に表示するための複数の表示領域608、610、612、および614を提供し、各表示領域は中間レベルデータまたは低レベルデータを表示し、各表示領域は選択カラム822および情報カラム820に分割される。図1を参照して説明したようにおよび図8Aで示すように、表示領域608、610、612、および614をそれぞれ情報領域814および選択領域816に分割してもよい。例えば、図8Aで示すように、表示領域608は情報領域814aおよび選択領域816aに分割される。さらに、幾つかの事例では、当該情報および選択領域を整列させて情報カラム820および選択カラム822を形成してもよい。
幾つかの実装では、ユーザは情報領域814を選択することで中間レベルのサブグループおよび/または低レベル・アイテムを選択できてもよいが、選択領域816a乃至816dは、ユーザが、当該選択の間に情報領域814内で情報をブロックするようにインジケータ630(例えば、タッチ・スクリーン上の指またはスタイラスペン、カーソル等)配置することなく選択を行うことができるように、理想的に提供されている。例えば、図7Bはインジケータ730による表示領域610の選択を示す。同様に、図8Aに示されるように、幾つかの実装では、関連付けられた情報領域814内の情報に対応する選択領域816内の1つまたは複数の画像(例えば、サムネイル画像)が選択領域816a乃至816d内またはそれらの上に表示されてもよいが、当該画像表示機能をユーザ嗜好としてオフにするか、または、当該機能が当該実装に存在しなくてもよい。例えば、選択領域816aは情報領域814a内の情報に対応する画像を表示する。例えば、選択領域816aに表示された画像はニュース記事が情報領域814aに表示されているニュース記事内の第1の画像であってもよい。
508で、インタフェース・モジュール1022はクライアント・デバイス906に関連付けられた入力デバイスからユーザ入力を受信し、510で、インタフェース・モジュール1022は当該ユーザ入力が表示領域または選択領域のクリックまたは他の選択を含むかどうかを判定する。514で、510での決定に基づいて、インタフェース・モジュール1022は、複数の表示領域608、610、612、および614の表示領域を選択し、選択された中間レベルのサブグループに対応する低レベルデータを含むように選択された表示領域を更新する。
512で、インタフェース・モジュール1022は508で受信された入力が水平スワイプを含むかどうかを判定する。水平スワイプが、グラフィカルインタフェースの領域(例えば、特に表示領域)にわたる垂直よりも水平なインジケータの任意の移動またはスライドを含んでもよい。特に、インタフェース・モジュール1022は、選択カラム822で開始する水平スワイプがあるかどうかを判定し、それに応答して、インタフェース・モジュール1022は、516での当該スワイプの方向に選択カラム822を移動するように動的グラフィカル・ユーザ・インタフェースを更新する。例えば、図8Aおよび8Bで示しそれらを参照して説明するように、インタフェース・モジュール1022は、選択カラム822を、ディスプレイの右側に近い領域(例えば、クライアント・デバイス906のタッチ・スクリーン・ディスプレイ)から当該ディスプレイの左側に近い領域に移動する。
幾つかの実装では、選択および情報カラムを、グラフィカル・ユーザ・インタフェース800の左手または右手レイアウトを提供するために再配置することができる。例えば、当該グラフィカルインタフェースがタッチ・スクリーンデバイス上にあるときにより容易な入力アクセスを提供し、指が当該タッチ・スクリーンと対話することによる情報領域/カラムの妨害を防止するために、選択カラム822をドラッグ/スワイプして、右手および左手レイアウトの間で表示領域(複数可)をトグルすることができる。例えば、図8Aおよび8Bは、例示的なインタフェース800が図8Aの右手レイアウトから図8Bの左手レイアウトへトグルされることを示す。図8Aを参照すると、選択カラム822aがグラフィカル・ユーザ・インタフェース800の右側に示され、情報カラム820がグラフィカル・ユーザ・インタフェース800の左側に示されており、それにより右手方位を生成する。図8Aでは、インジケータ630が、グラフィカル・ユーザ・インタフェース800の右側からグラフィカル・ユーザ・インタフェース800の左側に選択カラム822aをスワイプする(例えば、選択およびドラッグする)ことが示されている。図8Bは、当該レイアウトが左手方位にトグルされた後の例示的なグラフィカル・ユーザ・インタフェース800を示す。例えば、情報カラム820bが右側に表示され、選択カラム822bが、左側グラフィカル・ユーザ・インタフェース800からの簡単なアクセスのためにグラフィカル・ユーザ・インタフェース800の左側に示されている。例えば、ユーザはタッチ・スクリーンクライアント・デバイス906を用いて、指、例えば、当該ユーザの親指を使用して、(例えば、図8Aのように)右手を用いて右手レイアウト内のまたは(例えば、図8Bのように)左手を用いて左手レイアウト内の情報セクション/領域を妨害することなく、中間レベルのサブグループおよび/または低レベル・アイテムを選択してもよい。
図9は、階層データとの対話を効率的に編成し、提示し、提供するための例示的なシステム900の高レベルなブロック図である。示されたシステム900は、ユーザ912によりアクセスされるクライアント・デバイス906、データ分析エンジン918およびデータベース920を有するデータ・サーバ916、およびサード・パーティ・アプリケーション926を有するサード・パーティ・サーバ924を含む。コンポーネント906、916、および924はネットワーク902を介して接続される。
図9ではデバイス902、906、916、および924が例として示されている。図9は単一のクライアント・デバイス906、サード・パーティ・サーバ924、およびサーバ916を示すが、本開示は、任意数のクライアント・デバイス906、サード・パーティ・サーバ924、およびサーバ916を有する任意のシステムアーキテクチャに適用される。さらに、1つのネットワーク902のみがクライアント・デバイス906、データ・サーバ916、およびサード・パーティ・サーバ924に接続されているが、実際には1つまたは複数のネットワーク902をこれらのエンティティに接続することができる。
データ分析エンジン918がデータ・サーバ916で動作するとして示されており、データベース920がデータ・サーバ916に格納されるとして示されており、サード・パーティ・アプリケーションがサード・パーティ・サーバ924で動作するとして示されており、データ提供モジュール908がクライアント・デバイス906で動作するとして示されているが、これらのコンポーネント全部または一部およびそれらの機能が、システム900の様々なコンポーネントに格納されてもよく、かつ/または、その上で動作してもよいことは理解されるべきである。例えば、幾つかの実装では、本明細書でデータ提供モジュール908に割り当てられた機能および/またはコンポーネントの全部または一部がデータ・サーバ916上で動作してもよい。
クライアント・デバイス906は任意のコンピューティング・デバイスであることができ、それらには、1つまたは複数のメモリおよび1つまたは複数のプロセッサ、例えば、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、携帯電話、スマートフォンデバイス、スマートウォッチまたは他のウェラブルデバイス、ポータブルゲームプレイヤ、ポータブル音楽プレイヤ、1つまたは複数のプロセッサを組み込むかまたは接続したテレビ、またはネットワークにアクセスできる任意の他の電子デバイスが含まれる。幾つかの実装では、システム900は異なるタイプのクライアント・デバイス906の組合せ、例えば、パーソナル・コンピュータおよびモバイル・フォンの組合せを含む。以下で説明されるように、本技術はクライアント・サーバキテクチャと異なるモデルで動作できることは理解されるべきである。例えば、クライアント・デバイス906が、データ提供モジュール908および/またはデータ分析エンジン918ならびに他のサービスを含んでもよい。
さらに、データ提供モジュール908のコンポーネントの全部または一部が、例えば、ブラウザ上のウェブアプリケーションまたはブラウザ内の特殊コード実行可能として動作可能であり、これらはクライアント・デバイス906上に格納されデータ・サーバ916との双方向通信に対して構成されたウェブブラウザであることができる。例えば、当該ブラウザはウェブ上の情報リソースを抽出、提示、および訪問するためのソフトウェアアプリケーションである。
サーバ916および924が、データ処理、記憶、および通信能力を有する1つまたは複数のコンピューティング・デバイスを含んでもよい。例えば、サーバ916および924が、1つまたは複数のハードウェアサーバ、サーバアレイ、記憶デバイスおよび/またはシステム等を含んでもよい。幾つかの実装では、サーバ916および924が1つまたは複数の仮想サーバを含んでもよく、これらは、ホストサーバ環境で動作し、例えば、プロセッサ、メモリ、記憶、ネットワークインタフェース等を含むホストサーバの物理ハードウェアに、抽象レイヤ(例えば、仮想マシンマネージャ)を介してアクセスする。幾つかの実装では、サーバ916および924が、コンテンツ要求を処理するためのウェブサーバ(図示せず)、例えば、HTTPサーバ、REST(representational state transfer)サービスを含んでもよく、またはコンテンツ要求を満足しネットワーク902に接続される1つまたは複数のコンピューティング・デバイスからコンテンツを受信するための構造および/または機能を有する、他のサーバタイプであってもよい。
図示した実装において、データ・サーバ916が、データ分析エンジン918およびデータベース920を含んでもよい。データ・サーバ916は、ネットワーク902を介してクライアント・デバイス906からのコンテンツ要求を受信しそれに応答するように動作可能である。データ分析エンジン918は階層データを集約し提供するように動作可能であり、データ・ストア、例えば、データベース920内の階層データを格納し、それへのアクセスを提供してもよい。データ分析エンジン918は図10を参照しておよび本明細書のどこかでより詳細に説明される。
データベース920は、データを格納し、データへのアクセスを提供するための情報ソースである。データベース920により格納されたデータは、それらにより格納された任意のタイプのデータを含む様々な基準、例えば、アイテム識別子、アイテム−タグ関連付け、サブジェクト、タイトル、ソース、カテゴリ、著者、人気度、製造者、モデル、階層データ・セット内の位置、および/または他のタグおよび記述子を用いて編成され問い合わせられてもよい。データベース920が、データ・テーブル、データベース、または他の編成されたデータの集合を含んでもよい。当該データベースにより格納されたデータのタイプの例が、階層的に編成されうる任意のデータを含んでもよいがこれに限定されず、当該データはニュース記事、写真、ソーシャルネットワークデータ、製品情報、メディア等を含むがこれらに限定されない。
データベース920が、データ・サーバ916に含まれるか、または、データ・サーバ916と異なるがそれに接続されアクセス可能である別のコンピューティング・システムおよび/または記憶システムに含まれてもよい。データベース920は、当該データを格納するための1つまたは複数の非一時的コンピュータ可読媒体を含むことができる。幾つかの実装では、データベース920はデータ・サーバ916で動作可能なデータベース管理システム(DBMS)に関連付けられたデータを格納してもよい。例えば、当該DBMSは構造化されたクエリ言語(SQL)DBMS、NoSQLDMBS、様々なそれらの組合せ等を含みうる。幾つかの事例では、当該DBMSは、行および列からなる多次元テーブルにデータを格納し、即ち、プログラム動作を用いてデータの行を操作、即ち、挿入、問合せ、更新、および/または削除してもよい。
当該図示した実装において、サード・パーティ・サーバ116はサービス例えば、サード・パーティ・アプリケーション926をホストし、当該サービスが、幾つかの実装では、独立であってもよく、かつ/または、データ・サーバ916により提供されるサービスに組み込まれてもよい。サード・パーティ・サーバ924が、ネットワーク902を介してクライアント・デバイス906および/またはデータ・サーバ916からのコンテンツ要求を受信しそれに応答するように動作可能であってもよい。幾つかの実装では、サード・パーティ・アプリケーション926は複数のレベルまたはグループに編成されうるデータを提供する。例えば、サード・パーティ・アプリケーション926および関連付けられたサード・パーティ・サーバ924は、低レベルデータ・アイテム、例えば、ニュース記事写真、製品、メディア等を提供するニュースサービスであってもよく、これらをデータ・サーバ916上のデータ分析エンジン918により取り出し処理してもよい。例えば、サード・パーティ・アプリケーション926は、クライアント・デバイス(例えば、クライアント・デバイス906)および/またはデータ・サーバ(例えば、データ・サーバ916)からのサービス要求に応答して、ニュース記事または情報を1つまたは複数のソース、例えば、オンライン新聞、ニュースウェブサイト、ブログ等から提供してもよい。
ネットワーク902はクライアント・デバイス906、データ・サーバ916、およびサード・パーティ・サーバ924の間の通信を可能とする。したがって、ネットワーク902は、例えば、Wi−Fi、Wi−Max、2G、ユニバーサル・モバイル電気通信システム(UMTS)、3G、Ethernet、802.11、統合サービスデジタルネットワーク(ISDN)、デジタル加入者線(DSL)、非同期転送モード(ATM)、InfiniBおよび、PCIエクスプレス高度スイッチング等を含む技術を用いたリンクを含むことができる。同様に、ネットワーク902で使用されるネットワーキングプロトコルは、送信制御プロトコル/インターネットプロトコル(TCP/IP)、マルチプロトコルラベル・スイッチング(MPLS)、ユーザデータグラムプロトコル(UDP)、ハイパーテキスト転送プロトコル(HTTP)、シンプル・メール転送プロトコル(SMTP)、ファイル転送プロトコル(FTP)、軽量重みディレクトリアクセスプロトコル(LDAP)、符号分割多重アクセス(CDMA)、広帯域符号分割多重アクセス(WCDMA(登録商標))、グローバル・システム・フォー・モバイル通信(GSM(登録商標))、高速ダウンリンクパケット・アクセス(HSDPA)等を含むことができる。ネットワーク902上で交換されるデータを、ハイパーテキストマークアップ言語(HTML)、拡張可能マークアップ言語(XML)等を含む技術および/またはフォーマットを用いて、表すことができる。さらに、リンクの全部または一部を、従来の暗号化技術、例えば、セキュアソケットレイヤ(SSL)、セキュアHTTPおよび/または仮想プライベートネットワーク(VPN)またはインターネットプロトコルセキュリティ(IPsec)を用いて暗号化することができる。幾つかの実装では、エンティティは上述したもの代わりにまたはそれに加えてカスタムおよび/または専用データ通信技術を使用することができる。実装に応じて、ネットワーク902はまた、他のネットワークへのリンクを含むことができる。
幾つかの実装では、ネットワーク902は部分的にパブリックまたは全体的にパブリックなネットワーク、例えば、インターネットである。ネットワーク902はまた、プライベートなネットワークであることができ、または、1つまたは複数の異なるまたは論理的プライベートネットワーク(例えば、仮想プライベートネットワーク、広域ネットワーク(「WAN」)および/またはローカル・エリアネットワーク(「LAN」))を含むことができる。さらに、ネットワーク902との通信リンクは有線または無線(即ち、地形または衛星ベースのトランシーバ)であることができる。幾つかの実装では、ネットワーク902はIPベースの広帯域またはメトリポリタン領域ネットワークである。
ネットワーク902は星形構成、トークン・リング構成または他の構成を含む任意数の構成を有してもよい。さらに、ネットワーク902が、複数のデバイスが通信しうるローカル・エリアネットワーク(LAN)、広域ネットワーク(WAN)(例えば、インターネット)、および/または任意の他の相互接続されたデータ経路を含んでもよい。幾つかの実装では、ネットワーク902はピアツーピアネットワークであってもよい。ネットワーク902はまた、多数の異なる通信プロトコルでデータを送信するための電気通信ネットワークの部分に接続されるかまたはそれを含んでもよい。幾つかの実装では、ネットワーク902は、ショート・メッセージングサービス(SMS)、マルチメディアメッセージングサービス(MMS)、ハイパーテキスト転送プロトコル(HTTP)、直接データ接続、無線アプリケーションプロトコル(WAP)、電子メッセージ等を介してを含めて、データを送受信するための短波長通信ネットワークまたはセルラ通信ネットワークを含む。
図10は、例示的なコンピューティング・システム1000を示すブロック図である。例示的なコンピューティング・システム1000は、実装に応じてクライアント・デバイス906、サード・パーティ・サーバ924、および/またはデータ・サーバ916を表してもよい。示すように、コンピューティング・システム1000が、通信モジュール1002、プロセッサ1004、メモリ(複数可)1006、入力デバイス1008、出力デバイス1010、およびデータ記憶1012を含んでもよく、それらが通信バス1016により通信可能に接続されてもよい。図10に示されたコンピューティング・システム1000はが例として提供され、本開示の範囲を逸脱することなく、他の形態をとり追加のまたはより少ないコンポーネントを含んでもよいことは理解されるべきである。例えば、当該コンピューティング・デバイスの様々なコンポーネントを、例えば、通信バス、ソフトウェア通信機構、コンピュータネットワーク等を含む多数の通信プロトコルおよび/または技術を用いて通信するために接続してもよい。図示していないが、コンピューティング・システム1000が、様々なオペレーティング・システム、センサ、追加のプロセッサ、および他の物理構成を含んでもよい。
通信モジュール1002は信号線1018によりネットワーク902に接続される。通信モジュール1002もバス1016に接続される。通信モジュール1002は有線接続に対するポートを含み、当該接続にはUSB、SD、またはCAT−5等が含まれるがこれらに限られない。通信モジュール1002はプロセッサ1004を、他の処理システムに接続されうるネットワーク902に接続する。通信モジュール1002は標準ネットワークプロトコル、例えば、TCP/IP、HTTP、HTTPSおよびSMTPを用いたネットワーク902への他の従来の接続を提供する。幾つかの実装では、通信モジュール1002は、Wi−Fi、Bluetooth(登録商標)、セルラ、または無線通信に対する他の通信プロトコルを用いて信号を送受信するためのトランシーバを含む。
プロセッサ1004が、計算を実施し電子ディスプレイ信号をディスプレイデバイスに提供するための算術論理ユニット、マイクロプロセッサ、汎用目的コントローラまたは幾つかの他のプロセッサアレイを含んでもよい。幾つかの実装では、プロセッサ1004はハードウェアプロセッサである。プロセッサ1004が他のコンポーネントと通信するためにバス1016に接続される。プロセッサ1004は、データ信号を処理し、複雑命令セットコンピュータ(CISC)アーキテクチャ、縮小命令セットコンピュータ(RISC)アーキテクチャ、または命令セットの組合せを実装するアーキテクチャを含む様々なコンピューティングアーキテクチャを含んでもよい。単一のプロセッサのみが図10に示されているが、複数のプロセッサを含めてもよい。他のプロセッサ、オペレーティング・システム、センサ、ディスプレイおよび物理構成が可能であることは理解されるべきである。
メモリ(複数可)1006は、コンピューティング・システム1000の他のコンポーネントにデータを格納してもよく、当該データへのアクセスを提供してもよい。メモリ(複数可)1006は単一のコンピューティング・デバイスまたは複数のコンピューティング・デバイスに含まれてもよい。幾つかの実装では、メモリ(複数可)1006は、プロセッサ1004により実行されうる命令および/またはデータを格納してもよい。例えば、幾つかの実装では、メモリ(複数可)1006は、当該構成に応じて、データ提供モジュール908、データ分析エンジン918、および/またはサード・パーティ・アプリケーション926、およびそれらの夫々のコンポーネントの1つまたは複数を格納してもよい。メモリ(複数可)1006はまた他の命令およびデータを格納でき、例えば、オペレーティング・システム、ハードウェアドライバ、他のソフトウェアアプリケーション、データベース等を含む。メモリ(複数可)1006を、プロセッサ(複数可)1004およびコンピューティング・システム1000の他のコンポーネントと通信するためにバス1016に接続してもよい。
メモリ(複数可)1006は、非一時的コンピュータ使用可能(例えば、可読、書込み可能等)媒体を含み、これは、プロセッサ(複数可)1004によりまたはそれと関連して処理するために、命令、データ、コンピュータ・プログラム、ソフトウェア、コード、ルーチン等を包含、格納、通信、電波、または転送できる任意の非一時的装置またはデバイスであることができる。幾つかの実装では、メモリ(複数可)1006が、揮発性メモリおよび不揮発性メモリの1つまたは複数を含んでもよい。例えば、メモリ(複数可)1006が、動的ランダム・アクセスメモリ(DRAM)デバイス、静的ランダム・アクセスメモリ(SRAM)デバイス、離散メモリデバイス(例えば、PROM、FPROM、ROM)、ハード・ディスク・ドライブ、光ディスク・ドライブ(CD、DVD、Blue−rayTM等)の1つまたは複数を含んでもよいがこれらに限定されない。メモリ(複数可)1006が単一のデバイスであってもよく、または、複数のタイプのデバイスおよび構成を含んでもよいことは理解されるべきである。
入力デバイス1008が、情報をコンピューティング・システム1000に入力するための任意のデバイスを含んでもよい。幾つかの実装では、入力デバイス1008が1つまたは複数の周辺デバイスを含んでもよい。例えば、入力デバイス1008が、キーボード(例えば、QWERTYキーボード)、インジケータまたはポインティング・デバイス(例えば、マウスまたはタッチ・パッド)、マイクロフォン、画像/ビデオ・キャプチャ・デバイス(例えば、カメラ)等を含んでもよい。幾つかの実装では、入力デバイス1008が、ユーザの1つまたは複数の指またはスタイラスペンから入力を受信できるタッチ・スクリーン・ディスプレイを含んでもよい。例えば、入力デバイス1008および出力デバイス1010の1つまたは複数の構造および/または機能を統合してもよく、コンピューティング・システム1000のユーザが、1つまたは複数の指を用いて(例えば、出力デバイス1010)のサーフェスと接触することでコンピューティング・システム1000と対話してもよい。さらに、この例において、ユーザは、タッチ・スクリーン出力デバイス1010に表示されたエミュレートされた(例えば、仮想またはソフト)キーボードと、指を用いてキーボード領域内のディスプレイと接触することで、対話することができる。
出力デバイス1010は、コンピューティング・システム1000から情報を出力できる任意のデバイスであってもよい。出力デバイス1010が、ディスプレイ、プリンタ、触覚デバイス、オーディオ再生デバイス等の1つまたは複数を含んでもよい。幾つかの実装では、出力デバイス1010が、ユーザ912の1つまたは複数の指から入力を受信できるタッチ・スクリーン・ディスプレイを含んでもよい。例えば、出力デバイス1010が、ディスプレイサーフェスとの複数の接触点を検出し解釈できる容量性タッチ・スクリーン・ディスプレイを含んでもよい。幾つかの実装では、コンピューティング・システム1000が、出力デバイス1010に提示するための画像およびデータを描画し出力するためのグラフィックスアダプタ(図示せず)を含んでもよい。当該グラフィックアダプタ(図示せず)は別々のプロセッサおよびメモリ(図示せず)を含む別々の処理デバイスであってもよく、または、プロセッサ1004およびメモリ(複数可)1006と統合されてもよい。
データ・ストア1012は、データを格納しそれへのアクセスを提供するための情報ソースである。データ・ストア1012により格納されたデータを、それらにより格納された任意のタイプのデータ、例えば、アイテム識別子、アイテム−タグ関連付け、サブジェクト、タイトル、ソース、カテゴリ、著者、人気度、製造者、モデル、階層データ・セット内の位置、および/または他のタグおよび記述子を含む様々な基準を用いて編成し問い合わせてもよい。データ・ストア1012が、データ・テーブル、データベース、または他の編成されたデータの集合を含んでもよい。データ・ストア1012により格納されたデータのタイプの例はデータ・セット1014等を含むがこれに限定されない。
データ・ストア1012が、コンピューティング・システム1000、または、コンピューティング・システム1000とは異なるがそれに接続されるかまたはそれによりアクセス可能な別のコンピューティング・システムおよび/または記憶システムに含まれてもよい。データ・ストア1012はデータを格納するための1つまたは複数の非一時的コンピュータ可読媒体を含むことができる。幾つかの実装では、データ・ストア1012はメモリ(複数可)1006に組み込まれてもよく、または、それと異なってもよい。幾つかの実装では、データ・ストア1012はコンピューティング・システム1000で動作可能なデータベース管理システム(DBMS)に関連付けられたデータを格納してもよい。例えば、当該DBMSは構造化されたクエリ言語(SQL)DBMS、NoSQLDMBS、様々なそれらの組合せ等を含みうる。幾つかの事例では、当該DBMSが行および列からなる多次元テーブルにデータを格納してもよく、プログラム動作を用いてデータの行を操作、例えば、挿入、問合せ、更新、および/または削除してもよい。
データ・セット1014が、複数のレベルまたはデータツリーに編成されうる任意のデータを含んでもよい。データ・セット1014を(例えば、タグ等を用いてデータ構造に)低レベル・アイテムのグループ(例えば、中間レベルのサブグループ)に編成でき、各低レベル・アイテムは低レベルデータおよび/またはメタデータを有する。低レベル・アイテムのグループ(例えば、中間レベルのサブグループ)を高レベル・グループに編成することができる。幾つかの実装では、データ・セット1014をデータ・ストア1012にダウンロードし格納することができる。幾つかの実装では、データ・ストア1012が、データ・サーバ916またはサード・パーティ・サーバ924に格納されたデータ・セットの一部または全部への参照を含んでもよい。例えば、アイテムに関連する表示可能情報の一部または全部が、適用可能データを表示するiフレームまたはオブジェクトを含んでもよい。例えば、クライアント・デバイス906が低レベル・アイテムに対する画像を直接サード・パーティ・サーバ924から取り出し、表示してもよい。さらに、データ・セット1014がさらにまたはあるいはデータベース920に格納されてもよく、クライアント・デバイス906上のメモリ(例えば、データ・ストア1012またはメモリ1006に)に一時的に存在するだけでもよいことは理解されるべきである。
バス1016は、コンピューティング・デバイスのコンポーネントの間でまたはコンピューティング・デバイス、ネットワーク902またはその一部、プロセッサメッシュ、それらの組合せ等を含むネットワークバスシステムの間でデータを転送するための通信バスを含むことができる。幾つかの実装では、データ・ハンドラ1020、インタフェース・モジュール1022、カテゴリ化モジュール1024、および順序付けモジュール1026およびコンピューティング・デバイス1000(データ分析エンジン918、サード・パーティ・アプリケーション926、オペレーティング・システム、デバイスドライバ等)で動作する様々な他のコンポーネントが、バス1016に含まれるかまたはそれと関連して実装される通信機構を介して協調し通信してもよい。バス1016が、例えば、プロセス間通信、ローカル関数またはプロシージャ・コール、リモートプロシージャ・コール、オブジェクトブローカ(例えば、CORBA)、ソフトウェアモジュール間の直接ソケット通信(例えば、TCP/IPソケット)、UDPブロードキャストおよび受信、HTTP接続等を含みかつ/または促進しうる、ソフトウェア通信機構を含んでもよい。さらに、通信の何れかまたは全部がセキュア(例えば、SSH、HTTPS等)であってもよい。
データ提供モジュール908および/またはそのコンポーネントを全体的にハードウェアとして実装してもよく、または、複数の階層レベルを有するデータ・セットを効率的に編成し、提示し、およびそれとの対話を提供するためのルーチンまたは方法を実装するために、プロセッサ1004によりクライアント・デバイス906上で実行可能なコンピュータ論理を含んでもよい。幾つかの実装では、データ提供モジュール908がデータ分析エンジン918から受信された情報に少なくとも基づいてユーザ・インタフェースを生成し提示してもよい。例えば、ユーザ912はデータ提供モジュール908を使用して、階層データを効率的に参照/消費しナビゲートしてもよい。幾つかの実装では、データ提供モジュール908はウェブブラウザおよび/またはその中で動作可能なコード、カスタマイズされたクライアント・サイドアプリケーション(例えば、専用モバイル・アプリ)、その両方の組合せ等を含む。
データ・ハンドラ1020は、場合に応じて、データ要求および応答を処理し、かつ/またはデータをデータ提供モジュール908の他のコンポーネント、例えば、インタフェース・モジュール1022、カテゴリ化モジュール1024、および/または順序付けモジュール1026に提供する。例えば、データ・ハンドラ1020は、データ提供モジュール908のコンポーネントからのデータ要求を処理して、適用可能データをデータ・サーバ916および/またはサード・パーティ・サーバ924から受信/抽出してもよい。データ・ハンドラ1020が、例えば、バス1016を介して、インタフェース・モジュール1022等を介して、データ提供モジュール908の他のコンポーネントからデータ要求を受信しそれに応答してもよい。
インタフェース・モジュール1022がユーザ入力を入力デバイス1008から受信し、当該ユーザ入力を処理して要求される動作を決定する。さらに、インタフェース・モジュール1022がコンピューティング・デバイス1000およびデータ提供モジュール908の他のコンポーネントに接続され、データ提供モジュール908(例えば、1020、1024、1026)の当該コンポーネントに信号送信してそれらの動作を実施する。例えば、幾つかの実装では、インタフェース・モジュール1022をメモリ(複数可)1006に格納して、プロセッサ1004で実行し、入力デバイス1008からのユーザ入力を処理し、(例えば、データ・ハンドラ1020および/または通信モジュール1002を介して)データ・セットをデータ・サーバ916に要求し、カテゴリ化モジュールおよび/または順序付けモジュール1026に信号送信して当該データ・セットを処理し、グラフィカルインタフェースを出力デバイス1010に送信して当該要求される情報を当該ユーザに表示してもよい。
カテゴリ化モジュール1024が、どのレベルおよびグループ(例えば、階層グループまたはデータツリー)に各低レベルデータ・アイテムが属するかを判定してもよい。例えば、インタフェース・モジュール1022から受信された信号に応答して、カテゴリ化モジュール1024は、データ・ハンドラ1020により(例えば、データ・ストア1012から)取り出されたデータ・セット1014にアクセスし、データを高レベル・グループ、中間レベルのサブグループ、および低レベルデータ・アイテムに(例えば、当該アイテムのメタデータ内のタグに従って)ソートする。
順序付けモジュール1026は、ソートされたデータ・セットを処理して、インタフェース・モジュール1022またはカテゴリ化モジュール1024からの信号に応答して、中間レベルのサブグループおよび高レベル・グループごとに提供優先度を決定する
例えば、インタフェース・モジュール1022は順序付けモジュール1026に信号送信して、データ・セット(複数可)1014を処理し、低レベルに対する表示順序、および、幾つかの実装では、図3を参照して説明したように中間レベルデータに対する表示順序を決定する。順序付けモジュール1026が、データ・ストア1012内のデータにアクセスし、かつ/または、データを直接データ提供モジュール908の1つまたは複数のコンポーネント1020、1022、または1024から受信してもよい。
コンポーネント908、1020、1022、1024、および/または1026がソフトウェアまたはルーチンであってもよい。幾つかの実装では、908、1020、1022、1024、および/または1026がプロセッサ1004により実行可能な1組の命令であってもよい。幾つかの実装では、908、1020、1022、1024、および/または1026は、システム1000のメモリ(複数可)1006に格納され、プロセッサ1004によりアクセス可能および実行可能である。コンポーネント908、1020、1022、1024、および/または1026がバス1016および/またはプロセッサ(複数可)1004によりコンピューティング・システム1000の1つの別のおよび/または他のコンポーネント1002、1004、1006、1008、1010、および/または1012に通信可能に接続されてもよい。幾つかの実装では、コンポーネント1020、1022、1024、および/または1026が、それらの動作および/または機能を提供するためにプロセッサ(複数可)1004により実行可能なコンピュータ論理を含んでもよい。以上の実装の何れかにおいて、これらのコンポーネント1020、1022、1024、および/または1026が、プロセッサ(複数可)1004およびコンピューティング・システム1000の他のコンポーネント、例えば、データ・ストア1012および/またはメモリ(複数可)1006と協調し通信するように適合されてもよい。
データ分析エンジン918が全体的にハードウェアとして実装されてもよく、または、上述のように、データを処理するためのルーチンまたは方法を実装するための、例えば、それを階層レベル・グループ、タグアイテム、分析アイテム等に編成するための、コンピューティング・システム1000(例えば、データ・サーバ916)上のプロセッサ1004により実行可能なコンピュータ論理を含んでもよい。幾つかの実装では、データ分析エンジン918は、バス1016を介してプロセッサ1004、メモリ1006およびコンピューティング・デバイス1000(例えば、データ・サーバ916)の他のコンポーネントと協調および通信するように適合される。
上述のように、サード・パーティ・アプリケーション926が、全体的にハードウェアとして実装されてもよく、または、階層またはデータツリーで編成されうるデータ/アイテムを提供するためのルーチンまたは方法を実装するための、コンピューティング・システム1000(例えば、サード・パーティ・サーバ924)上のプロセッサ1004により実行可能なコンピュータ論理を含んでもよい。幾つかの実装では、サード・パーティ・アプリケーション926は、バス1016を介して、プロセッサ1004、メモリ1006およびコンピューティング・デバイス1000の他のコンポーネント(例えば、サード・パーティ・サーバ926)と協調および通信するように適合される。
上の説明において、説明の目的のため、多数の具体的な詳細を説明した。しかし、当該開示された技術をこれらの具体的な詳細の任意の所与のサブセットなしに実践できることは明らかであろう。他の事例では、構造およびデバイスがブロック図の形で示されている。例えば、幾つかの実装では、当該開示された技術が、ユーザ・インタフェースおよび特定のハードウェアを参照して上述されている。
本明細書における「1実装」または「実装」への参照は、当該実装と関連して説明した特定の特徴、構造、または特性が当該開示された技術の少なくとも1つの実装に含まれることを意味する。本明細書の様々な場所におけるフレーズ「1実装では」の出現は、必ずしも全て同一の実装を指すわけではない。
上の当該詳細な説明の幾つかの部分を、コンピュータメモリ内のデータビット上の動作のプロセスまたは記号的表現で提示した。プロセスを一般に、結果につながる自己一貫的なステップのシーケンスと考えることができる。当該ステップが、物理量の物理操作を含んでもよい。これらの量が、格納、転送、結合、比較、または操作されうる電気的または磁気信号の形をとってもよい。これらの信号を、ビット、値、要素、記号、文字、項、数字等の形で参照してもよい。
これらのおよび同様な用語を適切な物理量に関連付けることができ、これらの量に適用されるラベルと考えることができる。以前の説明から明らかなように特に断らない限り、当該説明にわたって、例えば、「処理」または「コンピューティング」または「計算」または「決定」または「表示」等の用語を用いた議論は、当該コンピュータシステムのレジスタおよびメモリ内の物理(電子)量として表現されたデータを操作し当該コンピュータシステムメモリまたはレジスタまたは他のかかる情報記憶、送信またはディスプレイデバイス内の物理量として同様に表現された他のデータに変換する、コンピュータシステム、または同様な電子コンピューティング・デバイスのアクションおよびプロセスを指してもよいことは理解される。
当該開示された技術はまた、本明細書の当該動作を実施するための装置に関連してもよい。この装置は、要求された目的のために特に構築されてもよく、または、当該コンピュータに格納されたコンピュータ・プログラムにより選択的に起動または再構成される汎用目的コンピュータを含んでもよい。かかるコンピュータ・プログラムをコンピュータ可読記憶媒体に格納してもよく、当該媒体には、例えば、フロッピディスク、光ディスク、CD−ROM、および磁気ディスク、読取専用メモリ(ROM)、ランダム・アクセスメモリ(RAM)、EPROM、EEPROM、磁気または光カード、電子命令を格納するのに適した不揮発性メモリまたは任意のタイプの媒体を有するUSBキーを含むフラッシュ・メモリを含む任意のタイプのディスクがあるがこれらに限定されず、それぞれはコンピュータシステム・バスに接続される。
当該開示された技術は、全体的にハードウェア実装、全体的にソフトウェア実装またはハードウェアおよびソフトウェア要素の両方を含む実装の形をとることができる。幾つかの実装では、当該技術はソフトウェアで実装され、当該ソフトウェアは、ファームウェア、常駐ソフトウェア、マイクロコード等を含むがこれらに限定されない。
さらに、当該開示された技術は、コンピュータまたは任意の命令実行システムによりまたはそれと関連して使用するためのプログラムコードを提供する非一時的コンピュータ使用可能またはコンピュータ可読媒体からアクセス可能なコンピュータ・プログラム製品の形をとることができる。この説明の目的のため、コンピュータ使用可能またはコンピュータ可読媒体は、当該命令実行システム、装置、またはデバイスによりまたはそれと関連して使用するためのプログラムを包含、格納、通信、伝播、または転送できる任意の装置であることができる。
プログラムコードを格納および/または実行するのに適したコンピューティング・システムまたはデータ処理システムは、システム・バスを通じてメモリ要素に直接または間接的に接続された少なくとも1つのプロセッサ(例えば、ハードウェアプロセッサ)を含む。当該メモリ要素は、当該プログラムコードの実際の実行の間に使用されるローカルメモリ、バルク記憶、およびコードを実行の間にバルク記憶から取り出さなければならない回数を削減するために少なくとも幾つかのプログラムコードの一時記憶を提供するキャッシュメモリを含むことができる。
入出力またはI/Oデバイス(キーボード、ディスプレイ、ポインティング・デバイス等を含むがこれらに限定されない)を、直接、または、介在I/Oコントローラを介してシステムに接続することができる。
ネットワークアダプタをまた、システムに接続して、データ処理システムが介在プライベートまたはパブリックネットワークを介して他のデータ処理システムまたはリモートプリンタまたは記憶デバイスに接続されるようにしてもよい。モデム、ケーブル・モデムおよびEthernetカードは現在利用可能なタイプのネットワークアダプタの幾つかにすぎない。
最後に、当該開示された技術は、任意の特定のプログラミング言語を参照しては説明されていない。多数のプログラミング言語を使用して本明細書で説明した技術の教示事項を実装してもよいことは理解される。
本発明の技術および技術の実装の以上の説明を例示および説明の目的のために提示した。包括的であることは意図されておらず、本発明の技術および技術を開示された厳密な形態に限定することも意図されていない。多くの修正および変形が上の教示事項を鑑みて可能である。本発明の技術および技術の当該範囲がこの詳細な説明により限定されないことが意図されている。本発明の技術および技術を、その趣旨または本質的な特性から逸脱しない他の特定の形態で実装してもよい。同様に、モジュール、ルーチン、特徴、属性、方法および他の態様の特定のネーミングおよび分割は必須でも重要でもなく、本発明の技術および技術またはその特徴を実装する機構が異なる名前、分割および/またはフォーマットを有してもよい。さらに、本発明の技術のモジュール、ルーチン、特徴、属性、方法および他の態様を、ソフトウェア、ハードウェア、ファームウェアまたはこれら3つの任意の組合せとして実装することができる。また、コンポーネントが、その例がモジュールであるが、ソフトウェアとして実装されるときは常に、当該コンポーネントを、スタンドアロンプログラムとして、より大きなプログラムの一部として、複数の別々のプログラムとして、静的にまたは動的にリンクされたライブラリとして、カーネルローダブルモジュールとして、デバイスドライバとして、および/またはコンピュータプログラミングにおいて現在知られているかまたは将来知られる全てかつ他の任意の方法で実装することができる。さらに、本発明の技術および技術は、任意の特定のプログラミング言語における実装、または任意の特定のオペレーティング・システムまたは環境に対する実装には決して限定されない。したがって、本発明の技術および技術の当該開示は例示的であり限定的ではないことが意図されている。