図1は、例えば、デスクトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、コンバーチブル型タブレット、パーソナルデジタルアシスタント(PDA)、モバイルインターネットデバイス(MID)、メディアプレイヤ、スマートフォン、スマートテレビ(TV)、ラジオ、インフォテイメントシステム、ウェアラブルデバイス、ゲームプラットフォーム、サーバプラットフォームなどのような計算プラットフォームを含んでよい装置10を示す。装置10は、リクエスト14を満たすデータを含む応答12を提供してよい。リクエスト14は、例えば、既に収集された(例えば、グラフの)パスを有するメッセージ、(例えば、ユーザ、団体などの)エンティティ識別子、クエリ識別子(例えば、複数のクエリが所定の時刻にグラフ内を流れてよい)、および/またはクエリ(例えば、正規表現、アップデートされた/変更された/新たな正規表現など)を含んでよい。
示された例では、装置10は、応答12をデータ収集器18に提供してよい通信インタフェース16を備える。データ収集器18は、装置10の内部であってよく、または(示されるように)装置10の外部であってよく、物理または仮想リソース(例えば、メモリ、ストレージなど)などを含んでよい。ゆえに、リクエスト14のメッセージはまた、例えば、バスアドレス、仮想メモリアドレス、物理メモリアドレス、メディアアクセス制御(MAC)アドレス、インターネットプロトコル(IP)アドレスなどのようなコレクタ18のコレクタアドレスも含んでよい。
示された装置10はさらに、リクエスト14を満たすデータをホストしてよい計算ユニット20を備える。一例において、それぞれのデータをホストする複数の計算ユニットがあってよい。ここで、複数の計算ユニットは、1より多くの装置において分散されてよい。しかも、計算ユニット20の任意のまたは全てのコンポーネントが、ロジック(例えば、ロジック命令、コンフィギュラブルロジック、機能固定型ロジックハードウェアなど、またはそれらの任意の組み合わせ)として実行してよい。示された例では、計算ユニット20は、リクエスト14のメッセージを評価してよいメッセージアナライザ22を有し、さらにメッセージアナライザ22は、計算ユニット20に到達する前にメッセージによって既に収集されたパスを決定してよいパス評価器24と、クエリを発行するエンティティのエンティティ識別子を決定してよいエンティティ評価器26と、クエリ識別子および/またはクエリ(例えば、正規表現)を決定してよいクエリ評価器28とを含んでよい。
示された計算ユニット20はさらに、計算ユニット20に関連付けられたデータの生存時間(TTL)の値を決定してよい時間アナライザ30を有する。ここで、TTLが期限切れのとき、計算ユニット20は、クエリを満たすデータへのアクセスを拒否してよい。計算ユニット20に関連付けられたデータのTTL値の決定は、例えば、データの明示的に割り当てられたTTL値を識別すること、および/または、データの固有のTTL値を識別することを含んでよい。示された例では、時間アナライザ30は、計算ユニット20によって表されるデータのユニットTTLの値を決定してよいユニットTTL評価器32を含んでよい。ここで、ユニットTTLが期限切れのとき、計算ユニット20は、計算ユニット20によって表されるデータを除去してよい。
加えて、時間アナライザ30は、計算ユニット20と隣接計算ユニット(例えば、パス内の次の計算ユニット)とを結ぶリンクによって表されるデータのリンクTTLの値を決定してよいリンクTTL評価器34を含む。ここで、リンクTTLが期限切れのとき、計算ユニット20は、リンクによって表されるデータを除去してよい。時間アナライザ30はさらに、全ての計算ユニット、および/または特定のパス内の全ての計算ユニットを結ぶ全てのリンクによって表されるデータのパスTTLの値を決定してよいパスTTL評価器36を含む。ここで、パスTTLが期限切れのとき、計算ユニット20は、特定のパスによって表されるデータを除去してよい。一例において、パスTTLの値は、特定のパスの全体的な値(例えば、累積的な値、追加的な値、平均化された値、平均の値、など)であってよい。別の例では、パスTTLの値は、特定のパスの一部の部分的な値(例えば、パスのメンバの最小TTLなど)であってよい。
時間アナライザ30はまた、計算ユニット20がクエリを処理するために使用可能な時間があるか否か、および/または、メッセージ(例えば、アップデートされたメッセージ、アップデートされたクエリなど)が隣接計算ユニットに到達するために使用可能な時間があるか否かを決定してよい使用可能時間評価器38を含む。一例において、メッセージが隣接計算ユニットに到達するのに十分な時間がないとき、計算ユニット20は、計算ユニット20に関連付けられたデータへのアクセスを拒否してよい。
示された計算ユニット20はさらに、データのコンテキストに基づいて、計算ユニット20に関連付けられたデータへのアクセスを可能にするか否かを決定してよいコンテキストアナライザ40を有する。コンテキストは、例えば、データが使用される方式、データを要求するエンティティ、応答12のデータの取得に関与する(例えば、トラバースされる、トラバースされた、など)計算ユニット、応答12のデータを取得に関与する(例えば、トラバースされる、トラバースされた、など)リンクなどを含んでよい。コンテキストは、計算ユニット20に関連付けられたデータのTTLを割り当てるおよび/または評価するために利用されてよい。
示された例では、コンテキストアナライザ40は、計算ユニット20によって表されるデータのコンテキストを決定してよいユニットコンテキスト評価器42を含む。例えば、ユニットコンテキスト評価器42は、使用される、計算ユニット20によって表される方式のデータ、計算ユニット20によって表されるデータを要求するエンティティ、応答12のデータを取得すべくトラバースされる、またはトラバースされた計算ユニットなどに基づいて、計算ユニット20によって表されるデータのコンテキストを決定してよい。コンテキストアナライザ40はさらに、例えば、使用される、リンクによって表される方式のデータ、リンクによって表されるデータを要求するエンティティ、応答12のデータを取得すべくトラバースされる、またはトラバースされたリンクなどに基づいて、計算ユニット20を隣接計算ユニットと結ぶリンクによって表されるデータのコンテキストを決定してよいリンクコンテキスト評価器44を含む。
示されたコンテキストアナライザ40はまた、特定のパス内の全ての計算ユニットによって表されるデータ、および/または、特定のパス内(例えば、エンドツーエンドパス、それらのセグメントなど)の全ての計算ユニットを結ぶ全てのリンクによって表されるデータのコンテキストを決定してよいパスコンテキスト評価器46を含む。計算ユニット20は、(例えば、データのコンテキストが、データへのアクセスを許可しない場合、)データのコンテキストに基づいてデータを除去してよい。
示された計算ユニット20はさらに、隣接計算ユニットが応答12のデータを提供するか否かを決定してよい隣接アナライザ48を有する。例えば、(例えば、特定のパス内の)隣接計算ユニットがデータを提供するとき(例えば、クエリが隣接計算ユニットを訪れたとき)、計算ユニット20は、計算ユニット20を隣接計算ユニットと結ぶリンクへのアクセスを拒否してよい。
示された計算ユニット20はさらに、計算ユニット20によって表されるデータ、および/または計算ユニット20を隣接計算ユニットと結ぶリンクによって表されるデータが、リクエスト14を満たす(例えば、クエリを満たす)か否かを決定してよいコンテンツアナライザ50を有する。一例において、クエリが受信されたとき、コンテンツアナライザ50は、データがクエリを満たすか否かを決定してよい。別の例では、クエリに対してアクセスが許可されると計算ユニット20が決定したとき、コンテンツアナライザ50は、データがクエリを満たすか否かを決定してよい。
示された例では、コンテンツアナライザ50は、計算ユニットに関連付けられたデータが、少なくとも部分的にリクエスト14と適合するか否かを決定してよいデータマッチャ52を含む。例えば、データマッチャ52は、計算ユニット20によって表されるデータ、および/または計算ユニット20を隣接計算ユニットと結ぶリンクによって表されるデータが、少なくとも部分的にクエリを満たすか否かを決定してよい。一例において、クエリは正規表現を含んでよく、計算ユニット20は、計算ユニット20によって表されるデータ、および/または計算ユニット20から生じるリンクによって表されるデータが、少なくとも部分的に正規表現を満たす値を含むか否かを決定してよい。
示されたコンテンツアナライザ50はさらに、計算ユニット20に関連付けられたデータに対する重みがリクエスト14を満たすのに十分か否かを決定してよい重みアナライザ54を含む。一例において、重みアナライザ54は、計算ユニット20によって表されるデータ、および/または計算ユニット20を隣接計算ユニットと結ぶリンクによって表されるデータに対する重み値を決定してよい。ゆえに、計算ユニット20は、閾値(例えば、定量的閾値、定性的閾値など)に対してデータの重みが不十分であることに基づいて、計算ユニット20に関連付けられたデータへのアクセスを拒否してよい。
特定のパスの全体的な重み(例えば、累積的な重み、追加的な重み、平均化された重み、平均の重みなど)が、特定のパスからのデータ(例えば、全てのデータ)へのアクセスを許可するか否かを決定するために利用されてよい。特定のパスの一部の部分的な重み(例えば、部分的に累積的な重みなど)がまた、特定のパスからのデータ(例えば、全てのデータ)へのアクセスを許可するか否かを決定するために利用されてよい。重みは、定量的(例えば、数的なスケールに対して数的な値など)、定性的(例えば、信頼できるスケールに対して信頼できるまたは信頼できないなど)などであってよい。
示された計算ユニット20はさらに、リクエスト14を満たす、計算ユニット20に関連付けられたデータを含む応答12を生成してよい応答生成器56を含む。示された例では、応答生成器56は、リクエスト14のメッセージにおいて受信されたパスに対するアップデートされた(例えば、変更された、新たな、など)パスを生成してよいパスアップデータ58を含む。アップデートされたパスは、計算ユニット20によって提供されたデータと共に、例えば、計算ユニット20において受信されたリクエスト14のメッセージにおけるクエリに既に適合されたデータを含んでよい。
示された応答生成器56はさらに、リクエスト14のメッセージにおいて受信されたクエリに対するアップデートされた(例えば、変更された、新たな、など)クエリを生成してよいクエリアップデータ60を含む。アップデートされたクエリは、例えば、満たされた、および/または、まだ満たされていないクエリの値を含んでよい。ゆえに、クエリアップデータ60は、クエリを満たす値、および、まだ満たされていない、計算ユニット20において受信されたクエリの残存値を含む値を示すアップデートされたクエリを生成してよい。隣接計算ユニットは、(例えば、アップデートされたメッセージを用いて)、アップデートされたパスおよび/またはアップデートされたクエリを使用してリクエスト14を処理してよい。クエリが終了したとき、アップデートされたパスおよび/またはアップデートされたクエリは、データ収集器18に転送された、リクエスト14を満たすデータとして応答12に含まれてよい。
示された装置10はさらに、知識ベースを、2またはそれより多くの計算ユニットを結ぶリンクを含むグラフとして表してよいデータモデラ62を備える。例えば、データモデラ62は複数の計算ユニットを編成してよい。ここで、知識は、計算ユニット、および当該ユニット間のリンクのデータ内容によって定義される。しかも、計算ユニットは個別に計算してよい。示された例では、データモデラ62は、計算ユニット20などの計算ユニットを生成してよい計算ユニット生成器64と、計算ユニット20と隣接計算ユニットとの間のリンクなどのリンクを生成してよいリンク生成器66と、グラフのコンポーネント(例えば、計算ユニット、リンクなど)に特性を割り当ててよい特性割り当て器68とを含む。
特性割り当て器68は、例えば、TTL値(例えば、ユニットTTL、リンクTTL、パスTTLなど)、(例えば、セキュリティポリシ、使用ポリシ、条件ポリシなどによる)コンテキスト、重みなどを指定してよい。一例において、データソースのタイプおよび/またはデータのタイプ(例えば、モノのインターネットのコンピュータネットワークにおけるセンサおよび/またはセンサデータ)に基づいて、特性(例えば、TTL値)が割り当てられてよい。別の例では、自動的に、および/またはユーザ入力(例えば、データソースからの入力、データ所有者からの入力、管理エンティティからの入力など)に応答して、特性が割り当てられてよい。
示された例では、装置10はさらに、計算ユニット、リンク、パス、データ、重み、(例えば、セキュリティポリシ、使用ポリシ、条件ポリシなどによる)コンテキスト、および/またはTTL値の間の対応関係を提供してよいデータ構造(例えば、テーブル)を格納するメモリ70を備える。対応関係は、計算ユニット20が1つのデータ(例えば、一人)を表すとき、1つのデータが1つのTTL値を割り当てられたとき、などのような1対1の対応関係であってよい。対応関係は、m対nの対応関係であってよい。ここで、mおよび/またはnは1以上の値を有する。
その上、メモリ70は、アドレス空間にグラフ(またはその一部)を格納してよく、アドレス空間は読み出されて、エフェメラルデータ(例えば、コンテクスチュアルエフェメラルデータ)に基づいた応答12とエフェメラルデータの効率的な処理との両方が提供されてよい。一例において、メッセージがグラフに流れ込む、またはグラフを流れるとき、ある機械実行可能ファイルがグラフの一部分をロードしてよく、別の機械実行可能ファイルが、順にまたは並列に、グラフの別の部分をロードしてよい。
加えて、メモリ70は、フォールトトレランス、スケーラビリティのための、および/または比較的大容量のデータを制御するための計算ユニットのメッセージパッシングおよび/または同時実行をサポートするライブラリを格納してよい。例えば、計算ユニット20は、特定のグラフにおいてライブラリから読み出され、装置10のハードウェアプロセッサによって実装されて、特定のグラフのコンポーネントとして計算してよい。その際、計算ユニット20は、所定の時刻に、ある特定のグラフにおいて計算してよい、および/またはある特定のグラフのコンポーネントであってよい。ここで、当該特定のグラフは分割されて、同一のまたは異なる物理または仮想マシン(例えば、JAVA(登録商標)仮想マシン)においてローカルに動作してよい。ゆえに、例えば、データを表す計算ユニットは、ライブラリに存在してよく、知識ベースを使用したグラフの中に順序付けられてよい。ここで、グラフは、装置10の外部に(例えば、メモリに、ハードドライブに、など)、中央に格納され、分割されて、ローカルに実行されてよい。
装置10のコンポーネントは、同一のまたは異なる物理または仮想マシンにおいて任意の構成で配置されてよい。一例において、データモデラ62または特性割り当て器68などのその一部は、装置10の外部に、物理的に位置し、コンピュータネットワークを通じて通信インタフェース16(例えば、ネットワークインタフェースカード)を介してアクセス可能であってよい。その際、グラフまたはその一部は、メモリ70の外部に(例えば、ハードドライブに)、物理的に格納されてよい。当該ストレージは、装置10に対して物理的にローカル、および/または装置10に対して物理的に外部であってよい。別の例では、データ収集器18は、メモリ70の物理メモリアドレス空間として、装置10に対して物理的に内部に位置してよい。さらなる例では、計算ユニット20の1または複数のコンポーネントが単一のコンポーネントに組み合わされてよく、または個々コンポーネントに分離されてよい。個々のコンポーネントは、装置10に対しておよび/または計算ユニット20に対して物理的に外部に存在してよい。
ここで図2を参照すると、グラフ100が示されている。グラフ100において、複数の計算ユニット112(112a〜112g)が複数のリンク114(114a〜114j)を介して結ばれている。ここで、グラフ100は、クエリ116によってトラバースされて、クエリ応答118においてクエリ116を満たすデータを提供してよい。計算ユニット112の任意のものまたは全てのものは、ロジック(例えば、ロジック命令、コンフィギュラブルロジック、機能固定型ロジックハードウェアなど、またはそれらの任意の組み合わせ)として実行してよい。グラフ100は、知識ベースを成文化(例えば、モデル化)し、リンク114によって表される関係を介して結ばれた計算ユニット112によってエンティティ(例えば、人々、物体、地理的位置など)を表してよい。特に、時間間隔t0から時間間隔t5へと時間が経つにつれ、グラフ100は変化し、グラフ100を通過する種々のパスを提供し、したがって、エフェメラルデータに基づいて、クエリ116を満たす種々のデータを提供する。
時間間隔t0において、例えば、クエリ116は計算ユニット112aに到達する。計算ユニット112aは、計算ユニット112aに関連付けられたデータの生存時間(TTL)の値を決定してよい。その際、計算ユニット112aは、計算ユニット112aに対応するデータに、および外向きのリンク114a〜114cに対応するデータにだけアクセスしてよい。このことはスケーラビリティを提供する。なぜなら、セントラルサーバは、グラフ内の全てのデータを理解すべく接触される必要はなく、その代わりにエフェメラルデータを処理するよう分散アーキテクチャを提供するからである。ゆえに、計算ユニット112aに関連付けられたデータへのアクセスは、グラフによって表される全てのデータを有するセントラルサーバではなくローカルメモリ(および/またはストレージ)からであってよい。一例において、計算ユニット112aに関連付けられたデータは、計算ユニット112aによって表されるデータのデータアドレス空間に、および(例えば、ローカルメモリから)計算ユニット112aによってアクセス可能でありかつロードされる、リンク114a〜114cによって表されるデータのデータアドレス空間に格納されてよい。
計算ユニット112aは、計算ユニット112aによって表されるデータ(例えば、ソーシャルグラフ内のユーザ、地理的グラフ内の都市、モノのインターネットのグラフ内のセンサなど)のユニットTTLの値を決定してよく、ユニットTTLが期限切れになったとき、計算ユニット112aによって表されるデータへのアクセスを拒否してよい。計算ユニット112aは、例えば、グラフ100からデータを除去すること(例えば、グラフからそれ自体を削除すること、クエリによるそれ自体へのアクセスを阻止すること、それ自体をクエリに対してトランスペアレントにすること、など)によってデータへのアクセスを拒否してよい。その際、計算ユニット112aによるデータの除去は計算ユニット112aに対してローカルであってよい。なぜなら、計算ユニット112aは、計算ユニット112aに関連付けられたローカルメモリ(および/またはローカルストレージ)の計算ユニット112aに関連付けられたデータを除去してよく、グラフを変更するようセントラルサーバと通信することを必要としなくてよいからである。
示された例では、計算ユニット112aは、ユニットTTLはなく、またはユニットTTLの値は計算ユニット112aによって表されるデータについて無限大であり、したがって、計算ユニット112aによって表されるデータは期限切れではなく、および/または計算ユニット112aは期限切れではないと決定する。その際、計算ユニット112aは、クエリ116を満たすパスにおける外向きのリンクを介してメッセージを転送してよい。一例において、計算ユニット112aに関連付けられたデータがクエリ116を満たすとき、計算ユニット112aは、外向きのリンクに接続された隣接計算ユニットによってアクセス可能な、クエリ116を満たすパスにおける外向きのリンクに関連付けられたメイルボックスアドレス空間にメッセージを書き込んでよい。
並列におよび/または順に、計算ユニット112b〜112gは、各計算ユニット112b〜112gに関連付けられたデータの各ユニットTTLを評価してよい。例えば、計算ユニット112fが、計算ユニット112fによって表されるデータのユニットTTLの時間値(5)を決定する一方で、計算ユニット112eは、計算ユニット112eによって表されるデータのユニットTTLの時間値(3)を決定してよく、したがって、計算ユニット112e、112fによって表されるデータは期限切れではないと、および/または計算ユニット112e、112fは期限切れではないと決定する。
計算ユニット112aはまた、計算ユニット112aと隣接計算ユニット112b、112cとを結ぶリンクによって表されるデータ(例えば、ソーシャルグラフにおける友人関係、地理的グラフ内の道路など)のリンクTTLの値を決定してよく、リンクTTLが期限切れのとき、リンクによって表されるデータへのアクセスを拒否してよい。例えば、計算ユニット112aは、グラフ100からデータを除去すること(例えば、グラフから期限切れのリンクを削除すること、クエリによる期限切れのリンクへのアクセスを阻止すること、期限切れのリンクをクエリに対してトランスペアレントにすること、など)によってデータへのアクセスを拒否してよい。上述したように、計算ユニット112aによるデータの除去は、計算ユニット112aに対してローカルであってよい。
示された例では、計算ユニット112aは、リンク114aによって表されるデータのリンクTTLの時間値(2)と、リンク114bによって表されるデータのリンクTTLの時間値(1)と、リンク114cによって表されるデータのリンクTTLの時間値(4)とを決定する。ゆえに、計算ユニット112aは、リンク114a〜114cによって表されるデータが期限切れではない、および/または、リンク114a〜114cが期限切れではないと決定する。その際、計算ユニット112aに関連付けられたデータがクエリ116を満たすとき、計算ユニット112aは、外向きのリンクに接続された隣接計算ユニットによってアクセス可能な、クエリ116を満たすパスにおける外向きのリンクに関連付けられたメイルボックスアドレス空間にメッセージを書き込んでよい。
並列におよび/または順に、計算ユニット112b〜112fは、各リンク114d〜114jに関連付けられたデータの各リンクTTLを評価してよい。例えば、計算ユニット112dは、リンク114gによって表されるデータのリンクTTLの時間値(2)、および、リンク114hによって表されるデータのリンクTTLがないことを決定し、したがって、リンク114g、114hによって表されるデータが期限切れではなく、および/またはリンク114g、114hが時間間隔t0において期限切れでないと決定してよい。計算ユニット112aと同様に、計算ユニット112b〜112gは、各関連付けられたデータおよび各外向きのリンクにだけアクセスしてよく、データをローカルに除去(例えば、各ローカルの物理または仮想メモリのデータを除去)し、メッセージを転送してよい。
特に、計算ユニット112の任意のものまたは全てのものは、個別に計算して、クエリ処理とエフェメラルデータ(例えば、定義された期限切れデータを有するデータ)の処理との両方のための分散アーキテクチャを提供してよい。例えば、計算ユニット112a〜112gの各々は、各計算ユニット112a〜112gに関連付けられたデータが、期限切れではなく、しかもクエリ116を満たすか否かを個別に決定してよい。
クエリ116は、頂点112a、112g間のパスを検索するクエリであってよい。一例において、クエリ116は、「俳優Zが主演する、私の友人が好む全てのライトコメディを私に推薦して」などのリクエストを含んでよく、データに設けられた有効期限(例えば、データのソースまたは所有者によって割り当てされた、など)を重んじつつ、計算ユニット112aが、計算ユニット112aによって表されるデータ(例えば、「人」、「自分」など)、ならびに/またはリンク114aによって表されるデータ(例えば、「仲間」)およびリンク114b、114cによって表されるデータ(例えば、「友人」)が少なくとも部分的にクエリ116を満たすか否かを決定してよい。ゆえに、例えば、計算ユニット112aはローカルメモリにアクセスして、計算ユニット112aに関連付けられたデータをロードし、データを処理して、データがクエリ116を満たすか否かを決定してよい。
この場合、計算ユニット112aは、データ(例えば、「人」、「自分」など)に基づいて、計算ユニット112aによって表されるデータがクエリ116の「私の」を満たすと決定し、データのユニットTTL値がないことに基づいて、時間間隔t0においてデータが期限切れになっていないとを決定してよい。計算ユニット112aはまた、データ(例えば、「友人」)に基づいて、リンク114b、114cによって表されるデータがクエリ116の「友人」を満たすと決定し、リンク114bによって表されるデータのユニットTTLの値(2)と、リンク114cによって表されるデータのリンクTTLの値(4)とに基づいて、時間間隔t0においてデータが期限切れになっていないと決定してよい。加えて、計算ユニット112aは、リンク114b、114cを介して計算ユニット112b、112cがアクセス可能なメッセージを送信してよい。なぜなら、例えば、計算ユニット112bによってアクセス可能なリンク114aのメイルボックスアドレス空間にデータを格納すること、および、計算ユニット112cによってアクセス可能なリンク114cのメイルボックスアドレス空間にデータを格納することによって、データはクエリ116を満たすからである。
その上、計算ユニット112bは、データに設けられた有効期限を重んじつつ、計算ユニット112bによって表されるデータ(例えば、「人」)、および/またはリンク114dによって表されるデータ(例えば、「好む」)が、少なくとも部分的にクエリ116を満たすか否かを決定してよい。計算ユニット112cはまた、データに設けられた有効期限を重んじつつ、計算ユニット112cによって表されるデータ(例えば、「人」)、および/またはリンク114e、114fによって表されるデータ(例えば、「好む」)が、少なくとも部分的にクエリ116を満たすか否かを決定してよい。しかも、計算ユニット112dは、データに設けられた有効期限を重んじつつ、計算ユニット112dによって表されるデータ(例えば、「映画」)、および/またはリンク114g、114hによって表されるデータ(例えば、「である」)が少なくとも部分的にクエリ116を満たすか否かを決定してよい。
加えて、計算ユニット112eは、データに設けられた有効期限を重んじつつ、計算ユニット112eによって表されるデータ(例えば、「ダークコメディX」)および/またはリンク114iによって表されるデータ(例えば、「主演」)が少なくとも部分的にクエリ116を満たすか否かを決定してよい。同様に、計算ユニット112fは、データに設けられた有効期限を重んじつつ、計算ユニット112fによって表されるデータ(例えば、「ライトコメディY」)、ならびに/またはリンク114jによって表されるデータ(例えば、「主演」)が、少なくとも部分的にクエリ116を満たすか否かを決定してよい。クエリ116は、計算ユニット112gにおいて終了する。計算ユニット112gは、データに設けられた有効期限を重んじつつ、計算ユニット112gによって表されるデータ(例えば、「俳優Z」)が、少なくとも部分的にクエリ116を満たすか否か決定してよい。
したがって、グラフ100中のいくつかのパスは、時間間隔t0においてクエリ116を満たすデータを提供する。例えば、第1のパスが、計算ユニット112a、112bを結ぶリンク114bと、計算ユニット112b、112dを結ぶリンク114dと、計算ユニット112d、112fを結ぶリンク114hと、計算ユニット112f、112gを結ぶリンク114jとを含んでよい。同様に、第2のパスが、計算ユニット112a、112cを結ぶリンク114cと、計算ユニット112c、112fを結ぶリンク114fと、計算ユニット112f、112gを結ぶリンク114jとを含んでよい。どのパスも計算ユニット112eを含まず、したがって、同様にリンク114g、114iを除外する。
図2に示されるように、時間間隔t0から時間間隔t5へと時間が進むにつれ、1または複数のTTLが期限切れになり、このことが、クエリ116を満たすパスおよび/またはデータの数を低減する。例えば、第1のパスは時間間隔t1においては使用可能でない。なぜなら、リンク114bのリンクTTLは期限切れであり、計算ユニット112aはリンク114bを削除するからであり、クエリ116を満たすデータとして使用可能な第2のパスだけを残す。ゆえに、例えば、計算ユニット114aによって表される人がライトコメディXを好むという知識は、時間間隔t1において特定のパスを通じてもはや使用可能ではない。時間間隔t4において、クエリ116を満たすパスはない。なぜなら、リンク114cのリンクTTLもまた期限切れであり、計算ユニット112aはリンク114cを削除するからである。
その上、計算ユニット112の任意のものまたは全てのものは、(例えば、クエリが訪れた)クエリ応答118のためのデータを次の計算ユニットが提供するか否かを決定し、隣接計算ユニットがデータを提供するときは、それを隣接計算ユニットと結ぶリンクへのアクセスを拒否してよい。例えば、計算ユニット112dは、計算ユニット112fがデータを提供済であると時間間隔t0において決定してよく、(例えば、第1のパスを介して)リンク114hにアクセスしてすることを拒否して、ループを最小化してよい。その際、計算ユニット112dは、計算ユニット112fによってアクセス可能なリンク114hのメイルボックスアドレス空間をチェックして、メイルボックスアドレス空間にデータは書き込まれたか否かを確認してよい。別の例では、クエリによって全てパスがトラバースされてよく、重複データまたは冗長データが後で削除されてよい。
加えて、計算ユニット112の任意のものまたは全てのものは、クエリ116を処理するために使用可能な時間があるか否かを決定(例えば、データがクエリを満たすか否かを決定、データに対する重みを決定または適用、TTL値を決定、データのコンテキストを決定、クエリを変更、など)してよく、および/または、クエリ116が隣接計算ユニットに到達するために使用可能な時間があるか否かを決定してよい。例えば、計算ユニット112aは、計算ユニット112aによって表されるデータがクエリ116を満たすか否かを計算ユニット112aが評価するために使用可能な時間があるか否か、および/または、クエリ116が計算ユニット112b、112cに到達するために使用可能な時間があるか否かを決定してよい。使用可能時間の決定は、例えば、クエリが計算ユニットにディスパッチされる時間、クエリが計算ユニットにおいて受信される時間、計算ユニットにおいてクエリを処理する時間、計算ユニットにおいてクエリを変更する時間、並列処理、順次処理、時間間隔内に残された時間、クエリ応答を提供するための時間、などを含む任意の要素に基づいていてよい。
計算ユニット112の任意のものまたは全てのものはまた、データのコンテキストに基づいて各データへのアクセスを許可するか否かを決定してよい。例えば、計算ユニット112dは、データに設けられた有効期限を重んじ、かつ(例えば、使用ポリシ、セキュリティポリシ、条件ポリシなどによって)データに設けられたコンテキスト特性を重んじつつ、計算ユニット112dによって表されるデータ(例えば、「映画」)、および/またはリンク114g、114hによって表されるデータ(例えば、「である」)が、少なくとも部分的にクエリ116を満たすか否かを決定してよい。ゆえに、クエリ応答118は、TTLのみではなくコンテクスチュアルエフェメラルデータに基づいていてよい。
その上、計算ユニット112の任意のものまたは全てのものは、各計算ユニット112に関連付けられたデータに対する重み値を決定してよい。例えば、データに設けられた有効期限、および/またはデータに設けられたコンテキスト特性を重んじつつ、計算ユニット112dによって表されるデータ(例えば、「映画」)、および/またはリンク114g、114hによって表されるデータ(例えば、「である」)、に対する重み値が、クエリ116を満たすために使用されるのに十分であるか否かを計算ユニット112dは決定してよい。ゆえに、例えば、エンティティ(例えば、データのユーザ、データのマネージャなど)が、計算ユニット112dによって表されるデータ、および/またはリンク114g、114hによって表されるデータに対して重み値を設けて、データの信頼性レベルを示してよい。ここで、計算ユニット112dは、重み値を評価して、データに対するアクセスを許可するか否かを決定してよい。
加えて、計算ユニット112の任意のものまたは全てのものは、クエリ116を満たすデータ含む、アップデートされた(例えば、変更された、新たな、など)メッセージを生成してよい。アップデートされたメッセージは、例えば、受信されたパスに対するアップデートされたパスを含んでよい。ここで、アップデートされたパスは、クエリ116に既に適合したデータと共に、現在追加された、クエリ116を満たすデータを含んでよい。例えば、計算ユニット112bは、計算ユニット112bにおいて受信されたパスに対するアップデートされたパスを含むアップデートされたメッセージを時間間隔t0において生成してよい。ここで、アップデートされたパスは、計算ユニット112bによって表されるデータ、および/または、計算ユニット112dにおいて受信されたパスに追加された、リンク114dによって表されるデータを含む。
しかも、アップデートされたメッセージは、受信されたクエリに対するアップデートされたクエリを含んでよい。ここで、アップデートされたクエリは、満たされた、および/またはまだ満たされていないクエリ116の値を含んでよい。ゆえに、例えば、計算ユニット112bは、計算ユニット112bにおいて受信されたクエリに対するアップデートされたクエリを生成してよい。ここで、アップデートされたクエリは、変更された値が少なくとも部分的にクエリを満たすことを示し、かつ、まだ満たされていない、計算ユニット112bにおいて受信されたクエリの残存値を含む変更された値を含んでよい。一例において、クエリ全体が満たされたとき、クエリ116は終了してよく、データはデータ収集器に転送されてよい。別の例では、クエリは、クエリ全体を満たすデータが特定のパスに沿って満たされたときでも進んでよい。なぜなら、より多くの、および/または種々のデータは、クエリ116に応答して提供されてよいからである。
図3は、複数の計算ユニット312(312a〜312g)が、複数のリンク314(314a〜314g)を介して結ばれるグラフ300を示す。ここで、グラフ300は、クエリ316によってトラバースされて、クエリ316を満たすデータをクエリ応答318において提供してよい。計算ユニット314の任意のものまたは全てのものは、ロジック(例えば、ロジック命令、コンフィギュラブルロジック、機能固定型ロジックハードウェアなど、またはそれらの任意の組み合わせ)として実行してよい。グラフ300は、知識ベースを成文化(例えば、モデル化)し、リンク314によって表される関係を介して結ばれた計算ユニット312によってエンティティ(例えば、人々、物体、地理的位置など)を表してよい。特に、時間間隔t0から時間間隔t5へと時間が経つにつれ、グラフ300は変化し、グラフ300を通過する種々のパスを提供し、したがって、コンテキストに基づいて、クエリ316を満たす種々のデータを提供する。
図3に示されるように、グラフ300のコンポーネントの任意のものまたは全てのものについて、条件ポリシが割り当てられ、および/または評価されて、データのコンテキストを提供してよい。例えば、特定の計算ユニットの有無および/または特定のパスにおける特定のリンクの有無に基づいて、条件ルールがユニットTTL値および/またはリンクTTL値を規定してよい。示された例では、計算ユニット312aは、クエリ316を受信し、計算ユニット312aがパス内にあるときは、リンク314aについて値は(1)であるべきと規定する条件ルールに基づいて、計算ユニット312aに関連付けられたデータのTTLの値(1)を決定してよい。
その上、計算ユニット312dは、計算ユニット312aがパス内にあるときは、リンク314eについて値は(2)であるべきこと、または、計算ユニット312bがパス内にあるときは、リンク314eについて値は無限大であるべきことを規定する条件ルールに基づいて、リンク314eによって表されるデータのTTLの値(2)を決定してよい。加えて、計算ユニット312fは、計算ユニット312aがパス内にあるときは、リンク314gについて値は(3)であるべきこと、または、計算ユニット312bがパス内にあるときは、リンク314gについて値は(2)であるべきことを規定する条件ルールに基づいて、リンク314gによって表されるデータのTTLの値(3)を決定してよい。
条件ルールがまた、特定の計算ユニットの有無、および/または特定のパスにおける特定のリンクの有無に基づいて、グラフ300のコンポーネントの任意のものまたは全てのものがアクセスされるべきでない、および/またはトラバースされるべきでないと規定してよい。計算ユニット312eは、例えば、リンク314aがパス内にあるとき、(例えば、クエリが収集した情報に基づいて)それ自体へのアクセスを拒否してよい。ゆえに、計算ユニット312の任意のものまたは全てのものは、例えば、条件が満たされたときにグラフ300からデータを除去することによって、条件ルールに基づいてデータへのアクセスを拒否してよい。
グラフ300のコンポーネントの任意のものまたは全てのものについて、使用ポリシも割り当てられ、および/または評価されて、データのコンテキストを提供してよい。使用ルールは、例えば、データが使用されるべき方式(例えば、私的使用、公的使用、マイニング、他のデータとの相互参照など)に基づいて、計算ユニット312の任意のものまたは全てのもの、および/またはリンク314の任意のものまたは全てのもののTTLを規定してよい。しかも、計算ユニット312の任意のものまたは全てのものは、例えば、使用が許可できないときにグラフ300からデータを除去することによって、使用ルールに基づいてデータへのアクセスを拒否してよい。
グラフ300のコンポーネントの任意のものまたは全てのものについて、セキュリティポリシがさらに割り当てられ、および/または評価されて、データのコンテキストを提供してよい。セキュリティルールは、例えば、データを要求するエンティティ(例えば、団体、認可ユーザなど)に基づいて、計算ユニット312の任意のものまたは全てのもの、および/またはリンク314の任意のものまたは全てのもののTTLを規定してよい。しかも、計算ユニット312の任意のものまたは全てのものは、例えば、セキュリティが脅かされ得るときにグラフ300からデータを除去することによって、セキュリティルールに基づいてデータへのアクセスを拒否してよい。
したがって、グラフ300中のいくつかのパスは、時間間隔t0においてクエリ316を満たすデータを提供してよい。時間が経つにつれて、クエリ316を満たすために使用可能なデータは、エフェメラルデータに設けられたコンテキスト特性が原因で低減される。図3に示されるように、クエリ316が計算ユニット312a(上部)に到達しようが、クエリ316が計算ユニット312b(下部)に到達しようが、時間間隔t2において、クエリ316を満たすようデータを提供するために使用可能なパスはない。
ここで図4を参照すると、グラフ400が示されており、当該グラフにおいて、複数の計算ユニット412(例えば、頂点412a〜412m)が複数のリンク414(例えば、エッジ414a〜414l)を介して結ばれて、メッセージ420の答えとしてクエリ応答418(418a、418b)が提供される。計算ユニット412の任意のものまたは全てのものは、ロジック(例えば、ロジック命令、コンフィギュラブルロジック、機能固定型ロジックハードウェアなど、またはそれらの任意の組み合わせ)として実行してよい。以下で説明されるように、クエリ応答418は、メッセージ420がいつ発行されるか、TTL、コンテキスト、重み、使用可能な時間、などに基づいて変化してよい。
示された例では、メッセージ420は、パスが探索されることを示す最初の正規表現422(a+b+c+)を含む。ここで、探索されるパスは、各々が値(a)を有する1または複数の連続したエッジを含んでよく、その後に各々が値(b)を有する1または複数の連続したエッジが続き、その後に値(c)を有するエッジが続く。値(a)の添え字「+」は、例えば、最初の正規表現420が満たされるためには、パス内の次の1または複数のエッジが値(a)を有する必要があることを示す。
頂点412aは、それから生じるエッジを評価して、最初の正規表現422(a+b+c+)の第1の下位条件を満たすものを見つけてよい。この場合、計算ユニット412aからエッジ414aだけが生じており、それが値(a)を有する。したがって、エッジ414aは、最初の正規表現422(a+b+c+)の第1の下位条件を満たす。この時点では、最終的に最初の正規表現422(a+b+c+)を満たす任意のパスは、この時点から後は、各々が値(a)を有する0または複数の連続したエッジを有し、その後に各々が値(b)を有する1または複数の連続したエッジが続き、その後に各々が値(c)を有する1または複数の連続したエッジが続く必要がある。
頂点412aは、最初の正規表現422(a+b+c+)を変更して正規表現424(a*b+c+)になってよい。ここで、添え字「*」は、最終的なパスが最初の正規表現422(a+b+c+)を満たすために、値(a)を有する0または複数の連続したエッジが次に必要であることを示す。正規表現424(a*b+c+)は、頂点412aから、エッジ414aと接続された頂点412bなどの、(例えば、第1の下位条件を満たす)識別されたエッジと接続された頂点に伝えられてよい。示された例では、値(a)を含むシーケンスがまた頂点412bに伝えられて、値(a)が最初の正規表現422(a+b+c+)に既に適合されていることを示す(例えば、既に収集されたパスは(a)を含む)。
したがって、正規表現424(a*b+c+)および/またはパス426(a)は、頂点412bへの入力として機能してよく、頂点412bは、頂点412aと同様の処理を実行してよい。頂点412bは、それから生じるエッジを評価して、受信された正規表現424(a*b+c+)を満たすものを見つけてよい。この場合、頂点412bから出る2つのエッジは、値(a)を有するエッジ414bと、値(d)を有するエッジ414kである。正規表現424(a*b+c+)は、各々が値(a)を有する開始時の0または複数の連続したエッジの後に各々が値(b)を有する1または複数の連続したエッジが続くという条件を満たすエッジを必要とする。示された例では、頂点412bから生じるエッジ414bだけがこの条件を満たす。値(d)を有するエッジ414kはこの条件を満たさず、無視されてよい。
この時点では、最終的に最初の正規表現422(a+b+c+)を満たす任意のパスは、この時点から後は、各々が値(a)を有する0または複数の連続したエッジを有し、その後に各々が値(b)を有する1または複数の連続したエッジが続き、その後に値(c)を有するエッジが続く必要がある。頂点412bは、必要ならば、受信された正規表現424(a*b+c+)を変更してよい。示された例では、変更は必要なく、実行されず、この時点から後は、要件は(a*b+c+)のままである。加えて、頂点412bはパス426(a)を変更して、値(a)が2回適合されたことを示してよい(例えば、既に収集されたパスは、(aa)を含む)。正規表現424(a*b+c+)およびパス428(aa)は、メッセージ420を満たす最後の識別されたエッジに接続された、次の頂点である頂点412cに伝えられる。
頂点412cは、それから生じるエッジを評価して、受信された正規表現424(a+b+c+)を満たすものを見つけてよい。この場合、頂点412cから生じる2つのエッジは、値(a)を有するエッジ414cと、値(b)を有するエッジ414fである。正規表現424(a*b+c+)は、各々が値(a)を有する0または複数の連続したエッジの後に、各々が値(b)を有する1または複数の連続したエッジが続くという条件を満たすエッジを必要とする。示された例では、頂点412cから生じるエッジ414c、414fの両方がこの条件を満たす。
頂点412cは、必要ならば、受信された正規表現424(a*b+c+)を変更してよい。示された例では、頂点412dを含むパスについて、変更は必要ではなく、実行されず、この時点から後は、要件は(a*b+c+)のままである。頂点412cはまた、パス428(aa)を変更して、頂点412dを含むパスでは、値(a)が3回適合されたことを示してよい(例えば、既に収集されたパスは、(aaa)を含む)。ゆえに、正規表現424(a*b+c+)およびパス430(aaa)は、頂点412dに伝えられる。
加えて、頂点412cは、受信された正規表現424(a*b+c+)を変更して、正規表現432(b*c+)になってよい。ここで、この時点から後は、頂点412gおよび/またはエッジ414fを含むパスでは、要件は(b*c+)である。正規表現432(b*c+)は、エッジ414fが値(b)を有することを考慮する。この時点では、値(a)を有するエッジ414aを含むパスが見つけられている。当該エッジ414aは、その後に値(a)を有するエッジ414bが続き、その後に値(b)を有するエッジ414fが続く。最初の正規表現424(a+b+c+)を満たすべく、この時点から後は、この先のエッジは、各々が値(b)を有する0または複数の連続したエッジの後に、値(c)を有する1または複数のエッジが続くという条件を満たさなければならない。加えて、頂点412cは、パス428(aa)を変更して、値(a)が2回適合されたこと、および、値(b)が1回適合されたことを示してよい(例えば、既に収集されたパスは、(aab)を含む)。ゆえに、正規表現432(b*c+)およびパス434(aab)は、頂点412gに伝えられる。示された例では、次の下位条件(値(b))が満たされたとき、正規表現424(a*b+c+)から第1の下位条件(値(a))が除去される。
頂点412dおよび頂点412gは、同様のやり方で受信されたメッセージを処理してよい。しかも、頂点412d、412gにおける処理は互いに対して、および/または各外向きのエッジについて、並列におよび/または連続して進んでよい。同様に、頂点412e、412h、412jにおける処理および頂点412f、412i、412kにおける処理は、互いに対して、および/または各外向きのエッジについて、並列におよび/または連続して進んでよい。最終的に最初の正規表現424(a+b+c+)の条件の全てを満たす3つのパスが見つけられる。特に、最初の正規表現422(a+b+c+)は、頂点412jにおいて満たされてよく、処理は、データ収集器においてデータ(aabbc)を格納するために停止してよい。別の例では、処理は頂点412kに継続してよい。なぜなら、最初の正規表現422(a+b+c+)をやはり満たす、より多くの、および/または異なるデータ(aabbcc)が提供されてよいからである。
示された例では、正規表現424(a*b+c+)が変更されて正規表現436(b*c+)になり、それはさらに変更されて正規表現440(c*)になり、パス430(aaa)は変更されてパス438(aaab)になり、それはさらに変更されてパス442(aaabc)になる。パス442(aaabc)は、クエリ応答418a、418bにおいて提供されるデータである。加えて、正規表現432(b*c+)は変更されて正規表現444(c*)になり、パス434(aab)は変更されてパス446(aabb)になり、それはさらに変更されてパス448(aabbc)になる。パス448(aabbc)は、クエリ応答418aにおいて提供されるデータである。しかも、正規表現432(b*c+)は変更されて正規表現450(c*)になり、パス434(aab)は変更されてパス452(aabbc)になり、それはさらに変更されてパス454(aabbcc)になる。パス454(aabbcc)は、クエリ応答418aにおいて提供されるデータである。通常、グラフの処理は、深さ優先方式、幅優先方式などで進んでよい。
メッセージ422を満たすデータは、いつメッセージ422が発行されたかに基づいて異なってよい。例えば、メッセージ422が特定の時間に発行されたとき、クエリ応答418aはデータ(aaabc、aabbc、aabbcc)を含む一方、メッセージ422が別の時間に発行されたとき、クエリ応答418bにはデータ(aaabc)だけが含まれてよい。グラフ400は、例えば、頂点412a〜412mの任意のものまたは全てのもの、および/またはエッジ414a〜414jの任意のものまたは全てのものによって表されるデータのTTLに基づいて変化してよい。例えば、頂点412g〜412kの任意のものまたは全てのものは、時間間隔t2においてメッセージ422が発行されたとき、データ(aaabc)だけを含むクエリ応答418bを提供すべく、時間間隔t1において期限切れとなる値(1)を有するTTLを含んでよい。同様に、エッジ414f〜414jの任意のものまたは全てのものは、データ(aaabc)だけを含むクエリ応答418bを提供すべく、時間間隔t1において期限切れとなる値(1)を有するTTLを含んでよい。
グラフ400はさらに、例えば、頂点412a〜412mの任意のものまたは全てのもの、および/またはエッジ414a〜414jの任意のものまたは全てのものによって表されるデータのコンテキストに基づいて変化してよい。一例において、例えば、要求元(例えば、ユーザ、団体など)が特定の時間間隔においてデータにアクセスすることを認可されない(例えば、認証情報を有さない)とき、頂点412g〜412kの任意のものまたは全てのもの、および/またはエッジ414f〜414jの任意のものまたは全てのものはアクセスされるべきでないことを示すセキュリティルールを、セキュリティポリシが含んでよい。別の例では、例えば、許可できない目的のために各データの使用が特定の時間間隔においてマイニングされるとき、頂点412g〜412kの任意のものまたは全てのもの、および/またはエッジ414f〜414jの任意のものまたは全てのものはアクセスされるべきではないことを示す使用ルールを、使用ポリシが含んでよい。
さらなる例では、例えば、特定の時間間隔において、リンク414gが続くリンク414fを含むパスなどのパスがグラフ410の特定のコンポーネントまたは一連のコンポーネントをトラバースするとき、頂点412g〜412kの任意のものまたは全てのもの、および/またはエッジ414f〜414jの任意のものまたは全てのものはアクセスされるべきではないことを示す条件ルールを、条件ポリシが含んでよい。グラフ400のコンポーネントの任意のものまたは全てのものによって表されるデータへのアクセスは、任意の他の要素に基づいて異なってよい。例えば、要素は、メッセージ422を処理するために使用可能な時間、頂点412a〜412mの任意のものまたは全てのものおよび/またはエッジ414a〜414jの任意のものまたは全てのものに対する重みなどを含んでよい。
図5は、クエリ応答を提供するための方法500を示す。方法500は通常、既に説明された、装置10(図1)、計算ユニット20(図1)、計算ユニット112の任意のものまたは全てのもの(図2)、計算ユニット312の任意のものまたは全てのもの(図3)、および/または計算ユニット412の任意のものまたは全てのもの(図4)などのコンピューティングアーキテクチャにおいて実装されてよい。より具体的には、方法500は、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、プログラマブルROM(PROM)、ファームウェア、フラッシュメモリなどのような機械またはコンピュータ可読記憶媒体において、例えば、プログラマブルロジックアレイ(PLA)、フィールドプログラマブルゲートアレイ(FPGA)、コンプレックスプログラマブルロジックデバイス(CPLD)などのコンフィギュラブルロジックにおいて、例えば、特定用途向け集積回路(ASIC)、相補型金属酸化物半導体(CMOS)またはトランジスタ−トランジスタロジック(TTL)技術、またはそれらの任意の組み合わせなどの回路技術を使用する機能固定型ハードウェアロジックにおいて格納されたロジック命令セット内の1または複数のモジュールとして実装されてよい。例えば、方法500に示されるオペレーションを実行するコンピュータプログラムコードは、C#、JAVA(登録商標)、または同様のものなどのオブジェクト指向プログラミング言語を含む1または複数のプログラミング言語の任意の組み合わせで書かれてよい。
示された処理ブロック510が、知識ベースを、2またはそれより多くの計算ユニットを結ぶリンクを含むグラフとして表す。知識ベースは、例えば、ソーシャルネットワークデータ、地理的データ、センサデータ、セキュリティ分析データなどを含んでよい。処理ブロック510は、計算ユニットを生成してよく、リンクを生成してよく、および/または、特性をグラフのコンポーネントに割り当ててよい(例えば、自動的に、ユーザインタフェースを介したユーザ入力に基づいて、など)。一例において、アクタ(actor)は、グラフ内の頂点を表してよく、分離され、他のアクタとは独立した個々の計算のユニットであってよい。アクタは、同一のマシンにおいて、または異なるマシンにおいて、種々のプロセスに存在してよい。
グラフの頂点は、メッセージを送受信してよく、それが、頂点が通信および相互作用できる唯一のやり方であってよい。メッセージは、パスおよび正規表現を含むペアを含んでよい。ゆえに、例えば、(r)が最初の正規表現であり、かつ(s,p)がメッセージである場合、プレフィックス(s)を満たすあらゆるパス(pi)について、(p.pi)は(r)を満たすということをアーキテクチャは保証してよい。言い換えると、既に適合されたパスと、まだ適合されていない正規表現を満たすパスとをアーキテクチャがとり、それらのパスが組み合わされた場合、アーキテクチャは、正規表現を満たすパスを決定する。
示された処理ブロック512がクエリを受信する。一例において、処理ブロック512は、(例えば、頂点に到達する)クエリを含むメッセージを評価してよく、メッセージによって既に収集されたパスを決定してよく、クエリを発行するエンティティのエンティティ識別子を決定してよく、クエリ識別子を決定してよく、および/または、クエリ(例えば、正規表現)を決定してよい。特に、特定のグラフを流れる比較的多数のクエリ(例えば、数百万のメッセージ)があってよい。
示された処理ブロック514が、計算ユニットに関連付けられたデータの生存時間(TTL)の値を決定する。TTLが期限切れのとき、処理ブロック514は、データへのアクセスを拒否してよい。一例において、処理ブロック514は、計算ユニットによって表されるデータのユニットTTLの値を決定してよく、計算ユニットと隣接計算ユニットとを結ぶリンクによって表されるデータのリンクTTLの値を決定してよく、および/または、特定のパス内の全ての計算ユニットおよび/または特定のパス内の全ての計算ユニットを結ぶ全てのリンクのうちの1または複数によって表されるデータのパスTTLの値を決定してよい。
示された処理ブロック516は、計算ユニットがメッセージ(例えば、クエリ)を処理するために使用可能な時間があるか否か、および/または、メッセージ(例えば、クエリ)が隣接計算ユニットに到達するために使用可能な時間があるか否かを決定する。示された処理ブロック518は、隣接計算ユニットがクエリ応答のためのデータを提供するか否かを決定する。示された処理ブロック520が、計算ユニットに関連付けられたデータのコンテキストを決定する。例えば、処理ブロック520は、計算ユニットによって表されるデータのコンテキストを決定してよく、計算ユニットと隣接計算ユニットとを結ぶリンクによって表されるデータのコンテキストを決定してよく、および/または、特定のパス内の全ての計算ユニットおよび/または特定のパス内の全ての計算ユニットを結ぶ全てのリンクによって表されるデータのコンテキストを決定してよい。
したがって、例えば、映画の提案を要求するユーザが、映画を「好む」人の友人ではないとき、期限切れでない場合はソーシャルネットワークグラフにおける当該提案のリクエストを満たし得る(例えば、期限切れではないと考えられる)データを含む推奨は提供され得ない。別の例では、使用統計値(usage statistics)の使用が許可されない(例えば、マーケティング)とき、期限切れでない場合はモノのインターネットのグラフにおける当該使用統計値のリクエストを満たし得る(例えば、期限切れではないと考えられる)データを含むセンサ出力は提供され得ない。さらなる例では、ある都市を表す特定の頂点を通過するパスが、別の都市を表す特定の頂点を通過するという条件に基づいて許可されない(例えば、都市Bを経由して都市Aに行くことができない)とき、期限切れでない場合は地理的グラフにおける目的地のリクエストを満たし得る(例えば、期限切れではないと考えられる)データを含むルートは提供され得ない。最後の例では、ユーザがファイルにアクセスすることを認可されないとき、ファイルが禁止された方式で使用されるとき、などの場合、感染コンピュータがアクセスしたファイルの決定はセキュリティ分析グラフにおいて提供され得ない。
示された処理ブロック522が、計算ユニットに関連付けられたデータがクエリを満たすか否かを決定する。一例において、処理ブロック522は、計算ユニットに関連付けられたデータがクエリに適合するか否かを決定してよく、および/または、計算ユニットに関連付けられたデータの重み値を決定してよい。示された処理ブロック524が、クエリを満たす、計算ユニットに関連付けられたデータを含むクエリ応答を生成する。一例において、クエリ応答は、アップデートされたパスおよび/またはアップデートされたクエリを有するアップデートされたメッセージを含んでよい。例えば、前の不変量を満たすべく、特定の頂点がメッセージを変更してよい。特定の頂点の特性および/または特定の外向きのエッジの特性に応じて、特定の頂点は、受信された表現を変更し、新たな正規表現および/または新たなプレフィックスパスを有する新たなメッセージを隣接頂点に送信してよい。
別の例では、クエリ応答は、クエリを満たすパスからのデータの全てを含む最終的なクエリ応答であってよい。例えば、クエリの結果は、グラフ中をメッセージを移動させることによって収集された結果の最終的な集合を含んでよい。処理ブロック510〜524の任意のものが省略、再配列、反復などされてよいことが理解されるべきである。例えば、処理ブロック510は方法500に含まれてよいが、処理ブロック512〜524の任意のものまたは全てのものと同一のコンピューティングアーキテクチャにおける実行からは省略されてよい。
図6は、クエリ応答を提供するための方法600を示す。方法600は通常、既に説明された、装置10(図1)、計算ユニット20(図1)、計算ユニット112の任意のものまたは全てのもの(図2)、計算ユニット312の任意のものまたは全てのもの(図3)、および/または計算ユニット412の任意のものまたは全てのもの(図4)などのコンピューティングアーキテクチャにおいて実装されてよい。より具体的には、方法600は、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、プログラマブルROM(PROM)、ファームウェア、フラッシュメモリなどのような機械またはコンピュータ可読記憶媒体において、例えば、プログラマブルロジックアレイ(PLA)、フィールドプログラマブルゲートアレイ(FPGA)、コンプレックスプログラマブルロジックデバイス(CPLD)などのコンフィギュラブルロジックにおいて、例えば、特定用途向け集積回路(ASIC)、相補型金属酸化物半導体(CMOS)またはトランジスタ−トランジスタロジック(TTL)技術、またはそれらの任意の組み合わせなどの回路技術を使用する機能固定型ハードウェアロジックにおいて格納されたロジック命令セット内の1または複数のモジュールとして実装されてよい。例えば、方法600に示されるオペレーションを実行するコンピュータプログラムコードは、C#、JAVA(登録商標)、または同様のものなどのオブジェクト指向プログラミング言語を含む1または複数のプログラミング言語の任意の組み合わせで書かれてよい。
示された処理ブロック610が、(例えば、頂点において)メッセージを受信する。示された処理ブロック612が、頂点によって表されるデータのユニットTTLの値を決定する。ブロック614において、ユニットTTLが期限切れか否かの決定が下される。期限切れの場合、示された処理ブロック616はメッセージを破棄する。期限切れでない場合、示された処理ブロック618が、頂点によって表されるデータのコンテキストを決定する。ブロック620において、コンテキストが許可されるか否かの決定が下される。許可されない場合、処理ブロック616はメッセージを破棄する。許可される場合、ブロック622において、頂点によって表されるデータがメッセージのクエリを満たすか否かの決定が下される。満たす場合、示された処理ブロック624がクエリをアップデートする。満たされない場合、示された処理ブロック616がメッセージを破棄する。
ブロック626において、クエリが完了したか否かの決定が下される。完了した場合、示された処理ブロック628が、頂点によって表されるデータ含むメッセージをデータ収集器に送信する。完了していない場合、ブロック630が、メッセージ(例えば、クエリ)が隣接頂点に到達するために使用可能な時間があるか否かを決定する。使用可能な時間がない場合、処理ブロック616はメッセージを破棄する。使用可能な時間がある場合、示された処理ブロック632が、頂点とその隣接頂点とを結ぶエッジによって表されるデータのリンクTTLの値を決定する。ブロック634において、リンクTTLが期限切れか否かの決定が下される。期限切れである場合、示された処理ブロック636がエッジを破棄する。期限切れでない場合、示された処理ブロック638が、エッジに関連付けられたデータのコンテキストを決定する。
ブロック640において、コンテキストが許可されるか否かの決定が下される。許可されない場合、処理ブロック636はエッジを破棄する。許可される場合、ブロック642において、エッジによって表されるデータがクエリを満たすか否かの決定が下される。クエリを満たさない場合、処理ブロック636はクエリを破棄する。クエリを満たす場合、ブロック644において、隣接するものがメッセージ(例えば、クエリ)によって既に訪れられたか否かの決定が下される。訪れられている場合、処理ブロック636はエッジを破棄する。訪れられていない場合、処理ブロック624はクエリをアップデートする。
処理ブロック626において、クエリが完了したか否かの決定が下される。完了した場合、処理ブロック628は、エッジ(および頂点)によって表されるデータを含むメッセージをデータ収集器に送信する。完了していない場合、ブロック630は、メッセージ(例えば、クエリ)が別の隣接頂点(例えば、複数の外向きのエッジ)に到達するために使用可能な時間があるか否かを決定する。少なくともブロック630とブロック644との間のオペレーションは、必要に応じて反復されてよい。加えて、グラフの各々頂点は、ブロック610とブロック644との間のオペレーションを連続して実行してよく、および/または並列に実行してよい。しかも、処理ブロックの任意のものは、省略、再配列などされてよい。
図7は、一実施形態に係るプロセッサコア200を示す。プロセッサコア200は、コードを実行するマイクロプロセッサ、組み込みプロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、または他のデバイスなどの任意のタイプのプロセッサのコアであってよい。1つのプロセッサコア200だけが図7において示されているが、これに代えて、処理要素は、図7に示されたプロセッサコア200の1より多くのものを含んでよい。少なくとも1つの実施形態では、プロセッサコア200はシングルスレッドコアであってよく、または、プロセッサコア200は、それが、1つのコアにつき、1より多くのハードウェアスレッドコンテキスト(または「論理プロセッサ」)を含んでよいという点で、マルチスレッドであってよい。
図7はまた、プロセッサコア200に結合されたメモリ270を示す。メモリ270は、当業者にとって既知であり、またはそうでなければ当業者が入手可能な(メモリ階層の様々な層を含む)多種多様なメモリのうち任意のものであってよい。メモリ270は、プロセッサコア200によって実行される1または複数のコード213命令を含んでよい。ここで、コード213は、既に説明された方法500(図5)および/または方法600(図6)を実装してよい。プロセッサコア200は、コード213によって示される命令のプログラムシーケンスに従う。各命令は、フロントエンドポーション210に入り、1または複数のデコーダ220によって処理されてよい。デコーダ220は、その出力として、固定幅マイクロオペレーションなどのマイクロオペレーションを予め定義されたフォーマットで生成してよく、または、他の命令、マイクロ命令、または元のコード命令を反映する制御信号を生成してよい。示されたフロントエンドポーション210はまた、レジスタリネーミングロジック225およびスケジューリングロジック230を含む。それらは通常、リソースを割り当て、変換命令に対応するオペレーションを実行のためにキューに入れる。
プロセッサコア200は、実行ユニットのセット255−1から255−Nを有する実行ロジック250を含むよう示されている。いくつかの実施形態は、特定の機能または機能のセット専用のいくつかの実行ユニットを含んでよい。他の実施形態は、1つの実行ユニットだけ、または特定の機能を実行できる1つの実行ユニットを含んでよい。示された実行ロジック250は、コード命令によって指定されるオペレーションを実行する。
コード命令によって指定されるオペレーションの実行完了後、バックエンドロジック260は、コード213の命令をリタイアさせる。一実施形態において、プロセッサコア200はアウトオブオーダ実行を許可するが、命令のインオーダリタイアメントを必要とする。リタイアメントロジック265は、当業者にとって既知の様々な形態(例えば、リオーダバッファまたは同様のもの)をとり得る。このように、プロセッサコア200は、少なくとも、デコーダによって生成される出力と、レジスタリネーミングロジック225によって利用されるハードウェアレジスタおよびテーブルと、実行ロジック250によって変更されるあらゆるレジスタ(図示せず)とに関して、コード213の実行中に変換される。
図7には示されていないが、処理要素が、プロセッサコア200を有するチップ上に他の要素を含んでよい。例えば、処理要素が、プロセッサコア200と共にメモリ制御ロジックを含んでよい。処理要素は、I/O制御ロジックを含んでよく、および/または、メモリ制御ロジックと統合されたI/O制御ロジックを含んでよい。処理要素はまた、1または複数のキャッシュを含んでよい。
ここで図8を参照すると、一実施形態に係るシステム1000の実施形態のブロック図が示されている。図8に示されているのは、第1の処理要素1070および第2の処理要素1080を備えるマルチプロセッサシステム1000である。2つの処理要素1070および1080が示されているが、システム1000の一実施形態はまた、そのような処理要素を1つだけしか含まなくてもよいことが理解されるべきである。
システム1000はポイントツーポイント相互接続システムとして示されている。ここで、第1の処理要素1070および第2の処理要素1080は、ポイントツーポイント相互接続1050を介して結合される。図8に示される相互接続の任意のものまたは全てのものは、ポイントツーポイント相互接続ではなくマルチドロップバスとして実装されてよいことが理解されるべきである。
図8に示されるように、処理要素1070および1080の各々は、第1のプロセッサコアおよび第2のプロセッサコア(すなわち、プロセッサコア1074aおよび1074b、ならびにプロセッサコア1084aおよび1084b)を含むマルチコアプロセッサであってよい。そのようなコア1074a、1074b、1084a、1084bは、図7に関連して上記において説明されたものと同様の方式で命令コードを実行するよう構成されてよい。
各処理要素1070、1080は、少なくとも1つの共有キャッシュ1896a、1896b(例えば、静的ランダムアクセスメモリ/SRAM)を含んでよい。共有キャッシュ1896a、1896bは、それぞれコア1074a、1074bおよび1084a、1084bなどの、プロセッサの1または複数のコンポーネントによって利用されるデータ(例えば、オブジェクト、命令)を格納してよい。例えば、共有キャッシュ1896a、1896bは、プロセッサのコンポーネントがより高速にアクセスできるよう、メモリ1032、1034に格納されたデータをローカルにキャッシュしてよい。1または複数の実施形態において、共有キャッシュ1896a、1896bは、レベル2(L2)、レベル3(L3)、レベル4(L4)、または他のレベルのキャッシュなどの1または複数の中間レベルキャッシュ、最後レベルキャッシュ(LLC)、および/またはそれらの組み合わせを含んでよい。
2つの処理要素1070、1080だけで示されているが、実施形態の範囲はそのように限定されるものではないことが理解されるべきである。他の実施形態において、1または複数の追加の処理要素が所与のプロセッサに存在してよい。あるいは、処理要素1070、1080のうちの1または複数は、アクセラレータまたはフィールドプログラマブルゲートアレイなどの、プロセッサ以外の要素であってよい。例えば、追加の処理要素は、第1のプロセッサ1070と同一の追加のプロセッサ、第1のプロセッサ1070とは異種または非対称の追加のプロセッサ、(例えば、グラフィックスアクセラレータまたはデジタル信号処理(DSP)ユニットなどの)アクセラレータ、フィールドプログラマブルゲートアレイ、または任意の他の処理要素を含んでよい。アーキテクチャの特性、マイクロアーキテクチャの特性、熱特性、電力消費特性および同様のものを含む広範な価値基準に関して、処理要素1070と処理要素1080との間に様々な差異が存在する可能性がある。これらの差異は、処理要素1070、1080間の非対称性および異種性として効果的に現れてよい。少なくとも1つの実施形態では、様々な処理要素1070、1080は、同一ダイパッケージに存在してよい。
第1の処理要素1070はさらに、メモリコントローラロジック(MC)1072と、ポイントツーポイント(P−P)インタフェース1076および1078とを有してよい。同様に、第2の処理要素1080は、MC1082と、P−Pインタフェース1086および1088とを有してよい。図8に示されるように、MC1072および1082は、プロセッサを各メモリ、すなわち、メモリ1032とメモリ1034とに結合する。それらのメモリは、各プロセッサにローカルに取り付けられたメインメモリの一部であってよい。MC1072および1082は処理要素1070、1080の中に統合されているよう示されているが、代替的な実施形態では、MCロジックは、処理要素1070、1080に統合されているのではなく、それらの外部の別個のロジックであってよい。
第1の処理要素1070および第2の処理要素1080は、それぞれP−P相互接続1076、1086を介してI/Oサブシステム1090に結合されてよい。図8に示されるように、I/Oサブシステム1090は、P−Pインタフェース1094および1098を有する。さらに、I/Oサブシステム1090は、I/Oサブシステム1090を高性能グラフィクスエンジン1038と結合するインタフェース1092を有する。一実施形態において、グラフィクスエンジン1038をI/Oサブシステム1090に結合するためにバス1049が使用されてよい。代わりに、ポイントツーポイント相互接続がこれらのコンポーネントを結合してよい。
同様に、インタフェース1096を介してI/Oサブシステム1090が第1のバス1016に結合されてよい。一実施形態では、第1のバス1016は、ペリフェラルコンポーネントインターコネクト(PCI)バス、またはPCIエクスプレスバスもしくは別の第3世代のI/O相互接続バスなどのバスであってよいが、本実施形態の範囲はそのように限定されるものではない。
図8に示されるように、第1のバス1016を第2のバス1020に結合してよいバスブリッジ1018と共に、様々なI/Oデバイス1014(例えば、カメラ、センサ)が第1のバス1016に結合されてよい。一実施形態では、第2のバス1020は、ローピンカウント(LPC)バスであってよい。一実施形態において、例えば、キーボード/マウス1012、(次にコンピュータネットワークと通信してよい)ネットワークコントローラ/通信デバイス1026、コード1030を含んでよいディスクドライブまたは他の大容量ストレージデバイスなどのデータストレージユニット1019を含む様々なデバイスが第2のバス1020に結合されてよい。コード1030は、上述された方法のうちの1または複数の実施形態を実行するための命令を含んでよい。ゆえに、示されたコード1030は、既に説明された方法500(図5)および/または方法600(図6)を実装してよく、既に説明されたコード213(図7)と同様であってよい。さらにオーディオI/O1024が第2のバス1020に結合されてよい。
他の実施形態が企図されることに留意されたい。例えば、図8のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバス、または別のそのような通信トポロジを実装してよい。また、図8の要素は、代替的に、図8に示されたものより多いまたはより少ない統合チップを使用して分割されてよい。しかも、ネットワークコントローラ/通信デバイス1026は、同一ダイ上または同一パッケージ内のいずれにおいても、処理要素1070、1080のうちの1または複数と統合される、NIC(ネットワークインタフェースカード)としても知られるHFI(ホストファブリックインタフェース)として実装されてよい。
[補注および例]
例1は、クエリ応答を提供するシステムを含んでよい。当該システムは、クエリを満たすデータをデータ収集器に提供するインタフェース、および/または計算ユニットを備え、当該計算ユニットは、計算ユニットに到達する、クエリを含むメッセージを評価するメッセージアナライザ、計算ユニットに関連付けられたデータの生存時間(TTL)の値を決定する時間アナライザであって、TTLが期限切れのとき、計算ユニットは、データへのアクセスを拒否する、時間アナライザ、計算ユニットに関連付けられたデータがクエリを満たすか否かを決定するコンテンツアナライザ、および/または、クエリを満たす、計算ユニットに関連付けられたデータを含むクエリ応答を生成する応答生成器を有する。
例2は、例1のシステムを含んでよい。メッセージアナライザは、メッセージによる既に収集されたパスを決定するパス評価器、クエリを発行するエンティティのエンティティ識別子を決定するエンティティ評価器、および/または、クエリ識別子および/またはクエリのうちの1または複数を決定するクエリ評価器を含み、クエリは、正規表現を含む。
例3は、例1から2のいずれか1つのシステムを含んでよい。時間アナライザは、隣接計算ユニットに到達するよう、クエリおよび/またはメッセージを計算ユニットのうち1または複数が処理するために使用可能な時間があるか否かを決定する使用可能時間評価器、計算ユニットによって表されるデータのユニットTTLの値を決定するユニットTTL評価器、計算ユニットと隣接計算ユニットとを結ぶリンクによって表されるデータのリンクTTLの値を決定するリンクTTL評価器、および/または、特定のパス内の全ての計算ユニットおよび/または特定のパス内の全ての計算ユニットを結ぶ全てのリンクのうちの1または複数によって表されるデータのパスTTLの値を決定するパスTTL評価器を含む。
例4は、例1から3のいずれか1つのシステムを含んでよい。当該システムはさらに、計算ユニットによって表されるデータのコンテキストを決定するユニットコンテキスト評価器、計算ユニットと隣接計算ユニットとを結ぶリンクによって表されるデータのコンテキストを決定するリンクコンテキスト評価器、および/または、特定のパス内の全ての計算ユニットおよび/または特定のパス内の全ての計算ユニットを結ぶ全てのリンクのうちの1または複数によって表されるデータのコンテキストを決定するパスコンテキスト評価器を含むコンテキストアナライザを備える。
例5は、例1から4のいずれか1つのシステムを含んでよい。コンテンツアナライザはさらに、計算ユニットに関連付けられたデータがクエリに適合するか否かを決定するデータマッチャ、および/または、計算ユニットに関連付けられたデータの重み値を決定する重みアナライザを含む。
例6は、例1から5のいずれか1つのシステムを含んでよい。当該システムはさらに、隣接計算ユニットがクエリ応答のためのデータを提供するか否かを決定する隣接アナライザであって、隣接計算ユニットがクエリ応答のためのデータを提供するとき、計算ユニットは、計算ユニットを隣接計算ユニットと結ぶリンクへのアクセスを拒否する、隣接アナライザを備える。
例7は、例1から6のいずれか1つのシステムを含んでよい。当該システムはさらに、知識ベースを、2またはそれより多くの計算ユニットを結ぶリンクを含むグラフとして表すデータモデラであって、グラフ内の2またはそれより多くの計算ユニットの各々は、個別に計算する、データモデラを備える。
例8は、クエリ応答を提供する装置を含んでよい。当該装置は、計算ユニットに関連付けられたデータの生存時間(TTL)の値を決定する時間アナライザであって、TTLが期限切れのとき、計算ユニットはデータへのアクセスを拒否する、時間アナライザ、計算ユニットに関連付けられたデータがクエリを満たすか否かを決定するコンテンツアナライザ、および/または、クエリを満たす、計算ユニットに関連付けられたデータを含むクエリ応答を生成する応答生成器を備える。
例9は、例8の装置を含んでよい。当該装置はさらに、計算ユニットに到達する、クエリを含むメッセージを評価するメッセージアナライザであって、メッセージによって既に収集されたパスを決定するパス評価器、クエリを発行するエンティティのエンティティ識別子を決定するエンティティ評価器、および/またはクエリ識別子および/またはクエリのうちの1または複数を決定するクエリ評価器を有するメッセージアナライザを備える。
例10は、例8から9のいずれか1つの装置を含んでよい。時間アナライザは、隣接計算ユニットに到達するよう、クエリおよび/またはメッセージを計算ユニットのうちの1または複数が処理するために使用可能な時間があるか否かを決定する使用可能時間評価器を有する。
例11は、例8から10のいずれか1つの装置を含んでよい。時間アナライザは、計算ユニットによって表されるデータのユニットTTLの値を決定するユニットTTL評価器、計算ユニットと隣接計算ユニットとを結ぶリンクによって表されるデータのリンクTTLの値を決定するリンクTTL評価器、および/または、特定のパス内の全ての計算ユニットおよび/または特定のパス内の全ての計算ユニットを結ぶ全てのリンクのうちの1または複数によって表されるデータのパスTTLの値を決定するパスTTL評価器を含む。
例12は、例8から11のいずれか1つの装置を含んでよい。当該装置はさらに、計算ユニットによって表されるデータのコンテキストを決定するユニットコンテキスト評価器、計算ユニットと隣接計算ユニットとを結ぶリンクによって表されるデータのコンテキストを決定するリンクコンテキスト評価器、および/または、特定のパス内の全ての計算ユニットおよび/または特定のパス内の全ての計算ユニットを結ぶ全てのリンクのうちの1または複数によって表されるデータのコンテキストを決定するパスコンテキスト評価器を含むコンテキストアナライザを備える。
例13は、例8から12のいずれか1つの装置を含んでよい。コンテンツアナライザはさらに、計算ユニットに関連付けられたデータがクエリに適合するか否かを決定するデータマッチャ、および/または、計算ユニットに関連付けられたデータの重み値を決定する重みアナライザを有する。
例14は、例8から13のいずれか1つの装置を含んでよい。当該装置はさらに、隣接計算ユニットがクエリ応答のためのデータを提供するか否かを決定する隣接アナライザを備える。
例15は、例8から14のいずれか1つの装置を含んでよい。当該装置はさらに、知識ベースを、2またはそれより多くの計算ユニットを結ぶリンクを含むグラフとして表すデータモデラを備える。
例16は、クエリ応答を提供するための方法を含んでよい。当該方法は、計算ユニットに関連付けられたデータの生存時間(TTL)の値を決定する段階であって、TTLが期限切れのとき、計算ユニットは、データへのアクセスを拒否する、段階、計算ユニットに関連付けられたデータがクエリを満たすか否かを決定する段階、および/または、クエリを満たす、計算ユニットに関連付けられたデータを含むクエリ応答を生成する段階を備える。
例17は、例16の方法を含んでよい。当該方法はさらに、計算ユニットに到達する、クエリを含むメッセージを評価する段階、メッセージによって既に収集されたパスを決定する段階、クエリを発行するエンティティのエンティティ識別子を決定する段階、および/または、クエリ識別子および/またはクエリのうちの1または複数を決定する段階を備える。
例18は、例16から17のいずれか1つの方法を含んでよい。当該方法はさらに、計算ユニットがクエリを処理するために使用可能な時間があるか否かを決定する段階、および/または、メッセージが隣接計算ユニットに到達するために使用可能な時間があるか否かを決定する段階を備える。
例19は、例16から18のいずれか1つの方法を含んでよい。当該方法はさらに、計算ユニットによって表されるデータのユニットTTLの値を決定する段階、計算ユニットと隣接計算ユニットとを結ぶリンクによって表されるデータのリンクTTLの値を決定する段階、および/または、特定のパス内の全ての計算ユニットおよび/または特定のパス内の全ての計算ユニットを結ぶ全てのリンクのうちの1または複数によって表されるデータのパスTTLの値を決定する段階を備える。
例20は、例16から19のいずれか1つの方法を含んでよい。当該方法はさらに、計算ユニットによって表されるデータのコンテキストを決定する段階、計算ユニットと隣接計算ユニットとを結ぶリンクによって表されるデータのコンテキストを決定する段階、および/または、特定のパス内の全ての計算ユニットおよび/または特定のパス内の全ての計算ユニットを結ぶ全てリンクのうちの1または複数によって表されるデータのコンテキストを決定する段階を備える。
例21は、例16から20のいずれか1つの方法を含んでよい。当該方法はさらに、計算ユニットに関連付けられたデータがクエリに適合するか否かを決定する段階、および/または、計算ユニットに関連付けられたデータの重み値を決定する段階を備える。
例22は、例16から21のいずれか1つの方法を含んでよい。当該方法はさらに、隣接計算ユニットがクエリ応答のためのデータを提供するか否かを決定する段階を備える。
例23は、例16から22のいずれか1つの方法を含んでよい。当該方法はさらに、知識ベースを、2またはそれより多くの計算ユニットを結ぶリンクを含むグラフとして表す段階を備える。
例24が、デバイスによって実行されたとき、デバイスに、計算ユニットに関連付けられたデータの生存時間(TTL)の値を決定させ、計算ユニットに関連付けられたデータがクエリを満たすか否かを決定させ、および/または、クエリを満たす、計算ユニットに関連付けられたデータを含むクエリ応答を生成させる命令セットを備える少なくとも1つのコンピュータ可読記憶媒体を含んでよい。計算ユニットは、TTLが期限切れのとき、データへのアクセスを拒否する。
例25が、例24の少なくとも1つのコンピュータ可読記憶媒体を含んでよい。当該命令は、実行されたとき、デバイスに、計算ユニットに到達する、クエリを含むメッセージを評価させ、メッセージによって既に収集されたパスを決定させ、クエリを発行するエンティティのエンティティ識別子を決定させ、および/または、クエリ識別子および/またはクエリのうちの1または複数を決定させる。
例26が、例24から25のいずれか1つの少なくとも1つのコンピュータ可読記憶媒体を含んでよい。当該命令は、実行されたとき、デバイスに、計算ユニットがクエリを処理するために使用可能な時間があるか否かを決定させ、および/または、メッセージが隣接計算ユニットに到達するために使用可能な時間があるか否かを決定させる。
例27が、例24から26のいずれか1つの少なくとも1つのコンピュータ可読記憶媒体を含んでよい。当該命令は、実行されたとき、デバイスに、計算ユニットによって表されるデータのユニットTTLの値を決定させ、計算ユニットと隣接計算ユニットとを結ぶリンクによって表されるデータのリンクTTLの値を決定させ、および/または、特定のパス内の全ての計算ユニットおよび/または特定のパス内の全ての計算ユニットを結ぶ全てのリンクのうちの1または複数によって表されるデータのパスTTLの値を決定させる。
例28が、例24から27のいずれか1つの少なくとも1つのコンピュータ可読記憶媒体を含んでよい。当該命令は、実行されたとき、デバイスに、計算ユニットによって表されるデータのコンテキストを決定させ、計算ユニットと隣接計算ユニットとを結ぶリンクによって表されるデータのコンテキストを決定させ、および/または、特定のパス内の全ての計算ユニットおよび/または特定のパス内の全ての計算ユニットを結ぶ全てのリンクのうちの1または複数によって表されるデータのコンテキストを決定させる。
例29が、例24から28のいずれか1つの少なくとも1つのコンピュータ可読記憶媒体を含んでよい。当該命令は、実行されたとき、デバイスに、計算ユニットに関連付けられたデータがクエリに適合するか否かを決定させ、および/または、計算ユニットに関連付けられたデータの重み値を決定させる。
例30が、例24から29のいずれか1つの少なくとも1つのコンピュータ可読記憶媒体を含んでよい。当該命令は、実行されたとき、デバイスに、隣接計算ユニットがクエリ応答のためのデータを提供するか否かを決定させる。
例31が、例24から30のいずれか1つの少なくとも1つのコンピュータ可読記憶媒体を含んでよい。当該命令は、実行されたとき、デバイスに、知識ベースを、2またはそれより多くの計算ユニットを結ぶリンクを含むグラフとして表させる。
例32が、クエリ応答を提供する装置を含んでよい。当該装置は、計算ユニットに関連付けられたデータの生存時間(TTL)の値を決定するための手段であって、計算ユニットは、TTLが期限切れのとき、データへのアクセスを拒否する、手段、計算ユニットに関連付けられたデータがクエリを満たすか否かを決定するための手段、および/または、クエリを満たす、計算ユニットに関連付けられたデータを含むクエリ応答を生成するための手段を備える。
例33が、例32の装置を含んでよい。当該装置はさらに、計算ユニットに到達する、クエリを含むメッセージを評価するための手段、メッセージによって既に収集されたパスを決定するための手段、クエリを発行するエンティティのエンティティ識別子を決定するための手段、および/または、クエリ識別子および/またはクエリのうちの1または複数を決定するための手段を備える。
例34が、例32から33のいずれか1つの装置を含んでよい。当該装置はさらに、計算ユニットがクエリを処理するために使用可能な時間があるか否かを決定するための手段、および/または、メッセージが隣接計算ユニットに到達するために使用可能な時間があるか否かを決定するための手段を備える。
例35が、例32から34のいずれか1つの装置を含んでよい。当該装置はさらに、計算ユニットによって表されるデータのユニットTTLの値を決定するための手段、計算ユニットと隣接計算ユニットとを結ぶリンクによって表されるデータのリンクTTLの値を決定するための手段、および/または、特定のパス内の全ての計算ユニットおよび/または特定のパス内の全ての計算ユニットを結ぶ全てのリンクのうちの1または複数によって表されるデータのパスTTLの値を決定するための手段を備える。
例36が、例32から35のいずれか1つの装置を含んでよい。当該装置はさらに、計算ユニットによって表されるデータのコンテキストを決定するための手段、計算ユニットと隣接計算ユニットとを結ぶリンクによって表されるデータのコンテキストを決定するための手段、および/または、特定のパス内の全ての計算ユニットおよび/または特定のパス内の全ての計算ユニットを結ぶ全てのリンクのうちの1または複数によって表されるデータのコンテキストを決定するための手段を備える。
例37が、例32から36のいずれか1つの装置を含んでよい。当該装置はさらに、計算ユニットに関連付けられたデータがクエリに適合するか否かを決定するための手段、および/または、計算ユニットに関連付けられたデータの重み値を決定するための手段を備える。
例38が、例32から37のいずれか1つの装置を含んでよい。当該装置はさらに、隣接計算ユニットがクエリ応答のためのデータを提供するか否かを決定するための手段を備える。
例39が、例32から38のいずれか1つの装置を含んでよい。当該装置はさらに、知識ベースを、2またはそれより多くの計算ユニットを結ぶリンクを含むグラフとして表すための手段を備える。
ゆえに、本明細書において説明された技術は、エフェメラルデータに基づいてクエリ応答を提供してよい。一例において、クエリ応答がコンテクスチュアルエフェメラルデータに基づいていてよい。その結果、効率的なリソース利用を提供してクエリ応答を提供すべく、グラフが利用されてよい。例えば、同時にクエリ応答を計算し、エフェメラルデータを処理しながら、スケーラビリティを提供すべく、グラフ内のある頂点がステートレスであってよく、その位置がグラフ内の別の頂点に対してトランスペアレントであってよい。実際は、本明細書において説明された技術は、タイムスタンプおよびデータ管理を処理すべく、分散アーキテクチャを提供してよい。しかも、本明細書において説明された技術は、コンテキストを考慮してよく、それによって、データへのアクセスは、タイムスタンプのみに基づくものでなくてよい。
実施形態は、全てのタイプの半導体集積回路(「IC」)チップでの使用に適用可能である。これらのICチップの例として、限定はされないが、プロセッサ、コントローラ、チップセットコンポーネント、プログラマブルロジックアレイ(PLA)、メモリチップ、ネットワークチップ、システムオンチップ(SoC)、SSD/NANDコントローラASIC、および同様のものが挙げられる。加えて、図面のいくつかにおいて、信号導線が線で表されている。線によっては、より多くの成分信号パスを示すべく異なっていてよく、いくつかの成分信号パスを示すべく番号ラベルを有していてよく、および/または、主要情報の流れ方向を示すべく1または複数の端部に矢印を有していてよい。しかしながら、このことは限定的に解釈されるべきではない。むしろ、回路の理解をより容易にすべく、そのような追加の詳細は、1または複数の例示的な実施形態に関連して使用されてよい。追加の情報を有すか否かにかかわらず、表されたあらゆる信号線は実際には、複数の方向に移動してよい1または複数の信号を含んでよく、例えば、差動ペアで実装されるデジタル線またはアナログ線、光ファイバ線、および/または、シングルエンド線といったあらゆる好適なタイプの信号方式で実装されてよい。
例示的な大きさ/モデル/値/範囲が与えられている場合があるが、実施形態はそれらに限定されるものではない。時とともに製造技術(例えば、フォトリソグラフィ)が成熟するにつれ、より小型のデバイスが製造され得ることが予期される。加えて、例示および説明を簡潔にするために、および、実施形態の特定の態様を不明瞭にしないように、ICチップおよび他のコンポーネントへの周知の電源/グラウンド接続が図内に示されていても、示されていなくてもよい。さらに、実施形態を不明瞭にすることを回避すべく、また、そのようなブロック図構成の実装に関する詳細は、実施形態が実装されるプラットフォームに大きく依存する、すなわち、そのような詳細は十分に当業者の範囲内であるべきという事実を考慮して、構成がブロック図形態で示されてよい。例示的な実施形態を説明すべく具体的な詳細(例えば、回路)が記載される場合、これらの具体的な詳細なしで、またはこれらの具体的な詳細の変形によって、実施形態が実施され得ることが当業者には明らかであるべきである。ゆえに、説明は、限定的ではなく例示的なものとみなされるべきである。
「結合」という用語は、対象のコンポーネント間の任意のタイプの直接的または間接的関係、を指すために本明細書において使用されてよく、電気的、機械的、流体的、光学的、電磁的、電子機械的、または他の接続に適用されてよい。加えて、「第1」、「第2」などの用語は、説明を容易にするためだけに本明細書において使用されてよく、別段の指示がない限り、何ら特定の一時的または経時的な意味を含まない。
本願および特許請求の範囲において使用される場合、「のうちの1または複数」という用語によって結ばれた項目の列挙は、列挙された用語の任意の組み合わせを意味してよい。例えば、「A、B、またはCのうちの1または複数」という文言は、A;B;C;AおよびB;AおよびC;BおよびC;またはA、B、およびCを意味してよい。加えて、「など(and so on)」または「など(etc.)」と言う用語によって結ばれた項目の列挙は、列挙された用語の任意の組み合わせも、他の用語との任意の組み合わせも意味してよい。
当業者ならば、前述の説明から、実施形態の幅広い技術が様々な形態で実装され得ることを理解するであろう。したがって、実施形態はそれらの特定の例に関連して説明されてきたが、実施形態の真の範囲はそのように限定されるべきではない。なぜなら、図面、明細書、および以下の特許請求の範囲を研究すれば、当業者には他の変更形態が明らかになるからである。