(57)【特許請求の範囲】
【請求項１】
連想メモリシステムであって、
連想メモリネットワーク（１０１３、１０１５）のネットワーク（１０１２、１０１４）からなるネットワークを含む分散連想メモリベースであって、それぞれの連想メモリネットワーク（１０１３、１０１５）は、それぞれの観察者メモリ及び該それぞれの観察者メモリによって観察される複数の被観察メモリの間の連想を含み、前記連想メモリネットワーク（１０１３、１０１５）のうちのいくつかは、該連想メモリネットワーク（１０１３、１０１５）のうちの他のいくつかから物理的かつ／又は論理的に独立している、分散連想メモリベースと、
前記連想メモリネットワーク（１０１３、１０１５）内の１つ又は複数のマトリックスにおける複数の行のうちの個々の行にそれぞれ対応する複数のストリーミングキューを用いて、前記分散連想メモリベースへの連想を観察し、かつ該分散連想メモリベースからの連想を想起するように構成された処理システムと、
を備える、連想メモリシステム。
【請求項２】
前記複数のストリーミングキューのうちのいくつかは、前記連想メモリネットワーク（１０１３、１０１５）内の複数の物理メモリロケーションのうちの１つに対応する、請求項１に記載の連想メモリシステム。
【請求項３】
前記処理システムは、ユーザから受信された「意味空間に基づくクエリ」を、「物理空間に基づくクエリ」に変換するように構成されたクエリマップを更に備え、前記「物理空間に基づくクエリ」は、前記連想メモリネットワーク（１０１３、１０１５）内の複数の物理メモリロケーションに対応する複数の「行に基づく識別子」として表され、かつ前記複数のストリーミングキューのうちの少なくとも１つに含まれる、請求項１に記載の連想メモリシステム。
【請求項４】
前記連想メモリネットワーク（１０１３、１０１５）の物理表現に対応するクエリ用語を提供するために、前記「意味空間に基づくクエリ」に対応する分類学的意味を推定するための、前記クエリマップによってアクセスされるように構成されたオントロジを更に備える、請求項３に記載の連想メモリシステム。
【請求項５】
前記クエリマップは、前記「意味空間に基づくクエリ」及び／又は前記「物理空間に基づくクエリ」内の複数のクエリ用語のうちの異なるいくつかに対応する複数のマッピングポリシーのうちの少なくとも１つを含み、
前記複数のマッピングポリシーは、ランク及び／又は近時性を含むポリシーを定義し、
前記クエリマップは、該ランクポリシー及び／又は該近時性ポリシーに対応して、前記「物理空間に基づくクエリ」を変更するように更に構成される、
請求項３に記載の連想メモリシステム。
【請求項６】
前記クエリマップは、前記「意味空間に基づくクエリ」及び／又は前記「物理空間に基づくクエリ」内の複数のクエリ用語の１つ又は複数の異形を識別し、かつ該１つ又は複数の異形を含むよう前記「物理空間に基づくクエリ」を拡張するように更に構成され、
前記１つ又は複数の異形は、前記複数のクエリ用語のうちのいくつかに対応する同義語、別名及び／又は頭字語を含む、
請求項３に記載の連想メモリシステム。
【請求項７】
前記処理システムは複数のカウントサーバノードを更に備え、該複数のカウントサーバノードは、前記複数のストリーミングキューからの要求を受信し、かつ該受信した要求に応じて前記分散連想メモリベース内の連想に対応するカウントデータを提供するように構成される、請求項１に記載の連想メモリシステム。
【請求項８】
前記処理システムは、複数のアトムテーブルを更に備え、該複数のアトムテーブルは、前記複数のカウントサーバノードのうちの１つによって受信された前記複数のストリーミングキューのうちの１つにおける「物理空間に基づくクエリ」を受信することに応じて、マトリックスの行識別情報を提供するように構成され、
前記複数のアトムテーブルは、前記連想メモリネットワーク（１０１３、１０１５）から返された結果を「物理空間に基づくクエリ」に関連付ける逆検索データを提供するように更に構成される、
請求項７に記載の連想メモリシステム。
【請求項９】
前記分散連想メモリベースにおける前記連想に対応するカウントデータを受信し、かつ該カウントデータを「意味空間に基づく名前空間」と再合成して結果をユーザに提供するように構成された結果コントローラを更に備える、請求項１に記載の連想メモリシステム。
【請求項１０】
前記結果コントローラは、前記複数のストリーミングキューのうちのいくつかに対応する未処理のカウントデータを累積して、複数の「物理空間に基づくクエリ用語」のうちの関係したクエリ用語及び対応する未処理のカウントデータを、クエリマップによってアクセスされたオントロジを用いてコラプスし、コラプスした「物理空間に基づくクエリ用語」のカウントデータを順位付けし、かつ「物理空間に基づく結果」を「意味空間に基づく結果」に変換するように更に構成される、請求項９に記載の連想メモリシステム。
【請求項１１】
分散連想メモリベースにクエリする方法であって、
ユーザから受信された「意味空間に基づくクエリ」を、前記分散連想メモリベース内の複数の連想メモリネットワークのうちの少なくとも１つにおける複数の物理メモリロケーションに対応する複数の「行に基づく識別子」として表された「物理空間に基づくクエリ」に変換するステップと、
前記複数の「行に基づく識別子」に対応する複数のクエリキューを生成するステップと、
前記複数のクエリキューを、前記複数の連想メモリネットワークに対応する複数のカウントサーバノードにストリーミングするステップと、
前記複数のカウントサーバノードから前記複数のクエリキューに応じたカウント情報を求めるステップと、
前記複数のカウントサーバノードからの前記カウント情報を、前記「意味空間に基づくクエリ」に応じた「意味空間に基づく結果情報」に変換するステップと、
を含む、方法。
【請求項１２】
前記「意味空間に基づくクエリ」を変換するステップは、
前記「意味空間に基づくクエリ」内のクエリ用語ごとに、該クエリ用語の異形と該クエリ用語とを含むように該クエリ用語を拡張するステップと、
前記「意味空間に基づくクエリ」内のクエリ用語ごとに、該クエリ用語に対応する分類学用語を含む分類学マップが存在するか否かを判断するステップと、
前記分類学マップが存在する場合、前記分類学用語及び前記クエリ用語を含むように該クエリ用語を拡張するステップと、
を含む、請求項１１に記載の方法。
【請求項１３】
前記複数の「行に基づく識別子」に対応する複数のクエリキューを生成するステップは、該複数の「行に基づく識別子」のそれぞれについて、キューリソースをバインドして行キューを定義することを含み、該キューリソースは、「行に基づく識別子」にバインドされるのに利用可能な複数のキューリソースのうちの１つを含む、請求項１１に記載の方法。
【請求項１４】
前記複数のクエリキューを、前記複数の連想メモリネットワークに対応する複数のカウントサーバノードにストリーミングするステップは、前記複数のクエリキューのうちの１つ又は複数を複数のノードリーダのうちの対応する１つにマッピングすることを含み、該複数のノードリーダのそれぞれは、前記複数のカウントサーバノードのうちの個々の１つに対応する、請求項１１に記載の方法。
【請求項１５】
前記複数のノードリーダのうちのいくつかは、それぞれのカウントサーバノードに対し、前記複数のクエリキューのうちのいくつかに対応するバッチ要求を実行するように構成される、請求項１４に記載の方法。
【請求項１６】
前記複数のクエリキューを、前記複数の連想メモリネットワークに対応する複数のカウントサーバノードにストリーミングするステップは、前記複数のクエリキューと複数のノードリーダとの間の多対多の対応において、前記複数のクエリキューを複数のノードリーダにマッピングすることを含む、請求項１１に記載の方法。
【請求項１７】
前記複数のカウントサーバノードから前記複数のクエリキューに応じたカウント情報を求めるステップは、複数のクエリ用語のうちのいくつかについて、マトリックスアドレスデータに対応するマトリックス識別子値を求めるステップを含む、請求項１１に記載の方法。
【請求項１８】
前記複数のクエリ用語のうちのいくつかについて、マトリックスアドレスデータに対応するマトリックス識別子値を求めるステップは、
複数のアトムテーブルノードのうちのどれが前記マトリックス識別子値を含むのかを判断するためのアトムテーブル識別データを求めることと、
前記複数のクエリ用語のうちのいくつかに対応するそれぞれの識別データを求めることと、
前記それぞれの識別データを前記マトリックス識別子値に変換することと、
を含む、請求項１７に記載の方法。
【請求項１９】
前記アトムテーブル識別データを求めることは、検索オペレーションを用いて実行される、請求項１８に記載の方法。
【請求項２０】
前記アトムテーブル識別データを求めることは、計算方法を用いて実行される、請求項１８に記載の方法。
【請求項２１】
前記マトリックス識別子値に対応する符号化されたマトリックスのルートページのルートページアドレスを検索するステップを更に含み、該ルートページは、前記符号化されたマトリックスの符号化タイプを識別するマトリックスタイプ値を含む、請求項１８に記載の方法。
【請求項２２】
前記複数のカウントサーバノードからの前記カウント情報を、前記「意味空間に基づくクエリ」に応じた「意味空間に基づく結果情報」に変換するステップは、
前記複数のクエリキューからの未処理のカウントデータを累積するステップと、
前に拡張された異形及び分類学用語並びに前記「物理空間に基づくクエリ」内の各クエリ用語のそれぞれのカウントをコラプスするステップと、
コラプスしたクエリ用語を順位付けして、カウントデータの相対的な値に対応する互いに対する前記クエリ用語の関連性情報を提供するステップと、
「物理空間に基づくクエリ用語」を「意味空間に基づくクエリ用語」に変換するステップと、
を含む、請求項１１に記載の方法。
【請求項２３】
コンピュータ可読プログラムコードがコンピュータ使用可能ストレージ媒体に実施されたコンピュータプログラムであって、前記コンピュータ可読プログラムコードは、請求項１に記載の分散連想メモリベース及び／又は処理システムを提供するように構成されたコンピュータ可読プログラムコードを含む、コンピュータプログラム。
【請求項２４】
分散連想メモリベースを用いる方法であって、
複数の分散連想メモリネットワークのうちの少なくとも１つにおける複数の物理メモリロケーションの複数の「行に基づく識別子」として表される「物理空間に基づくクエリ」に対応する複数のストリーミングクエリキューを生成するステップと、
前記複数の分散連想メモリネットワークに対応する複数のカウントサーバノードからカウント情報を受信するように動作可能な複数のノードリーダに前記複数のストリーミングクエリキューのうちのいくつかをマッピングするステップと、
受信したカウント情報を前記複数のストリーミングクエリキューのうちの対応するいくつかに逆マッピングするステップと、
を含む、分散連想メモリベースを用いる方法。
【請求項２５】
連想メモリ方法であって、
分散連想メモリベースを設けるステップであって、
該分散連想メモリベースは連想メモリネットワーク（１０１３、１０１５）のネットワーク（１０１２、１０１４）を含み、それぞれの連想メモリネットワーク（１０１３、１０１５）は、それぞれの観察者エンティティ及び該それぞれの観察者エンティティによって観察される複数の被観察エンティティの間の連想を含み、前記連想メモリネットワーク（１０１３、１０１５）のうちのいくつかは、前記連想メモリネットワーク（１０１３、１０１５）のうちの他のいくつかから物理的かつ／又は論理的に独立している、前記分散連想メモリベースを設けるステップと、
前記連想メモリネットワーク（１０１３、１０１５）のうちのいくつかにおける１つ又は複数のマトリックス内の複数の行のうちの個々の行にそれぞれ対応する複数のストリーミングキューを用いて前記分散連想メモリベースから連想を想起するステップと、
を含む、連想メモリ方法。
【請求項２６】
前記分散連想メモリベースから連想を想起するステップは、
ユーザから受信された「意味空間に基づくクエリ」を、前記分散連想メモリベース内の連想メモリネットワーク（１０１３、１０１５）のうちの少なくとも１つにおける１つ又は複数のマトリックス内の複数の物理メモリロケーションに対応する複数の「行に基づく識別子」として表された「物理空間に基づくクエリ」に変換することと、
前記複数の「行に基づく識別子」に対応する前記複数のストリーミングキューを生成することと、
を含む、請求項２５に記載の連想メモリ方法。
【請求項２７】
前記分散連想メモリベースから連想を想起するステップは、前記分散連想メモリベース内の個々の連想メモリネットワーク（１０１３、１０１５）にそれぞれ対応する複数のカウントサーバノードから前記複数のストリーミングキューに応じたカウント情報を求めることを含む、請求項２５に記載の連想メモリ方法。
【請求項２８】
前記分散連想メモリベースから連想を想起するステップは、前記複数のカウントサーバノードからの連想カウント情報を、ユーザから受信された「意味空間に基づくクエリ」に応じた「意味空間に基づく結果情報」に変換することを含む、請求項２７に記載の連想メモリ方法。
【請求項２９】
連想メモリシステムにおけるデータ符号化方法であって、
前記連想メモリシステムは、
連想メモリネットワーク（１０１３、１０１５）のネットワーク（１０１２、１０１４）からなるネットワークを含む分散連想メモリベースであって、それぞれの連想メモリネットワーク（１０１３、１０１５）は、それぞれの観察者メモリ及び該それぞれの観察者メモリによって観察される複数の被観察メモリの間の連想を含み、前記連想メモリネットワーク（１０１３、１０１５）のうちのいくつかは、該連想メモリネットワーク（１０１３、１０１５）のうちの他のいくつかから物理的かつ／又は論理的に独立している、分散連想メモリベースと、
前記連想メモリネットワーク（１０１３、１０１５）内の１つ又は複数のマトリックスにおける複数の行のうちの個々の行にそれぞれ対応する複数のストリーミングキューを用いて、前記分散連想メモリベースへの連想を観察し、かつ該分散連想メモリベースからの連想を想起するように構成された処理システムと、
行識別子値及び列識別子値によって識別される非ゼロのデータのロケーションを含む大規模スパースマトリックスと、
を備え、
前記データ符号化方法は、
同じデータ値をそれぞれ有する複数のデータ値のランをデータ値及びカウントとして格納するために、ランレングス符号化を用いて前記大規模スパースマトリックス内のデータのロケーションのスパンを符号化するステップと、
同じデータ値をそれぞれ有する複数のデータ値のうちの少なくとも１つのランに隣接する可変長整数値を圧縮するために、無限整数符号化を用いて非ゼロのデータ値のうちのいくつかを符号化するステップと、
を含むデータ符号化方法。
【請求項３０】
前記ランレングス符号化を用いて前記大規模スパースマトリックス内のデータのロケーションのスパンを符号化するステップは、
固定長の符号化されたマトリックスインデックスワードを読み取るステップと、
所与の行識別子値について、少なくとも１つの固定長の符号化されたマトリックスインデックスワード内に、符号化されたオフセット値を提供することによって、ゼロの値を有する絶え間なく連続したビットをインデックス付けするステップと、
を含む、請求項２９に記載のデータ符号化方法。
【請求項３１】
前記無限整数符号化を用いて非ゼロのデータ値のうちのいくつかを符号化するステップは、
少なくとも１つの固定長の符号化されたマトリックスワードから可変ワード長の非ゼロのデータ値を読み取るステップと、
可変ワード長の非ゼロのデータ値を対応する列識別子値に関連付けるステップと、
を含む、請求項２９に記載のデータ符号化方法。
【請求項３２】
連想メモリシステムにおけるデータ符号化方法であって、
前記連想メモリシステムは、
連想メモリネットワーク（１０１３、１０１５）のネットワーク（１０１２、１０１４）からなるネットワークを含む分散連想メモリベースであって、それぞれの連想メモリネットワーク（１０１３、１０１５）は、それぞれの観察者メモリ及び該それぞれの観察者メモリによって観察される複数の被観察メモリの間の連想を含み、前記連想メモリネットワーク（１０１３、１０１５）のうちのいくつかは、該連想メモリネットワーク（１０１３、１０１５）のうちの他のいくつかから物理的かつ／又は論理的に独立している、分散連想メモリベースと、
前記連想メモリネットワーク（１０１３、１０１５）内の１つ又は複数のマトリックスにおける複数の行のうちの個々の行にそれぞれ対応する複数のストリーミングキューを用いて、前記分散連想メモリベースへの連想を観察し、かつ該分散連想メモリベースからの連想を想起するように構成された処理システムと、
行識別子値及び列識別子値によって識別される非ゼロのデータのロケーションを含む大規模スパースマトリックスと、
を備え、
前記データ符号化方法は、
固定長の符号化されたマトリックスインデックスワードを読み取るステップと、
前記大規模スパースマトリックス内の所与の行について、少なくとも１つの固定長の符号化されたマトリックスインデックスワード内に、符号化されたインデックスオフセット値を与えることによって、ゼロの値を有する絶え間なく連続したビットをインデックス付けするステップと、
少なくとも１つの固定長の符号化されたマトリックスインデックスワードから可変ワード長の非ゼロのデータ値を読み取るステップと、
可変ワード長の非ゼロのデータ値を対応する列識別子に関連付けるステップと、
を含むデータ符号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願）
本願の非仮特許出願は、２００９年６月２日に出願された米国仮出願第６１／１７６，２８２号の優先権を主張する。この米国仮出願は、その開示内容を参照することにより、本明細書に完全に説明されているかのごとく本明細書の一部をなすものとする。
【０００２】
本発明は、知識管理システム、方法、及びコンピュータプログラム製品に関し、より詳細には、連想メモリシステム、方法、及びコンピュータプログラム製品に関する。
【背景技術】
【０００３】
連想メモリは、内容アドレス指定可能メモリとも呼ばれ、パターンマッチング及びパターン識別、エキスパートシステム、並びに人工知能の分野で広く用いられている。広く用いられている連想メモリは、ホップフィールド人工ニューラルネットワークである。ホップフィールド人工ニューラルネットワークは、例えば、「Electronic Network for Collective Decision Based on Large Number of Connections Between Signals」と題する、Hopfieldに対する米国特許第４，６６０，１６６号に記載されている。
【０００４】
連想メモリは、従来のバックプロパゲーションネットワークにおける問題を回避することができるが、連想メモリは、スケーリングメモリ及びスプリアス（spurious）メモリの問題を呈するおそれがある。連想メモリにおいて最近行われている改良では、これらの問題及び他の問題を解決する試みがなされてきた。例えば、「Artificial Neural Networks Including Boolean-Complete Compartments」と題する、共同発明者Aparicio IVその他に対する米国特許第６，０５２，６７９号は、複数の人工ニューロン及び複数のブールコンプリートコンパートメントを提供する。これらのそれぞれ１つはそれぞれ１対の人工ニューロンを結合する。ブールコンプリートコンパートメントを提供することによって、スプリアス補足メモリ（spurious complement memory）を回避することができる。
【０００５】
残念なことに、連想メモリを用いて実世界の問題を解決することを制限する可能性のある根本的な規模増大問題が存在する。詳細には、多くの連想メモリは、入力の数の関数として幾何級数的に増大する。この幾何級数的な規模増大は、そのような技術を正当化する複雑度の規模で用途をサポートするには理に合わない場合がある。連想メモリにおける規模増大は、「Artificial Neurons Including Power Series of Weights and Counts That Represent Prior and Next Associations」と題する、共同発明者Aparicio, IVその他に対する米国特許第６，５８１，０４９号で対処されている。この米国特許は、本発明の譲受人に譲渡され、その開示内容を参照することにより、本明細書に完全に説明されているかのごとく本明細書の一部をなすものとする。米国特許第６，５８１，０４９号に説明されているように、人工ニューロンは、複数の入力及び複数の樹状突起を含む。これらの樹状突起のうちのそれぞれ１つは、複数の入力のうちのそれぞれ１つに関連付けられている。各樹状突起は重みの冪級数を含み、冪級数内の各重みは、関連付けられた冪の関連付けられたカウントを含む。重みを冪級数として表すことによって、従来の人工ニューロンにおける入力の関数としての幾何級数的な規模増大を、入力の関数としての線形の規模増大に低減することができる。実世界のシステムを用いて多数の入力を扱うことができ、それによって実世界の応用を解くことができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第４，６６０，１６６号
【特許文献２】米国特許第６，０５２，６７９号
【発明の概要】
【０００７】
本発明のいくつかの実施の形態は、分散連想メモリベースを備える連想メモリシステムを対象とする。分散連想メモリベースは、連想メモリネットワークのネットワークからなる少なくとも１つのネットワークを含むことができる。それぞれの連想メモリネットワークは、それぞれの観察者メモリ及びそれぞれの観察者メモリによって観察される複数の被観察メモリの間の連想を含む。連想メモリネットワークのうちのいくつかは、連想メモリネットワークのうちの他のいくつかから物理的かつ／又は論理的に独立している。実施の形態は、連想メモリネットワーク内の複数の行のうちのそれぞれのいくつかに対応する複数のストリーミングキューを用いて、分散連想メモリベースへの連想を観察し、分散連想メモリベースからの連想を想起するように構成された処理システムを備える。
【０００８】
いくつかの実施の形態は、ストリーミングキューのうちのいくつかが、連想メモリネットワークにおける複数の物理ロケーションのうちの１つに対応することを提供する。いくつかの実施の形態では、処理システムはクエリマップを更に備え、該クエリマップは、ユーザから受信された、意味空間に基づくクエリを、連想メモリネットワークにおける複数の物理メモリロケーションに対応する複数の「行に基づく識別子」として表された、物理空間に基づくクエリに変換するように構成され、複数のストリーミングキューのうちの少なくとも１つに含まれる。
【０００９】
いくつかの実施の形態は、意味空間に基づくクエリに対応する分類学的意味を推定して、連想メモリネットワークの物理表現に対応するクエリ用語を提供するために、クエリマップによってアクセスされるように構成されたオントロジを備える。いくつかの実施の形態では、クエリマップは、意味空間に基づくクエリ及び／又は物理空間に基づくクエリ内の複数のクエリ用語の異なるものに対応する複数のマッピングポリシーのうちの少なくとも１つを含む。マッピングポリシーは、ランク及び／又は近時性を含むポリシーを定義することができる。クエリマップは、ランクポリシー及び／又は近時性ポリシーに対応する、物理空間に基づくクエリを変更することができる。
【００１０】
いくつかの実施の形態では、クエリマップは、意味空間に基づくクエリ及び／又は物理空間に基づくクエリ内のクエリ用語の１つ又は複数の異形を識別し、かつ該１つ又は複数の異形を含むよう物理空間に基づくクエリを拡張するように更に構成される。いくつかの実施の形態は、１つ又は複数の異形が、クエリ用語のうちのいくつかに対応する同義語、別名及び／又は頭字語を含むことを提供する。
【００１１】
いくつかの実施の形態は、処理システムが複数のカウントサーバノードを備えることを提供し、該複数のカウントサーバノードは、ストリーミングキューからの要求を受信し、かつ該受信した要求応じて分散連想メモリベース内の連想に対応するカウントデータを提供するように構成される。処理システムは、アトムテーブルを備えることができ、該アトムテーブルは、複数のカウントサーバノードのうちの１つによって受信されたストリーミングキューのうちの対応するものにおける、物理空間に基づくクエリを受信することに応じて、マトリックスの行識別情報を提供するように構成される。複数のアトムテーブルは、連想メモリネットワークから返された結果を物理空間に基づくクエリに関連付ける逆検索データを提供するように更に構成することができる。
【００１２】
いくつかの実施の形態は、分散連想メモリベースにおける連想に対応するカウントデータを受信し、かつ該カウントデータを意味空間に基づく名前空間と再合成して結果をユーザに提供するように構成された結果コントローラを備える。いくつかの実施の形態では、結果コントローラは、ストリーミングキューのうちのいくつかに対応する未処理のカウントデータを累積し、複数の「物理空間に基づくクエリ」用語のうちの関係したいくつか及び対応する未処理のカウントデータを、クエリマップによってアクセスされたオントロジを用いてコラプスし、コラプスした「物理空間に基づくクエリ」用語のカウントデータを順位付けし、かつ物理空間に基づく結果を意味空間に基づく結果に変換するように更に構成される。
【００１３】
本発明のいくつかの実施の形態は、分散連想メモリベースにクエリする方法を含む。これらの方法は、ユーザから受信された、意味空間に基づくクエリを、分散連想メモリベース内の複数の連想メモリネットワークのうちの少なくとも１つにおける複数の物理メモリロケーションに対応する複数の「行に基づく識別子」として表された、物理空間に基づくクエリに変換することを含むことができる。複数の「行に基づく識別子」に対応する複数のクエリキューを生成することができる。これらのクエリキューは、連想メモリネットワークに対応する複数のカウントサーバノードにストリーミングされる。カウントサーバノードからのクエリキューに応じたカウント情報が求められる。複数のカウントサーバノードからのカウント情報は、意味空間に基づくクエリに応じた、意味空間に基づく結果情報に変換される。
【００１４】
いくつかの実施の形態では、意味空間に基づくクエリを変換することは、意味空間に基づくクエリ内のクエリ用語ごとに、該クエリ用語の異形と該クエリ用語とを含むように該クエリ用語を拡張すること、及び該クエリ用語に対応する分類学用語を含む分類学マップが存在するか否かを判断することを含む。分類学マップが存在する場合、分類学用語及びクエリ用語を含むように該クエリ用語が拡張される。
【００１５】
いくつかの実施の形態は、行に基づく識別子に対応するクエリキューを生成することが、該行に基づく識別子のそれぞれについて、キューリソースをバインドすることであって、行キューを定義する、バインドすることを含むことを提供する。キューリソースは、行に基づく識別子にバインドされるのに利用可能な複数のキューリソースのうちの１つを含む。
【００１６】
いくつかの実施の形態では、クエリキューをカウントサーバノードにストリーミングすることは、クエリキューのうちの１つ又は複数を複数のノードリーダのうちのそれぞれ１つにマッピングすることを含む。ノードリーダのそれぞれは、カウントサーバのうちのそれぞれ１つに対応することができる。いくつかの実施の形態は、ノードリーダのうちのいくつかが、カウントサーバのうちのそれぞれのいくつかに対する、クエリキューのうちの複数のものに対応するバッチ要求を実行するように構成されることを提供する。いくつかの実施の形態は、クエリキューをカウントサーバノードにストリーミングすることが、クエリキューとノードリーダとの間の多対多インターフェースにおいて、クエリキューを複数のノードリーダにマッピングすることを含むことを提供する。
【００１７】
いくつかの実施の形態では、カウントサーバノードからのクエリキューに応じたカウント情報を求めることは、複数のクエリ用語のうちのいくつかについて、マトリックスアドレスデータに対応するマトリックス識別子値を求めることを含む。いくつかの実施の形態は、マトリックスアドレスデータに対応するマトリックス識別子値を求めることが、アトムテーブル識別データを求めることであって、複数のアトムテーブルノードのいずれがマトリックス識別子値を含むのかを判断する、求めることと、クエリ用語のうちのそれぞれのいくつかに対応するそれぞれの識別データを求めることと、それぞれの識別データをマトリックス識別子に変換することと、を含むことを提供する。
【００１８】
いくつかの実施の形態では、アトムテーブル識別データは、検索オペレーションを用いて求められる。いくつかの実施の形態は、アトムテーブル識別データが、計算方法を用いて求められることを提供する。いくつかの実施の形態は、マトリックス識別子に対応する符号化されたマトリックスのルートページのルートページアドレスを検索することを含む。ルートページは、符号化されたマトリックスの符号化タイプを識別するマトリックスタイプ値を含むことができる。
【００１９】
いくつかの実施の形態では、カウント情報を変換することは、クエリキューからの未処理のカウントデータを累積することと、前に拡張された異形及び分類学用語並びに物理空間に基づくクエリ内の各クエリ用語のそれぞれのカウントをコラプスすることと、
コラプスしたクエリ用語を順位付けすることであって、カウントデータの相対的な値に対応する互いに対するクエリ用語の関連性情報を提供する、順位付けすることと、を含む。物理空間に基づくクエリ用語は、意味空間に基づくクエリ用語に変換することができる。
【００２０】
本発明のいくつかの実施の形態は、コンピュータ可読プログラムコードがコンピュータ使用可能ストレージ媒体に実施された該媒体を含むコンピュータプログラム製品を含む。このコンピュータ可読プログラムコードは、本明細書で説明する方法に対応するオペレーションを実行するように構成される。
【００２１】
本発明のいくつかの実施の形態は、分散連想メモリベースを用いる方法を含む。そのような方法は、複数の分散連想メモリネットワークのうちの少なくとも１つにおける複数のそれぞれの物理メモリロケーションの複数の「行に基づく識別子」として表された、物理空間に基づくクエリに対応するストリーミングクエリキューを生成することを含むことができる。ストリーミングクエリキューのうちのいくつかは、分散連想メモリネットワークに対応する複数のカウントサーバノードからカウント情報を受信するように動作可能な複数のノードリーダにマッピングすることができる。受信したカウント情報は、ストリーミングクエリキューのうちの対応するものに逆マッピングされる。
【００２２】
本発明のいくつかの実施の形態は、分散メモリベースを設けることを含む連想メモリ方法を含む。該分散メモリベースは連想メモリネットワークのネットワークを含み、それぞれの連想メモリネットワークは、それぞれの観察者エンティティ及び該それぞれの観察者エンティティによって観察される複数の被観察エンティティの間の連想を含み、連想メモリネットワークのうちのいくつかは、連想メモリネットワークのうちの他のいくつかから物理的かつ／又は論理的に独立している。連想メモリネットワークのうちのいくつかの複数の行のうちのいくつかに対応する複数のストリーミングキューを用いて連想メモリベースから連想が想起される。
【００２３】
いくつかの実施の形態は、連想メモリベースから連想を想起することが、ユーザから受信された、意味空間に基づくクエリを、連想メモリベース内の連想メモリネットワークのうちの少なくとも１つにおける複数の物理メモリロケーションに対応する複数の「行に基づく識別子」として表された、物理空間に基づくクエリに変換することと、行に基づく識別子に対応するストリーミングキューを生成することと、を含むことを提供する。
【００２４】
いくつかの実施の形態では、連想メモリベースから連想を想起することは、連想メモリベースにおける連想メモリネットワークのうちのそれぞれのいくつかに対応する複数のカウントサーバノードからのストリーミングキューに応じたカウント情報を求めることを含む。いくつかの実施の形態は、連想メモリベースから連想を想起することが、カウントサーバノードからの連想カウント情報を、ユーザから受信された、意味空間に基づくクエリに応じた、意味空間に基づく結果情報に変換することを含むことを提供する。
【００２５】
本発明のいくつかの実施の形態は、行識別子値及び列識別子値によって識別される非ゼロのデータのロケーションを含む大規模スパースマトリックス内のデータを符号化する方法を含む。そのような方法によれば、ランレングス符号化を用いてマトリックス内のデータのロケーションのスパンを符号化し、同じデータ値をそれぞれ有する複数のデータ値のランをデータ値及びカウントとして格納することができる。無限整数符号化を用いて非ゼロのデータ値のうちのいくつかを符号化し、同じデータ値をそれぞれ有する複数のデータ値の少なくとも１つのランに隣接する可変長整数値を圧縮する。
【００２６】
いくつかの実施の形態では、ランレングス符号化を用いてマトリックス内のデータのロケーションのスパンを符号化することは、固定長の符号化されたマトリックスインデックスワードを読み取ることと、所与の行識別子値について、少なくとも１つの固定長の符号化されたマトリックスインデックスワード内の符号化されたオフセット値を提供することによって、０の値を有する絶え間なく連続したビットをインデックス付けすることと、を含む。
【００２７】
いくつかの実施の形態は、無限整数符号化を用いて非ゼロの値のうちのいくつかを符号化することが、少なくとも１つの固定長の符号化されたマトリックスワードから可変ワード長の非ゼロデータ値を読み取ることと、可変ワード長の非ゼロのデータ値を対応する列識別子値に関連付けることと、を含むことを提供する。
【００２８】
本発明のいくつかの実施の形態は、行識別子値及び列識別子値によって識別される非ゼロのデータのロケーションを含む大規模スパースマトリックス内のデータを符号化する方法を含む。そのような方法は、固定長の符号化されたマトリックスインデックスワードを読み取ることと、スパースマトリックス内の所与の行について、少なくとも１つの固定長の符号化されたマトリックスインデックスワードにおける符号化されたインデックスオフセット値を与えることによって、０の値を有する絶え間なく連続したビットをインデックス付けすることと、少なくとも１つの固定長の符号化されたマトリックスインデックスワードから可変ワード長の非ゼロデータ値を読み取ることと、を含むことができる。方法は、少なくとも１つの固定長の符号化されたマトリックスインデックスワードから可変ワード長の非ゼロデータ値を読み取ることと、可変ワード長の非ゼロのデータ値を対応する列識別子に関連付けることと、を含むことができる。
【００２９】
１つの実施形態について説明する本発明の態様は、それについて具体的には説明しないが異なる実施の形態に援用することができることに留意されたい。すなわち、全ての実施の形態及び／又は任意の実施の形態の全ての特徴は、任意の方法及び／又は任意の組合せで組み合わせることができる。本発明のこれらの目的及び／又は態様並びに他の目的及び／又は態様は、以下で述べる明細書に詳細に説明される。
【図面の簡単な説明】
【００３０】
【図１】本発明のさまざまな実施形態による連想メモリシステム、方法、及び／又はコンピュータプログラム製品のブロック図である。
【図２】本発明のいくつかの実施形態による連想メモリベースにクエリするためのクエリの概観を示すフローチャートである。
【図３】本発明のいくつかの実施形態による連想メモリベースの物理名前空間階層を示すブロック図である。
【図４】本発明のいくつかの実施形態による、図２に関して上述したようなクエリマップオペレーション２０の概観を示すフローチャートである。
【図５】本発明のいくつかの実施形態による、図４に関して上述したような意味空間を拡張する（４２）ことに対応するオペレーションを示すフローチャートである。
【図６】本発明のいくつかの実施形態による、図４に関して上述したような拡張属性ベクトルの関連マトリックスを定義する（４６）ことに対応するオペレーションを示すフローチャートである。
【図７】本発明のいくつかの実施形態による、図６に関して上述したような選択されたマトリックスの拡張サブキューブを示すブロック図である。
【図８】本発明のいくつかの実施形態による、図４に関して上述したような行サブセット及び列サブセットを定義することを示すフローチャートである。
【図９】本発明のいくつかの実施形態による、図２に関して上述したようなストリーミングキュー１２に対応するオペレーションを示すフローチャートである。
【図１０】本発明のいくつかの実施形態による、行キュー内の定義された行を行ロケーション番号にマッピングするオペレーションを示すフローチャートである。
【図１１】本発明のいくつかの実施形態によるカウントサーバの概観を示すブロック図である。
【図１２】本発明のいくつかの実施形態による、図１１に関して上述したようなカウントサーバノード２００における識別ビットフィールドマッピングへの「カテゴリ：値」のオペレーション（ブロック１３８）を示すフローチャートである。
【図１３】本発明のいくつかの実施形態による、カウントサーバノード２００におけるマトリックス識別のオペレーションを示すフローチャートである。
【図１４】本発明のいくつかの実施形態に従って符号化される標準的なバイトマトリックスを示すブロック図である。
【図１５】本発明のいくつかの実施形態による、図１４に関して上述したような標準的なバイトマトリックスを復号するオペレーションを示すフローチャートである。
【図１６】本発明のいくつかの実施形態による大規模マトリックスを符号化する大規模マトリックス木を示すブロック図である。
【図１７】本発明のいくつかの実施形態による、図１６に関して上述したようなセルラン（cell run）符号化を示すブロック図である。
【図１８】本発明のいくつかの実施形態による、図１７に関して上述したようなセルラン符号化の一例を示すブロック図である。
【図１９】本発明のいくつかの実施形態による出力カテゴリをスキャンするオペレーションを示すフローチャートである。
【図２０】本発明のいくつかの実施形態による大規模マトリックスで用いられるようなセルランデコーダのオペレーションを示すフローチャートである。
【図２１】本発明のいくつかの実施形態による結果コントローラにおけるオペレーションの概観を示すフローチャートである。
【図２２】本発明のいくつかの実施形態による未処理（raw）のカウントを累積するオペレーションを示すフローチャートである。
【図２３】本発明のいくつかの実施形態による異形コラプス（variant collapse）のオペレーションを示すフローチャートである。
【図２４】本発明のいくつかの実施形態による未処理の結果を累積するオペレーションを示すフローチャートである。
【図２５】本発明のいくつかの実施形態による順位結果を提供するオペレーション示すフローチャートである。
【図２６】本発明のいくつかの実施形態による出力識別子を名前空間文字列に変換するオペレーションを示すフローチャートである。
【図２７】本発明のいくつかの実施形態による分散連想メモリベースにクエリするオペレーションを示すフローチャートである。
【図２８】本発明のいくつかの実施形態による分散連想メモリベースを用いるオペレーションを示すフローチャートである。
【図２９】本発明のいくつかの実施形態による大規模スパースマトリックスのデータを符号化するオペレーションを示すフローチャートである。
【発明を実施するための形態】
【００３１】
（詳細な説明）
次に、添付図面を参照して以下に本発明をより十分に説明することにする。添付図面には、本発明の例示的な実施形態が示されている。しかしながら、本発明は、多くの異なる形態で実施することができ、本明細書で述べる実施形態に限定されるものとして解釈されるべきではない。それとは逆に、これらの実施形態は、この開示が徹底しかつ完全なものであるように、かつ当業者に本発明の範囲を十分に伝えるように提供される。
【００３２】
或る要素が別の要素に「結合される（coupled）」、「接続される（connected）」、又は「応じる（responsive）」というときは、その或る要素がその別の要素に直接結合されるか、直接接続されるか、又は直接応じる可能性もあるし、介在する要素が存在する場合もあることが理解されよう。これとは対照的に、或る要素が別の要素に「直接結合される」、「直接接続される」、又は「直接応じる」というときは、介在する要素は存在しない。同様の番号は全体を通じて同様の要素を指す。「及び／又は」という用語は、本明細書で用いられるとき、関連付けられて列挙された項目のうちの１つ又は複数のありとあらゆる組合せを含み、「／」によって省略される場合がある。
【００３３】
さまざまな要素を説明するのに、第１、第２等の用語が本明細書で用いることがあるが、これらの要素は、これらの用語によって限定されるべできはないことも理解されよう。これらの用語は、或る要素を別の要素と区別するためにのみ用いられる。
【００３４】
本明細書で用いられる術語は、特定の実施形態を説明するためのものにすぎず、本発明を限定することは意図していない。数に指定がないもの（singular forms "a", "an" and "the"）は、本明細書で用いられるとき、文脈上、単数形であることが明らかに示されていない限り、複数形も含むことを意図している。「備える」及び／又は「含む」（comprises, comprising, includes, and/or including）という用語は、本明細書で用いられるとき、明示した特徴、ステップ、オペレーション、要素、及び／又は構成要素が存在することを指定するが、１つ又は複数の他の特徴、ステップ、オペレーション、要素、構成要素、及び／又はそれらの群が存在することも追加されることも排除するものではないことが更に理解されよう。
【００３５】
別段の定義がない限り、本明細書で用いられる全ての用語（技術用語及び科学用語を含む）は、本発明が属する技術分野の当業者によって一般に理解されているような意味と同じ意味を有する。一般に用いられる辞書で定義されているような用語は、関連のある技術分野との関係でそれらの用語の意味と矛盾しない意味を有するものと解釈されるべきであり、本明細書で明白に定義されていない限り、理想化された意味又は過度に形式的な意味で解釈されないことも更に理解されよう。
【００３６】
本発明は、本発明の実施形態による方法、システム、及びコンピュータプログラム製品のブロック図及びフローチャートを参照して以下に部分的に説明される。ブロック図又はフローチャートのブロック、及びブロック図又はフローチャートにおけるブロックの組合せは、コンピュータプログラム命令によって少なくとも部分的に実施することができることが理解されよう。これらのコンピュータプログラム命令は、１つ又は複数のエンタープライズコンピュータシステム、アプリケーションコンピュータシステム、パーソナルコンピュータシステム、普及型コンピュータシステム、及び／又は組み込み型コンピュータシステムに提供することができ、それによって、コンピュータシステム（複数の場合もあり）を介して実行される命令が、ブロック図の単数又は複数のブロックで指定された機能／行為を実施する手段、モジュール、デバイス、又は方法を作り出す。他の実施形態では、汎用コンピュータシステム及び／又は専用ハードウェアの組合せを用いることもできる。
【００３７】
これらのコンピュータプログラム命令は、特定の方法で機能するようにコンピュータシステム（複数の場合もあり）に指示することができるコンピュータシステム（複数の場合もあり）のメモリに格納することもでき、それによって、メモリに格納された命令は、単数又は複数のブロックで指定された機能／行為を実施するコンピュータ可読プログラムコードを含む製造品を作り出す。コンピュータプログラム命令は、コンピュータシステム（複数の場合もあり）にロードされて、該コンピュータシステム（複数の場合もあり）に一連の動作ステップを実行させ、コンピュータ実施プロセスを作り出すこともでき、それによって、プロセッサで実行される命令は、単数又は複数のブロックで指定された機能／行為を実施するステップを提供する。したがって、ブロック図及び／又はフローチャートの所与の単数又は複数のブロックは、方法、コンピュータプログラム製品及び／又はシステム（構造的機能及び／又は手段プラス機能）のサポートを提供する。
【００３８】
いくつかの代替的な実施態様では、フローチャートに示した機能／行為は、該フローチャートに示した順序以外の順序で行うことができることにも留意すべきである。例えば、連続して示された２つのブロックは、関係している機能／行為に応じて、実際には実質的に同時に実行される場合もあるし、時には逆の順序で実行される場合もある。最後に、１つ又は複数のブロックの機能は、分離することができかつ／又は他のブロックの機能と結合することができる。
【００３９】
本明細書で説明するいくつかの実施形態は、分散連想メモリベースを備える連想メモリシステムを提供する。分散連想メモリベースは、連想メモリネットワークのネットワークからなる少なくとも１つのネットワークを含むことができる。いくつかの実施形態は、それぞれの連想メモリネットワークが、それぞれの観察者エージェントと、それぞれの観察者エージェントによって観察される複数の被観察エージェントとの間の連想を含むことができることを提供する。連想メモリネットワークのうちのいくつかは、連想メモリネットワークのうちの他のいくつかから物理的かつ／又は論理的に独立している場合がある。
【００４０】
いくつかの実施形態は、連想メモリネットワーク内の複数の行のうちのいくつかに対応する複数のストリーミングキューを用いて、分散連想メモリベースへの連想を観察し、分散連想メモリベースからの連想を想起するように構成された処理システムを更に備える。ストリーミングとは、本明細書で用いられるとき、一連のキューが経時的に生成、送信、処理、及び／又は受信される特性を指す。
【００４１】
いくつかの実施形態は、分散連想メモリベースにクエリする方法を提供する。そのような方法は、ユーザから受信された、意味空間に基づくクエリを、分散連想メモリベース内の複数の連想メモリネットワークのうちの少なくとも１つにおける複数の物理メモリロケーションに対応する複数の「行に基づく識別子」として表された、物理空間に基づくクエリに変換することを含むことができる。本明細書で説明するように、ユーザは、クエリを生成及び／若しくは送信することができ、かつ／又はクエリの結果を受信及び／若しくは送信することができる人、組織、アプリケーション、及び／又はハードウェアデバイスを含むことができる。いくつかの実施形態は、行に基づく識別子に対応する複数のクエリキューを生成すること、及び行に基づく識別子を、連想メモリネットワークに対応する複数のカウントサーバノードにストリーミングすることを含む。
【００４２】
いくつかの実施形態は、ノードサーバからの、行に基づく識別子に応じたカウント情報を求めること、及びノードサーバからのカウント情報を、意味空間に基づくクエリに応じた意味空間に基づく結果情報に変換することを含む。
【００４３】
本発明のいくつかの実施形態は、分散連想メモリベースを用いる方法を含む。そのような方法は、複数の分散連想メモリネットワークのうちの少なくとも１つにおけるそれぞれの複数の物理メモリロケーションの複数の「行に基づく識別子」として表された、物理空間に基づくクエリに対応する複数のストリーミングクエリキューを生成することを含むことができる。いくつかの実施形態は、分散連想メモリネットワークに対応する複数のカウントサーバノードからカウント情報を受信するように動作可能な複数のノードリーダへのストリーミングクエリキューをマッピングしたものを含む。方法は、受信したカウント情報を、ストリーミングクエリキューのうちの対応するものに逆マッピングすることを更に含むことができる。
【００４４】
いくつかの実施形態は、連想メモリネットワークのネットワークからなるネットワークを含む分散メモリベースを提供することを含む連想メモリ方法を含むことができる。そのようなネットワークは、それぞれの連想メモリネットワークが、それぞれの観察者エンティティおよびそれぞれの観察者エンティティによって観察される複数の被観察エンティティの間の連想を含むことができるような連想メモリネットワークのネットワークを含むことができる。いくつかの実施形態では、連想メモリネットワークのうちのいくつかは、連想メモリネットワークのうちの他のいくつかから物理的かつ／又は論理的に独立している。いくつかの実施形態は、連想メモリネットワークのうちのいくつかの複数の行のうちのいくつかに対応する複数のストリーミングキューを用いて連想メモリベースから連想を想起することを含む。
【００４５】
本発明のいくつかの実施形態は、大規模スパースマトリックス内のデータを符号化する方法を含む。そのような方法は、行識別子値及び列識別子値によって識別される非ゼロのデータのロケーションを含むスパースマトリックスを提供すること、並びに固定長の符号化されたマトリックスインデックスワードを読み取ることを含むことができる。いくつかの実施形態は、少なくとも１つの固定長の符号化されたマトリックスインデックスワードにおいて可変ワード長を有する符号化されたインデックスオフセット値を提供することによって、スパースマトリックス内の所与の行について、０（ゼロ）の値を有する絶え間なく連続したセル、カウント及び／又はビットをインデックス付けすることを含む。加えて、変数ワード長の非ゼロのデータ値は、少なくとも１つの固定長の符号化されたマトリックスインデックスワードから読み出すことができ、可変ワード長の非ゼロのデータ値は、対応する列識別子に関連付けることができる。
【００４６】
本明細書ではデータを符号化するオペレーションの例が提供されるが、本明細書で説明するアーキテクチャは、単独でかつ／又は互いに組み合わせて用いることができる多くの異なるタイプの符号化オペレーションに解放することができる。例えば、多くのスパースマトリックス方法の任意の１つ又は複数を、本明細書で説明する実施形態において適用可能とすることができる。いくつかの実施形態では、２つ以上のタイプの符号化を組み合わせて用い、連想メモリベース内のさまざまなマトリックスで起こり得るさまざまな特性に対処することができる。この点に関して、さまざまなマトリックス特性に対応するさまざまな入力−出力マッピングデマンドに対処することができる。このように、本明細書で説明するアーキテクチャは、特定の符号化に限定されず、したがって、さまざまなマトリックス特性及び／又はメモリ特性に関して柔軟性をもたらすことができる。
【００４７】
図１を参照する。図１は、本発明のさまざまな実施形態による連想メモリシステム、方法、及び／又はコンピュータプログラム製品のブロック図である。図１に示すように、本発明のさまざまな実施形態による連想メモリシステム、方法、及び／又はコンピュータプログラム製品１０００は、連想メモリネットワーク１０１３、１０１５のネットワーク１０１２、１０１４からなるネットワークを含む連想メモリベース１０１０を含む。実施形態は、例示の目的で、連想メモリネットワーク１０１３、１０１５の２つのネットワーク１０１２、１０１４として示されているが、本明細書では、連想メモリネットワーク１０１３、１０１５の１つのネットワーク及び／又は３つ以上のネットワークを含むことができる。それぞれの連想メモリネットワーク１０１３、１０１５は、その内部に、それぞれの観察者のための複数の被観察エンティティ間での連想及び／又は連想の頻度を含む。
【００４８】
図１を更に参照すると、処理システム、方法及び／又はコンピュータプログラム製品１０３０が設けられている。これらの処理システム、方法及び／又はコンピュータプログラム製品１０３０は、連想メモリベース１０１０内の連想メモリネットワーク１０１３、１０１５のネットワーク１０１２、１０１４からなるネットワークへの連想を観察し（読み取り）かつ該ネットワークからの連想を想起（クエリ）するように構成される。処理システム、方法及び／又はコンピュータプログラム製品１０３０は、観察者システム、方法及び／又はコンピュータプログラム製品１０３２並びにクエリシステム、方法及び／又はコンピュータプログラム製品１０３４を含む。観察者システム、方法及び／又はコンピュータプログラム製品１０３２は、連想メモリネットワーク１０１３、１０１５のそれぞれのネットワーク１０１２、１０１４内に、それぞれの観察者エンティティ及びそれぞれの観察者エンティティによって観察された複数の被観察エンティティの間での連想を観察するように構成される。クエリシステム、方法及び／又はコンピュータプログラム製品１０３４は、ユーザクエリに応答して、連想メモリネットワーク１０１３、１０１５のそれぞれのネットワーク１０１２、１０１４からエンティティ、ユーザ及び／又はイベントの連想を想起するように構成される。ユーザクエリの結果は、結果ディスプレイ１０２６によって表示するように構成することができる。
【００４９】
それぞれの連想メモリネットワーク１０１３、１０１５の各々は、物理的かつ／又は論理的に互いに分散させることができる。いくつかの実施形態では、それぞれの連想メモリネットワーク１０１３、１０１５はそれぞれ、２つ以上の物理デバイスで実施することができる。いくつかの実施形態は、それぞれの連想メモリネットワーク１０１３、１０１５がそれぞれ、論理的に異なるデバイスを含む同じ物理デバイスで実施することができることを提供する。この点に関して、連想メモリベース１０１０は線形又はほぼ線形に規模増大することができるので、それによって、連想メモリの大規模ネットワークを設けることが可能になる。
【００５０】
図２を参照する。図２は、本発明のいくつかの実施形態による、図１に関して上述したような連想メモリベース１０１０にクエリする（１０３４）ためのクエリの概観を示すフローチャートである。本明細書で説明するようなクエリは、本明細書で説明するような連想メモリベースとともに、システム及び／又はコンピュータプログラム製品によって実行することができる。ユーザ１０は、ユーザ及び／又はユーザのクラスに特有のかつ／又は特徴的な場合がある意味特性、語彙特性、言語特性、用語体系特性及び／又は分類学特性を含むことができるユーザ空間の用語でユーザクエリを送出する。
【００５１】
クエリマップ２０は、ユーザクエリを受信し、クエリ式を連想メモリベースの物理表現にマッピングする。換言すれば、クエリマップ２０は、ユーザ空間から連想メモリベースに対応する物理空間にクエリを変換することができる。このように、ユーザ空間又はユーザオントロジ（user ontology）は、物理的に格納されているものに対応する空間に下方マッピングされる。例えば、ユーザオントロジは、連想メモリ、マトリックス、行、列及び／又はそれらのマージンのうちの特定のいくつかに下方マッピングすることができる。
【００５２】
いくつかの実施形態は、オントロジ２２を用いて、連想メモリベースの物理表現と一貫した用語でユーザクエリの分類学的意味を求めることができるマッピングを提供する。いくつかの実施形態では、マッピングは、ユーザクエリの用語の異形を求めることを含むことができる。異形の例は、ユーザクエリの用語に対応する同義語、別名、及び／又は頭字語を含むことができる。いくつかの実施形態は、マッピングが、クエリ用語のうちの異なるものに対応するマッピングポリシーを適用することを含むことができることを提供する。いくつかの実施形態では、マッピングポリシーは、特に順位及び／又は近時性に関するポリシーを提供することができる。例えば、クエリ用語（質問語）が時間次元を含む場合、マッピングポリシーは、より近時の情報がより高い関連性を有することを提供することができる。このように、マッピングポリシーは、クエリ用語の意味的使用に関する情報を提供することができる。
【００５３】
クエリは、物理空間にマッピングされると、連想メモリ、マトリックス、行、列及び／又はそれらのマージンのうちの特定のいくつかにおける複数の物理ロケーションからの複数のカウント情報要求に対応する一連のキューとして表される。いくつかの実施形態は、各キューが特定の連想メモリ内の特定のマトリックスの特定の行からのカウント情報要求に対応することができるように、この一連のキューをストリーミングする（１２）ことができることを提供する。データのストリーミングフローを提供することによって、クエリのフル制御を実現することができ、それによって、システムは、そうでなければ通常のバッファサイズを大幅に超える可能性のあるデータ量によって圧倒されないようになる。このように、大規模な連想メモリベースの高速かつ柔軟な実施を提供することができる。
【００５４】
複数のカウントサーバノード２００は、ストリーミングキュー１２に対応する要求を受信し、それに応答してカウント情報を提供することができる。いくつかの実施形態では、カウントサーバノード２００は、連想メモリのうち、互いに対して独立に配置することができる特定のいくつかに対応することができる。例えば、いくつかの実施形態では、カウントサーバノード２００を連想メモリのそれぞれに対して提供することができる。このように、連想メモリベースは、通信、処理及び／又はストレージのハードウェアリソースを圧倒することなく、実質的に限りない発展及びデータ容量で実施することができる連想メモリネットワークを提供することができる。
【００５５】
アトムサーバは、単一の「カテゴリ：値」をマトリックス内の行にマッピングするのに用いることができるアトムテーブルノード２０２を含みかつ／又はアトムテーブルノード２０２にアクセスするように動作可能とすることができる。クエリからの返された結果を元のクエリ内の「カテゴリ：値」に連想することができるように、アトムテーブルノード２０２のロケーションを用いて、逆ルックアップ（逆検索）をサポートすることができる。
【００５６】
カウント情報がカウントサーバノードから受信された後、結果コントローラ２４は、オントロジ２２にアクセスし、物理言語カウント情報を再合成してユーザ言語に戻すように動作可能である。いくつかの実施形態では、結果コントローラ２４は、マッピングポリシーに従ってカウント情報を整理及び編成することができる。結果２６は、ユーザ１０に提示することができ、カウントに対応するトランザクション頻度データを活用することができるメトリック空間内に存在することができる。
【００５７】
次に図３を参照する。図３は、本発明のいくつかの実施形態による連想メモリベース１０１０の物理名前空間階層を示すブロック図である。物理名前空間における階層の最上部は、連想メモリネットワークのネットワーク１０１３、１０１５のそれぞれに対応するネットワーク識別子３０を含む。いくつかの実施形態では、連想メモリベースは、互いに独立に配置、作成、管理、ポピュレート（追加）及び／又は創設することができる多くのネットワーク１０１３、１０１５を含むことができる。各ネットワーク１０１３はメモリの観点から更に分割される。詳細には、ネットワーク１０１３を分割するための属性は、本明細書で用いられるように、カテゴリ：値順序対によって識別することができる。例えば、特定のメモリに対応するパーティションは、メモリをカテゴリとして定義するとともにメモリ値を値として定義する順序対を用いて識別することができる。このように、例えば、John（ジョン）という名前の人物に対応するパーティションは、「人物：John」として識別することができる。
【００５８】
いくつかの実施形態では、各メモリは、複数の連想メモリ及び／又はマトリックスを含むことができ、これらは特定の識別子を含むことができる。いくつかの実施形態は、いくつかのメモリが単一の連想メモリ及び／又はマトリックスのみを含むことができることを提供することができる。そのような実施形態では、単一の連想メモリ及び／又はマトリックスは、特に「デフォルト」等の識別子を用いてメモリ同士を一貫して識別することができる。
【００５９】
各メモリ内において、マトリックス内の行は、メモリに関して上述したカテゴリ：値順序対概念を用いて識別することができる。例えば、ロンドン市に対応する行は、「場所：ロンドン」として識別することができる。本明細書のいくつかの実施形態は、特定のネットワークにおける特定のマトリックス内の特定の行の識別を用いてクエリ用語を表すことができることを提供する。このように、対応するカウントサーバノードは、「ネットワーク／メモリカテゴリ：メモリ値／マトリックス／行カテゴリ：行の値」として識別される用語を含むクエリを入力として受信することができる。
【００６０】
それに応答して、カウントサーバノード２００は、前述のカテゴリ：値の識別の形態で対応する列情報を提供することができる。この点に関して、メモリ内の特定のセルは、「ネットワーク／メモリカテゴリ：メモリ値／マトリックス／行カテゴリ：行の値／列カテゴリ：列の値」として識別することができ、エージェント、行属性及び列属性の間の意味的連想に対応する特定の連想頻度（associative frequency）を表すカウント値を含むことができる。例えば、物理名前空間において「ネットワーク／場所：ロンドン／デフォルト／人物：John／職業：銀行業」として識別されるセルに格納された値は、メモリ（場所）ロンドンが、銀行業務を行っている人物ジョンを観察した回数を表す。この点に関して、行と列（Johnと銀行業）との間の連想は、メモリ（ロンドン）の観点から観察される。したがって、行に基づくクエリを用いて、メモリ、行及び列の間の３段連想におけるカウント数を表す連想の頻度を求めることができる。
【００６１】
連想頻度を求めることにより、意味的報告（semantic reporting）に加えて統計的プロセスを用いてイベント及び／又は連想を評価することができる。例えば、重み付け、関連性、ランク付けされたエントロピ及び／又は近時性を求めかつ／又は用いて、３段連想の頻度の解析を提供することができる。このように、経験を用いて連想を解析することにより、関係が存在することを単に格納及び／又は報告するよりも大幅に優れた解析的な値が提供される。
【００６２】
次に図４を参照する。図４は、本発明のいくつかの実施形態による、図２に関して上述したようなクエリマップオペレーション２０の概観を示すフローチャートである。ユーザのロジック（論理）は、クエリ入力ベクトル４０として受信される。このクエリ入力ベクトル４０は、ユーザによって提供された１組の用語とすることができる。クエリ入力ベクトルは、連想メモリベースの物理メモリの名前空間に対応する物理名前空間を表すために意味空間に拡張される（ブロック４２）。この拡張は、図２に関して上述したようにオントロジ２２を用いて行うことができ、関連マトリックスを定義する（ブロック４４）のに用いることができる属性ベクトルを生成することができる。換言すれば、属性ベクトルにおける属性の何らかのメモリ／知識を有するマトリックスのうちのいくつかを定義することができる。このように、クエリに関連のある情報を含む物理構造を識別することができる。
【００６３】
クエリ用語のうちの他のいくつかに対応する情報を有する関連行を定義することができる（ブロック４６）。このように、クエリ用語のうちの他のいくつかに対応する情報を含む定義された各マトリックス内での行の物理ロケーションが識別される。例えば、「人物：John」に対応するクエリ用語を含む属性ベクトルの場合、「場所：ロンドン」、及び「職業：銀行業」は、「人物：John」に対応する関連マトリックス並びに「場所：ロンドン」及び「職業：銀行業」に対応する関連行を定義することができる。したがって、定義された行のそれぞれに対応するストリーミングキューは、図２に関した上述したカウントサーバノード２００への入力として処理することができる。例えば、ストリーミングキューのうちの１つは、「ネットワーク１／人物：John／デフォルト／場所：ロンドン」として定義された入力を提供することができ、ストリーミングキューのうちの別の１つは、「ネットワーク１／人物：John／デフォルト／職業：銀行業」として定義された入力を提供することができる。
【００６４】
出力カテゴリ４８は、属性ベクトルにおけるクエリ用語に対応する関連列を定義するために提供することができる（ブロック５０）。このように、属性ベクトルにおけるクエリ用語に対応する知識の、メモリベース内での物理ロケーションは、具体的に識別される。いくつかの実施形態は、物理ロケーションの名前空間を整数インデックスに変換及び／又は変形することができることを提供する。いくつかの実施形態では、整数インデックスへの名前空間識別子の変換及び／又は変形は、階層的な名前空間構造の各レベルにおいて独立に実行することができる。
【００６５】
行／列の識別に対応する物理メモリロケーションのそれぞれが定義されると、それらの物理メモリロケーションに対応するマトリックスカウントのサブセットがフェッチされる（ブロック５２）。行に基づく組織化手法を用いることができるので、分割は名前空間に基づく。この点に関して、パーティションは、ストリーミングキューを介して処理することができる管理可能なデータ量を提供することができる。加えて、いくつかの実施形態は、例えば、メモリルーティング対メモリが特に小さい場合の行ルーティングを提供することができる可変データ分散ストラテジを提供する。可変分散ストラテジは、メモリサイズを考慮し、それに応じてルーティングを適合させることができる。
【００６６】
次に図５を参照する。図５は、本発明のいくつかの実施形態による、図４に関して上述したような意味空間４２の拡張に対応するオペレーションを示すフローチャートである。意味空間４２を拡張することは、クエリ入力ベクトル６０内の各カテゴリ：値６２について、属性の分類学が存在するか否かを判断すること、分類学マップ（ブロック６６）を生成すること、異形を求めること、及び異形マップ（ブロック６４）を生成することを含む。
【００６７】
いくつかの実施形態は、異形マップが、異なるスペル、頭字語、省略形等に対応する属性を含むようにクエリ拡張を提供することができることを提供する。いくつかの実施形態では、分類学マップは、属性語彙の制御された拡張を提供するクエリ拡張を提供することができる。例えば、属性「１月」に対応する分類学マップは、特に「冬」、「最初の月」、及び／又は「寒い」を含むことができる。同様に、属性「トラック」に対応する分類学マップは、特に「車両」、「積荷」、及び／又は「マック（Mack）」を含むことができる。
【００６８】
いくつかの実施形態では、分類学による拡張は、抽象化のレベルが増加及び／又は減少する追加の属性を提供することができる。いくつかの実施形態では、分類学マッピングは、同義語を含むように属性を拡張することができるという点で、シソーラス機能と同様に動作することができる。いくつかの実施形態は、分類学マッピングが、クエリ属性に対応する全ての名詞及び動詞を提供することができることを提供する。
【００６９】
クエリ属性に対応する異形マップ及び分類学マップが生成された場合、これらのクエリ属性の各々はそれぞれ拡張される（ブロック６８及び７０）。いくつかの実施形態は、クエリ属性を補足及び／又は置換するように階層的な分類学構造を提供することができることを提供する。次に、クエリ入力ベクトルは、異形拡張（variant expansion）及び／又は分類学拡張（taxonomic expansion）を含むように拡張される（ブロック７２）。このように、クエリ入力ベクトルは、この時、拡張された物理名前空間で表された拡張属性ベクトルとして提供される。
【００７０】
次に図６を参照する。図６は、本発明のいくつかの実施形態による、図４に関して上述したような拡張属性ベクトルの関連マトリックスを定義する（４４）ごとに対応するオペレーションを示すフローチャートである。各カテゴリ：値８０について、オペレーションは、「カテゴリ：値」がメモリとして宣言されているか否かを判断する（ブロック８２）。「カテゴリ：値」がメモリとして宣言されている場合、対応するメモリマッピングポリシーを選択することができる（ブロック８４）。
【００７１】
メモリマッピングポリシーは、そのメモリについて２つ以上のマトリックスが含まれている場合に、マトリックスがいくつ含まれているのかを規定するように動作可能である。例えば、最も単純なマッピングポリシーは、メモリが単一のマトリックスを含むことを規定することができる。いくつかの実施形態では、メモリマッピングポリシーは、複数のマトリックス及び／又はメモリを、時間分割等の１つ又は複数の特性の関数として定義する意味論を提供することができる。例えば、タイムスライシング意味論は、新たなマトリックスが、特に、時間、日、週、月、四半期、季節及び／又は年等の所定の時間的単位ごとに生成／提供されることを提供することができる。このように、特定のタイムスライスに対応するマトリックスは、管理可能な規模を超えて増大し続けることがなく、検索された情報の定常状態摂取（steady state ingestion）を提供することができるので、定常状態システム性能を達成することができる。いくつかの実施形態では、メモリマッピングポリシーは、タイムスライスされたマトリックスに対応する近時性バイアス（recency bias）を定義することができる。例えば、より近時のデータは、それよりも近時でないデータよりも関連性、興味、重要性、及び／又は切実度の高いデータとすることができる。この点に関して、タイムスライスされたマトリックスからの情報は、より近時のデータにより大きな重みを与え、それよりも近時でないデータに小さな重みを与えるように独立に重み付けすることができる。いくつかの実施形態では、マトリックスデータの重み付けは、ストリーミングキューに対応して受信されるカウントが重み付けを含むように、カウントがマトリックスから検索されたときにカウントに対して実行することができる。いくつかの実施形態は、結果がストリーミングキューから受信された後に重み付けをカウントデータに対して実行することができることを提供する。
【００７２】
いくつかの実施形態は、マトリックスの次元をできるだけ適度に小さくして含めるという目的を達成するよう最大マトリックスサイズを規定することができるように、メモリマッピングポリシーが容量に基づくポリシーを含むことができることを提供する。例えば、メモリマッピングポリシーは、マトリックスの次元の制限を知るという利点に基づきシステム性能について物理的に定義することができる。上述したようなタイムスライシングの意味論は、この目的をも当然達成することができるが、いくつかのデータは時間的に基礎とすることができず、したがって、タイムスライシングは、マトリックスの次元の制限を規定するのに適用可能でない場合がある。
【００７３】
メモリマッピングポリシーに基づいて、１つ又は複数のメモリ／マトリックスが追加され（ブロック８６）、メモリとして宣言された各「カテゴリ：値」に対応する関連のある物理マトリックスのサブキューブ選択が提供される（ブロック８８）。
【００７４】
次に図７を参照する。図７は、本発明のいくつかの実施形態による、図１で説明しかつ図６に関して上述したような連想メモリベース１０１０の選択されたマトリックスの拡張サブキューブを示すブロック図である。いくつかの実施形態は、選択されたマトリックスのサブキューブを、第１の軸に沿った異形拡張９２として及び第２の軸に沿った分類学拡張９４として拡張することができることを提供する。このように、メモリ９６の関連性を保持することができる。
【００７５】
いくつかの実施形態では、分類学拡張９４は、同じマトリックス／メモリの異なるメモリ９６が同じ行に設けられることを提供する。例えば、時間ポリシーの場合、メモリ１のマトリックス１、２及び３は、１月、２月、及び３月の月のタイムスライスに対応することができ、異なるメモリ９６の関連性を維持するために行に配列することができる。メモリ９６の関連性を維持することにより、データを更に利用して、特に近時性及び／又は距離バイアスを含めることができる。
【００７６】
いくつかの実施形態は、異形拡張９２が異形に関するメモリの関連性を提供することを提供する。例えば、メモリの列配置は、特に、同義語、省略形、置換、及び／又は頭字語の間の関係を維持することができる。この時点で、サブキューブはマトリックス名によって表され、行情報も列情報も含まないことに留意されたい。例えば、上述したように、トリプルストア（triple store）連想に対応する頻度情報（カウント）は、メモリ（エージェント）、行及び列を含む。その点に関して、選択されたマトリックスのサブキューブは、メモリ及び／又はマトリックスの識別情報を表す。したがって、クエリを満たすことは、行サブセット及び列サブセットを定義することも含む。
【００７７】
次に図８を参照する。図８は、本発明のいくつかの実施形態による、図４に関して上述したような行サブセット及び列サブセットを定義することを示すフローチャートである。いくつかの実施形態は、行サブセット及び列サブセットを定義することが、拡張カテゴリ：値に対応するマトリックスのそれぞれについて実行されることを提供する（ブロック１００）。拡張入力カテゴリ：値（ブロック１０２）ごとに、そのカテゴリ：値入力に対応する行をキューリソースにバインドして（ブロック１０８）、行キューを定義することができる。いくつかの実施形態は、そのカテゴリ：値に対応する行が含まれているか否かを確認するためにマトリックスがチェックされることはないことを提供する。この点に関して、行キューは、マトリックスの内容の特定の知識なしで定義することができる。
【００７８】
いくつかの実施形態では、この判断は、行がマトリックスに存在するか否かを判断することを含むことができる。いくつかの実施形態は、この判断が行われ、行がマトリックスにない場合、そのカテゴリ：値入力に対応するキューリソースはバインドされない。マトリックスが、カテゴリ：値入力に対応する行を含む場合、その行をキューリソースにバインドして（ブロック１０８）、行キューを定義することができる。
【００７９】
いくつかの実施形態では、行が定義されるときに行にバインドするのに利用可能な複数のキューからなるプールとして複数のキューリソースを提供することができる。いくつかの実施形態は、キューリソースが固定のかつ／又は事前に定義されたフォーマット及び／又はサイズを含むことができることを提供する。このように、キューを処理及び／又はストリーミングすることは、固定のかつ／又は事前に定義されたフォーマット及び／又はサイズに基づく標準化された手法を用いて実行することができる。いくつかの実施形態では、行が定義されるときに、該行のキューリソースを生成及び／又は作成することができる。
【００８０】
出力カテゴリごとに（ブロック１１０）、その出力カテゴリは列カテゴリリストに追加される（ブロック１１２）。このように、行／列サブセットの列部分を定義することができる。定義されたマトリックスのそれぞれについて、その定義された行キュー及び列カテゴリリストは、カウントを検索することができるサブセット１１４を定義することができる。このように、定義されたマトリックスそれぞれのマージンを定義することができる。定義されたマトリックスのマージンは、マトリックスのそれぞれにおける行のそれぞれのどの部分が、クエリに対応するデータを含むのかを規定するのに用いることができる。
【００８１】
次に図９を参照する。図９は、本発明のいくつかの実施形態による、図２に関して上述したようなストリーミングキュー１２に対応するオペレーションを示すフローチャートである。図８に関して上述したように、キューリソースをキューにバインドした後、行キュー１１６をストリーミングして、互いに対して独立に配置することができる連想メモリ／マトリックスのうちの特定のいくつかに対応するカウントサーバノードにアクセスすることができる。ノードマッピングオペレーション１１８は、行キュー１１６のうちの複数のものを、複数のカウントサーバノード２００への１対１の対応を含むことができる複数のノードリーダ１２０にマッピングするのに用いることができる。この点に関して、ノードマッピングオペレーション１１８は、行キュー１１６とノードリーダ１２０との間の多対多インターフェースを提供することができる。
【００８２】
いくつかの実施形態では、ノードリーダ１２０は、単一の行キュー１１６に対応するクエリに基づいてその対応するカウントサーバノード２００からの要求を実行することができる。いくつかの実施形態は、ノードリーダ１２０が、複数の行キューに対応するクエリに基づいて自身の対応するカウントサーバノード２００からのバッチ要求を実行することができることを提供する。例えば、行キュー１１６のうちの複数のものは、同じ連想メモリ及び／又はマトリックスからのクエリを含むことができる。このように、特定のカウントサーバノード２００からのマトリックスの要求の数を削減しかつ／又は最小にすることができる。
【００８３】
ノードリーダ１２０からの要求に応じて、カウントサーバノード２００は、行キュー１１６に対応するカウントデータをノードリーダ１２０に返すことができる。いくつかの実施形態では、ノードリーダ１２０は、カウント及び／又は対応する識別子を行キューに返すように動作可能である。いくつかの実施形態は、ノードマッピングオペレーション１１８が少なくとも１つの計算を含むことを提供する。このように、ノードマッピングは、ルックアップテーブルを用いることなく実行することができる。したがって、分散連想メモリベースは、ルックアップテーブルが呈するおそれがある次元数の限界を超えることなく適合及び／又は増大することができる。
【００８４】
次に図１０を参照する。図１０は、本発明のいくつかの実施形態による、図９のノードマッピング１１８に関して上述したような行キュー内の定義された行を行ロケーション番号にマッピングするオペレーションを示すフローチャートである。ノードリーダ（図９の１２０）は、カウントサーバノード（図９の２００）に固有にものとすることができるので、行ロケーションノード番号が求められる。行キューごとに、行レベル名前空間１２４は、任意の変調変数１２６と共に、ハッシュ関数１２８を適用されて、行ロケーション番号１３０を表すハッシュコードを生成することができる。いくつかの実施形態では、ネットワーク割当て情報１２２も、ハッシュ関数１２８が用いることができる。いくつかの実施形態では、ネットワーク割当て１２２は、連想メモリベース１０１０を含むネットワークリソースに対応することができる。いくつかの実施形態は、行ロケーションノード番号１３０が計算を介して求められることを提供する。この点に関して、行レベル名前空間を、多数のマシンのうち、その行を含むマシンに対応する識別情報を含むことができる整数行ロケーションノード番号に変換することができる。
【００８５】
変調変数１２６は、ハッシュコードを他の空間に逸らす他の連結を提供することができる。このように、柔軟性を提供することができる。例えば、連想メモリベース１０１０が増大すると、追加のマシンに対応する識別情報を提供するように変調変数を調整することができる。
【００８６】
いくつかの実施形態は、ハッシュ関数１２８が、行レベル名前空間１２４及び／又は変調変数１２６に適用されてハッシュコードを生成するハッシュ関数を含むことができることを提供する。いくつかの実施形態では、ネットワーク割当て１２２は、クラスタ内のマシンの数量及びマシンクラスタオフセットを含むことができる。いくつかの実施形態（図示せず）は、クラスタ内のマシンの数量を用いてハッシュコードにモジュロ演算を適用することができることを提供する。モジュロ演算の結果はマシンクラスタオフセットと組み合わされて、行ロケーションノード番号１３０を求めることができる。しかしながら、モジュロ演算にマシンクラスタ情報を用いる手法は、連想メモリベースの増大及び規模に不必要に制限を課す効果を有する場合がある。
【００８７】
次に図１１を参照する。図１１は、本発明のいくつかの実施形態によるカウントサーバノードの概観を示すブロック図である。いくつかの実施形態では、カウントサーバは、図９に関して上述したように、１つ又は複数のカウントサーバノード２００及び１つ又は複数のアトムテーブルノード２０２を備える。カウントサーバノード２００は、例えば、特にマトリックス識別、エンコーダ及び／又はデコーダ等の内部プロセスを駆動するように構成された複数の処理エンジン１３２を備えることができる。
【００８８】
いくつかの実施形態は、カウントサーバノード２００が、カテゴリ：値属性に対応するアトムテーブルロケーション番号を提供することができるアトムテーブルノードマッピングへのカテゴリ：値１３８を含むことができることを提供する。アトムテーブルロケーション番号は、適用可能である場合に、選択されたアトムテーブルノード２０２内でアトムテーブルを選択して、マトリックスへの鍵値になる識別子を解明するのに用いることができる。マトリックスへの鍵値は、マトリックスインデックスページ１３４及び／又はマトリックスデータページ１３６で用いることができる。いくつかの実施形態では、マトリックスインデックスページ１３４は、１つ又は複数のＢ＋木ページを含むことができるが、他の形態のインデックス付けを用いて鍵値をマトリックスに関係付けることができる。本明細書で説明するように、マトリックスインデックスページ１３４は、他のページの識別情報を含むことができ、該他のページも、マトリックスインデックスページ１３４とすることもできるし、マトリックスデータページ１３６とすることもできる。マトリックスデータページ１３６は、例えばクエリに対応するカウントデータ等、データのロケーションに関するマトリックスロケーション情報を含むことができる。
【００８９】
いくつかの実施形態は、マトリックスインデックスページ１３４が、鍵値に基づいて永続ストレージ１４０におけるデータの物理ロケーションを解明する。いくつかの実施形態では、鍵値の一部分は永続ストレージにおけるページアドレスを含むことができる。
【００９０】
したがって、カウントサーバノード２００は、名前空間に基づく文字列を受信し、それらの文字列を鍵値に変換し、鍵値に対応するカウントデータを検索する。復帰の際に、いくつかの実施形態は、鍵値を名前空間に基づく文字列に逆変換することができることを提供する。いくつかの実施形態では、返された値は、キューストリームに戻ってフローすることができる識別子整数として保持することができる。このように、その後適用される順序付け制御及びステッピング制御（stepping control）は、名前空間に基づく文字列としてではなく整数識別子としてカテゴリ：値の操作を行うことができる。このように、より効率的な整数比較オペレーションを文字列比較オペレーションの代わりに用いることができる。したがって、カウントサーバノード２００に対するインターフェース定義は、入力方向では名前空間文字列に基づいている。
【００９１】
永続ストレージ１４０は、各カウントサーバノード２００にローカルである。このように、ローカル永続ストレージ１４０は、アトムテーブルノード２０２以外で、各ノードが独立しかつ自給自足できるシェアードナッシングアーキテクチャを提供し、システム全体にわたって単一競合点（single point of contention）は存在し得ない。カウントサーバノード２００は、実質的なサーチオペレーション及びカウント検索オペレーションをローカルに実行するので、追加のマシンを付加することによって連想メモリベースを増大させることができ、それによって、分散連想メモリベースに実質的に線形の規模拡大性をもたらすことができる。
【００９２】
次に図１２を参照する。図１２は、本発明のいくつかの実施形態による、図１１に関して上述したようなカウントサーバノード２００における識別ビットフィールドへのカテゴリ：値マッピング（ブロック１３８）のオペレーションを示すフローチャートである。カテゴリ：値（ブロック１４２）ごとに、アトムテーブル検索が実行される（ブロック１４４）。いくつかの実施形態では、アトムテーブル検索は、複数のアトムテーブルノードの中のいずれが、クエリ内のカテゴリ：値に対応する識別データを含むのかを判断するのに用いることができる。アトムテーブルノードが検索された後、識別データがそのアトムテーブルノード内で検索される（ブロック１４６）。検索オペレーションとして説明したが、いくつかの実施形態は、ハッシュ関数及び／又は他の計算方法を介して計算的にアトムテーブルを求めることができることを提供する。
【００９３】
識別データは、鍵値と呼ばれる場合がある識別フォーマットを提供するように変換される（ブロック１４８）。いくつかの実施形態では、鍵値フォーマット１５０は、特に、カテゴリインデックスフィールド１５２、アトムノードフィールド１５４、及び／又は値インデックスフィールド１５６を含むことができる。カテゴリインデックスフィールド１５２、アトムノードフィールド１５４及び値インデックスフィールド１５６のそれぞれは、カテゴリ情報、アトムノード情報、及び値情報にそれぞれ対応するデータ値を含むように構成することができる。鍵値フォーマット１５０は、さまざまなフィールド１５２、１５４、及び１５６の長さを柔軟にすることができることを提供することができる。アトムノードフィールド１５４を設けることによって、後にマトリックスからの戻りデータをカテゴリ：値に関連付けるときに、逆検索を実行することができる。いくつかの実施形態では、鍵値フォーマット１５０は固定ビット長を有することができる。例えば、鍵値フォーマットは、特に１６ビット、３２ビット、６４ビット、１２８ビット及び／又は２５６ビットとすることができる。
【００９４】
次に図１３を参照する。図１３は、本発明のいくつかの実施形態による、カウントサーバノード２００におけるマトリックス識別のオペレーションを示すフローチャートである。例えばカテゴリ：値属性等の行レベル名前空間１６０に対応するマトリックスを識別することは、アトムテーブルノードを検索することを含むことができる（ブロック１６２）。鍵値とも呼ばれるマトリックス識別子を検索することができる（ブロック１６４）。いくつかの実施形態では、鍵値及び／又は該鍵値内の１つ若しくは複数のフィールドを圧縮することができる。
【００９５】
マトリックスのルートページアドレスは、鍵値を用いて検索される（ブロック１６６）。いくつかの実施形態では、ルートページは、符号化されたマトリックスに対応する開始ページを表す。いくつかの実施形態は、マトリックスタイプを判断するために、ルートページのそのヘッダが読み出される（ブロック１６８）ことを提供する。いくつかの実施形態では、マトリックスタイプは、ルートページにおけるマトリックスの行の全てを含むことができるほど十分小さな「バイト（Byte）」タイプマトリックスを含むことができる。この点に関して、タイプ「バイト」復号（ブロック１７２）用のマトリックスのデコーダを選択することができる（ブロック１７０）。
【００９６】
いくつかの実施形態は、マトリックスタイプが、２ページ以上のページを用いて行の全てを識別する大規模マトリックスを含むことができることを提供する。この点に関して、タイプ「大規模（Large）」復号（ブロック１７４）用のマトリックスのデコーダを選択することができる（ブロック１７０）。本発明のいくつかの実施形態に従って他のタイプの復号（ブロック１７６）も同様に提供することができる。例えば、特に事前／次期（prior/next）復号、三角（triangular）復号、及び／又はビットプレーン復号を用いることができる。
【００９７】
次に図１４を参照する。図１４は、本発明のいくつかの実施形態に従って符号化される標準的なバイトマトリックスを示すブロック図である。図１３に関して上述したように、バイトマトリックスは、大規模マトリックスではなく、単一のルートページに存在することができる。いくつかの実施形態では、バイトマトリックスについて最大サイズを規定することができる。例えば、１６ｋバイトを超えないように全サイズを制限することができる。いくつかの実施形態は、１６ｋバイトよりも小さくかつ／又は大きくすることができるさまざまな全サイズを含むバイトマトリックスを提供することができる。いくつかの実施形態では、例えば、特に事前・次期、三角、及び／又はビットプレーンを含めて、他のタイプの局所的にコンパクトな表現を符号化することができる。
【００９８】
いくつかの実施形態では、バイトマトリックスはヘッダ情報１８０を含む。このヘッダ情報１８０は、特に、行数１８２、列数１８４、行識別子１８６、及び／又は列識別子１８８を規定する。いくつかの実施形態では、行識別子１８６及び／又は列識別子１８８は、そのインデックス順に設けることができ、それぞれ「Ｎ」及び「Ｍ」等のインデックス変数を介して求めることができる。この点に関して、バイトマトリックスは、カウントを含むセル１９０のＮ×Ｍアレイを含むことができる。行インデックス付けを用いることによって、行インデックスが求められると、現在の行を基準とした相対的なオフセット値を用いて他の行に直接アクセスすることができる。バイトマトリックスは、初期化されるときに、大量にポピュレートされる場合があるが、更にポピュレートされるにつれてますますスパース（まばら）になる。いくつかの実施形態では、同じ日付及び／又は時間特性を共有する行及び／又は列を含めることによってデータを平滑化（flatten）することができる。
【００９９】
次に図１５を参照する。図１５は、本発明のいくつかの実施形態による、図１４に関して上述したような標準的なバイトマトリックスを復号するオペレーションを示すフローチャートである。いくつかの実施形態は、標準的なバイトマトリックスを復号することが、行数を読み取る（ブロック２２０）こと及び列数を読み取る（ブロック２２２）ことを含むことを提供する。図１４に関して上述したように、行数及び列数は、ヘッダ情報１８０を読み取ることによって求めることができる。
【０１００】
行数について（ブロック２２４）、行インデックスに対する行識別子が読み取られる（ブロック２２６）。同様に、列数について（ブロック２２８）、列インデックスに対する列識別子が読み取られる（ブロック２３０）。インデックス付けされた各行識別子及び各列識別子の組合せをインデックス付けすることによって、各セルに対応するカウントが読み取られる（ブロック２３２、２３４、２３６）。具体的には、クエリ内の各行インデックスについて（ブロック２３２）、及び行インデックスのそれぞれに対応するクエリ内の各列インデックスについて（ブロック２３４）、カウントデータが読み取られる（ブロック２３６）。カウントが０よりも大きい場合（ブロック２３８）、行／列識別子及び対応するカウントが組み合わされて（ブロック２４０）、識別子：カウント結果が提供される（ブロック２４２）。カウント値が０である場合、識別子に対応する結果を提供することはできない。
【０１０１】
次に図１６を参照する。図１６は、本発明のいくつかの実施形態による、大規模マトリックスを符号化する大規模マトリックス木を示すブロック図である。いくつかの実施形態では、大規模マトリックス木は、例えばＢ＋木ページを含むことができる。Ｂ＋木ページは、カウントの効率的な挿入、検索及び／又は削除を可能にするようにソートされたデータを表すことができる。カウントのそれぞれは、鍵を用いて識別することができる。いくつかの実施形態は、大規模マトリックス木が、超大規模スパースカウントマトリックス上での観察を提供するために入力／出力オペレーション数を最小にすることができる大きなファンアウトを含むことができることを提供する。このように、大規模マトリックス木は、大規模マトリックスを非ゼロのカウント値のエリアに低減することができる。
【０１０２】
いくつかの実施形態では、大規模マトリックス木は、大規模マトリックス内の行及びカウントデータを含む鍵２０１及び値２０３を含むリーフページ１９８を更に定義することができる反復ページ１９４への参照子を含むことができるルートページ１９２を含む。いくつかの実施形態は、ルートページ１９２及び／又は反復ページ１９４が、他のＢ＋木ページ１９６及び／又は他の反復ページ１９４への参照子を含むことができることを提供する。いくつかの実施形態は、鍵２０１が、１つ又は複数の符号化方式に対応する符号化されたデータ文字列の開始点を規定することを提供する。例えば、いくつかの実施形態は、鍵２０１が、値２０３によって提供することができるランレングス符号化及び／又は連想カウント符号化の開始点を提供することができることを提供する。いくつかの実施形態では、値２０３はマトリックスの特定の行内のセルの一部分を指し示す。いくつかの実施形態は、値２０３が、例えば、特に４バイト、８バイト、１６バイト、３２バイト、６４バイト及び／又は１２８バイト等の固定長を有することができることを提供する。
【０１０３】
いくつかの実施形態では、超大規模スパースマトリックスは、本明細書で説明するようなセルラン符号化を用いて符号化することができる。セルラン符号化のいくつかの実施形態は、図１７を参照して更に説明することができる。図１７は、本発明のいくつかの実施形態による、図１６に関して上述したようなセルラン符号化を示すブロック図である。いくつかの実施形態では、セルラン符号化は、ランレングス符号化及び無限整数符号化の選択的にハイブリッド化された特性を含むことができる超大規模スパースマトリックス用のデータ圧縮を提供することができる。ランレングス符号化は、データの数個のラン（run）を、元のランとしてではなく単一のデータ値及びカウントとして格納することができるデータ圧縮の形態である。例えば、超大規模スパースマトリックスの場合、ランレングス符号化は、大量の０の値を補うのに用いることができる。加えて、無限整数符号化は、超大規模スパースマトリックスにおいては一般的であり得るような０のランの間で起こり得る可変長整数値のデータ圧縮を提供する。
【０１０４】
非限定的な例として、各値２０３は、それぞれ複数のビット２０４を含むことができる複数のバイト２０３を含むことができる。本明細書で例示するように、バイト長は８ビットを有するが、本発明はそのように限定されない。例えば、いくつかの実施形態は、８ビットよりも多いかつ／又は少ないビットを有するバイトを含む。いくつかの実施形態は、本明細書で用いられるバイトのサイズがデータの１つ又は複数の特性に依存することができることを提供する。例えば、データが実質的に低いカウントを含む場合、そのようなデータにとって効率がより良くなるようにバイトサイズを削減することができる。また、いくつかの実施形態は、カウントが可変バイト長の符号化を用いて、データオーバフローを受けることがない実質的に無限のサイズを提供することができることを提供する。
【０１０５】
いくつかの実施形態は、各バイト２０３内に、「ビット１」２０４Ｂが、値タイプビット、又はバイト２０３の残りのビットの一部としての値ビットのいずれかを定義することができることを提供する。この点に関して、「ビット０」２０４Ａを常に継続ビットとすることができる場合、「ビット１」２０４Ｂは、継続するものがあるか否かに依存して、２つの異なる使用法を提供することができる。したがって、新たな値が開始される（最後のバイトで継続が終了する）とき、新たな値タイプが「ビット１」２０４Ｂによって提供される。例えば、前のバイトの継続ビットが「１」である場合、「ビット１」２０４Ｂをビット２〜７とともに値ビットとして含めることができる。前のバイトの継続ビットが「０」である場合、「ビット０」の「０」の値は、現在のランが或る値で終了することを示すことができる。そうではなく、「ビット０」が「１」の値を有する場合、その値は次のバイトにおいて継続される。
【０１０６】
いくつかの実施形態は、現在のランが或る値（前のビット０＝０）で終了している場合、そのバイトの「ビット１」２０４Ｂが値タイプを示すことができることを提供する。例えば、値タイプが「０」である場合、ゼロランレングスを示すことができ、これは、そのバイトにおけるビットの残りが０であることを与える。これとは対照的に、値タイプが「１」である場合、連想カウントを示すことができ、これは、そのバイトにおけるビット２〜７が無限整数符号化を用いた整数値の２進表現とすることができることを与えることができる。
【０１０７】
次に図１８を参照する。図１８は、本発明のいくつかの実施形態による、図１７に関して上述したようなセルラン符号化の一例を示すブロック図である。この例で示す第１バイト４００は、第１ビット及び第２ビットに０を含む。前の継続ビット値が０であると仮定すると、第１ビットの０の値は、現在のバイトが或る値でこのランを終了していることを示し、第２ビットの０の値は、値タイプがゼロランレングスであることを示している。ビット２〜７に対応する数値は２２であり、この数値は識別子（初期値は０であると仮定）に加えられて、２２である新たな識別子値が生成される。これは０のランであったので、対応するカウント値はない。
【０１０８】
第２バイト４０２は、第１ビット及び第２ビットにそれぞれ０及び１を含む。第１ビットの０の値は、現在のバイトが或る値でこのランを終了していることを示し、第２ビットの１の値は、値タイプが整数カウントであることを示している。その整数値は、ビット２〜７（０００１１０）に対応する数値であり、６である。２２の戻り識別子値は６の整数カウント値に関連付けられる。識別子は１つだけインクリメントされて２３になる。
【０１０９】
第３バイト４０４は、第１ビット及び第２ビットにそれぞれ１及び０を含む。第１ビットの１の値は、現在のバイト値が次のバイトに継続することを示し、第２ビットの０の値は、値タイプがゼロランであることを示している。残りの２〜７のビット位置のビット（１１００１１）は、ゼロランの値が完全に求められるまで維持されて、その後に生じるビットと連結される。
【０１１０】
続いて、第４バイト４０６は、第１ビット及び第２ビットのそれぞれに１を含む。第１ビットの１の値は、現在のバイト値が次のバイトに継続することを示している。前の継続ビット（第３バイト４０４の第１ビット）は１であるので、値タイプはゼロランとして既に確定されている。この点に関して、第２ビットを値フィールドに含めることができる。したがって、残りの１〜７のビット位置のビット（１０００１００）は、先行バイトの値ビットと連結される。したがって、現在の値は、第１の値（１１００１１）を第２の値（１０００１００）と連結したもの、すなわち１１００１１１０００１００である。
【０１１１】
更に続いて、第５バイト４０８は、第１ビット及び第２ビットにそれぞれ０及び１を含む。第１ビットの０の値は、現在のバイトが或る値でこのランを終了していることを示している。第４バイト４０６と同様に、前の継続ビットは１であるので、残りのビット１〜７（１００００１１）を値フィールドに含めることができる。したがって、新たな現在の値は、従前の現在の値（１１００１１１０００１００）をビット１〜７（１００００１１）と連結したもの、すなわち１１００１１１０００１００１００００１１であり、これは１，６８８，７１０である。この値は従前の識別子２３に加えられ、その結果、識別子は１，６８８，７３３となる。
【０１１２】
第６バイト４１０は、第１ビット及び第２ビットのそれぞれに１を含む。第１ビットの１の値は、現在のバイト値が次のバイトに継続することを示している。前の継続ビット（第５バイト４０８の第１ビット）は０であるので、値タイプは第２ビットによって求めることができる。第２ビットの１の値は、現在のバイト値が整数カウント値であることを示している。したがって、残りの２〜７のビット位置のビット（０００００１）は、後続のバイト（複数の場合もあり）の値ビットとの連結のために維持される。
【０１１３】
第７のバイト４１２は、第１ビット及び第２ビットにそれぞれ０及び１を含む。第１ビットの０の値は、現在のバイトが或る値でこのランを終了していることを示している。前の継続ビットは１であるので（第６バイト４１０）、残りのビット１〜７（１０００１００）を値フィールドに含めることができる。したがって、新たな現在の値は、従前の現在の値（０００００１）をビット１〜７（１０００１００）と連結したもの、すなわち０００００１１０００１００であり、これは１９６である。この値は整数カウントであるので、１，６８８，７３３の戻り識別子値は１９６の整数カウント値に関連付けられる。識別子は１つだけインクリメントされて、１，６８８，７３４となる。上述した８つの例示のバイト内において、識別子０から識別子1，６８８，７３５までの非ゼロのデータが、セルラン符号化を介して求められ、それらのそれぞれの識別子に関連付けられたことに留意されたい。
【０１１４】
第８バイト４１４は、第１ビット及び第２ビットにそれぞれ０及び１を含む。第１ビットの０の値は、現在のバイトが或る値でこのランを終了していることを示している。従前のバイトは１の継続ビット値を有していなかったので、第２ビットの１の値は、値タイプが整数カウントであることを示している。この整数値はビット２〜７（０００１０１）に対応する数値であり、５である。１，６８８，７３４の戻り識別子値は５の整数カウント値に関連付けられる。識別子は１つだけインクリメントされて、1，６８８，７３５になる。
【０１１５】
次に図１９を参照する。図１９は、本発明のいくつかの実施形態による、出力カテゴリをスキャンするオペレーションを示すフローチャートである。出力カテゴリをスキャンするオペレーションは、図１６に関して上述したような大規模マトリックスにより良く適用可能な場合があるが、スキャンオペレーションの一部分は、図１４に関して上述したような標準的なバイトマトリックスにも適用可能とすることができる。クエリ出力カテゴリごとに、出力識別子３６０のビットフィールドは、カテゴリインデックスフィールド３６２及び値インデックスフィールド３６４を含む。図１２に関して上述したように、出力識別子は、鍵値と呼ばれる場合もあり、本来、特にカテゴリインデックスフィールド１５２、アトムノードフィールド１５４、及び／又は値インデックスフィールド１５６を含むことができる。しかしながら、いくつかの実施形態によるスキャンオペレーションの目的で、カテゴリインデックス１５２及び値インデックス１５６を組み合わせて出力識別子３６０を形成することができるように、アトムノードフィールド１５４を削除することができる。オペレーションは、各クエリカテゴリについて（ブロック３６６）、出力識別子値を０に設定する（ブロック３６８）ことによってスキャンを初期化することを含む。
【０１１６】
そのカテゴリの出力識別子３６０に対応するセル（複数の場合もあり）が復号され（ブロック３７０）、大規模マトリックスの場合には、セル符号化のタイプが返される（ブロック３７２）。標準的なバイトマトリックスは、セルラン符号化を用いることができない場合もあるので、ゼロランレングスが生じることはなく、したがって、標準的なバイトマトリックスにおけるセルのタイプは適用不要な場合がある。セル符号化がゼロランレングスである場合、出力識別子３６０は、ランレングスだけインクリメントされる（ブロック３７４）。出力識別子３６０を０のランの終了に進めることによって、超大規模スパースマトリックスを効率的な方法で処理することができる。セル符号化が整数カウントである場合、次の出力識別子値を評価することができるように、出力識別子３６０は１つだけインクリメントされる（ブロック３７６）。
【０１１７】
カテゴリインデックス１５２及び値インデックス１５６は単一の値に連結されるので、出力識別子３６０が、値インデックス１５６に関連付けられた下位ビットを越えてインクリメントされると、カテゴリインデックス１５２は、次のクエリカテゴリに対応する値に進むことになる。このように、カテゴリビットフィールド１５２が、クエリカテゴリに対応するビットフィールドを越えてインクリメントされると（ブロック３７８）、結果が返され（ブロック３８０）、対応する識別子と照合される（ブロック３８２）。カテゴリインデックスがクエリカテゴリよりも大きくない場合、次のセルが復号される（ブロック３７０）。このように、クエリカテゴリごとに出力識別子３６０の全てを評価することができる。
【０１１８】
次に図２０を参照する。図２０は、本発明のいくつかの実施形態による、大規模マトリックスで用いられるようなセルランデコーダのオペレーションを示すフローチャートである。いくつかの実施形態では、セルランデコーダは、バイト単位デコーダを備えることができる。このバイト単位デコーダは、図１７に関して上述したようなセルラン符号化を用いて符号化された復号バイトに対応する整数カウント及び／又は停止機能を提供することができる。いくつかの実施形態は、格納された識別子をフェッチする代わりに、識別子値を本明細書で説明したように計算することができることを提供する。開始点がランレングス内にも整数カウント内にもないことを保証するために、前のバイト継続ビットは０であり（ブロック４２０）、開始符号化値は０である（ブロック４２２）。次のバイトが検索され（ブロック４２４）、前の継続ビットが読み取られる（ブロック４２６）。前の継続ビットが０である場合、符号化値はビット２〜７と連結される（ブロック４２８）。第１バイトにおいて（前の継続ビットの０によって示されるように）、第２ビット（ビット１）が読み取られて（ブロック４３２）、値タイプが求められ、該値タイプが設定される（ブロック４３４）ことに留意されたい。
【０１１９】
連結（ブロック４２８）後、第１ビット（ビット０）が読み取られ（ブロック４３６）、後続のバイトが最終的な符号化値を求めるのに必要であるか否かが判断される。この点に関して、第１ビットは、後続のバイトが現在のバイトの継続であることを合図する継続ビットとすることができる。第１ビット（ビット０）が１である場合、このビットが新たな前の継続ビットとなり（ブロック４３８）、次のバイトが検索される（ブロック４２４）。第１ビット（ビット０）が０である場合、第２ビット（ビット１）を読み取ることによって、値タイプが求められる（ブロック４４０）。第２ビットにおける０の値はゼロランレングスを示し、符号化値がそのように返される（ブロック４４２）。第２ビットにおける１の値は整数カウントを示し、符号化値がそのように返される（ブロック４４４）。
【０１２０】
代替形態では、前の継続ビットが１である場合、バイトは従前のバイトの継続であり、したがって、値タイプは既に分かっている。したがって、前の継続ビットは１であり（ブロック４２６）、値タイプは、前に復号されたバイトを介して分かる。この点に関して、値タイプは分かっているので、第２ビットを値フィールドに含めることができ、符号化値をビット１〜７と連結することができる（ブロック４３０）。
【０１２１】
いくつかの実施形態では、累積されている値は、次の非ゼロのデータのロケーションへのポインタ及び／又はポインタ形態のものを含む。いくつかの実施形態では、累積されている値は、カウントを表す整数を含み、無限整数符号化を用いて符号化することができる。いずれの場合にも、上述した符号化を介した実質的に限りないフィールド長は、データオーバフローのない実質的に無限の値のサイズを提供することができる。いくつかの実施形態では、本明細書で説明した符号化は、識別子空間へのポインタを提供する可変ワードサイズのリンクリストとみなすことができる。
【０１２２】
次に図２１を参照する。図２１は、本発明のいくつかの実施形態による、図２に示すような結果コントローラ２４におけるオペレーションの概観を示すフローチャートである。未処理のカウントデータは行キューから累積される（ブロック２１０）。いくつかの実施形態では、未処理のカウントデータは、列識別情報及び対応するカウント値を含む。いくつかの実施形態は、列識別情報及び対応するカウント値を、データのロケーションの物理空間の観点から定義することができることを提供する。意味論は、クエリ用語における戻り列識別子及びカウントデータを表すためにコラプスされて（collapsed：折り畳まれて）クエリに戻すことができる（ブロック２１２）。
【０１２３】
いくつかの実施形態は、最終結果を順位付けることを提供する（ブロック２１４）。いくつかの実施形態では、最終結果のスコアリングを行ってデータ間の相対的な関連性に関する情報を提供することができる。例えば、タイムスライスとの関連では、新しいデータほど、古いデータよりもより多く関連性があるとみなすことができる。この点に関して、結果を独立に重み付けして、データ間の相対的な関連性を取り込むことができる。例えば、連想のトリプルストアに加えて、カウントは頻度情報を提供する働きもする。頻度情報は、発生頻度の少ない連想よりも発生頻度の高い連想をより重く重み付けすることによって最終結果に取り込むことができる。
【０１２４】
識別子は属性文字列に変換される（ブロック２１６）。いくつかの実施形態は、ランキング及び／又はスコアリング後になるまで待機することによって、変換されたキューストリームが、クエリの観点から相対的な重要性と一貫した予測可能な順序で提供されることを提供する。
【０１２５】
次に図２２を参照する。図２２は、本発明のいくつかの実施形態による、図２１に関して上述したような未処理のカウント２１９を累積するオペレーションを示すフローチャートである。一連の列識別子及び対応するカウントデータは、バイトマトリックスからのものであろうと大規模マトリックスからのものであろうと、行キューに戻される。いくつかの実施形態では、各行キューに対応する列識別子を所定の順序で与えることができる。例えば、列識別子を昇順に配列することができる。列識別子に基づく所定の順序を与えることによって、マトリックスの組織化方式は、維持することができるデータ間の関係を規定することができる。例えば、列識別子は、該識別子の第１の上位ビット値フィールドが属性タイプ（カテゴリ）を記述し、第２の低位ビット値フィールドがカテゴリ：値を記述するための属性値（値）を記述することを提供することができる。順序付けられた戻りデータを読み取ったとき、カテゴリフィールドが新たなタイプに進むと、従前の属性タイプが読み取られたことに対応する値の全てを推測することができる。
【０１２６】
名前空間で記述されるようなネットワーク：メモリ：マトリックス：行のクエリ項目のそれぞれをバインドすることによって生成することができる行キュー２８６は、カウントデータの要求及び／又はその実現に応じてストリーミングすることができるキューリソースに整合させることができる。例えば、処理されるキュー内のデータ量及び／又はキューの数が少なくかつ／又は定められたしきい値未満であるとき（ブロック２９４）、ノードリーダ２９６の１つ又は複数は、対応する行からより多くの列及び／又はカウントをフェッチすることができる。いくつかの実施形態は、列及びカウントデータをストリーミング形式でノードリーダ２９６を介してフェッチし、フェッチしたとおりに対応する行キュー２８６に供給することを提供する。要求されたデータが提供されたことをノードリーダ２９６が示すまで、列識別子：カウントデータを行キュー２８６内に供給し続けることができる。このように、処理リソースを圧倒することを回避することができる方法でデータを間断なく処理することができる。
【０１２７】
列識別子：カウント２８８は、列識別子に関係した所定の順序で行キュー２８６に提供及び／又は配列することができることに留意されたい。いくつかの実施形態では、列識別子：カウント２８８を列識別子の昇順で配列することができる。いくつかの実施形態は、列識別子：カウント２８８が、バイトマトリックス及び／又は大規模マトリックス木におけるデータの配列によってソートされることを提供する。例えば、マトリックスにおけるデータの配列は、実質的にポピュレートされていない超大規模スパースマトリックス内の非ゼロの部分を識別する。いくつかの実施形態では、データの配列は、データの関連カテゴリを同じ場所に配置することができるという点で更なる高い価値（richness）を与える。したがって、列識別子は意味論的に重要な場合がある。このように、連想メモリベースの編成は、その速度及びその利用の柔軟性に直接寄与することができる。
【０１２８】
いくつかの実施形態は、列識別子が、未確定の行キュー２８６の最小の列識別子値よりも小さい場合に（ブロック２８０）、その列識別子を最小の識別子として設定する（ブロック２８２）ことを提供する。換言すれば、オペレーションは、行キューにある最小の列識別子値から開始する順序で行キュー２８６から列識別子：カウントデータを検索する列識別子反復器として機能することができる。最小の識別子値に対応する行キュー２８６の列識別子値の列識別子：カウントデータが検索され、適用可能な場合には、関連カウントを照合するために、その列識別子：カウントの異形を用いてコラプスすることができる（ブロック２９０）。このように、未処理のカウント２９２を累積することができる（ブロック２９２）。
【０１２９】
図７に関して上述したように、選択されたマトリックスのサブキューブは、異形拡張として拡張することができる。拡張された異形に対応するクエリ結果が返されたことから、次に図２３を参照する。図２３は、本発明のいくつかの実施形態による異形コラプスのオペレーションを示すフローチャートである。異形は一般的には相当語句であるとみなされるので、クエリ用語の異形に対応するカウント情報は付加的とすることができる。例えば、クエリ用語「Joseph（ジョゼフ）」の異形が「Joe（ジョー）」及び「Joey（ジョーイ）」を含むことができる場合、「Joseph」、「Joe」、及び「Joey」に対応する未処理のカウントデータを合計して、前に拡張された異形をコラプスすることができる。
【０１３０】
いくつかの実施形態によるオペレーションは、各行キューの照合について（ブロック４８０）、異形が前の行にマッピングするか否かについての判断を行う（ブロック４９２）ことができることを提供することができる。異形が前の行にマッピングする場合、新たな結果が、未処理のカウント（ブロック４９０）内の前の行の結果に追加される（ブロック４９４）。未処理のカウント（ブロック４９０）は、各行識別子に対応する列識別子：カウントデータとして格納することができる。例えば、未処理のカウントを「行識別子，列識別子：カウント，列識別子：カウント，．．．」として提供することができる。異形が前の行にマッピングしない場合、新たな行が未処理のカウント（ブロック４９０）に追加される（ブロック４９６）。
【０１３１】
各行キューの照合内での各列の照合について（ブロック４８２）、異形が前の列にマッピングするか否かについての判断を行うことができる（ブロック４８４）。異形は付加的に扱われるので、前の列にマッピングする異形のカウントは、未処理のカウント（ブロック４９０）内の前の列のカウントに追加される（ブロック４８６）。異形が前の列にマッピングしない場合、列識別子：は、未処理のカウント（ブロック４９０）に追加される（ブロック４８８）。
【０１３２】
図２３に関して上述したように異形がコラプスされた後、図２４を参照して説明するように未処理の結果を累積することができる。図２４は、本発明のいくつかの実施形態による未処理の結果を累積するオペレーションを示すフローチャートである。未処理の結果を累積するオペレーションは、各列識別子に対する行キューから来るデータの同期を提供することができる。いくつかの実施形態では、各列ステップについて（ブロック２５０）、かつ行識別子（ネットワーク：メモリ：行）ごとに（ブロック２５６）、カウントが０よりも大きい場合（ブロック２５８）、その列の現在のカウント（ブロック２６２）は、その列の他のカウントとともに累積される（ブロック２６４）。加えて、いくつかの実施形態では、その列の接続数がインクリメントされ（ブロック２６０）、照合結果（ブロック２６６）における累積されたカウントに対応する接続数が維持される。
【０１３３】
いくつかの実施形態は、現在の列（ブロック２５４）の名前空間が反転され（ブロック２５２）、照合結果（ブロック２６６）に含められることを提供する。名前空間を反転することによって、回答指向（answer oriented）の照合を提供することができる。例えば、元の名前空間が、粒度を増加させることに基づいて定義されていた場合、反転された名前空間は列指向とすることができる。この点に関して、照合された未処理の結果は、「列：行：メモリ：ネットワーク」ごとの行カウント及び接続数を提供することができる。
【０１３４】
また、図２３に関して上述したような異形の拡張及び照合は、入力クエリに適用することができるブール構造の一例を表す。この点に関して、いくつかの実施形態は、入力クエリが１つ又は複数のタイプのブール構造を含むことができることを提供する。このブール構造は、未処理のカウントの検索の前及び／又は後でそれぞれ拡張及び／又は照合することができる。したがって、いくつかの実施形態では、クエリのブール仕様を行カウントの解釈に適用することができる。このように、ブール充足（Boolean satisfaction）を用いて、変動する論理複雑度レベルを有する入力クエリを処理し、クエリロジックに対する分散連想メモリベースの高い価値を引き出すことができる。
【０１３５】
次に図２５を参照する。図２５は、本発明のいくつかの実施形態による、図２１に関して上述したような順位結果を提供するオペレーションを示すフローチャートである。照合結果（ブロック３００）に対する順位オペレーションは、各列出力（ブロック３０２）の各メモリ視点について（ブロック３０４）実行することができる。いくつかの実施形態では、列／メモリ視点の組合せのそれぞれに対するオペレーションは、メモリコミュニティにわたる各列の投票をインクリメントする（ブロック３０６）ことを含むことができる。投票は、非ゼロの値に対応することができ、接続性（connectedness）の尺度を提供する一時的な結果として提供することができる。例えば、投票は接続の意味論的存在を表すことができる。いくつかの実施形態は、各非ゼロの列／メモリ結果が１つの投票を含むことを提供する。
【０１３６】
カウント及び接続の観点から照合結果を比較することができる比較器機能（ブロック３０８）を用いると、列のソートが個々の各メモリについて挿入される（ブロック３１０）。投票及び列がソートされたランクを比較することができる比較器機能（ブロック３１２）は、各列出力（ブロック３１６）に対応する全体的な列ランクを提供して（ブロック３１４）、順位付けられた最終結果（ブロック３１８）を提供することができる。
【０１３７】
次に図２６を参照する。図２６は、本発明のいくつかの実施形態による、図２１に関して上述したような出力識別子を名前空間文字列に変換するオペレーションを示すフローチャートである。図１１に関して上述したように、出力識別子は、カテゴリ、アトムテーブルノード及び値に対応するフィールドを含むことができる。各最終結果出力識別子について（ブロック３４０）、アトムノードが逆検索用に求められる（ブロック３４２）。逆検索が実行されて、出力識別子に対応するクエリ文字列名が求められる（ブロック３４４）。このクエリ文字列名は、出力識別子を置換するのに用いられる（ブロック３４６）。
【０１３８】
次に図２７を参照する。図２７は、本発明のいくつかの実施形態による分散連想メモリベースにクエリするオペレーションを示すフローチャートである。ユーザから受信された意味空間に基づくクエリは、物理空間に基づくクエリに変換される（ブロック５００）。いくつかの実施形態は、分散連想メモリベース内の複数の連想メモリネットワークのうちの少なくとも１つにおけるそれぞれの物理メモリロケーションに対応する複数の「行に基づく識別子」として表される、物理空間に基づくクエリを提供する。
【０１３９】
行に基づく識別子に対応する複数のクエリキューを生成することができる（ブロック５０２）。クエリキューは、連想メモリネットワークに対応する複数のカウントサーバノードにストリーミングすることができる（ブロック５０４）。クエリキューに応じたカウント情報は、ノードサーバから求めることができる（ブロック５０６）。ノードサーバからのカウント情報は、意味空間に基づくクエリに応じた意味空間に基づく結果情報に変換することができる。
【０１４０】
次に図２８を参照する。図２８は、本発明のいくつかの実施形態による分散連想メモリベースを用いるオペレーションを示すフローチャートである。物理空間に基づくクエリに対応する複数のストリーミングクエリキューを生成することができる（ブロック５１０）。いくつかの実施形態では、ストリーミングクエリキューは、複数の分散連想メモリネットワークのうちの少なくとも１つにおけるそれぞれの物理メモリロケーションの複数の「行に基づく識別子」として表すことができる。
【０１４１】
いくつかの実施形態は、分散連想メモリネットワークに対応する複数のカウントサーバノードからカウント情報を受信するように動作可能な複数のノードリーダにストリーミングクエリキューのうちのいくつかをマッピングすることを含む（ブロック５１２）。受信されたカウント情報は、ストリーミングクエリキューのうちの対応するものに逆マッピングすることができる（ブロック５１４）。
【０１４２】
次に図２９を参照する。図２９は、本発明のいくつかの実施形態による、大規模スパースマトリックスのデータを符号化するオペレーションを示すフローチャートである。行識別子値及び列識別子値によって識別される非ゼロのデータのロケーションを含むスパースマトリックスを提供することができる（ブロック５２０）。固定長の符号化されたマトリックスインデックスワードを読み取ることができる（ブロック５２２）。スパースマトリックスの所与の行について、少なくとも１つの固定長の符号化されたマトリックスインデックスワードに可変ワード長を有する符号化されたインデックスオフセット値を提供することによって、０の値を有する絶え間なく連続したビットをインデックス付けすることができる（ブロック５２４）。少なくとも１つの固定長の符号化されたマトリックスインデックスワードから可変ワード長の非ゼロのデータ値を読み取ることができる（ブロック５２６）。可変ワード長の非ゼロのデータ値は、対応する列識別子に関連付けることができる（ブロック５２８）。
【０１４３】
図面及び明細書に、本発明の実施形態が開示され、特定の用語が使用されているが、それらの用語は、一般的かつ説明的な意味でのみ用いられ、限定の目的では用いられていない。本発明の範囲は、この後に続く特許請求の範囲に規定されている。
【図１】
0005858432.tif 000002
【図２】
0005858432.tif 000003
【図３】
0005858432.tif 000004
【図４】
0005858432.tif 000005
【図５】
0005858432.tif 000006
【図６】
0005858432.tif 000007
【図７】
0005858432.tif 000008
【図８】
0005858432.tif 000009
【図９】
0005858432.tif 000010
【図１０】
0005858432.tif 000011
【図１１】
0005858432.tif 000012
【図１２】
0005858432.tif 000013
【図１３】
0005858432.tif 000014
【図１４】
0005858432.tif 000015
【図１５】
0005858432.tif 000016
【図１６】
0005858432.tif 000017
【図１７】
0005858432.tif 000018
【図１８】
0005858432.tif 000019
【図１９】
0005858432.tif 000020
【図２０】
0005858432.tif 000021
【図２１】
0005858432.tif 000022
【図２２】
0005858432.tif 000023
【図２３】
0005858432.tif 000024
【図２４】
0005858432.tif 000025
【図２５】
0005858432.tif 000026
【図２６】
0005858432.tif 000027
【図２７】
0005858432.tif 000028
【図２８】
0005858432.tif 000029
【図２９】
0005858432.tif 000030