JP2012529105A - 分散連想メモリベースを提供する方法、システム、及びコンピュータプログラム製品 - Google Patents

分散連想メモリベースを提供する方法、システム、及びコンピュータプログラム製品 Download PDF

Info

Publication number
JP2012529105A
JP2012529105A JP2012513958A JP2012513958A JP2012529105A JP 2012529105 A JP2012529105 A JP 2012529105A JP 2012513958 A JP2012513958 A JP 2012513958A JP 2012513958 A JP2012513958 A JP 2012513958A JP 2012529105 A JP2012529105 A JP 2012529105A
Authority
JP
Japan
Prior art keywords
query
associative memory
count
matrix
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012513958A
Other languages
English (en)
Other versions
JP5858432B2 (ja
Inventor
フレミング,ジェイムズ・エス
フアン,イェン‐ミン
Original Assignee
サフロン・テクノロジー,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by サフロン・テクノロジー,インコーポレイテッド filed Critical サフロン・テクノロジー,インコーポレイテッド
Publication of JP2012529105A publication Critical patent/JP2012529105A/ja
Application granted granted Critical
Publication of JP5858432B2 publication Critical patent/JP5858432B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

分散連想メモリベースのためのシステム、方法及びコンピュータプログラム製品を提供する。そのような方法は、連想メモリネットワークのネットワークからなるネットワークを含む分散メモリベースを設けることを含むことができる。メモリベースは、連想メモリネットワークのネットワークを含むことができ、それぞれの連想メモリネットワークは、それぞれの観察者エンティティ及び該それぞれの観察者エンティティによって観察される複数の被観察エンティティの間の連想を含む。連想メモリネットワークのうちのいくつかは、連想メモリネットワークのうちの他のいくつかから物理的かつ/又は論理的に独立している。方法は、連想メモリネットワークのうちのいくつかの複数の行のうちのいくつかに対応する複数のストリーミングキューを用いて連想メモリベースから連想を想起することを含む。
【選択図】図1

Description

(関連出願)
本願の非仮特許出願は、2009年6月2日に出願された米国仮出願第61/176,282号の優先権を主張する。この米国仮出願は、その開示内容を参照することにより、本明細書に完全に説明されているかのごとく本明細書の一部をなすものとする。
本発明は、知識管理システム、方法、及びコンピュータプログラム製品に関し、より詳細には、連想メモリシステム、方法、及びコンピュータプログラム製品に関する。
連想メモリは、内容アドレス指定可能メモリとも呼ばれ、パターンマッチング及びパターン識別、エキスパートシステム、並びに人工知能の分野で広く用いられている。広く用いられている連想メモリは、ホップフィールド人工ニューラルネットワークである。ホップフィールド人工ニューラルネットワークは、例えば、「Electronic Network for Collective Decision Based on Large Number of Connections Between Signals」と題する、Hopfieldに対する米国特許第4,660,166号に記載されている。
連想メモリは、従来のバックプロパゲーションネットワークにおける問題を回避することができるが、連想メモリは、スケーリングメモリ及びスプリアス(spurious)メモリの問題を呈するおそれがある。連想メモリにおいて最近行われている改良では、これらの問題及び他の問題を解決する試みがなされてきた。例えば、「Artificial Neural Networks Including Boolean-Complete Compartments」と題する、共同発明者Aparicio IVその他に対する米国特許第6,052,679号は、複数の人工ニューロン及び複数のブールコンプリートコンパートメントを提供する。これらのそれぞれ1つはそれぞれ1対の人工ニューロンを結合する。ブールコンプリートコンパートメントを提供することによって、スプリアス補足メモリ(spurious complement memory)を回避することができる。
残念なことに、連想メモリを用いて実世界の問題を解決することを制限する可能性のある根本的な規模増大問題が存在する。詳細には、多くの連想メモリは、入力の数の関数として幾何級数的に増大する。この幾何級数的な規模増大は、そのような技術を正当化する複雑度の規模で用途をサポートするには理に合わない場合がある。連想メモリにおける規模増大は、「Artificial Neurons Including Power Series of Weights and Counts That Represent Prior and Next Associations」と題する、共同発明者Aparicio, IVその他に対する米国特許第6,581,049号で対処されている。この米国特許は、本発明の譲受人に譲渡され、その開示内容を参照することにより、本明細書に完全に説明されているかのごとく本明細書の一部をなすものとする。米国特許第6,581,049号に説明されているように、人工ニューロンは、複数の入力及び複数の樹状突起を含む。これらの樹状突起のうちのそれぞれ1つは、複数の入力のうちのそれぞれ1つに関連付けられている。各樹状突起は重みの冪級数を含み、冪級数内の各重みは、関連付けられた冪の関連付けられたカウントを含む。重みを冪級数として表すことによって、従来の人工ニューロンにおける入力の関数としての幾何級数的な規模増大を、入力の関数としての線形の規模増大に低減することができる。実世界のシステムを用いて多数の入力を扱うことができ、それによって実世界の応用を解くことができる。
米国特許第4,660,166号 米国特許第6,052,679号
本発明のいくつかの実施の形態は、分散連想メモリベースを備える連想メモリシステムを対象とする。分散連想メモリベースは、連想メモリネットワークのネットワークからなる少なくとも1つのネットワークを含むことができる。それぞれの連想メモリネットワークは、それぞれの観察者メモリ及びそれぞれの観察者メモリによって観察される複数の被観察メモリの間の連想を含む。連想メモリネットワークのうちのいくつかは、連想メモリネットワークのうちの他のいくつかから物理的かつ/又は論理的に独立している。実施の形態は、連想メモリネットワーク内の複数の行のうちのそれぞれのいくつかに対応する複数のストリーミングキューを用いて、分散連想メモリベースへの連想を観察し、分散連想メモリベースからの連想を想起するように構成された処理システムを備える。
いくつかの実施の形態は、ストリーミングキューのうちのいくつかが、連想メモリネットワークにおける複数の物理ロケーションのうちの1つに対応することを提供する。いくつかの実施の形態では、処理システムはクエリマップを更に備え、該クエリマップは、ユーザから受信された、意味空間に基づくクエリを、連想メモリネットワークにおける複数の物理メモリロケーションに対応する複数の「行に基づく識別子」として表された、物理空間に基づくクエリに変換するように構成され、複数のストリーミングキューのうちの少なくとも1つに含まれる。
いくつかの実施の形態は、意味空間に基づくクエリに対応する分類学的意味を推定して、連想メモリネットワークの物理表現に対応するクエリ用語を提供するために、クエリマップによってアクセスされるように構成されたオントロジを備える。いくつかの実施の形態では、クエリマップは、意味空間に基づくクエリ及び/又は物理空間に基づくクエリ内の複数のクエリ用語の異なるものに対応する複数のマッピングポリシーのうちの少なくとも1つを含む。マッピングポリシーは、ランク及び/又は近時性を含むポリシーを定義することができる。クエリマップは、ランクポリシー及び/又は近時性ポリシーに対応する、物理空間に基づくクエリを変更することができる。
いくつかの実施の形態では、クエリマップは、意味空間に基づくクエリ及び/又は物理空間に基づくクエリ内のクエリ用語の1つ又は複数の異形を識別し、かつ該1つ又は複数の異形を含むよう物理空間に基づくクエリを拡張するように更に構成される。いくつかの実施の形態は、1つ又は複数の異形が、クエリ用語のうちのいくつかに対応する同義語、別名及び/又は頭字語を含むことを提供する。
いくつかの実施の形態は、処理システムが複数のカウントサーバノードを備えることを提供し、該複数のカウントサーバノードは、ストリーミングキューからの要求を受信し、かつ該受信した要求応じて分散連想メモリベース内の連想に対応するカウントデータを提供するように構成される。処理システムは、アトムテーブルを備えることができ、該アトムテーブルは、複数のカウントサーバノードのうちの1つによって受信されたストリーミングキューのうちの対応するものにおける、物理空間に基づくクエリを受信することに応じて、マトリックスの行識別情報を提供するように構成される。複数のアトムテーブルは、連想メモリネットワークから返された結果を物理空間に基づくクエリに関連付ける逆検索データを提供するように更に構成することができる。
いくつかの実施の形態は、分散連想メモリベースにおける連想に対応するカウントデータを受信し、かつ該カウントデータを意味空間に基づく名前空間と再合成して結果をユーザに提供するように構成された結果コントローラを備える。いくつかの実施の形態では、結果コントローラは、ストリーミングキューのうちのいくつかに対応する未処理のカウントデータを累積し、複数の「物理空間に基づくクエリ」用語のうちの関係したいくつか及び対応する未処理のカウントデータを、クエリマップによってアクセスされたオントロジを用いてコラプスし、コラプスした「物理空間に基づくクエリ」用語のカウントデータを順位付けし、かつ物理空間に基づく結果を意味空間に基づく結果に変換するように更に構成される。
本発明のいくつかの実施の形態は、分散連想メモリベースにクエリする方法を含む。これらの方法は、ユーザから受信された、意味空間に基づくクエリを、分散連想メモリベース内の複数の連想メモリネットワークのうちの少なくとも1つにおける複数の物理メモリロケーションに対応する複数の「行に基づく識別子」として表された、物理空間に基づくクエリに変換することを含むことができる。複数の「行に基づく識別子」に対応する複数のクエリキューを生成することができる。これらのクエリキューは、連想メモリネットワークに対応する複数のカウントサーバノードにストリーミングされる。カウントサーバノードからのクエリキューに応じたカウント情報が求められる。複数のカウントサーバノードからのカウント情報は、意味空間に基づくクエリに応じた、意味空間に基づく結果情報に変換される。
いくつかの実施の形態では、意味空間に基づくクエリを変換することは、意味空間に基づくクエリ内のクエリ用語ごとに、該クエリ用語の異形と該クエリ用語とを含むように該クエリ用語を拡張すること、及び該クエリ用語に対応する分類学用語を含む分類学マップが存在するか否かを判断することを含む。分類学マップが存在する場合、分類学用語及びクエリ用語を含むように該クエリ用語が拡張される。
いくつかの実施の形態は、行に基づく識別子に対応するクエリキューを生成することが、該行に基づく識別子のそれぞれについて、キューリソースをバインドすることであって、行キューを定義する、バインドすることを含むことを提供する。キューリソースは、行に基づく識別子にバインドされるのに利用可能な複数のキューリソースのうちの1つを含む。
いくつかの実施の形態では、クエリキューをカウントサーバノードにストリーミングすることは、クエリキューのうちの1つ又は複数を複数のノードリーダのうちのそれぞれ1つにマッピングすることを含む。ノードリーダのそれぞれは、カウントサーバのうちのそれぞれ1つに対応することができる。いくつかの実施の形態は、ノードリーダのうちのいくつかが、カウントサーバのうちのそれぞれのいくつかに対する、クエリキューのうちの複数のものに対応するバッチ要求を実行するように構成されることを提供する。いくつかの実施の形態は、クエリキューをカウントサーバノードにストリーミングすることが、クエリキューとノードリーダとの間の多対多インターフェースにおいて、クエリキューを複数のノードリーダにマッピングすることを含むことを提供する。
いくつかの実施の形態では、カウントサーバノードからのクエリキューに応じたカウント情報を求めることは、複数のクエリ用語のうちのいくつかについて、マトリックスアドレスデータに対応するマトリックス識別子値を求めることを含む。いくつかの実施の形態は、マトリックスアドレスデータに対応するマトリックス識別子値を求めることが、アトムテーブル識別データを求めることであって、複数のアトムテーブルノードのいずれがマトリックス識別子値を含むのかを判断する、求めることと、クエリ用語のうちのそれぞれのいくつかに対応するそれぞれの識別データを求めることと、それぞれの識別データをマトリックス識別子に変換することと、を含むことを提供する。
いくつかの実施の形態では、アトムテーブル識別データは、検索オペレーションを用いて求められる。いくつかの実施の形態は、アトムテーブル識別データが、計算方法を用いて求められることを提供する。いくつかの実施の形態は、マトリックス識別子に対応する符号化されたマトリックスのルートページのルートページアドレスを検索することを含む。ルートページは、符号化されたマトリックスの符号化タイプを識別するマトリックスタイプ値を含むことができる。
いくつかの実施の形態では、カウント情報を変換することは、クエリキューからの未処理のカウントデータを累積することと、前に拡張された異形及び分類学用語並びに物理空間に基づくクエリ内の各クエリ用語のそれぞれのカウントをコラプスすることと、
コラプスしたクエリ用語を順位付けすることであって、カウントデータの相対的な値に対応する互いに対するクエリ用語の関連性情報を提供する、順位付けすることと、を含む。物理空間に基づくクエリ用語は、意味空間に基づくクエリ用語に変換することができる。
本発明のいくつかの実施の形態は、コンピュータ可読プログラムコードがコンピュータ使用可能ストレージ媒体に実施された該媒体を含むコンピュータプログラム製品を含む。このコンピュータ可読プログラムコードは、本明細書で説明する方法に対応するオペレーションを実行するように構成される。
本発明のいくつかの実施の形態は、分散連想メモリベースを用いる方法を含む。そのような方法は、複数の分散連想メモリネットワークのうちの少なくとも1つにおける複数のそれぞれの物理メモリロケーションの複数の「行に基づく識別子」として表された、物理空間に基づくクエリに対応するストリーミングクエリキューを生成することを含むことができる。ストリーミングクエリキューのうちのいくつかは、分散連想メモリネットワークに対応する複数のカウントサーバノードからカウント情報を受信するように動作可能な複数のノードリーダにマッピングすることができる。受信したカウント情報は、ストリーミングクエリキューのうちの対応するものに逆マッピングされる。
本発明のいくつかの実施の形態は、分散メモリベースを設けることを含む連想メモリ方法を含む。該分散メモリベースは連想メモリネットワークのネットワークを含み、それぞれの連想メモリネットワークは、それぞれの観察者エンティティ及び該それぞれの観察者エンティティによって観察される複数の被観察エンティティの間の連想を含み、連想メモリネットワークのうちのいくつかは、連想メモリネットワークのうちの他のいくつかから物理的かつ/又は論理的に独立している。連想メモリネットワークのうちのいくつかの複数の行のうちのいくつかに対応する複数のストリーミングキューを用いて連想メモリベースから連想が想起される。
いくつかの実施の形態は、連想メモリベースから連想を想起することが、ユーザから受信された、意味空間に基づくクエリを、連想メモリベース内の連想メモリネットワークのうちの少なくとも1つにおける複数の物理メモリロケーションに対応する複数の「行に基づく識別子」として表された、物理空間に基づくクエリに変換することと、行に基づく識別子に対応するストリーミングキューを生成することと、を含むことを提供する。
いくつかの実施の形態では、連想メモリベースから連想を想起することは、連想メモリベースにおける連想メモリネットワークのうちのそれぞれのいくつかに対応する複数のカウントサーバノードからのストリーミングキューに応じたカウント情報を求めることを含む。いくつかの実施の形態は、連想メモリベースから連想を想起することが、カウントサーバノードからの連想カウント情報を、ユーザから受信された、意味空間に基づくクエリに応じた、意味空間に基づく結果情報に変換することを含むことを提供する。
本発明のいくつかの実施の形態は、行識別子値及び列識別子値によって識別される非ゼロのデータのロケーションを含む大規模スパースマトリックス内のデータを符号化する方法を含む。そのような方法によれば、ランレングス符号化を用いてマトリックス内のデータのロケーションのスパンを符号化し、同じデータ値をそれぞれ有する複数のデータ値のランをデータ値及びカウントとして格納することができる。無限整数符号化を用いて非ゼロのデータ値のうちのいくつかを符号化し、同じデータ値をそれぞれ有する複数のデータ値の少なくとも1つのランに隣接する可変長整数値を圧縮する。
いくつかの実施の形態では、ランレングス符号化を用いてマトリックス内のデータのロケーションのスパンを符号化することは、固定長の符号化されたマトリックスインデックスワードを読み取ることと、所与の行識別子値について、少なくとも1つの固定長の符号化されたマトリックスインデックスワード内の符号化されたオフセット値を提供することによって、0の値を有する絶え間なく連続したビットをインデックス付けすることと、を含む。
いくつかの実施の形態は、無限整数符号化を用いて非ゼロの値のうちのいくつかを符号化することが、少なくとも1つの固定長の符号化されたマトリックスワードから可変ワード長の非ゼロデータ値を読み取ることと、可変ワード長の非ゼロのデータ値を対応する列識別子値に関連付けることと、を含むことを提供する。
本発明のいくつかの実施の形態は、行識別子値及び列識別子値によって識別される非ゼロのデータのロケーションを含む大規模スパースマトリックス内のデータを符号化する方法を含む。そのような方法は、固定長の符号化されたマトリックスインデックスワードを読み取ることと、スパースマトリックス内の所与の行について、少なくとも1つの固定長の符号化されたマトリックスインデックスワードにおける符号化されたインデックスオフセット値を与えることによって、0の値を有する絶え間なく連続したビットをインデックス付けすることと、少なくとも1つの固定長の符号化されたマトリックスインデックスワードから可変ワード長の非ゼロデータ値を読み取ることと、を含むことができる。方法は、少なくとも1つの固定長の符号化されたマトリックスインデックスワードから可変ワード長の非ゼロデータ値を読み取ることと、可変ワード長の非ゼロのデータ値を対応する列識別子に関連付けることと、を含むことができる。
1つの実施形態について説明する本発明の態様は、それについて具体的には説明しないが異なる実施の形態に援用することができることに留意されたい。すなわち、全ての実施の形態及び/又は任意の実施の形態の全ての特徴は、任意の方法及び/又は任意の組合せで組み合わせることができる。本発明のこれらの目的及び/又は態様並びに他の目的及び/又は態様は、以下で述べる明細書に詳細に説明される。
本発明のさまざまな実施形態による連想メモリシステム、方法、及び/又はコンピュータプログラム製品のブロック図である。 本発明のいくつかの実施形態による連想メモリベースにクエリするためのクエリの概観を示すフローチャートである。 本発明のいくつかの実施形態による連想メモリベースの物理名前空間階層を示すブロック図である。 本発明のいくつかの実施形態による、図2に関して上述したようなクエリマップオペレーション20の概観を示すフローチャートである。 本発明のいくつかの実施形態による、図4に関して上述したような意味空間を拡張する(42)ことに対応するオペレーションを示すフローチャートである。 本発明のいくつかの実施形態による、図4に関して上述したような拡張属性ベクトルの関連マトリックスを定義する(46)ことに対応するオペレーションを示すフローチャートである。 本発明のいくつかの実施形態による、図6に関して上述したような選択されたマトリックスの拡張サブキューブを示すブロック図である。 本発明のいくつかの実施形態による、図4に関して上述したような行サブセット及び列サブセットを定義することを示すフローチャートである。 本発明のいくつかの実施形態による、図2に関して上述したようなストリーミングキュー12に対応するオペレーションを示すフローチャートである。 本発明のいくつかの実施形態による、行キュー内の定義された行を行ロケーション番号にマッピングするオペレーションを示すフローチャートである。 本発明のいくつかの実施形態によるカウントサーバの概観を示すブロック図である。 本発明のいくつかの実施形態による、図11に関して上述したようなカウントサーバノード200における識別ビットフィールドマッピングへの「カテゴリ:値」のオペレーション(ブロック138)を示すフローチャートである。 本発明のいくつかの実施形態による、カウントサーバノード200におけるマトリックス識別のオペレーションを示すフローチャートである。 本発明のいくつかの実施形態に従って符号化される標準的なバイトマトリックスを示すブロック図である。 本発明のいくつかの実施形態による、図14に関して上述したような標準的なバイトマトリックスを復号するオペレーションを示すフローチャートである。 本発明のいくつかの実施形態による大規模マトリックスを符号化する大規模マトリックス木を示すブロック図である。 本発明のいくつかの実施形態による、図16に関して上述したようなセルラン(cell run)符号化を示すブロック図である。 本発明のいくつかの実施形態による、図17に関して上述したようなセルラン符号化の一例を示すブロック図である。 本発明のいくつかの実施形態による出力カテゴリをスキャンするオペレーションを示すフローチャートである。 本発明のいくつかの実施形態による大規模マトリックスで用いられるようなセルランデコーダのオペレーションを示すフローチャートである。 本発明のいくつかの実施形態による結果コントローラにおけるオペレーションの概観を示すフローチャートである。 本発明のいくつかの実施形態による未処理(raw)のカウントを累積するオペレーションを示すフローチャートである。 本発明のいくつかの実施形態による異形コラプス(variant collapse)のオペレーションを示すフローチャートである。 本発明のいくつかの実施形態による未処理の結果を累積するオペレーションを示すフローチャートである。 本発明のいくつかの実施形態による順位結果を提供するオペレーション示すフローチャートである。 本発明のいくつかの実施形態による出力識別子を名前空間文字列に変換するオペレーションを示すフローチャートである。 本発明のいくつかの実施形態による分散連想メモリベースにクエリするオペレーションを示すフローチャートである。 本発明のいくつかの実施形態による分散連想メモリベースを用いるオペレーションを示すフローチャートである。 本発明のいくつかの実施形態による大規模スパースマトリックスのデータを符号化するオペレーションを示すフローチャートである。
(詳細な説明)
次に、添付図面を参照して以下に本発明をより十分に説明することにする。添付図面には、本発明の例示的な実施形態が示されている。しかしながら、本発明は、多くの異なる形態で実施することができ、本明細書で述べる実施形態に限定されるものとして解釈されるべきではない。それとは逆に、これらの実施形態は、この開示が徹底しかつ完全なものであるように、かつ当業者に本発明の範囲を十分に伝えるように提供される。
或る要素が別の要素に「結合される(coupled)」、「接続される(connected)」、又は「応じる(responsive)」というときは、その或る要素がその別の要素に直接結合されるか、直接接続されるか、又は直接応じる可能性もあるし、介在する要素が存在する場合もあることが理解されよう。これとは対照的に、或る要素が別の要素に「直接結合される」、「直接接続される」、又は「直接応じる」というときは、介在する要素は存在しない。同様の番号は全体を通じて同様の要素を指す。「及び/又は」という用語は、本明細書で用いられるとき、関連付けられて列挙された項目のうちの1つ又は複数のありとあらゆる組合せを含み、「/」によって省略される場合がある。
さまざまな要素を説明するのに、第1、第2等の用語が本明細書で用いることがあるが、これらの要素は、これらの用語によって限定されるべできはないことも理解されよう。これらの用語は、或る要素を別の要素と区別するためにのみ用いられる。
本明細書で用いられる術語は、特定の実施形態を説明するためのものにすぎず、本発明を限定することは意図していない。数に指定がないもの(singular forms "a", "an" and "the")は、本明細書で用いられるとき、文脈上、単数形であることが明らかに示されていない限り、複数形も含むことを意図している。「備える」及び/又は「含む」(comprises, comprising, includes, and/or including)という用語は、本明細書で用いられるとき、明示した特徴、ステップ、オペレーション、要素、及び/又は構成要素が存在することを指定するが、1つ又は複数の他の特徴、ステップ、オペレーション、要素、構成要素、及び/又はそれらの群が存在することも追加されることも排除するものではないことが更に理解されよう。
別段の定義がない限り、本明細書で用いられる全ての用語(技術用語及び科学用語を含む)は、本発明が属する技術分野の当業者によって一般に理解されているような意味と同じ意味を有する。一般に用いられる辞書で定義されているような用語は、関連のある技術分野との関係でそれらの用語の意味と矛盾しない意味を有するものと解釈されるべきであり、本明細書で明白に定義されていない限り、理想化された意味又は過度に形式的な意味で解釈されないことも更に理解されよう。
本発明は、本発明の実施形態による方法、システム、及びコンピュータプログラム製品のブロック図及びフローチャートを参照して以下に部分的に説明される。ブロック図又はフローチャートのブロック、及びブロック図又はフローチャートにおけるブロックの組合せは、コンピュータプログラム命令によって少なくとも部分的に実施することができることが理解されよう。これらのコンピュータプログラム命令は、1つ又は複数のエンタープライズコンピュータシステム、アプリケーションコンピュータシステム、パーソナルコンピュータシステム、普及型コンピュータシステム、及び/又は組み込み型コンピュータシステムに提供することができ、それによって、コンピュータシステム(複数の場合もあり)を介して実行される命令が、ブロック図の単数又は複数のブロックで指定された機能/行為を実施する手段、モジュール、デバイス、又は方法を作り出す。他の実施形態では、汎用コンピュータシステム及び/又は専用ハードウェアの組合せを用いることもできる。
これらのコンピュータプログラム命令は、特定の方法で機能するようにコンピュータシステム(複数の場合もあり)に指示することができるコンピュータシステム(複数の場合もあり)のメモリに格納することもでき、それによって、メモリに格納された命令は、単数又は複数のブロックで指定された機能/行為を実施するコンピュータ可読プログラムコードを含む製造品を作り出す。コンピュータプログラム命令は、コンピュータシステム(複数の場合もあり)にロードされて、該コンピュータシステム(複数の場合もあり)に一連の動作ステップを実行させ、コンピュータ実施プロセスを作り出すこともでき、それによって、プロセッサで実行される命令は、単数又は複数のブロックで指定された機能/行為を実施するステップを提供する。したがって、ブロック図及び/又はフローチャートの所与の単数又は複数のブロックは、方法、コンピュータプログラム製品及び/又はシステム(構造的機能及び/又は手段プラス機能)のサポートを提供する。
いくつかの代替的な実施態様では、フローチャートに示した機能/行為は、該フローチャートに示した順序以外の順序で行うことができることにも留意すべきである。例えば、連続して示された2つのブロックは、関係している機能/行為に応じて、実際には実質的に同時に実行される場合もあるし、時には逆の順序で実行される場合もある。最後に、1つ又は複数のブロックの機能は、分離することができかつ/又は他のブロックの機能と結合することができる。
本明細書で説明するいくつかの実施形態は、分散連想メモリベースを備える連想メモリシステムを提供する。分散連想メモリベースは、連想メモリネットワークのネットワークからなる少なくとも1つのネットワークを含むことができる。いくつかの実施形態は、それぞれの連想メモリネットワークが、それぞれの観察者エージェントと、それぞれの観察者エージェントによって観察される複数の被観察エージェントとの間の連想を含むことができることを提供する。連想メモリネットワークのうちのいくつかは、連想メモリネットワークのうちの他のいくつかから物理的かつ/又は論理的に独立している場合がある。
いくつかの実施形態は、連想メモリネットワーク内の複数の行のうちのいくつかに対応する複数のストリーミングキューを用いて、分散連想メモリベースへの連想を観察し、分散連想メモリベースからの連想を想起するように構成された処理システムを更に備える。ストリーミングとは、本明細書で用いられるとき、一連のキューが経時的に生成、送信、処理、及び/又は受信される特性を指す。
いくつかの実施形態は、分散連想メモリベースにクエリする方法を提供する。そのような方法は、ユーザから受信された、意味空間に基づくクエリを、分散連想メモリベース内の複数の連想メモリネットワークのうちの少なくとも1つにおける複数の物理メモリロケーションに対応する複数の「行に基づく識別子」として表された、物理空間に基づくクエリに変換することを含むことができる。本明細書で説明するように、ユーザは、クエリを生成及び/若しくは送信することができ、かつ/又はクエリの結果を受信及び/若しくは送信することができる人、組織、アプリケーション、及び/又はハードウェアデバイスを含むことができる。いくつかの実施形態は、行に基づく識別子に対応する複数のクエリキューを生成すること、及び行に基づく識別子を、連想メモリネットワークに対応する複数のカウントサーバノードにストリーミングすることを含む。
いくつかの実施形態は、ノードサーバからの、行に基づく識別子に応じたカウント情報を求めること、及びノードサーバからのカウント情報を、意味空間に基づくクエリに応じた意味空間に基づく結果情報に変換することを含む。
本発明のいくつかの実施形態は、分散連想メモリベースを用いる方法を含む。そのような方法は、複数の分散連想メモリネットワークのうちの少なくとも1つにおけるそれぞれの複数の物理メモリロケーションの複数の「行に基づく識別子」として表された、物理空間に基づくクエリに対応する複数のストリーミングクエリキューを生成することを含むことができる。いくつかの実施形態は、分散連想メモリネットワークに対応する複数のカウントサーバノードからカウント情報を受信するように動作可能な複数のノードリーダへのストリーミングクエリキューをマッピングしたものを含む。方法は、受信したカウント情報を、ストリーミングクエリキューのうちの対応するものに逆マッピングすることを更に含むことができる。
いくつかの実施形態は、連想メモリネットワークのネットワークからなるネットワークを含む分散メモリベースを提供することを含む連想メモリ方法を含むことができる。そのようなネットワークは、それぞれの連想メモリネットワークが、それぞれの観察者エンティティおよびそれぞれの観察者エンティティによって観察される複数の被観察エンティティの間の連想を含むことができるような連想メモリネットワークのネットワークを含むことができる。いくつかの実施形態では、連想メモリネットワークのうちのいくつかは、連想メモリネットワークのうちの他のいくつかから物理的かつ/又は論理的に独立している。いくつかの実施形態は、連想メモリネットワークのうちのいくつかの複数の行のうちのいくつかに対応する複数のストリーミングキューを用いて連想メモリベースから連想を想起することを含む。
本発明のいくつかの実施形態は、大規模スパースマトリックス内のデータを符号化する方法を含む。そのような方法は、行識別子値及び列識別子値によって識別される非ゼロのデータのロケーションを含むスパースマトリックスを提供すること、並びに固定長の符号化されたマトリックスインデックスワードを読み取ることを含むことができる。いくつかの実施形態は、少なくとも1つの固定長の符号化されたマトリックスインデックスワードにおいて可変ワード長を有する符号化されたインデックスオフセット値を提供することによって、スパースマトリックス内の所与の行について、0(ゼロ)の値を有する絶え間なく連続したセル、カウント及び/又はビットをインデックス付けすることを含む。加えて、変数ワード長の非ゼロのデータ値は、少なくとも1つの固定長の符号化されたマトリックスインデックスワードから読み出すことができ、可変ワード長の非ゼロのデータ値は、対応する列識別子に関連付けることができる。
本明細書ではデータを符号化するオペレーションの例が提供されるが、本明細書で説明するアーキテクチャは、単独でかつ/又は互いに組み合わせて用いることができる多くの異なるタイプの符号化オペレーションに解放することができる。例えば、多くのスパースマトリックス方法の任意の1つ又は複数を、本明細書で説明する実施形態において適用可能とすることができる。いくつかの実施形態では、2つ以上のタイプの符号化を組み合わせて用い、連想メモリベース内のさまざまなマトリックスで起こり得るさまざまな特性に対処することができる。この点に関して、さまざまなマトリックス特性に対応するさまざまな入力−出力マッピングデマンドに対処することができる。このように、本明細書で説明するアーキテクチャは、特定の符号化に限定されず、したがって、さまざまなマトリックス特性及び/又はメモリ特性に関して柔軟性をもたらすことができる。
図1を参照する。図1は、本発明のさまざまな実施形態による連想メモリシステム、方法、及び/又はコンピュータプログラム製品のブロック図である。図1に示すように、本発明のさまざまな実施形態による連想メモリシステム、方法、及び/又はコンピュータプログラム製品1000は、連想メモリネットワーク1013、1015のネットワーク1012、1014からなるネットワークを含む連想メモリベース1010を含む。実施形態は、例示の目的で、連想メモリネットワーク1013、1015の2つのネットワーク1012、1014として示されているが、本明細書では、連想メモリネットワーク1013、1015の1つのネットワーク及び/又は3つ以上のネットワークを含むことができる。それぞれの連想メモリネットワーク1013、1015は、その内部に、それぞれの観察者のための複数の被観察エンティティ間での連想及び/又は連想の頻度を含む。
図1を更に参照すると、処理システム、方法及び/又はコンピュータプログラム製品1030が設けられている。これらの処理システム、方法及び/又はコンピュータプログラム製品1030は、連想メモリベース1010内の連想メモリネットワーク1013、1015のネットワーク1012、1014からなるネットワークへの連想を観察し(読み取り)かつ該ネットワークからの連想を想起(クエリ)するように構成される。処理システム、方法及び/又はコンピュータプログラム製品1030は、観察者システム、方法及び/又はコンピュータプログラム製品1032並びにクエリシステム、方法及び/又はコンピュータプログラム製品1034を含む。観察者システム、方法及び/又はコンピュータプログラム製品1032は、連想メモリネットワーク1013、1015のそれぞれのネットワーク1012、1014内に、それぞれの観察者エンティティ及びそれぞれの観察者エンティティによって観察された複数の被観察エンティティの間での連想を観察するように構成される。クエリシステム、方法及び/又はコンピュータプログラム製品1034は、ユーザクエリに応答して、連想メモリネットワーク1013、1015のそれぞれのネットワーク1012、1014からエンティティ、ユーザ及び/又はイベントの連想を想起するように構成される。ユーザクエリの結果は、結果ディスプレイ1026によって表示するように構成することができる。
それぞれの連想メモリネットワーク1013、1015の各々は、物理的かつ/又は論理的に互いに分散させることができる。いくつかの実施形態では、それぞれの連想メモリネットワーク1013、1015はそれぞれ、2つ以上の物理デバイスで実施することができる。いくつかの実施形態は、それぞれの連想メモリネットワーク1013、1015がそれぞれ、論理的に異なるデバイスを含む同じ物理デバイスで実施することができることを提供する。この点に関して、連想メモリベース1010は線形又はほぼ線形に規模増大することができるので、それによって、連想メモリの大規模ネットワークを設けることが可能になる。
図2を参照する。図2は、本発明のいくつかの実施形態による、図1に関して上述したような連想メモリベース1010にクエリする(1034)ためのクエリの概観を示すフローチャートである。本明細書で説明するようなクエリは、本明細書で説明するような連想メモリベースとともに、システム及び/又はコンピュータプログラム製品によって実行することができる。ユーザ10は、ユーザ及び/又はユーザのクラスに特有のかつ/又は特徴的な場合がある意味特性、語彙特性、言語特性、用語体系特性及び/又は分類学特性を含むことができるユーザ空間の用語でユーザクエリを送出する。
クエリマップ20は、ユーザクエリを受信し、クエリ式を連想メモリベースの物理表現にマッピングする。換言すれば、クエリマップ20は、ユーザ空間から連想メモリベースに対応する物理空間にクエリを変換することができる。このように、ユーザ空間又はユーザオントロジ(user ontology)は、物理的に格納されているものに対応する空間に下方マッピングされる。例えば、ユーザオントロジは、連想メモリ、マトリックス、行、列及び/又はそれらのマージンのうちの特定のいくつかに下方マッピングすることができる。
いくつかの実施形態は、オントロジ22を用いて、連想メモリベースの物理表現と一貫した用語でユーザクエリの分類学的意味を求めることができるマッピングを提供する。いくつかの実施形態では、マッピングは、ユーザクエリの用語の異形を求めることを含むことができる。異形の例は、ユーザクエリの用語に対応する同義語、別名、及び/又は頭字語を含むことができる。いくつかの実施形態は、マッピングが、クエリ用語のうちの異なるものに対応するマッピングポリシーを適用することを含むことができることを提供する。いくつかの実施形態では、マッピングポリシーは、特に順位及び/又は近時性に関するポリシーを提供することができる。例えば、クエリ用語(質問語)が時間次元を含む場合、マッピングポリシーは、より近時の情報がより高い関連性を有することを提供することができる。このように、マッピングポリシーは、クエリ用語の意味的使用に関する情報を提供することができる。
クエリは、物理空間にマッピングされると、連想メモリ、マトリックス、行、列及び/又はそれらのマージンのうちの特定のいくつかにおける複数の物理ロケーションからの複数のカウント情報要求に対応する一連のキューとして表される。いくつかの実施形態は、各キューが特定の連想メモリ内の特定のマトリックスの特定の行からのカウント情報要求に対応することができるように、この一連のキューをストリーミングする(12)ことができることを提供する。データのストリーミングフローを提供することによって、クエリのフル制御を実現することができ、それによって、システムは、そうでなければ通常のバッファサイズを大幅に超える可能性のあるデータ量によって圧倒されないようになる。このように、大規模な連想メモリベースの高速かつ柔軟な実施を提供することができる。
複数のカウントサーバノード200は、ストリーミングキュー12に対応する要求を受信し、それに応答してカウント情報を提供することができる。いくつかの実施形態では、カウントサーバノード200は、連想メモリのうち、互いに対して独立に配置することができる特定のいくつかに対応することができる。例えば、いくつかの実施形態では、カウントサーバノード200を連想メモリのそれぞれに対して提供することができる。このように、連想メモリベースは、通信、処理及び/又はストレージのハードウェアリソースを圧倒することなく、実質的に限りない発展及びデータ容量で実施することができる連想メモリネットワークを提供することができる。
アトムサーバは、単一の「カテゴリ:値」をマトリックス内の行にマッピングするのに用いることができるアトムテーブルノード202を含みかつ/又はアトムテーブルノード202にアクセスするように動作可能とすることができる。クエリからの返された結果を元のクエリ内の「カテゴリ:値」に連想することができるように、アトムテーブルノード202のロケーションを用いて、逆ルックアップ(逆検索)をサポートすることができる。
カウント情報がカウントサーバノードから受信された後、結果コントローラ24は、オントロジ22にアクセスし、物理言語カウント情報を再合成してユーザ言語に戻すように動作可能である。いくつかの実施形態では、結果コントローラ24は、マッピングポリシーに従ってカウント情報を整理及び編成することができる。結果26は、ユーザ10に提示することができ、カウントに対応するトランザクション頻度データを活用することができるメトリック空間内に存在することができる。
次に図3を参照する。図3は、本発明のいくつかの実施形態による連想メモリベース1010の物理名前空間階層を示すブロック図である。物理名前空間における階層の最上部は、連想メモリネットワークのネットワーク1013、1015のそれぞれに対応するネットワーク識別子30を含む。いくつかの実施形態では、連想メモリベースは、互いに独立に配置、作成、管理、ポピュレート(追加)及び/又は創設することができる多くのネットワーク1013、1015を含むことができる。各ネットワーク1013はメモリの観点から更に分割される。詳細には、ネットワーク1013を分割するための属性は、本明細書で用いられるように、カテゴリ:値順序対によって識別することができる。例えば、特定のメモリに対応するパーティションは、メモリをカテゴリとして定義するとともにメモリ値を値として定義する順序対を用いて識別することができる。このように、例えば、John(ジョン)という名前の人物に対応するパーティションは、「人物:John」として識別することができる。
いくつかの実施形態では、各メモリは、複数の連想メモリ及び/又はマトリックスを含むことができ、これらは特定の識別子を含むことができる。いくつかの実施形態は、いくつかのメモリが単一の連想メモリ及び/又はマトリックスのみを含むことができることを提供することができる。そのような実施形態では、単一の連想メモリ及び/又はマトリックスは、特に「デフォルト」等の識別子を用いてメモリ同士を一貫して識別することができる。
各メモリ内において、マトリックス内の行は、メモリに関して上述したカテゴリ:値順序対概念を用いて識別することができる。例えば、ロンドン市に対応する行は、「場所:ロンドン」として識別することができる。本明細書のいくつかの実施形態は、特定のネットワークにおける特定のマトリックス内の特定の行の識別を用いてクエリ用語を表すことができることを提供する。このように、対応するカウントサーバノードは、「ネットワーク/メモリカテゴリ:メモリ値/マトリックス/行カテゴリ:行の値」として識別される用語を含むクエリを入力として受信することができる。
それに応答して、カウントサーバノード200は、前述のカテゴリ:値の識別の形態で対応する列情報を提供することができる。この点に関して、メモリ内の特定のセルは、「ネットワーク/メモリカテゴリ:メモリ値/マトリックス/行カテゴリ:行の値/列カテゴリ:列の値」として識別することができ、エージェント、行属性及び列属性の間の意味的連想に対応する特定の連想頻度(associative frequency)を表すカウント値を含むことができる。例えば、物理名前空間において「ネットワーク/場所:ロンドン/デフォルト/人物:John/職業:銀行業」として識別されるセルに格納された値は、メモリ(場所)ロンドンが、銀行業務を行っている人物ジョンを観察した回数を表す。この点に関して、行と列(Johnと銀行業)との間の連想は、メモリ(ロンドン)の観点から観察される。したがって、行に基づくクエリを用いて、メモリ、行及び列の間の3段連想におけるカウント数を表す連想の頻度を求めることができる。
連想頻度を求めることにより、意味的報告(semantic reporting)に加えて統計的プロセスを用いてイベント及び/又は連想を評価することができる。例えば、重み付け、関連性、ランク付けされたエントロピ及び/又は近時性を求めかつ/又は用いて、3段連想の頻度の解析を提供することができる。このように、経験を用いて連想を解析することにより、関係が存在することを単に格納及び/又は報告するよりも大幅に優れた解析的な値が提供される。
次に図4を参照する。図4は、本発明のいくつかの実施形態による、図2に関して上述したようなクエリマップオペレーション20の概観を示すフローチャートである。ユーザのロジック(論理)は、クエリ入力ベクトル40として受信される。このクエリ入力ベクトル40は、ユーザによって提供された1組の用語とすることができる。クエリ入力ベクトルは、連想メモリベースの物理メモリの名前空間に対応する物理名前空間を表すために意味空間に拡張される(ブロック42)。この拡張は、図2に関して上述したようにオントロジ22を用いて行うことができ、関連マトリックスを定義する(ブロック44)のに用いることができる属性ベクトルを生成することができる。換言すれば、属性ベクトルにおける属性の何らかのメモリ/知識を有するマトリックスのうちのいくつかを定義することができる。このように、クエリに関連のある情報を含む物理構造を識別することができる。
クエリ用語のうちの他のいくつかに対応する情報を有する関連行を定義することができる(ブロック46)。このように、クエリ用語のうちの他のいくつかに対応する情報を含む定義された各マトリックス内での行の物理ロケーションが識別される。例えば、「人物:John」に対応するクエリ用語を含む属性ベクトルの場合、「場所:ロンドン」、及び「職業:銀行業」は、「人物:John」に対応する関連マトリックス並びに「場所:ロンドン」及び「職業:銀行業」に対応する関連行を定義することができる。したがって、定義された行のそれぞれに対応するストリーミングキューは、図2に関した上述したカウントサーバノード200への入力として処理することができる。例えば、ストリーミングキューのうちの1つは、「ネットワーク1/人物:John/デフォルト/場所:ロンドン」として定義された入力を提供することができ、ストリーミングキューのうちの別の1つは、「ネットワーク1/人物:John/デフォルト/職業:銀行業」として定義された入力を提供することができる。
出力カテゴリ48は、属性ベクトルにおけるクエリ用語に対応する関連列を定義するために提供することができる(ブロック50)。このように、属性ベクトルにおけるクエリ用語に対応する知識の、メモリベース内での物理ロケーションは、具体的に識別される。いくつかの実施形態は、物理ロケーションの名前空間を整数インデックスに変換及び/又は変形することができることを提供する。いくつかの実施形態では、整数インデックスへの名前空間識別子の変換及び/又は変形は、階層的な名前空間構造の各レベルにおいて独立に実行することができる。
行/列の識別に対応する物理メモリロケーションのそれぞれが定義されると、それらの物理メモリロケーションに対応するマトリックスカウントのサブセットがフェッチされる(ブロック52)。行に基づく組織化手法を用いることができるので、分割は名前空間に基づく。この点に関して、パーティションは、ストリーミングキューを介して処理することができる管理可能なデータ量を提供することができる。加えて、いくつかの実施形態は、例えば、メモリルーティング対メモリが特に小さい場合の行ルーティングを提供することができる可変データ分散ストラテジを提供する。可変分散ストラテジは、メモリサイズを考慮し、それに応じてルーティングを適合させることができる。
次に図5を参照する。図5は、本発明のいくつかの実施形態による、図4に関して上述したような意味空間42の拡張に対応するオペレーションを示すフローチャートである。意味空間42を拡張することは、クエリ入力ベクトル60内の各カテゴリ:値62について、属性の分類学が存在するか否かを判断すること、分類学マップ(ブロック66)を生成すること、異形を求めること、及び異形マップ(ブロック64)を生成することを含む。
いくつかの実施形態は、異形マップが、異なるスペル、頭字語、省略形等に対応する属性を含むようにクエリ拡張を提供することができることを提供する。いくつかの実施形態では、分類学マップは、属性語彙の制御された拡張を提供するクエリ拡張を提供することができる。例えば、属性「1月」に対応する分類学マップは、特に「冬」、「最初の月」、及び/又は「寒い」を含むことができる。同様に、属性「トラック」に対応する分類学マップは、特に「車両」、「積荷」、及び/又は「マック(Mack)」を含むことができる。
いくつかの実施形態では、分類学による拡張は、抽象化のレベルが増加及び/又は減少する追加の属性を提供することができる。いくつかの実施形態では、分類学マッピングは、同義語を含むように属性を拡張することができるという点で、シソーラス機能と同様に動作することができる。いくつかの実施形態は、分類学マッピングが、クエリ属性に対応する全ての名詞及び動詞を提供することができることを提供する。
クエリ属性に対応する異形マップ及び分類学マップが生成された場合、これらのクエリ属性の各々はそれぞれ拡張される(ブロック68及び70)。いくつかの実施形態は、クエリ属性を補足及び/又は置換するように階層的な分類学構造を提供することができることを提供する。次に、クエリ入力ベクトルは、異形拡張(variant expansion)及び/又は分類学拡張(taxonomic expansion)を含むように拡張される(ブロック72)。このように、クエリ入力ベクトルは、この時、拡張された物理名前空間で表された拡張属性ベクトルとして提供される。
次に図6を参照する。図6は、本発明のいくつかの実施形態による、図4に関して上述したような拡張属性ベクトルの関連マトリックスを定義する(44)ごとに対応するオペレーションを示すフローチャートである。各カテゴリ:値80について、オペレーションは、「カテゴリ:値」がメモリとして宣言されているか否かを判断する(ブロック82)。「カテゴリ:値」がメモリとして宣言されている場合、対応するメモリマッピングポリシーを選択することができる(ブロック84)。
メモリマッピングポリシーは、そのメモリについて2つ以上のマトリックスが含まれている場合に、マトリックスがいくつ含まれているのかを規定するように動作可能である。例えば、最も単純なマッピングポリシーは、メモリが単一のマトリックスを含むことを規定することができる。いくつかの実施形態では、メモリマッピングポリシーは、複数のマトリックス及び/又はメモリを、時間分割等の1つ又は複数の特性の関数として定義する意味論を提供することができる。例えば、タイムスライシング意味論は、新たなマトリックスが、特に、時間、日、週、月、四半期、季節及び/又は年等の所定の時間的単位ごとに生成/提供されることを提供することができる。このように、特定のタイムスライスに対応するマトリックスは、管理可能な規模を超えて増大し続けることがなく、検索された情報の定常状態摂取(steady state ingestion)を提供することができるので、定常状態システム性能を達成することができる。いくつかの実施形態では、メモリマッピングポリシーは、タイムスライスされたマトリックスに対応する近時性バイアス(recency bias)を定義することができる。例えば、より近時のデータは、それよりも近時でないデータよりも関連性、興味、重要性、及び/又は切実度の高いデータとすることができる。この点に関して、タイムスライスされたマトリックスからの情報は、より近時のデータにより大きな重みを与え、それよりも近時でないデータに小さな重みを与えるように独立に重み付けすることができる。いくつかの実施形態では、マトリックスデータの重み付けは、ストリーミングキューに対応して受信されるカウントが重み付けを含むように、カウントがマトリックスから検索されたときにカウントに対して実行することができる。いくつかの実施形態は、結果がストリーミングキューから受信された後に重み付けをカウントデータに対して実行することができることを提供する。
いくつかの実施形態は、マトリックスの次元をできるだけ適度に小さくして含めるという目的を達成するよう最大マトリックスサイズを規定することができるように、メモリマッピングポリシーが容量に基づくポリシーを含むことができることを提供する。例えば、メモリマッピングポリシーは、マトリックスの次元の制限を知るという利点に基づきシステム性能について物理的に定義することができる。上述したようなタイムスライシングの意味論は、この目的をも当然達成することができるが、いくつかのデータは時間的に基礎とすることができず、したがって、タイムスライシングは、マトリックスの次元の制限を規定するのに適用可能でない場合がある。
メモリマッピングポリシーに基づいて、1つ又は複数のメモリ/マトリックスが追加され(ブロック86)、メモリとして宣言された各「カテゴリ:値」に対応する関連のある物理マトリックスのサブキューブ選択が提供される(ブロック88)。
次に図7を参照する。図7は、本発明のいくつかの実施形態による、図1で説明しかつ図6に関して上述したような連想メモリベース1010の選択されたマトリックスの拡張サブキューブを示すブロック図である。いくつかの実施形態は、選択されたマトリックスのサブキューブを、第1の軸に沿った異形拡張92として及び第2の軸に沿った分類学拡張94として拡張することができることを提供する。このように、メモリ96の関連性を保持することができる。
いくつかの実施形態では、分類学拡張94は、同じマトリックス/メモリの異なるメモリ96が同じ行に設けられることを提供する。例えば、時間ポリシーの場合、メモリ1のマトリックス1、2及び3は、1月、2月、及び3月の月のタイムスライスに対応することができ、異なるメモリ96の関連性を維持するために行に配列することができる。メモリ96の関連性を維持することにより、データを更に利用して、特に近時性及び/又は距離バイアスを含めることができる。
いくつかの実施形態は、異形拡張92が異形に関するメモリの関連性を提供することを提供する。例えば、メモリの列配置は、特に、同義語、省略形、置換、及び/又は頭字語の間の関係を維持することができる。この時点で、サブキューブはマトリックス名によって表され、行情報も列情報も含まないことに留意されたい。例えば、上述したように、トリプルストア(triple store)連想に対応する頻度情報(カウント)は、メモリ(エージェント)、行及び列を含む。その点に関して、選択されたマトリックスのサブキューブは、メモリ及び/又はマトリックスの識別情報を表す。したがって、クエリを満たすことは、行サブセット及び列サブセットを定義することも含む。
次に図8を参照する。図8は、本発明のいくつかの実施形態による、図4に関して上述したような行サブセット及び列サブセットを定義することを示すフローチャートである。いくつかの実施形態は、行サブセット及び列サブセットを定義することが、拡張カテゴリ:値に対応するマトリックスのそれぞれについて実行されることを提供する(ブロック100)。拡張入力カテゴリ:値(ブロック102)ごとに、そのカテゴリ:値入力に対応する行をキューリソースにバインドして(ブロック108)、行キューを定義することができる。いくつかの実施形態は、そのカテゴリ:値に対応する行が含まれているか否かを確認するためにマトリックスがチェックされることはないことを提供する。この点に関して、行キューは、マトリックスの内容の特定の知識なしで定義することができる。
いくつかの実施形態では、この判断は、行がマトリックスに存在するか否かを判断することを含むことができる。いくつかの実施形態は、この判断が行われ、行がマトリックスにない場合、そのカテゴリ:値入力に対応するキューリソースはバインドされない。マトリックスが、カテゴリ:値入力に対応する行を含む場合、その行をキューリソースにバインドして(ブロック108)、行キューを定義することができる。
いくつかの実施形態では、行が定義されるときに行にバインドするのに利用可能な複数のキューからなるプールとして複数のキューリソースを提供することができる。いくつかの実施形態は、キューリソースが固定のかつ/又は事前に定義されたフォーマット及び/又はサイズを含むことができることを提供する。このように、キューを処理及び/又はストリーミングすることは、固定のかつ/又は事前に定義されたフォーマット及び/又はサイズに基づく標準化された手法を用いて実行することができる。いくつかの実施形態では、行が定義されるときに、該行のキューリソースを生成及び/又は作成することができる。
出力カテゴリごとに(ブロック110)、その出力カテゴリは列カテゴリリストに追加される(ブロック112)。このように、行/列サブセットの列部分を定義することができる。定義されたマトリックスのそれぞれについて、その定義された行キュー及び列カテゴリリストは、カウントを検索することができるサブセット114を定義することができる。このように、定義されたマトリックスそれぞれのマージンを定義することができる。定義されたマトリックスのマージンは、マトリックスのそれぞれにおける行のそれぞれのどの部分が、クエリに対応するデータを含むのかを規定するのに用いることができる。
次に図9を参照する。図9は、本発明のいくつかの実施形態による、図2に関して上述したようなストリーミングキュー12に対応するオペレーションを示すフローチャートである。図8に関して上述したように、キューリソースをキューにバインドした後、行キュー116をストリーミングして、互いに対して独立に配置することができる連想メモリ/マトリックスのうちの特定のいくつかに対応するカウントサーバノードにアクセスすることができる。ノードマッピングオペレーション118は、行キュー116のうちの複数のものを、複数のカウントサーバノード200への1対1の対応を含むことができる複数のノードリーダ120にマッピングするのに用いることができる。この点に関して、ノードマッピングオペレーション118は、行キュー116とノードリーダ120との間の多対多インターフェースを提供することができる。
いくつかの実施形態では、ノードリーダ120は、単一の行キュー116に対応するクエリに基づいてその対応するカウントサーバノード200からの要求を実行することができる。いくつかの実施形態は、ノードリーダ120が、複数の行キューに対応するクエリに基づいて自身の対応するカウントサーバノード200からのバッチ要求を実行することができることを提供する。例えば、行キュー116のうちの複数のものは、同じ連想メモリ及び/又はマトリックスからのクエリを含むことができる。このように、特定のカウントサーバノード200からのマトリックスの要求の数を削減しかつ/又は最小にすることができる。
ノードリーダ120からの要求に応じて、カウントサーバノード200は、行キュー116に対応するカウントデータをノードリーダ120に返すことができる。いくつかの実施形態では、ノードリーダ120は、カウント及び/又は対応する識別子を行キューに返すように動作可能である。いくつかの実施形態は、ノードマッピングオペレーション118が少なくとも1つの計算を含むことを提供する。このように、ノードマッピングは、ルックアップテーブルを用いることなく実行することができる。したがって、分散連想メモリベースは、ルックアップテーブルが呈するおそれがある次元数の限界を超えることなく適合及び/又は増大することができる。
次に図10を参照する。図10は、本発明のいくつかの実施形態による、図9のノードマッピング118に関して上述したような行キュー内の定義された行を行ロケーション番号にマッピングするオペレーションを示すフローチャートである。ノードリーダ(図9の120)は、カウントサーバノード(図9の200)に固有にものとすることができるので、行ロケーションノード番号が求められる。行キューごとに、行レベル名前空間124は、任意の変調変数126と共に、ハッシュ関数128を適用されて、行ロケーション番号130を表すハッシュコードを生成することができる。いくつかの実施形態では、ネットワーク割当て情報122も、ハッシュ関数128が用いることができる。いくつかの実施形態では、ネットワーク割当て122は、連想メモリベース1010を含むネットワークリソースに対応することができる。いくつかの実施形態は、行ロケーションノード番号130が計算を介して求められることを提供する。この点に関して、行レベル名前空間を、多数のマシンのうち、その行を含むマシンに対応する識別情報を含むことができる整数行ロケーションノード番号に変換することができる。
変調変数126は、ハッシュコードを他の空間に逸らす他の連結を提供することができる。このように、柔軟性を提供することができる。例えば、連想メモリベース1010が増大すると、追加のマシンに対応する識別情報を提供するように変調変数を調整することができる。
いくつかの実施形態は、ハッシュ関数128が、行レベル名前空間124及び/又は変調変数126に適用されてハッシュコードを生成するハッシュ関数を含むことができることを提供する。いくつかの実施形態では、ネットワーク割当て122は、クラスタ内のマシンの数量及びマシンクラスタオフセットを含むことができる。いくつかの実施形態(図示せず)は、クラスタ内のマシンの数量を用いてハッシュコードにモジュロ演算を適用することができることを提供する。モジュロ演算の結果はマシンクラスタオフセットと組み合わされて、行ロケーションノード番号130を求めることができる。しかしながら、モジュロ演算にマシンクラスタ情報を用いる手法は、連想メモリベースの増大及び規模に不必要に制限を課す効果を有する場合がある。
次に図11を参照する。図11は、本発明のいくつかの実施形態によるカウントサーバノードの概観を示すブロック図である。いくつかの実施形態では、カウントサーバは、図9に関して上述したように、1つ又は複数のカウントサーバノード200及び1つ又は複数のアトムテーブルノード202を備える。カウントサーバノード200は、例えば、特にマトリックス識別、エンコーダ及び/又はデコーダ等の内部プロセスを駆動するように構成された複数の処理エンジン132を備えることができる。
いくつかの実施形態は、カウントサーバノード200が、カテゴリ:値属性に対応するアトムテーブルロケーション番号を提供することができるアトムテーブルノードマッピングへのカテゴリ:値138を含むことができることを提供する。アトムテーブルロケーション番号は、適用可能である場合に、選択されたアトムテーブルノード202内でアトムテーブルを選択して、マトリックスへの鍵値になる識別子を解明するのに用いることができる。マトリックスへの鍵値は、マトリックスインデックスページ134及び/又はマトリックスデータページ136で用いることができる。いくつかの実施形態では、マトリックスインデックスページ134は、1つ又は複数のB+木ページを含むことができるが、他の形態のインデックス付けを用いて鍵値をマトリックスに関係付けることができる。本明細書で説明するように、マトリックスインデックスページ134は、他のページの識別情報を含むことができ、該他のページも、マトリックスインデックスページ134とすることもできるし、マトリックスデータページ136とすることもできる。マトリックスデータページ136は、例えばクエリに対応するカウントデータ等、データのロケーションに関するマトリックスロケーション情報を含むことができる。
いくつかの実施形態は、マトリックスインデックスページ134が、鍵値に基づいて永続ストレージ140におけるデータの物理ロケーションを解明する。いくつかの実施形態では、鍵値の一部分は永続ストレージにおけるページアドレスを含むことができる。
したがって、カウントサーバノード200は、名前空間に基づく文字列を受信し、それらの文字列を鍵値に変換し、鍵値に対応するカウントデータを検索する。復帰の際に、いくつかの実施形態は、鍵値を名前空間に基づく文字列に逆変換することができることを提供する。いくつかの実施形態では、返された値は、キューストリームに戻ってフローすることができる識別子整数として保持することができる。このように、その後適用される順序付け制御及びステッピング制御(stepping control)は、名前空間に基づく文字列としてではなく整数識別子としてカテゴリ:値の操作を行うことができる。このように、より効率的な整数比較オペレーションを文字列比較オペレーションの代わりに用いることができる。したがって、カウントサーバノード200に対するインターフェース定義は、入力方向では名前空間文字列に基づいている。
永続ストレージ140は、各カウントサーバノード200にローカルである。このように、ローカル永続ストレージ140は、アトムテーブルノード202以外で、各ノードが独立しかつ自給自足できるシェアードナッシングアーキテクチャを提供し、システム全体にわたって単一競合点(single point of contention)は存在し得ない。カウントサーバノード200は、実質的なサーチオペレーション及びカウント検索オペレーションをローカルに実行するので、追加のマシンを付加することによって連想メモリベースを増大させることができ、それによって、分散連想メモリベースに実質的に線形の規模拡大性をもたらすことができる。
次に図12を参照する。図12は、本発明のいくつかの実施形態による、図11に関して上述したようなカウントサーバノード200における識別ビットフィールドへのカテゴリ:値マッピング(ブロック138)のオペレーションを示すフローチャートである。カテゴリ:値(ブロック142)ごとに、アトムテーブル検索が実行される(ブロック144)。いくつかの実施形態では、アトムテーブル検索は、複数のアトムテーブルノードの中のいずれが、クエリ内のカテゴリ:値に対応する識別データを含むのかを判断するのに用いることができる。アトムテーブルノードが検索された後、識別データがそのアトムテーブルノード内で検索される(ブロック146)。検索オペレーションとして説明したが、いくつかの実施形態は、ハッシュ関数及び/又は他の計算方法を介して計算的にアトムテーブルを求めることができることを提供する。
識別データは、鍵値と呼ばれる場合がある識別フォーマットを提供するように変換される(ブロック148)。いくつかの実施形態では、鍵値フォーマット150は、特に、カテゴリインデックスフィールド152、アトムノードフィールド154、及び/又は値インデックスフィールド156を含むことができる。カテゴリインデックスフィールド152、アトムノードフィールド154及び値インデックスフィールド156のそれぞれは、カテゴリ情報、アトムノード情報、及び値情報にそれぞれ対応するデータ値を含むように構成することができる。鍵値フォーマット150は、さまざまなフィールド152、154、及び156の長さを柔軟にすることができることを提供することができる。アトムノードフィールド154を設けることによって、後にマトリックスからの戻りデータをカテゴリ:値に関連付けるときに、逆検索を実行することができる。いくつかの実施形態では、鍵値フォーマット150は固定ビット長を有することができる。例えば、鍵値フォーマットは、特に16ビット、32ビット、64ビット、128ビット及び/又は256ビットとすることができる。
次に図13を参照する。図13は、本発明のいくつかの実施形態による、カウントサーバノード200におけるマトリックス識別のオペレーションを示すフローチャートである。例えばカテゴリ:値属性等の行レベル名前空間160に対応するマトリックスを識別することは、アトムテーブルノードを検索することを含むことができる(ブロック162)。鍵値とも呼ばれるマトリックス識別子を検索することができる(ブロック164)。いくつかの実施形態では、鍵値及び/又は該鍵値内の1つ若しくは複数のフィールドを圧縮することができる。
マトリックスのルートページアドレスは、鍵値を用いて検索される(ブロック166)。いくつかの実施形態では、ルートページは、符号化されたマトリックスに対応する開始ページを表す。いくつかの実施形態は、マトリックスタイプを判断するために、ルートページのそのヘッダが読み出される(ブロック168)ことを提供する。いくつかの実施形態では、マトリックスタイプは、ルートページにおけるマトリックスの行の全てを含むことができるほど十分小さな「バイト(Byte)」タイプマトリックスを含むことができる。この点に関して、タイプ「バイト」復号(ブロック172)用のマトリックスのデコーダを選択することができる(ブロック170)。
いくつかの実施形態は、マトリックスタイプが、2ページ以上のページを用いて行の全てを識別する大規模マトリックスを含むことができることを提供する。この点に関して、タイプ「大規模(Large)」復号(ブロック174)用のマトリックスのデコーダを選択することができる(ブロック170)。本発明のいくつかの実施形態に従って他のタイプの復号(ブロック176)も同様に提供することができる。例えば、特に事前/次期(prior/next)復号、三角(triangular)復号、及び/又はビットプレーン復号を用いることができる。
次に図14を参照する。図14は、本発明のいくつかの実施形態に従って符号化される標準的なバイトマトリックスを示すブロック図である。図13に関して上述したように、バイトマトリックスは、大規模マトリックスではなく、単一のルートページに存在することができる。いくつかの実施形態では、バイトマトリックスについて最大サイズを規定することができる。例えば、16kバイトを超えないように全サイズを制限することができる。いくつかの実施形態は、16kバイトよりも小さくかつ/又は大きくすることができるさまざまな全サイズを含むバイトマトリックスを提供することができる。いくつかの実施形態では、例えば、特に事前・次期、三角、及び/又はビットプレーンを含めて、他のタイプの局所的にコンパクトな表現を符号化することができる。
いくつかの実施形態では、バイトマトリックスはヘッダ情報180を含む。このヘッダ情報180は、特に、行数182、列数184、行識別子186、及び/又は列識別子188を規定する。いくつかの実施形態では、行識別子186及び/又は列識別子188は、そのインデックス順に設けることができ、それぞれ「N」及び「M」等のインデックス変数を介して求めることができる。この点に関して、バイトマトリックスは、カウントを含むセル190のN×Mアレイを含むことができる。行インデックス付けを用いることによって、行インデックスが求められると、現在の行を基準とした相対的なオフセット値を用いて他の行に直接アクセスすることができる。バイトマトリックスは、初期化されるときに、大量にポピュレートされる場合があるが、更にポピュレートされるにつれてますますスパース(まばら)になる。いくつかの実施形態では、同じ日付及び/又は時間特性を共有する行及び/又は列を含めることによってデータを平滑化(flatten)することができる。
次に図15を参照する。図15は、本発明のいくつかの実施形態による、図14に関して上述したような標準的なバイトマトリックスを復号するオペレーションを示すフローチャートである。いくつかの実施形態は、標準的なバイトマトリックスを復号することが、行数を読み取る(ブロック220)こと及び列数を読み取る(ブロック222)ことを含むことを提供する。図14に関して上述したように、行数及び列数は、ヘッダ情報180を読み取ることによって求めることができる。
行数について(ブロック224)、行インデックスに対する行識別子が読み取られる(ブロック226)。同様に、列数について(ブロック228)、列インデックスに対する列識別子が読み取られる(ブロック230)。インデックス付けされた各行識別子及び各列識別子の組合せをインデックス付けすることによって、各セルに対応するカウントが読み取られる(ブロック232、234、236)。具体的には、クエリ内の各行インデックスについて(ブロック232)、及び行インデックスのそれぞれに対応するクエリ内の各列インデックスについて(ブロック234)、カウントデータが読み取られる(ブロック236)。カウントが0よりも大きい場合(ブロック238)、行/列識別子及び対応するカウントが組み合わされて(ブロック240)、識別子:カウント結果が提供される(ブロック242)。カウント値が0である場合、識別子に対応する結果を提供することはできない。
次に図16を参照する。図16は、本発明のいくつかの実施形態による、大規模マトリックスを符号化する大規模マトリックス木を示すブロック図である。いくつかの実施形態では、大規模マトリックス木は、例えばB+木ページを含むことができる。B+木ページは、カウントの効率的な挿入、検索及び/又は削除を可能にするようにソートされたデータを表すことができる。カウントのそれぞれは、鍵を用いて識別することができる。いくつかの実施形態は、大規模マトリックス木が、超大規模スパースカウントマトリックス上での観察を提供するために入力/出力オペレーション数を最小にすることができる大きなファンアウトを含むことができることを提供する。このように、大規模マトリックス木は、大規模マトリックスを非ゼロのカウント値のエリアに低減することができる。
いくつかの実施形態では、大規模マトリックス木は、大規模マトリックス内の行及びカウントデータを含む鍵201及び値203を含むリーフページ198を更に定義することができる反復ページ194への参照子を含むことができるルートページ192を含む。いくつかの実施形態は、ルートページ192及び/又は反復ページ194が、他のB+木ページ196及び/又は他の反復ページ194への参照子を含むことができることを提供する。いくつかの実施形態は、鍵201が、1つ又は複数の符号化方式に対応する符号化されたデータ文字列の開始点を規定することを提供する。例えば、いくつかの実施形態は、鍵201が、値203によって提供することができるランレングス符号化及び/又は連想カウント符号化の開始点を提供することができることを提供する。いくつかの実施形態では、値203はマトリックスの特定の行内のセルの一部分を指し示す。いくつかの実施形態は、値203が、例えば、特に4バイト、8バイト、16バイト、32バイト、64バイト及び/又は128バイト等の固定長を有することができることを提供する。
いくつかの実施形態では、超大規模スパースマトリックスは、本明細書で説明するようなセルラン符号化を用いて符号化することができる。セルラン符号化のいくつかの実施形態は、図17を参照して更に説明することができる。図17は、本発明のいくつかの実施形態による、図16に関して上述したようなセルラン符号化を示すブロック図である。いくつかの実施形態では、セルラン符号化は、ランレングス符号化及び無限整数符号化の選択的にハイブリッド化された特性を含むことができる超大規模スパースマトリックス用のデータ圧縮を提供することができる。ランレングス符号化は、データの数個のラン(run)を、元のランとしてではなく単一のデータ値及びカウントとして格納することができるデータ圧縮の形態である。例えば、超大規模スパースマトリックスの場合、ランレングス符号化は、大量の0の値を補うのに用いることができる。加えて、無限整数符号化は、超大規模スパースマトリックスにおいては一般的であり得るような0のランの間で起こり得る可変長整数値のデータ圧縮を提供する。
非限定的な例として、各値203は、それぞれ複数のビット204を含むことができる複数のバイト203を含むことができる。本明細書で例示するように、バイト長は8ビットを有するが、本発明はそのように限定されない。例えば、いくつかの実施形態は、8ビットよりも多いかつ/又は少ないビットを有するバイトを含む。いくつかの実施形態は、本明細書で用いられるバイトのサイズがデータの1つ又は複数の特性に依存することができることを提供する。例えば、データが実質的に低いカウントを含む場合、そのようなデータにとって効率がより良くなるようにバイトサイズを削減することができる。また、いくつかの実施形態は、カウントが可変バイト長の符号化を用いて、データオーバフローを受けることがない実質的に無限のサイズを提供することができることを提供する。
いくつかの実施形態は、各バイト203内に、「ビット1」204Bが、値タイプビット、又はバイト203の残りのビットの一部としての値ビットのいずれかを定義することができることを提供する。この点に関して、「ビット0」204Aを常に継続ビットとすることができる場合、「ビット1」204Bは、継続するものがあるか否かに依存して、2つの異なる使用法を提供することができる。したがって、新たな値が開始される(最後のバイトで継続が終了する)とき、新たな値タイプが「ビット1」204Bによって提供される。例えば、前のバイトの継続ビットが「1」である場合、「ビット1」204Bをビット2〜7とともに値ビットとして含めることができる。前のバイトの継続ビットが「0」である場合、「ビット0」の「0」の値は、現在のランが或る値で終了することを示すことができる。そうではなく、「ビット0」が「1」の値を有する場合、その値は次のバイトにおいて継続される。
いくつかの実施形態は、現在のランが或る値(前のビット0=0)で終了している場合、そのバイトの「ビット1」204Bが値タイプを示すことができることを提供する。例えば、値タイプが「0」である場合、ゼロランレングスを示すことができ、これは、そのバイトにおけるビットの残りが0であることを与える。これとは対照的に、値タイプが「1」である場合、連想カウントを示すことができ、これは、そのバイトにおけるビット2〜7が無限整数符号化を用いた整数値の2進表現とすることができることを与えることができる。
次に図18を参照する。図18は、本発明のいくつかの実施形態による、図17に関して上述したようなセルラン符号化の一例を示すブロック図である。この例で示す第1バイト400は、第1ビット及び第2ビットに0を含む。前の継続ビット値が0であると仮定すると、第1ビットの0の値は、現在のバイトが或る値でこのランを終了していることを示し、第2ビットの0の値は、値タイプがゼロランレングスであることを示している。ビット2〜7に対応する数値は22であり、この数値は識別子(初期値は0であると仮定)に加えられて、22である新たな識別子値が生成される。これは0のランであったので、対応するカウント値はない。
第2バイト402は、第1ビット及び第2ビットにそれぞれ0及び1を含む。第1ビットの0の値は、現在のバイトが或る値でこのランを終了していることを示し、第2ビットの1の値は、値タイプが整数カウントであることを示している。その整数値は、ビット2〜7(000110)に対応する数値であり、6である。22の戻り識別子値は6の整数カウント値に関連付けられる。識別子は1つだけインクリメントされて23になる。
第3バイト404は、第1ビット及び第2ビットにそれぞれ1及び0を含む。第1ビットの1の値は、現在のバイト値が次のバイトに継続することを示し、第2ビットの0の値は、値タイプがゼロランであることを示している。残りの2〜7のビット位置のビット(110011)は、ゼロランの値が完全に求められるまで維持されて、その後に生じるビットと連結される。
続いて、第4バイト406は、第1ビット及び第2ビットのそれぞれに1を含む。第1ビットの1の値は、現在のバイト値が次のバイトに継続することを示している。前の継続ビット(第3バイト404の第1ビット)は1であるので、値タイプはゼロランとして既に確定されている。この点に関して、第2ビットを値フィールドに含めることができる。したがって、残りの1〜7のビット位置のビット(1000100)は、先行バイトの値ビットと連結される。したがって、現在の値は、第1の値(110011)を第2の値(1000100)と連結したもの、すなわち1100111000100である。
更に続いて、第5バイト408は、第1ビット及び第2ビットにそれぞれ0及び1を含む。第1ビットの0の値は、現在のバイトが或る値でこのランを終了していることを示している。第4バイト406と同様に、前の継続ビットは1であるので、残りのビット1〜7(1000011)を値フィールドに含めることができる。したがって、新たな現在の値は、従前の現在の値(1100111000100)をビット1〜7(1000011)と連結したもの、すなわち11001110001001000011であり、これは1,688,710である。この値は従前の識別子23に加えられ、その結果、識別子は1,688,733となる。
第6バイト410は、第1ビット及び第2ビットのそれぞれに1を含む。第1ビットの1の値は、現在のバイト値が次のバイトに継続することを示している。前の継続ビット(第5バイト408の第1ビット)は0であるので、値タイプは第2ビットによって求めることができる。第2ビットの1の値は、現在のバイト値が整数カウント値であることを示している。したがって、残りの2〜7のビット位置のビット(000001)は、後続のバイト(複数の場合もあり)の値ビットとの連結のために維持される。
第7のバイト412は、第1ビット及び第2ビットにそれぞれ0及び1を含む。第1ビットの0の値は、現在のバイトが或る値でこのランを終了していることを示している。前の継続ビットは1であるので(第6バイト410)、残りのビット1〜7(1000100)を値フィールドに含めることができる。したがって、新たな現在の値は、従前の現在の値(000001)をビット1〜7(1000100)と連結したもの、すなわち0000011000100であり、これは196である。この値は整数カウントであるので、1,688,733の戻り識別子値は196の整数カウント値に関連付けられる。識別子は1つだけインクリメントされて、1,688,734となる。上述した8つの例示のバイト内において、識別子0から識別子1,688,735までの非ゼロのデータが、セルラン符号化を介して求められ、それらのそれぞれの識別子に関連付けられたことに留意されたい。
第8バイト414は、第1ビット及び第2ビットにそれぞれ0及び1を含む。第1ビットの0の値は、現在のバイトが或る値でこのランを終了していることを示している。従前のバイトは1の継続ビット値を有していなかったので、第2ビットの1の値は、値タイプが整数カウントであることを示している。この整数値はビット2〜7(000101)に対応する数値であり、5である。1,688,734の戻り識別子値は5の整数カウント値に関連付けられる。識別子は1つだけインクリメントされて、1,688,735になる。
次に図19を参照する。図19は、本発明のいくつかの実施形態による、出力カテゴリをスキャンするオペレーションを示すフローチャートである。出力カテゴリをスキャンするオペレーションは、図16に関して上述したような大規模マトリックスにより良く適用可能な場合があるが、スキャンオペレーションの一部分は、図14に関して上述したような標準的なバイトマトリックスにも適用可能とすることができる。クエリ出力カテゴリごとに、出力識別子360のビットフィールドは、カテゴリインデックスフィールド362及び値インデックスフィールド364を含む。図12に関して上述したように、出力識別子は、鍵値と呼ばれる場合もあり、本来、特にカテゴリインデックスフィールド152、アトムノードフィールド154、及び/又は値インデックスフィールド156を含むことができる。しかしながら、いくつかの実施形態によるスキャンオペレーションの目的で、カテゴリインデックス152及び値インデックス156を組み合わせて出力識別子360を形成することができるように、アトムノードフィールド154を削除することができる。オペレーションは、各クエリカテゴリについて(ブロック366)、出力識別子値を0に設定する(ブロック368)ことによってスキャンを初期化することを含む。
そのカテゴリの出力識別子360に対応するセル(複数の場合もあり)が復号され(ブロック370)、大規模マトリックスの場合には、セル符号化のタイプが返される(ブロック372)。標準的なバイトマトリックスは、セルラン符号化を用いることができない場合もあるので、ゼロランレングスが生じることはなく、したがって、標準的なバイトマトリックスにおけるセルのタイプは適用不要な場合がある。セル符号化がゼロランレングスである場合、出力識別子360は、ランレングスだけインクリメントされる(ブロック374)。出力識別子360を0のランの終了に進めることによって、超大規模スパースマトリックスを効率的な方法で処理することができる。セル符号化が整数カウントである場合、次の出力識別子値を評価することができるように、出力識別子360は1つだけインクリメントされる(ブロック376)。
カテゴリインデックス152及び値インデックス156は単一の値に連結されるので、出力識別子360が、値インデックス156に関連付けられた下位ビットを越えてインクリメントされると、カテゴリインデックス152は、次のクエリカテゴリに対応する値に進むことになる。このように、カテゴリビットフィールド152が、クエリカテゴリに対応するビットフィールドを越えてインクリメントされると(ブロック378)、結果が返され(ブロック380)、対応する識別子と照合される(ブロック382)。カテゴリインデックスがクエリカテゴリよりも大きくない場合、次のセルが復号される(ブロック370)。このように、クエリカテゴリごとに出力識別子360の全てを評価することができる。
次に図20を参照する。図20は、本発明のいくつかの実施形態による、大規模マトリックスで用いられるようなセルランデコーダのオペレーションを示すフローチャートである。いくつかの実施形態では、セルランデコーダは、バイト単位デコーダを備えることができる。このバイト単位デコーダは、図17に関して上述したようなセルラン符号化を用いて符号化された復号バイトに対応する整数カウント及び/又は停止機能を提供することができる。いくつかの実施形態は、格納された識別子をフェッチする代わりに、識別子値を本明細書で説明したように計算することができることを提供する。開始点がランレングス内にも整数カウント内にもないことを保証するために、前のバイト継続ビットは0であり(ブロック420)、開始符号化値は0である(ブロック422)。次のバイトが検索され(ブロック424)、前の継続ビットが読み取られる(ブロック426)。前の継続ビットが0である場合、符号化値はビット2〜7と連結される(ブロック428)。第1バイトにおいて(前の継続ビットの0によって示されるように)、第2ビット(ビット1)が読み取られて(ブロック432)、値タイプが求められ、該値タイプが設定される(ブロック434)ことに留意されたい。
連結(ブロック428)後、第1ビット(ビット0)が読み取られ(ブロック436)、後続のバイトが最終的な符号化値を求めるのに必要であるか否かが判断される。この点に関して、第1ビットは、後続のバイトが現在のバイトの継続であることを合図する継続ビットとすることができる。第1ビット(ビット0)が1である場合、このビットが新たな前の継続ビットとなり(ブロック438)、次のバイトが検索される(ブロック424)。第1ビット(ビット0)が0である場合、第2ビット(ビット1)を読み取ることによって、値タイプが求められる(ブロック440)。第2ビットにおける0の値はゼロランレングスを示し、符号化値がそのように返される(ブロック442)。第2ビットにおける1の値は整数カウントを示し、符号化値がそのように返される(ブロック444)。
代替形態では、前の継続ビットが1である場合、バイトは従前のバイトの継続であり、したがって、値タイプは既に分かっている。したがって、前の継続ビットは1であり(ブロック426)、値タイプは、前に復号されたバイトを介して分かる。この点に関して、値タイプは分かっているので、第2ビットを値フィールドに含めることができ、符号化値をビット1〜7と連結することができる(ブロック430)。
いくつかの実施形態では、累積されている値は、次の非ゼロのデータのロケーションへのポインタ及び/又はポインタ形態のものを含む。いくつかの実施形態では、累積されている値は、カウントを表す整数を含み、無限整数符号化を用いて符号化することができる。いずれの場合にも、上述した符号化を介した実質的に限りないフィールド長は、データオーバフローのない実質的に無限の値のサイズを提供することができる。いくつかの実施形態では、本明細書で説明した符号化は、識別子空間へのポインタを提供する可変ワードサイズのリンクリストとみなすことができる。
次に図21を参照する。図21は、本発明のいくつかの実施形態による、図2に示すような結果コントローラ24におけるオペレーションの概観を示すフローチャートである。未処理のカウントデータは行キューから累積される(ブロック210)。いくつかの実施形態では、未処理のカウントデータは、列識別情報及び対応するカウント値を含む。いくつかの実施形態は、列識別情報及び対応するカウント値を、データのロケーションの物理空間の観点から定義することができることを提供する。意味論は、クエリ用語における戻り列識別子及びカウントデータを表すためにコラプスされて(collapsed:折り畳まれて)クエリに戻すことができる(ブロック212)。
いくつかの実施形態は、最終結果を順位付けることを提供する(ブロック214)。いくつかの実施形態では、最終結果のスコアリングを行ってデータ間の相対的な関連性に関する情報を提供することができる。例えば、タイムスライスとの関連では、新しいデータほど、古いデータよりもより多く関連性があるとみなすことができる。この点に関して、結果を独立に重み付けして、データ間の相対的な関連性を取り込むことができる。例えば、連想のトリプルストアに加えて、カウントは頻度情報を提供する働きもする。頻度情報は、発生頻度の少ない連想よりも発生頻度の高い連想をより重く重み付けすることによって最終結果に取り込むことができる。
識別子は属性文字列に変換される(ブロック216)。いくつかの実施形態は、ランキング及び/又はスコアリング後になるまで待機することによって、変換されたキューストリームが、クエリの観点から相対的な重要性と一貫した予測可能な順序で提供されることを提供する。
次に図22を参照する。図22は、本発明のいくつかの実施形態による、図21に関して上述したような未処理のカウント219を累積するオペレーションを示すフローチャートである。一連の列識別子及び対応するカウントデータは、バイトマトリックスからのものであろうと大規模マトリックスからのものであろうと、行キューに戻される。いくつかの実施形態では、各行キューに対応する列識別子を所定の順序で与えることができる。例えば、列識別子を昇順に配列することができる。列識別子に基づく所定の順序を与えることによって、マトリックスの組織化方式は、維持することができるデータ間の関係を規定することができる。例えば、列識別子は、該識別子の第1の上位ビット値フィールドが属性タイプ(カテゴリ)を記述し、第2の低位ビット値フィールドがカテゴリ:値を記述するための属性値(値)を記述することを提供することができる。順序付けられた戻りデータを読み取ったとき、カテゴリフィールドが新たなタイプに進むと、従前の属性タイプが読み取られたことに対応する値の全てを推測することができる。
名前空間で記述されるようなネットワーク:メモリ:マトリックス:行のクエリ項目のそれぞれをバインドすることによって生成することができる行キュー286は、カウントデータの要求及び/又はその実現に応じてストリーミングすることができるキューリソースに整合させることができる。例えば、処理されるキュー内のデータ量及び/又はキューの数が少なくかつ/又は定められたしきい値未満であるとき(ブロック294)、ノードリーダ296の1つ又は複数は、対応する行からより多くの列及び/又はカウントをフェッチすることができる。いくつかの実施形態は、列及びカウントデータをストリーミング形式でノードリーダ296を介してフェッチし、フェッチしたとおりに対応する行キュー286に供給することを提供する。要求されたデータが提供されたことをノードリーダ296が示すまで、列識別子:カウントデータを行キュー286内に供給し続けることができる。このように、処理リソースを圧倒することを回避することができる方法でデータを間断なく処理することができる。
列識別子:カウント288は、列識別子に関係した所定の順序で行キュー286に提供及び/又は配列することができることに留意されたい。いくつかの実施形態では、列識別子:カウント288を列識別子の昇順で配列することができる。いくつかの実施形態は、列識別子:カウント288が、バイトマトリックス及び/又は大規模マトリックス木におけるデータの配列によってソートされることを提供する。例えば、マトリックスにおけるデータの配列は、実質的にポピュレートされていない超大規模スパースマトリックス内の非ゼロの部分を識別する。いくつかの実施形態では、データの配列は、データの関連カテゴリを同じ場所に配置することができるという点で更なる高い価値(richness)を与える。したがって、列識別子は意味論的に重要な場合がある。このように、連想メモリベースの編成は、その速度及びその利用の柔軟性に直接寄与することができる。
いくつかの実施形態は、列識別子が、未確定の行キュー286の最小の列識別子値よりも小さい場合に(ブロック280)、その列識別子を最小の識別子として設定する(ブロック282)ことを提供する。換言すれば、オペレーションは、行キューにある最小の列識別子値から開始する順序で行キュー286から列識別子:カウントデータを検索する列識別子反復器として機能することができる。最小の識別子値に対応する行キュー286の列識別子値の列識別子:カウントデータが検索され、適用可能な場合には、関連カウントを照合するために、その列識別子:カウントの異形を用いてコラプスすることができる(ブロック290)。このように、未処理のカウント292を累積することができる(ブロック292)。
図7に関して上述したように、選択されたマトリックスのサブキューブは、異形拡張として拡張することができる。拡張された異形に対応するクエリ結果が返されたことから、次に図23を参照する。図23は、本発明のいくつかの実施形態による異形コラプスのオペレーションを示すフローチャートである。異形は一般的には相当語句であるとみなされるので、クエリ用語の異形に対応するカウント情報は付加的とすることができる。例えば、クエリ用語「Joseph(ジョゼフ)」の異形が「Joe(ジョー)」及び「Joey(ジョーイ)」を含むことができる場合、「Joseph」、「Joe」、及び「Joey」に対応する未処理のカウントデータを合計して、前に拡張された異形をコラプスすることができる。
いくつかの実施形態によるオペレーションは、各行キューの照合について(ブロック480)、異形が前の行にマッピングするか否かについての判断を行う(ブロック492)ことができることを提供することができる。異形が前の行にマッピングする場合、新たな結果が、未処理のカウント(ブロック490)内の前の行の結果に追加される(ブロック494)。未処理のカウント(ブロック490)は、各行識別子に対応する列識別子:カウントデータとして格納することができる。例えば、未処理のカウントを「行識別子,列識別子:カウント,列識別子:カウント,...」として提供することができる。異形が前の行にマッピングしない場合、新たな行が未処理のカウント(ブロック490)に追加される(ブロック496)。
各行キューの照合内での各列の照合について(ブロック482)、異形が前の列にマッピングするか否かについての判断を行うことができる(ブロック484)。異形は付加的に扱われるので、前の列にマッピングする異形のカウントは、未処理のカウント(ブロック490)内の前の列のカウントに追加される(ブロック486)。異形が前の列にマッピングしない場合、列識別子:は、未処理のカウント(ブロック490)に追加される(ブロック488)。
図23に関して上述したように異形がコラプスされた後、図24を参照して説明するように未処理の結果を累積することができる。図24は、本発明のいくつかの実施形態による未処理の結果を累積するオペレーションを示すフローチャートである。未処理の結果を累積するオペレーションは、各列識別子に対する行キューから来るデータの同期を提供することができる。いくつかの実施形態では、各列ステップについて(ブロック250)、かつ行識別子(ネットワーク:メモリ:行)ごとに(ブロック256)、カウントが0よりも大きい場合(ブロック258)、その列の現在のカウント(ブロック262)は、その列の他のカウントとともに累積される(ブロック264)。加えて、いくつかの実施形態では、その列の接続数がインクリメントされ(ブロック260)、照合結果(ブロック266)における累積されたカウントに対応する接続数が維持される。
いくつかの実施形態は、現在の列(ブロック254)の名前空間が反転され(ブロック252)、照合結果(ブロック266)に含められることを提供する。名前空間を反転することによって、回答指向(answer oriented)の照合を提供することができる。例えば、元の名前空間が、粒度を増加させることに基づいて定義されていた場合、反転された名前空間は列指向とすることができる。この点に関して、照合された未処理の結果は、「列:行:メモリ:ネットワーク」ごとの行カウント及び接続数を提供することができる。
また、図23に関して上述したような異形の拡張及び照合は、入力クエリに適用することができるブール構造の一例を表す。この点に関して、いくつかの実施形態は、入力クエリが1つ又は複数のタイプのブール構造を含むことができることを提供する。このブール構造は、未処理のカウントの検索の前及び/又は後でそれぞれ拡張及び/又は照合することができる。したがって、いくつかの実施形態では、クエリのブール仕様を行カウントの解釈に適用することができる。このように、ブール充足(Boolean satisfaction)を用いて、変動する論理複雑度レベルを有する入力クエリを処理し、クエリロジックに対する分散連想メモリベースの高い価値を引き出すことができる。
次に図25を参照する。図25は、本発明のいくつかの実施形態による、図21に関して上述したような順位結果を提供するオペレーションを示すフローチャートである。照合結果(ブロック300)に対する順位オペレーションは、各列出力(ブロック302)の各メモリ視点について(ブロック304)実行することができる。いくつかの実施形態では、列/メモリ視点の組合せのそれぞれに対するオペレーションは、メモリコミュニティにわたる各列の投票をインクリメントする(ブロック306)ことを含むことができる。投票は、非ゼロの値に対応することができ、接続性(connectedness)の尺度を提供する一時的な結果として提供することができる。例えば、投票は接続の意味論的存在を表すことができる。いくつかの実施形態は、各非ゼロの列/メモリ結果が1つの投票を含むことを提供する。
カウント及び接続の観点から照合結果を比較することができる比較器機能(ブロック308)を用いると、列のソートが個々の各メモリについて挿入される(ブロック310)。投票及び列がソートされたランクを比較することができる比較器機能(ブロック312)は、各列出力(ブロック316)に対応する全体的な列ランクを提供して(ブロック314)、順位付けられた最終結果(ブロック318)を提供することができる。
次に図26を参照する。図26は、本発明のいくつかの実施形態による、図21に関して上述したような出力識別子を名前空間文字列に変換するオペレーションを示すフローチャートである。図11に関して上述したように、出力識別子は、カテゴリ、アトムテーブルノード及び値に対応するフィールドを含むことができる。各最終結果出力識別子について(ブロック340)、アトムノードが逆検索用に求められる(ブロック342)。逆検索が実行されて、出力識別子に対応するクエリ文字列名が求められる(ブロック344)。このクエリ文字列名は、出力識別子を置換するのに用いられる(ブロック346)。
次に図27を参照する。図27は、本発明のいくつかの実施形態による分散連想メモリベースにクエリするオペレーションを示すフローチャートである。ユーザから受信された意味空間に基づくクエリは、物理空間に基づくクエリに変換される(ブロック500)。いくつかの実施形態は、分散連想メモリベース内の複数の連想メモリネットワークのうちの少なくとも1つにおけるそれぞれの物理メモリロケーションに対応する複数の「行に基づく識別子」として表される、物理空間に基づくクエリを提供する。
行に基づく識別子に対応する複数のクエリキューを生成することができる(ブロック502)。クエリキューは、連想メモリネットワークに対応する複数のカウントサーバノードにストリーミングすることができる(ブロック504)。クエリキューに応じたカウント情報は、ノードサーバから求めることができる(ブロック506)。ノードサーバからのカウント情報は、意味空間に基づくクエリに応じた意味空間に基づく結果情報に変換することができる。
次に図28を参照する。図28は、本発明のいくつかの実施形態による分散連想メモリベースを用いるオペレーションを示すフローチャートである。物理空間に基づくクエリに対応する複数のストリーミングクエリキューを生成することができる(ブロック510)。いくつかの実施形態では、ストリーミングクエリキューは、複数の分散連想メモリネットワークのうちの少なくとも1つにおけるそれぞれの物理メモリロケーションの複数の「行に基づく識別子」として表すことができる。
いくつかの実施形態は、分散連想メモリネットワークに対応する複数のカウントサーバノードからカウント情報を受信するように動作可能な複数のノードリーダにストリーミングクエリキューのうちのいくつかをマッピングすることを含む(ブロック512)。受信されたカウント情報は、ストリーミングクエリキューのうちの対応するものに逆マッピングすることができる(ブロック514)。
次に図29を参照する。図29は、本発明のいくつかの実施形態による、大規模スパースマトリックスのデータを符号化するオペレーションを示すフローチャートである。行識別子値及び列識別子値によって識別される非ゼロのデータのロケーションを含むスパースマトリックスを提供することができる(ブロック520)。固定長の符号化されたマトリックスインデックスワードを読み取ることができる(ブロック522)。スパースマトリックスの所与の行について、少なくとも1つの固定長の符号化されたマトリックスインデックスワードに可変ワード長を有する符号化されたインデックスオフセット値を提供することによって、0の値を有する絶え間なく連続したビットをインデックス付けすることができる(ブロック524)。少なくとも1つの固定長の符号化されたマトリックスインデックスワードから可変ワード長の非ゼロのデータ値を読み取ることができる(ブロック526)。可変ワード長の非ゼロのデータ値は、対応する列識別子に関連付けることができる(ブロック528)。
図面及び明細書に、本発明の実施形態が開示され、特定の用語が使用されているが、それらの用語は、一般的かつ説明的な意味でのみ用いられ、限定の目的では用いられていない。本発明の範囲は、この後に続く特許請求の範囲に規定されている。

Claims (32)

  1. 連想メモリシステムであって、
    連想メモリネットワークのネットワークからなるネットワークを含む分散連想メモリベースであって、それぞれの連想メモリネットワークは、それぞれの観察者メモリ及び該それぞれの観察者メモリによって観察される複数の被観察メモリの間の連想を含み、前記連想メモリネットワークのうちのいくつかは、該連想メモリネットワークのうちの他のいくつかから物理的かつ/又は論理的に独立している、分散連想メモリベースと、
    前記連想メモリネットワークにおける複数の行のうちのそれぞれのいくつかに対応する複数のストリーミングキューを用いて、前記分散連想メモリベースへの連想を観察し、かつ該分散連想メモリベースからの連想を想起するように構成された処理システムと、
    を備える、連想メモリシステム。
  2. 前記複数のストリーミングキューのうちのいくつかは、前記連想メモリネットワークにおける複数の物理ロケーションのうちの1つに対応する、請求項1に記載の連想メモリシステム。
  3. 前記処理システムはクエリマップを更に備え、該クエリマップは、ユーザから受信された、意味空間に基づくクエリを、前記連想メモリネットワークにおける複数の物理メモリロケーションに対応する複数の、行に基づく識別子、として表された、物理空間に基づくクエリに変換するように構成され、前記複数のストリーミングキューのうちの少なくとも1つに含まれる、請求項1に記載の連想メモリシステム。
  4. 前記意味空間に基づくクエリに対応する分類学的意味を推定して、前記連想メモリネットワークの物理表現に対応するクエリ用語を提供するために、前記クエリマップによってアクセスされるように構成されたオントロジを更に備える、請求項3に記載の連想メモリシステム。
  5. 前記クエリマップは、前記意味空間に基づくクエリ及び/又は前記物理空間に基づくクエリ内の複数のクエリ用語の異なるものに対応する複数のマッピングポリシーのうちの少なくとも1つを含み、
    前記複数のマッピングポリシーは、ランク及び/又は近時性を含むポリシーを定義し、
    前記クエリマップは、前記ランクポリシー及び/又は前記近時性ポリシーに対応する、前記物理空間に基づくクエリを変更するように更に構成される、
    請求項3に記載の連想メモリシステム。
  6. 前記クエリマップは、前記意味空間に基づくクエリ及び/又は前記物理空間に基づくクエリ内の前記複数のクエリ用語の1つ又は複数の異形を識別し、かつ該1つ又は複数の異形を含むよう前記物理空間に基づくクエリを拡張するように更に構成され、
    前記1つ又は複数の異形は、前記複数のクエリ用語のうちのいくつかに対応する同義語、別名及び/又は頭字語を含む、
    請求項3に記載の連想メモリシステム。
  7. 前記処理システムは複数のカウントサーバノードを更に備え、該複数のカウントサーバノードは、前記複数のストリーミングキューからの要求を受信し、かつ該受信した要求に応じた前記分散連想メモリベース内の連想に対応するカウントデータを提供するように構成される、請求項1に記載の連想メモリシステム。
  8. 前記処理システムは、複数のアトムテーブルを更に備え、該複数のアトムテーブルは、前記複数のカウントサーバノードのうちの1つによって受信された前記複数のストリーミングキューのうちの対応する1つにおける、物理空間に基づくクエリを受信することに応じてマトリックスの行識別情報を提供するように構成され、
    前記複数のアトムテーブルは、前記連想メモリネットワークから返された結果を前記物理空間に基づくクエリに関連付ける逆検索データを提供するように更に構成される、
    請求項7に記載の連想メモリシステム。
  9. 前記分散連想メモリベースにおける前記連想に対応するカウントデータを受信し、かつ該カウントデータを意味空間に基づく名前空間と再合成して結果をユーザに提供するように構成された結果コントローラを更に備える、請求項1に記載の連想メモリシステム。
  10. 前記結果コントローラは、前記複数のストリーミングキューのうちのいくつかに対応する未処理のカウントデータを累積し、複数の、物理空間に基づくクエリ用語のうちの関係したいくつか及び対応する未処理のカウントデータを、クエリマップによってアクセスされたオントロジを用いてコラプスし、コラプスした、物理空間に基づくクエリ用語のカウントデータを順位付けし、かつ物理空間に基づく結果を意味空間に基づく結果に変換するように更に構成される、請求項9に記載の連想メモリシステム。
  11. 分散連想メモリベースにクエリする方法であって、
    ユーザから受信された、意味空間に基づくクエリを、前記分散連想メモリベース内の複数の連想メモリネットワークのうちの少なくとも1つにおける複数の物理メモリロケーションに対応する、複数の、行に基づく識別子、として表された、物理空間に基づくクエリに変換することと、
    前記複数の、行に基づく識別子、に対応する複数のクエリキューを生成することと、
    前記複数のクエリキューを、前記複数の連想メモリネットワークに対応する複数のカウントサーバノードにストリーミングすることと、
    前記複数のカウントサーバノードからの前記複数のクエリキューに応じたカウント情報を求めることと、
    前記複数のカウントサーバノードからの前記カウント情報を、前記意味空間に基づくクエリに応じて意味空間に基づく結果情報に変換することと、
    を含む、分散連想メモリベースにクエリする方法。
  12. 意味空間に基づくクエリを変換することは、
    前記意味空間に基づくクエリ内のクエリ用語ごとに、該クエリ用語の異形と該クエリ用語とを含むように該クエリ用語を拡張することと、
    前記意味空間に基づくクエリ内のクエリ用語ごとに、該クエリ用語に対応する分類学用語を含む分類学マップが存在するか否かを判断することと、
    前記分類学マップが存在する場合、分類学用語及び前記クエリ用語を含むように該クエリ用語を拡張することと、
    を含む、請求項11に記載の方法。
  13. 前記複数の、行に基づく識別子、に対応する前記複数のクエリキューを生成することは、該複数の、行に基づく識別子、のそれぞれについて、キューリソースをバインドすることであって、行キューを定義し、該キューリソースは、行に基づく識別子にバインドされるのに利用可能な複数のキューリソースのうちの1つを含む、バインドすることを含む、請求項11に記載の方法。
  14. 前記複数のクエリキューを複数のカウントサーバノードにストリーミングすることは、前記複数のクエリキューのうちの1つ又は複数を複数のノードリーダのうちのそれぞれ1つにマッピングすることであって、該複数のノードリーダのそれぞれは、前記複数のカウントサーバのうちのそれぞれ1つに対応する、マッピングすることを含む、請求項11に記載の方法。
  15. 前記複数のノードリーダのうちのいくつかは、前記カウントサーバのうちのそれぞれのいくつかに対する、前記複数のクエリキューのうちの複数のものに対応するバッチ要求を実行するように構成される、請求項14に記載の方法。
  16. 前記複数のクエリキューを複数のカウントサーバノードにストリーミングすることは、前記複数のクエリキューと複数のノードリーダとの間の多対多インターフェースにおいて、前記複数のクエリキューを前記複数のノードリーダにマッピングすることを含む、請求項11に記載の方法。
  17. 前記複数のカウントサーバノードからの前記複数のクエリキューに応じたカウント情報を求めることは、複数のクエリ用語のうちのいくつかについて、マトリックスアドレスデータに対応するマトリックス識別子値を求めることを含む、請求項11に記載の方法。
  18. 前記複数のクエリ用語のうちのいくつかについて、マトリックスアドレスデータに対応する前記マトリックス識別子値を求めることは、
    アトムテーブル識別データを求めることであって、複数のアトムテーブルノードののうちのどれが前記マトリックス識別子値を含むのかを判断する、求めることと、
    前記複数の前記クエリ用語のうちのそれぞれのいくつかに対応するそれぞれの識別データを求めることと、
    前記それぞれの識別データを前記マトリックス識別子に変換することと、
    を含む、請求項17に記載の方法。
  19. 前記アトムテーブル識別データを求めることは、検索オペレーションを用いて実行される、請求項18に記載の方法。
  20. 前記アトムテーブル識別データを求めることは、計算方法を用いて実行される、請求項18に記載の方法。
  21. 前記マトリックス識別子に対応する符号化されたマトリックスのルートページのルートページアドレスを検索することであって、該ルートページは、前記符号化されたマトリックスの符号化タイプを識別するマトリックスタイプ値を含む、検索することを更に含む、請求項18に記載の方法。
  22. 前記複数のカウントサーバノードからの前記カウント情報を、前記意味空間に基づくクエリに応じて意味空間に基づく結果情報に変換することは、
    前記複数のクエリキューからの未処理のカウントデータを累積することと、
    前に拡張された異形及び分類学用語並びに前記物理空間に基づくクエリ内の各クエリ用語のそれぞれのカウントをコラプスすることと、
    コラプスしたクエリ用語を順位付けすることであって、カウントデータの相対的な値に対応する互いに対する前記クエリ用語の関連性情報を提供する、順位付けすることと、
    前記物理空間に基づくクエリ用語を意味空間に基づくクエリ用語に変換することと、
    を含む、請求項11に記載の方法。
  23. コンピュータ可読プログラムコードがコンピュータ使用可能ストレージ媒体に実施された該媒体を含むコンピュータプログラム製品であって、前記コンピュータ可読プログラムコードは、請求項1に記載の分散連想メモリベース及び/又は処理システムを提供するように構成された、コンピュータ可読プログラムコードを含む、コンピュータプログラム製品。
  24. 分散連想メモリベースを用いる方法であって、
    複数の分散連想メモリネットワークのうちの少なくとも1つにおけるそれぞれの複数の物理メモリロケーションの複数の、行に基づく識別子、として表される、物理空間に基づくクエリに対応する複数のストリーミングクエリキューを生成することと、
    前記複数の分散連想メモリネットワークに対応する複数のカウントサーバノードからカウント情報を受信するように動作可能な複数のノードリーダに前記複数のストリーミングクエリキューのうちのいくつかをマッピングすることと、
    前記受信したカウント情報を前記複数のストリーミングクエリキューのうちの対応するいくつかに逆マッピングすることと、
    を含む、分散連想メモリベースを用いる方法。
  25. 連想メモリ方法であって、
    分散メモリベースを設けることであって、
    該分散メモリベースは連想メモリネットワークのネットワークを含み、それぞれの連想メモリネットワークは、それぞれの観察者エンティティ及び該それぞれの観察者エンティティによって観察される複数の被観察エンティティの間の連想を含み、前記連想メモリネットワークのうちのいくつかは、前記連想メモリネットワークのうちの他のいくつかから物理的かつ/又は論理的に独立している、分散メモリベースを設けることと、
    前記連想メモリネットワークのうちのいくつかのうちの複数の行のうちのいくつかに対応する複数のストリーミングキューを用いて前記連想メモリベースから連想を想起することと、
    を含む、連想メモリ方法。
  26. 前記連想メモリベースから連想を想起することは、
    ユーザから受信された、意味空間に基づくクエリを、前記連想メモリベース内の連想メモリネットワークのうちの少なくとも1つにおける複数の物理メモリロケーションに対応する複数の、行に基づく識別子、として表された、物理空間に基づくクエリに変換することと、
    前記複数の、行に基づく識別子、に対応する前記複数のストリーミングキューを生成することと、
    を含む、請求項25に記載の連想メモリ方法。
  27. 前記連想メモリベースから連想を想起することは、前記連想メモリベースにおける連想メモリネットワークのうちのそれぞれのいくつかに対応する複数のカウントサーバノードからの前記複数のストリーミングキューに応じたカウント情報を求めることを含む、請求項25に記載の連想メモリ方法。
  28. 前記連想メモリベースから連想を想起することは、前記複数のカウントサーバノードからの連想カウント情報を、ユーザから受信された、意味空間に基づくクエリに応じた、意味空間に基づく結果情報に変換することを含む、請求項27に記載の連想メモリ方法。
  29. 行識別子値及び列識別子値によって識別される非ゼロのデータのロケーションを含む大規模スパースマトリックス内のデータを符号化する方法であって、
    ランレングス符号化を用いて前記マトリックス内のデータのロケーションのスパンを符号化することであって、同じデータ値をそれぞれ有する複数のデータ値のランをデータ値及びカウントとして格納する、符号化することと、
    無限整数符号化を用いて非ゼロのデータ値のうちのいくつかを符号化することであって、同じデータ値をそれぞれ有する複数のデータ値のうちの少なくとも1つのランに隣接する可変長整数値を圧縮する、符号化することと、
    を含む、方法。
  30. ランレングス符号化を用いて前記マトリックス内のデータのロケーションのスパンを符号化することは、
    固定長の符号化されたマトリックスインデックスワードを読み取ることと、
    所与の行識別子値について、少なくとも1つの固定長の符号化されたマトリックスインデックスワード内の符号化されたオフセット値を提供することによって、ゼロの値を有する絶え間なく連続したビットをインデックス付けすることと、
    を含む、請求項29に記載の方法。
  31. 無限整数符号化を用いて前記非ゼロの値のうちのいくつかを符号化することは、
    少なくとも1つの固定長の符号化されたマトリックスワードから可変ワード長の非ゼロデータ値を読み取ることと、
    可変ワード長の非ゼロのデータ値を対応する列識別子値に関連付けることと、
    を含む、請求項29に記載の方法。
  32. 行識別子値及び列識別子値によって識別される非ゼロのデータのロケーションを含む大規模スパースマトリックス内のデータを符号化する方法であって、
    固定長の符号化されたマトリックスインデックスワードを読み取ることと、
    前記スパースマトリックス内の所与の行について、少なくとも1つの固定長の符号化されたマトリックスインデックスワードにおける符号化されたインデックスオフセット値を与えることによって、ゼロの値を有する絶え間なく連続したビットをインデックス付けすることと、
    少なくとも1つの固定長の符号化されたマトリックスインデックスワードから可変ワード長の非ゼロデータ値を読み取ることと、
    可変ワード長の非ゼロのデータ値を対応する列識別子に関連付けることと、
    を含む、方法。
JP2012513958A 2009-06-02 2010-05-07 分散連想メモリベースを提供する方法、システム、及びコンピュータプログラム製品 Expired - Fee Related JP5858432B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17628209P 2009-06-02 2009-06-02
US61/176,282 2009-06-02
PCT/US2010/033952 WO2010141182A2 (en) 2009-06-02 2010-05-07 Methods, systems and computer program products for providing a distributed associative memory base

Publications (2)

Publication Number Publication Date
JP2012529105A true JP2012529105A (ja) 2012-11-15
JP5858432B2 JP5858432B2 (ja) 2016-02-10

Family

ID=43221416

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012513958A Expired - Fee Related JP5858432B2 (ja) 2009-06-02 2010-05-07 分散連想メモリベースを提供する方法、システム、及びコンピュータプログラム製品

Country Status (5)

Country Link
US (2) US8352488B2 (ja)
EP (1) EP2438512B1 (ja)
JP (1) JP5858432B2 (ja)
KR (1) KR101679447B1 (ja)
WO (1) WO2010141182A2 (ja)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9256899B2 (en) 2010-01-15 2016-02-09 Dell Products, L.P. System and method for separation of software purchase from fulfillment
US9235399B2 (en) 2010-01-15 2016-01-12 Dell Products L.P. System and method for manufacturing and personalizing computing devices
US10387927B2 (en) 2010-01-15 2019-08-20 Dell Products L.P. System and method for entitling digital assets
US8548919B2 (en) * 2010-01-29 2013-10-01 Dell Products L.P. System and method for self-provisioning of virtual images
US9100396B2 (en) 2010-01-29 2015-08-04 Dell Products L.P. System and method for identifying systems and replacing components
US8429641B2 (en) * 2010-02-02 2013-04-23 Dell Products L.P. System and method for migration of digital assets
US8170783B2 (en) 2010-03-16 2012-05-01 Dell Products L.P. System and method for handling software activation in entitlement
US8707087B2 (en) * 2010-05-18 2014-04-22 Dell Products L.P. Restoration of an image backup using information on other information handling systems
US20130080448A1 (en) * 2011-09-23 2013-03-28 The Boeing Company Associative Memory Technology in Intelligence Analysis and Course of Action Development
US9659110B2 (en) * 2011-10-20 2017-05-23 The Boeing Company Associative memory technology for analysis of requests for proposal
US8738595B2 (en) * 2011-11-22 2014-05-27 Navteq B.V. Location based full text search
US8745022B2 (en) * 2011-11-22 2014-06-03 Navteq B.V. Full text search based on interwoven string tokens
US9703829B2 (en) * 2011-12-26 2017-07-11 Hitachi, Ltd. Database system and database management method
US8700661B2 (en) 2012-04-12 2014-04-15 Navteq B.V. Full text search using R-trees
US8949401B2 (en) 2012-06-14 2015-02-03 Dell Products L.P. Automated digital migration
US8468139B1 (en) 2012-07-16 2013-06-18 Dell Products L.P. Acceleration of cloud-based migration/backup through pre-population
US9779219B2 (en) 2012-08-09 2017-10-03 Dell Products L.P. Method and system for late binding of option features associated with a device using at least in part license and unique ID information
US9135330B2 (en) * 2012-12-18 2015-09-15 Ebay Inc. Query expansion classifier for E-commerce
CN103093142B (zh) * 2012-12-26 2015-07-22 飞天诚信科技股份有限公司 一种Java卡对象访问的控制方法
KR101417936B1 (ko) * 2013-03-08 2014-07-16 성균관대학교산학협력단 온톨로지 기반의 전사 아키텍처 구축 시스템 및 방법
CN105706068B (zh) * 2013-04-30 2019-08-23 慧与发展有限责任合伙企业 路由存储器流量和i/o流量的存储器网络
WO2015065834A2 (en) * 2013-10-28 2015-05-07 Saffron Technology, Inc. Methods, systems and computer program products for using a distributed associative memory base to determine data correlations and convergence therein
CN105849749A (zh) * 2013-11-15 2016-08-10 英特尔公司 使用分布式关联记忆库确定数据相关及其中的收敛的方法、***和计算机程序产品
US9411721B2 (en) 2013-11-15 2016-08-09 Sandisk Technologies Llc Detecting access sequences for data compression on non-volatile memory devices
US9613117B1 (en) * 2013-12-11 2017-04-04 Progress Software Corporation Declarative driver
CN106462798A (zh) 2014-04-15 2017-02-22 英特尔公司 用于使用关联存储器的神经形态图压缩的方法、***和计算机程序产品
US9846567B2 (en) 2014-06-16 2017-12-19 International Business Machines Corporation Flash optimized columnar data layout and data access algorithms for big data query engines
US9952808B2 (en) 2015-03-26 2018-04-24 International Business Machines Corporation File system block-level tiering and co-allocation
US10083403B2 (en) 2015-06-30 2018-09-25 The Boeing Company Data driven classification and data quality checking method
US10089581B2 (en) 2015-06-30 2018-10-02 The Boeing Company Data driven classification and data quality checking system
US10268948B2 (en) 2015-07-23 2019-04-23 The Boeing Company Data driven classification and troubleshooting system and method using associative memory and a machine learning algorithm to improve the accuracy and performance of the associative memory
US11049031B2 (en) 2016-10-18 2021-06-29 Intel Corporation Methods and apparatus to predict sports injuries
US10790050B2 (en) 2016-10-18 2020-09-29 Greenlight Health Data Solutions, Inc. Aggregation servers providing information based on records from a plurality of data portals and related methods and computer program products
US10372702B2 (en) 2016-12-28 2019-08-06 Intel Corporation Methods and apparatus for detecting anomalies in electronic data
WO2018134740A2 (en) * 2017-01-22 2018-07-26 Gsi Technology Inc. Sparse matrix multiplication in associative memory device
CN107729451B (zh) * 2017-10-09 2021-02-23 四川巧夺天工信息安全智能设备有限公司 一种查找edb数据库源文件中数据的方法
CN108574653B (zh) * 2018-04-19 2021-06-11 南京邮电大学 基于双Sigmoid迟滞噪声混沌神经网络的信号盲检测方法
KR102555057B1 (ko) * 2018-05-09 2023-07-12 에스케이하이닉스 주식회사 웨이트 매트릭스를 포맷하는 방법, 포맷된 데이터를 사용하는 가속기 및 이를 포함하는 시스템
CN111125099B (zh) * 2019-12-10 2022-12-09 苏宁云计算有限公司 基于Druid宽表的关联数据处理方法及装置
CN111582457A (zh) * 2020-05-11 2020-08-25 陈永聪 一种模仿人类记忆来实现通用机器智能的方法
CN111291870B (zh) * 2020-05-09 2020-08-21 支付宝(杭州)信息技术有限公司 一种图深度学习中高维稀疏特征的处理方法和***
US11593454B2 (en) * 2020-06-02 2023-02-28 Intel Corporation Matrix operation optimization mechanism
KR102455681B1 (ko) * 2020-12-16 2022-10-18 경북대학교 산학협력단 긴 시퀀스 데이터 내 존재하는 관계 정보를 저장 가능한 분산 연관 메모리 네트워크 시스템

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2099476A (en) * 1937-04-01 1937-11-16 Glowka Martin Waterproof spat
US5146456A (en) * 1988-04-08 1992-09-08 Allied-Signal Inc. Computer system with distributed content-addressable memory modules compatible with cito transmission
US5490258A (en) * 1991-07-29 1996-02-06 Fenner; Peter R. Associative memory for very large key spaces
JPH06297779A (ja) * 1993-04-14 1994-10-25 Brother Ind Ltd 印字装置
AU3477397A (en) * 1996-06-04 1998-01-05 Paul J. Werbos 3-brain architecture for an intelligent decision and control system
US6369855B1 (en) * 1996-11-01 2002-04-09 Texas Instruments Incorporated Audio and video decoder circuit and system
US5963642A (en) * 1996-12-30 1999-10-05 Goldstein; Benjamin D. Method and apparatus for secure storage of data
US6658458B1 (en) * 2000-06-22 2003-12-02 Cisco Technology, Inc. Cascading associative memory arrangement
US6745280B2 (en) * 2002-03-28 2004-06-01 Integrated Device Technology, Inc. Content addressable memories having entries stored therein with independently searchable weight fields and methods of operating same
JP4105910B2 (ja) * 2002-07-12 2008-06-25 富士通株式会社 連想メモリ装置及びそれを用いた中継装置
US7028136B1 (en) * 2002-08-10 2006-04-11 Cisco Technology, Inc. Managing idle time and performing lookup operations to adapt to refresh requirements or operational rates of the particular associative memory or other devices used to implement the system
US7383255B2 (en) * 2003-06-23 2008-06-03 Microsoft Corporation Common query runtime system and application programming interface
US7058757B1 (en) * 2003-07-15 2006-06-06 Integrated Device Technology, Inc. Content addressable memory (CAM) devices that support distributed CAM control and methods of operating same
US7478192B2 (en) * 2004-11-03 2009-01-13 Saffron Technology, Inc. Network of networks of associative memory networks
US7418543B2 (en) * 2004-12-21 2008-08-26 Intel Corporation Processor having content addressable memory with command ordering
US7467256B2 (en) * 2004-12-28 2008-12-16 Intel Corporation Processor having content addressable memory for block-based queue structures
DE102005015498A1 (de) * 2005-03-31 2006-10-05 Siemens Ag Verfahren zur Speicherung von individuellen Daten eines Niederspannungs-Leistungsschalters
US7565491B2 (en) * 2005-08-04 2009-07-21 Saffron Technology, Inc. Associative matrix methods, systems and computer program products using bit plane representations of selected segments
US7333917B2 (en) * 2005-08-11 2008-02-19 The University Of North Carolina At Chapel Hill Novelty detection systems, methods and computer program products for real-time diagnostics/prognostics in complex physical systems
US8775495B2 (en) * 2006-02-13 2014-07-08 Indiana University Research And Technology Compression system and method for accelerating sparse matrix computations
US20070271255A1 (en) * 2006-05-17 2007-11-22 Nicky Pappo Reverse search-engine
US7831607B2 (en) * 2006-12-08 2010-11-09 Pandya Ashish A Interval symbol architecture for programmable intelligent search memory
US8811596B2 (en) * 2007-06-25 2014-08-19 The Boeing Company Apparatus including associative memory for evaluating audio communications
US20090150511A1 (en) * 2007-11-08 2009-06-11 Rna Networks, Inc. Network with distributed shared memory
US8612723B2 (en) * 2008-05-06 2013-12-17 L-3 Communications Integrated Systems, L.P. System and method for storing a sparse matrix

Also Published As

Publication number Publication date
JP5858432B2 (ja) 2016-02-10
EP2438512A4 (en) 2017-11-15
WO2010141182A3 (en) 2011-01-27
EP2438512B1 (en) 2019-03-06
US20130086012A1 (en) 2013-04-04
KR20120030079A (ko) 2012-03-27
EP2438512A2 (en) 2012-04-11
WO2010141182A2 (en) 2010-12-09
US20100306227A1 (en) 2010-12-02
US8352488B2 (en) 2013-01-08
US8909609B2 (en) 2014-12-09
KR101679447B1 (ko) 2016-11-24

Similar Documents

Publication Publication Date Title
JP5858432B2 (ja) 分散連想メモリベースを提供する方法、システム、及びコンピュータプログラム製品
US10437893B2 (en) Methods, systems and computer program products for using a distributed associative memory base to determine data correlations and convergence therein
US10296823B2 (en) Methods, systems and computer program products for using a distributed associative memory base to determine data correlations and convergence therein
US8171029B2 (en) Automatic generation of ontologies using word affinities
CN109166615B (zh) 一种随机森林哈希的医学ct图像存储与检索方法
CN100444167C (zh) 完美双数组trie树词典管理与检索方法
JP5235666B2 (ja) 選択されたセグメントのビット平面表現を用いた連想マトリックス法、システムおよびコンピュータプログラム製品
US20120209849A1 (en) Web-scale data processing system and method
CN108197313B (zh) 通过16位Trie树实现空间优化的词典索引方法
CN108549696B (zh) 一种基于内存计算的时间序列数据相似性查询方法
US20230124432A1 (en) Database Indexing Using Structure-Preserving Dimensionality Reduction to Accelerate Database Operations
WO2014122441A1 (en) Improvements relating to use of columnar databases
CN114722139A (zh) 可自适应动态伸缩的时空多属性索引方法及其检索方法
KR100818742B1 (ko) 색인 단어의 문서 내 위치 정보에 대한 관련성을 이용한문서 검색 방법
Vassilakopoulos et al. Dynamic inverted quadtree: A structure for pictorial databases
Li et al. Aggregate nearest keyword search in spatial databases
US8666923B2 (en) Semantic network clustering influenced by index omissions
Papadopoulos et al. Processing distance join queries with constraints
Otoo et al. New approaches to storing and manipulating multi-dimensional sparse arrays
CN117708118A (zh) 基于HBase数据库的倒排索引混合压缩方法
CN115630063A (zh) 一种b+树存储空间优化方法及设备
He et al. Partitioned Inverted Index Compression Using Hierarchical Dirichlet Process
CN116910337A (zh) 实体对象的圈选方法、查询方法、装置、服务器及介质
Prathipa et al. PSNR Based Clustering and Indexing for Fast Access
Love Extracting the Sparse Longest Common Prefix Array from the Suffix Binary Search Tree

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130426

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140606

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140905

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140912

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20141003

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20141010

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20141031

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20141110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141205

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150407

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150703

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20151113

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20151125

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151214

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151209

R150 Certificate of patent or registration of utility model

Ref document number: 5858432

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees