(57)【要約】【課題】  objectが有する様々な属性（物理空間上の位置、時刻情報やその他の属性（色）など）に対する条件指定を行うことで、条件にマッチするobjectを特定し、当該objectのIPアドレスを特定する。【解決手段】  本発明は、通信ネットワークに接続されているobjectが、複数の属性に対する値を有し、IPアドレスと共にobject管理サーバのデータベースに登録しておき、これら複数の属性の値の組み合わせにより条件指定を行うことでobjectを検索し、該objectのアドレスを特定する。【選択図】  図５
2014142808.tif 000002
【特許請求の範囲】
【請求項１】
情報通信ネットワークにおいて、いくつかの条件によって該ネットワークに接続されているIPアドレスを有するobjectを特定し通信するためのアドレス解決システムであって、
object、object管理サーバ、リゾルバと、を有し、
前記objectは、
objectを検索するための複数の属性に対する値の組合せをIPアドレスと共に登録要求として前記リゾルバを介して送信するobject登録要求手段と、
各属性に関する条件を指定して検索要求として前記リゾルバを介して送信する検索要求手段と、
検索されたobjectのIPアドレスを特定するIPアドレス特定手段と、
を有し、
前記リゾルバは、
前記objectからの前記登録要求を取得すると、該登録要求の前記属性に基づいて、前記objectの属性ベクトルを生成し、前記object管理サーバに送信するベクトル生成手段と、
前記objectからの前記検索要求を取得すると、該検索要求の前記属性に対して、該属性の範囲を付与したクエリベクトルを生成し、前記object管理サーバに送信するクエリベクトル生成手段と、
を有し、
前記object管理サーバは、
前記リゾルバから前記objectの属性ベクトルを取得して、K次元ベクトルデータベースに登録する登録手段と、
前記リゾルバから前記クエリベクトルを取得すると、該クエリベクトルと前記属性の範囲に基づいて前記K次元ベクトルデータベースを検索し、該当するobjectを該リゾルバに送信する検索手段と、
を有することを特徴とするアドレス解決システム。
【請求項２】
前記object管理サーバの前記登録手段は、
属性の１〜ｄまでの並び替えのパタンをＳ個準備し、属性ベクトルv(j)を該並び替えのパタンに基づいて並び替え、先頭のＫ個の要素をK次元ベクトル（permsK(v(j))）として抽出する処理を、各objectに対して実施し、K次元ベクトルデータベースに格納するK次元ベクトル作成手段を含み、
前記object管理サーバの前記検索手段は、
前記リゾルバから前記クエリベクトルqと前記属性の範囲を取得したら、該クエリベクトルqの該属性の範囲毎に属性の範囲１〜ｄ次元の並び替えのパタンに基づいて、Ｋ（１〜ｋ）個の要素（permsK(q)）を前記K次元ベクトルデータベースから検索し、該要素がｋ番目の要素で指定された範囲内にある要素数｜permsK(v(j))∧permsK(q)|＝Kとなったobjectを候補として抽出するパタン生成手段を含む、
請求項１記載のアドレス解決システム。
【請求項３】
前記object管理サーバの前記登録手段は、
ｓ＝１〜Ｓ個のツリー型のデータ構造（以下、「trees」と記す）を用意しておき、各object毎に前記K次元ベクトルを前記K次元ベクトルデータベースのｓ番目に登録する手段を含み、
前記object管理サーバの前記検索手段は、
前記K次元ベクトルデータベースに対して、前記（permsK(q)）を用いて前記範囲内にある要素数｜permsK(v(j))∧permsK(q)|の検索を行い、得られたobjectの集合の積集合に属するobjectを抽出する手段を含む
請求項２記載のアドレス解決システム。
【請求項４】
前記リゾルバの前記クエリベクトル生成手段は、
前記objectが属性iに対する値を持たない場合は、属性値をxi=0とし、
前記クエリｑが属性iについて範囲指定を行わない場合は、全区間とする
請求項１記載のアドレス解決システム。
【請求項５】
前記リゾルバの前記クエリベクトル生成手段は、
前記objectが属性iに対する値を持たない場合は、該属性iを除外して前記クエリベクトルを生成する手段を含み、
前記object管理サーバの前記検索手段は、
前記クエリベクトルの前記属性の範囲毎に属性の範囲１〜ｄ次元の並び替えのパタンに基づいて、Ｋ（１〜ｋ）個の要素（permsK(q)）を前記K次元ベクトルデータベースから検索し、該要素がｋ番目の要素で指定された範囲内にある要素数｜permsK(v(j))∧permsK(q)|≧K'（K'は所定の値であり、K'≦K）となったobjectを候補として抽出する手段を含む
請求項１記載のアドレス解決システム。
【請求項６】
前記object管理サーバの前記検索手段は、
各perms (s=1〜S)において抽出されたobject集合をAsとし、I[v(j)∈A1]+I[v(j)∈A 2]+…+I[v(j)∈As])≧Sth（但し、I[]は[]内の条件を満たすとき１、満たさないとき０を返す関数、Sthは所定の閾値で１≦Sth≦S）を満たす属性ベクトルv(j)を特定したいobject候補として抽出する手段を含む
請求項５記載のアドレス解決システム。
【請求項７】
前記object管理サーバは、
全object集合に対する属性iに対する累積分布関数Fi (x)=P[objectの属性iのxi≦x]を作成しておき、クエリｑにおいて該属性iについての範囲指定がxlowiからxhighiの場合、fi (q)=Fi (xhighi)-Fi (xlow-i)を計算する手段と、
前記並び替えのパタンpermsをs=1からS'(S'＞S)個用意しておき、permsK(q)により前記K次ベクトルデータベースより抽出されたK個の属性i1,i 2,…,iKに対して、f{i1}(q), f{i 2}(q), …, f{iK}(q)を計算し、その積P(s,q)= f{i1} (q)×f{i 2} (q)×…× f{iK} (q)を計算し、それを各s=1〜S'に対して実施し、得られたP(s,q)の値が小さいものからS個のpermsを選択する手段を含む
請求項２，３，５のいずれか１項に記載のアドレス解決システム。
【請求項８】
情報通信ネットワークにおいて、いくつかの条件によって該ネットワークに接続されているIPアドレスを有するobjectを特定し通信するためのアドレス解決方法であって、
object、object管理サーバ、リゾルバと、を有するシステムにおいて、
objectの登録時に、
前記objectにおいて、
objectを検索するための複数の属性に対する値の組合せをIPアドレスと共に登録要求として前記リゾルバを介して送信するobject登録要求ステップと、
前記リゾルバにおいて、
前記objectからの前記登録要求を取得すると、該登録要求の前記属性に基づいて、前記objectの属性ベクトルを生成し、前記object管理サーバに送信するベクトル生成ステップと、
前記object管理サーバにおいて、
前記リゾルバから前記objectの属性ベクトルを取得して、K次元ベクトルデータベースに登録するデータベース登録ステップと、
を行い、
検索時に、
前記objectにおいて、
各属性に関する条件を指定して検索要求として前記リゾルバを介して送信する検索要求ステップと、
前記リゾルバにおいて、
前記objectからの前記検索要求を取得すると、該検索要求の前記属性に対して、該属性の範囲を付与したクエリベクトルを生成し、前記object管理サーバに送信するクエリベクトル生成ステップと、
前記object管理サーバにおいて、
前記リゾルバから前記クエリベクトルを取得すると、該クエリベクトルと前記属性の範囲に基づいて前記K次元ベクトルデータベースを検索し、該当するobjectを該リゾルバに送信する検索ステップと、
前記リゾルバにおいて、
前記object管理サーバから取得した検索結果であるobjectを検索要求元のobjectに通知する通知ステップと、
前記objectにおいて、
前記リゾルバから取得した、検索されたobjectのIPアドレスを特定するIPアドレス特定ステップと、
を行うことを特徴とするアドレス解決方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アドレス解決システム及び方法に係り、特に、情報通信ネットワークにおいて、いくつかの条件指定によって、ネットワークに接続されているobject（通信機能をもつ家電品や端末などを指す）を特定し、通信できるようにするためのアドレス解決システム及び方法に関する。
【背景技術】
【０００２】
従来の情報通信ネットワークは、論理空間上のアドレスにより通信対象を指定している。固定電話では電話番号、インターネットではIPアドレスがそれにあたり、これらはネットワーク上の位置とも対応しているのでその位置に接続することで通信が可能となる。
【０００３】
一方で、携帯電話の電話番号やインターネットでのURLは、より上位の論理アドレスまたは名前と解釈できる。つまり、これらは通信相手や情報の論理位置を示すが、ネットワーク上の接続位置は示していないため、前者ではLR(ロケーションレジスタ)、後者ではDNS(ドメインネームサーバ）により、ネットワーク上の接続位置を示すアドレスへの変換（いわゆる名前解決）が必要となる。後者の場合であれば、URLから変換後のIPアドレスを用い、接続する（例えば、非特許文献１，２参照）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】弓場英明監修、未来ねっと技術シリーズ ユビキタスネットワーク技術、電気通信協会、2003.
【非特許文献２】http://www.nic.ad.jp/ja/newsletter/No22/080.html
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、今後、非常に多数のobjectがネットワークに接続されるようになったときに、個々のobjectに一意に付与された名前をユーザが把握した上で通信を行う代わりに、例えば、ユーザが、目の前で落とし物をした自転車に乗っている人と通信したい、あるいは、ある地域である時間帯に温度が20度以上を示したセンサと通信したい、といったユーザの通信要求条件（様々な属性に対する検索条件の組み合わせ）を直接指定することでobjectを特定して通信できるようにしたい場合が想定される。
【０００６】
しかしながら、既存のシステムでは、個々のobjectに一意に付与された名前をユーザが把握した上で、その名前を指定して通信を行う。例えば、携帯電話であれば電話番号をユーザが指定することで通信を行う。そのため、上述のような利用形態を実現することは困難である。
【０００７】
本発明は、上記の点に鑑みなされたもので、objectが有する様々な属性（物理空間上の位置、時刻情報やその他の属性（色）など）に対する条件指定を行うことで、条件にマッチするobjectを特定し、当該objectのIPアドレスを特定可能なアドレス解決システム及び方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記の課題を解決するため、本発明（請求項１）は、情報通信ネットワークにおいて、いくつかの条件によって該ネットワークに接続されているIPアドレスを有するobjectを特定し通信するためのアドレス解決システムであって、
object、object管理サーバ、リゾルバと、を有し、
前記objectは、
objectを検索するための複数の属性に対する値の組合せをIPアドレスと共に登録要求として前記リゾルバを介して送信するobject登録要求手段と、
各属性に関する条件を指定して検索要求として前記リゾルバを介して送信する検索要求手段と、
検索されたobjectのIPアドレスを特定するIPアドレス特定手段と、
を有し、
前記リゾルバは、
前記objectからの前記登録要求を取得すると、該登録要求の前記属性に基づいて、前記objectの属性ベクトルを生成し、前記object管理サーバに送信するベクトル生成手段と、
前記objectからの前記検索要求を取得すると、該検索要求の前記属性に対して、該属性の範囲を付与したクエリベクトルを生成し、前記object管理サーバに送信するクエリベクトル生成手段と、
を有し、
前記object管理サーバは、
前記リゾルバから前記objectの属性ベクトルを取得して、K次元ベクトルデータベースに登録する登録手段と、
前記リゾルバから前記クエリベクトルを取得すると、該クエリベクトルと前記属性の範囲に基づいて前記K次元ベクトルデータベースを検索し、該当するobjectを該リゾルバに送信する検索手段と、を有する。
【０００９】
また、本発明（請求項２）は、前記object管理サーバの前記登録手段において、
属性の１〜ｄまでの並び替えのパタンをＳ個準備し、属性ベクトルv(j)を該並び替えのパタンに基づいて並び替え、先頭のＫ個の要素をK次元ベクトル（permsK(v(j))）として抽出する処理を、各objectに対して実施し、K次元ベクトルデータベースに格納するK次元ベクトル作成手段を含み、
前記object管理サーバの前記検索手段において、
前記リゾルバから前記クエリベクトルqと前記属性の範囲を取得したら、該クエリベクトルqの該属性の範囲毎に属性の範囲１〜ｄ次元の並び替えのパタンに基づいて、Ｋ（１〜ｋ）個の要素（permsK(q)）を前記K次元ベクトルデータベースから検索し、該要素がｋ番目の要素で指定された範囲内にある要素数｜permsK(v(j))∧permsK(q)|＝Kとなったobjectを候補として抽出するパタン生成手段を含む。
【００１０】
また、本発明（請求項３）は、前記object管理サーバの前記登録手段において、
ｓ＝１〜Ｓ個のツリー型のデータ構造（以下、「trees」と記す）を用意しておき、各object毎に前記K次元ベクトルを前記K次元ベクトルデータベースのｓ番目に登録する手段を含み、
前記object管理サーバの前記検索手段において、
前記K次元ベクトルデータベースに対して、前記（permsK(q)）を用いて前記範囲内にある要素数｜permsK(v(j))∧permsK(q)|の検索を行い、得られたobjectの集合の積集合に属するobjectを抽出する手段を含む。
【００１１】
また、本発明（請求項４）は、前記リゾルバの前記クエリベクトル生成手段において、
前記objectが属性iに対する値を持たない場合は、属性値をxi=0とし、
前記クエリｑが属性iについて範囲指定を行わない場合は、全区間とする。
【００１２】
また、本発明（請求項５）は、前記リゾルバの前記クエリベクトル生成手段において、
前記objectが属性iに対する値を持たない場合は、該属性iを除外して前記クエリベクトルを生成する手段を含み、
前記object管理サーバの前記検索手段において、
前記クエリベクトルの前記属性の範囲毎に属性の範囲１〜ｄ次元の並び替えのパタンに基づいて、Ｋ（１〜ｋ）個の要素（permsK(q)）を前記K次元ベクトルデータベースから検索し、該要素がｋ番目の要素で指定された範囲内にある要素数｜permsK(v(j))∧permsK(q)|≧K'（K'は所定の値であり、K'≦K）となったobjectを候補として抽出する手段を含む。
【００１３】
本発明（請求項６）は、前記object管理サーバの前記検索手段において、
各perms (s=1〜S)において抽出されたobject集合をAsとし、I[v(j)∈A1]+I[v(j)∈A 2]+…+I[v(j)∈As])≧Sth（但し、I[]は[]内の条件を満たすとき１、満たさないとき０を返す関数、Sthは所定の閾値で１≦Sth≦S）を満たす属性ベクトルv(j)を特定したいobject候補として抽出する手段を含む。
【００１４】
また、本発明（請求項７）は、前記object管理サーバにおいて、
全object集合に対する属性iに対する累積分布関数Fi (x)=P[objectの属性iのxi≦x]を作成しておき、クエリｑにおいて該属性iについての範囲指定がxlowiからxhighiの場合、fi (q)=Fi (xhighi)-Fi (xlow-i)を計算する手段と、
前記並び替えのパタンpermsをs=1からS'(S'＞S)個用意しておき、permsK(q)により前記K次ベクトルデータベースより抽出されたK個の属性i1,i 2,…,iKに対して、f{i1}(q), f{i 2}(q), …, f{iK}(q)を計算し、その積P(s,q)= f{i1} (q)×f{i 2} (q)×…× f{iK} (q)を計算し、それを各s=1〜S'に対して実施し、得られたP(s,q)の値が小さいものからS個のpermsを選択する手段を含む。
【発明の効果】
【００１５】
上述のように、本発明によれば、objectが有する様々な属性（物理空間上の位置や、色）に対する条件指定を行うことで、条件にマッチするobjectを特定し、該objectのIPアドレスを特定可能なアドレス解決を提供することが可能となる。
【図面の簡単な説明】
【００１６】
【図１】本発明が適用されるIPネットワークの基本構成例である。
【図２】本発明の第１の実施の形態におけるリゾルバの構成例である。
【図３】本発明の第１の実施の形態におけるobject管理サーバの構成例である。
【図４】本発明の第１の実施の形態におけるobject登録時の処理のフローチャートである。
【図５】本発明の第１の実施の形態におけるobject検索時の処理のフローチャートである。
【図６】ツリー型のデータ構造を用いた検索の例である。
【図７】次元数を変えた時の処理対象ノード数について説明するための図である。
【図８】次元数を変えた時の処理対象ノード数の数値計算例である。
【図９】本発明の第４の実施の形態におけるobject及びクエリの場合分けの例である。
【発明を実施するための形態】
【００１７】
以下、図面と共に本発明の実施の形態を説明する。
【００１８】
［第１の実施の形態］
図１は、本発明が適用されるIPネットワークの基本構成例を示す。
【００１９】
同図に示すように、IPネットワーク４００に接続されるobject１００、object管理サーバ３００、リゾルバ２００から構成される。なお、ここでは、IPネットワークを例に記載しているが、IPアドレス以外の論理アドレスを用いた他のネットワークであってもよい（つまり、論理アドレスがネットワーク上の位置を指し、かつその論理アドレスを指定すれば所望の宛先までデータやパケットを転送することが可能であれば他のネットワークであってもよい）。ここで、object１００は、objectを識別するID、IPアドレスに加え、複数の属性（位置情報、色、時刻情報、センサの気温等）に対する値（時刻＝10:00、位置＝緯度XXX，経度YYY、色＝赤、気温20度等）を有するものとする。これらの複数の属性は、値の組み合わせにより条件指定を行うことで、objectを検索し、当該objectのアドレスIP#Aを特定可能とする。
【００２０】
図２は、本発明の第1の実施の形態におけるリゾルバの構成例を示す。同図に示すリゾルバ２００は、登録・検索要求受付部２１０、object・クエリベクトル生成部２２０を有する。登録・検索要求受付部２１０は、object１００から登録要求または検索要求の要求パケットを受信し、object・クエリベクトル生成部２２０に送出する。object・クエリベクトル生成部２２０は、要求パケットが登録要求であれば、送信元のobject１００のIPアドレス、ID、複数の属性情報（位置情報，色，時刻情報等）からobjectの属性ベクトルを生成し、object管理サーバ３００に登録し、その結果を送信元のobject１００に通知する。要求パケットが検索要求である場合は、当該object１００のクエリベクトルを生成し、object管理サーバ３００に送信し、当該クエリベクトルに対応するobjectのIPアドレスを取得し、object１００に通知する。なお、objectの属性ベクトル、クエリベクトルの生成については後述する。
【００２１】
図３は、本発明の第1の実施の形態におけるobject管理サーバの構成例である。同図に示すobject管理サーバ３００は、object・クエリベクトル受付部３１０、K次元ベクトル作成部３２０、K次元ベクトルデータベース３３０を有する。object・クエリベクトル受付部３１０は、リゾルバ２００からobjectの属性ベクトルまたは、クエリベクトルを受信し、K次元ベクトル作成部３２０に出力する。K次元ベクトル作成部３２０は、objectの属性ベクトルとIPアドレスの組をK次元ベクトルデータベース３３０に登録する機能と、クエリベクトルに基づいてK次元ベクトルを生成し、当該K次元ベクトルを用いてK次元ベクトルデータベース３３０を検索し、ユーザから指定された検索条件を満たすobjectの候補を抽出し、送信元のobjectIDに対応するIPアドレスを読み出し、リゾルバ２００に通知する。
【００２２】
以下に、本実施の形態の動作を説明する。
【００２３】
＜object登録＞
図４は、本発明の第1の実施の形態におけるobject登録時の処理のフローチャートである。
【００２４】
ステップ１０１）  object１００がネットワーク４００に接続されたら、object１００は、object登録要求パケットをリゾルバ２００内の登録・検索要求受付部２１０に送信する。その際、object１００は、自身のIPアドレス、objectID(=j)、複数の属性情報（位置情報，色，時刻情報等）を通知する。
【００２５】
ステップ１０２）  object１００からの登録要求パケットがリゾルバ２００へ到着したら、リゾルバ２００の登録・検索要求受付部２１０は、該object１００の各種情報を読み出し、object・クエリベクトル生成部２２０に通知する。object・クエリベクトル生成部２２０では、複数の属性情報から該object#jの属性ベクトルv(j)を生成する。具体的な手順は以下の通りである。
【００２６】
属性情報中の属性iがi=1からdまで存在するとし（以下で、属性iを次元i、属性数dを次元数dとよぶ場合がある）、属性iにおける属性値の取りうる範囲を[0, mi]とする。属性が色のような数値でない場合は数値に対応付けることにする（例えば24色で表現するとして、mi =24にし、色が白=1、黄=2、という対応付を行う）。各object１００#jの各属性iに対する属性値x(j)iが与えられているとし、object１００#jの属性ベクトルv(j)を、
v(j)=[x(j)1, m1+x(j)2, …, m(i-1)+x(j)i, …, m(d-1)+x(j)d]
として生成する。
【００２７】
生成した属性ベクトルv(j)とobject１００#jのIPアドレスIP#Aの組を、object管理サーバ３００へ通知する。
【００２８】
ステップ１０３）  リゾルバ２００からobjectベクトルv(j)とIPアドレスIP#Aの組をobject管理サーバ３００内のobject・クエリベクトル受付部３１０にて受信したら、それをK次元ベクトル作成部３２０に通知する。K次元ベクトル作成部３２０では、以下の手順により、S通りのK次元ベクトルpermsK(v(j))を生成する。
【００２９】
属性i=1からdの並び替えのパタンpermをS個準備する。例えば属性数をd=5とし、ランダムな並び替えのパタンをS=3個用意するとして、
perm1=[3,4,2,1,5], 
perm2=[2,5,1,3,4],
perm3=[5,4,2,1,3]
を生成する。perms (s=1からS)を用いて、objectの属性ベクトルv(j)を並び替えた後、先頭のK個の要素を抽出する（Kは予め定める値で、K<dとする）。この操作により得られるK次元ベクトルをpermsK(v(j))と表すこととする。例えば、d=5, K=2とすると、
v(j)=[x(j)1, m1+x(j)2, …, m (i-1)+x(j)i, …, m4+x(j)5]
に対して、
perm{s=1}K(v(j))=[m2+x(j)3, m3+x(j)4]
となる。
【００３０】
ステップ１０４）  object管理サーバ３００のK次元ベクトル作成部３２０は、K次元ベクトルとIP#Aの組をK次元ベクトルデータベース３３０に登録する。具体的には、permsK(v(j))⇔objectID#jの対応、ならびに、objectID#j⇔IP#Aの対応をK次元ベクトルデータベース３３０にエントリする。
【００３１】
＜object検索＞
図５は、本発明の第1の実施の形態におけるobject検索時の処理のフローチャートである。
【００３２】
ステップ２０１）  ユーザは各属性に関する条件指定をした情報（例えば、位置が○○の範囲、時刻が△△の範囲、色＝赤など）を検索要求パケットとしてリゾルバ２００に送信する。
【００３３】
ステップ２０２）  リゾルバ２００は、検索要求パケットを登録・検索要求受付部２１０にて受信したら、各属性に対する条件指定を読み出し、object・クエリベクトル生成部２２０へ通知する。object・クエリベクトル生成部２２０では、以下の手順により、クエリベクトルqを生成する。属性iのレンジ指定がxlow i≦x i≦xhigh iの場合、クエリベクトルqを、
q=[xlow1〜xhigh1, m 1+xlow2〜m 1+xhigh2,
..., m(i-1)+xlowi〜m(i-1)+xhighi, …, m(d-1)+xlowd〜m(d-1)+xhighd]
として生成する。生成したベクトルqを、object管理サーバ３００へ通知する。
【００３４】
ステップ２０３）  object管理サーバ３００は、クエリベクトルqをobject・クエリベクトル受付部３１０にて受信したら、それをK次元ベクトル作成部３２０に通知する。K次元ベクトル作成部３２０では、以下の手順により、S通りのK次元ベクトルpermsK(q)を生成する。
【００３５】
object登録時に用いた、属性i=1からdの並び替えのパタンperms（s=1からS）を用いてpermsK(q)を生成する。例えば、object登録時のステップ１０３に準備したperm1=[3,4,2,1,5], perm２=[2,5,1,3,4], perm３=[5,4,2,1,3]を用いる。この場合、例えばs=1に対しては、
perm{s=1}K(q)=[m２+xlow３〜m２+xhigh３, m３+xlow４〜m３+xhigh４]
となる。
【００３６】
ステップ２０４）  ステップ２０３で生成されたK次元ベクトルを用いて、K次元ベクトルデータベース上３３０で検索を行う。具体的には、permsK(q)で指定されたK個の範囲指定に対して、全てのs (s=1からS)に対して|permsK(v(j))∧permsK(q)|=KとなったobjectID#jを、検索条件を満たすobjectの候補として抽出する。その後、該objectID#jに対するIP#Aを読み出し、その結果をリゾルバ２００に通知する。
【００３７】
上記の処理を具体的に示す。
【００３８】
検索を行う際には、各属性iに対して、検索条件を指定する。例えば属性iを気温とし、気温の値xiが20度≦xi≦25度というようにレンジ指定で検索を行う。具体的には、属性iのレンジ指定がxlowi≦xi≦xhighiの場合、クエリベクトルqを、
q=[xlow1〜xhigh1, m1+xlow2〜m1+xhigh2,
..., m(i-1)+xlowi〜m(i-1)+xhighi, …, m(d-1)+xlowd〜m(d-1)+xhighd]
として生成する。このクエリベクトルqを用いて、qの範囲に存在するobjectを検索し、該当するobjectのアドレスを特定可能とする。
【００３９】
このような、複数の属性に関して、レンジを指定することで条件にマッチするobjectを探索する方法として、R-tree（非特許文献３：A. Guttman, "R-Trees: A Dynamic Index Structure for Spatial Searching,'' ACM SIGMOD 1984.、非特許文献４：L. Arge et al., ``The Priority R-tree: a practically efficient and worst-case optimal R-tree,'' SIGMOD 2004.）やKD-tree（非特許文献５：http://en.wikipedia.org/wiki/K-d_tree）と呼ばれるツリー型のデータ構造を用いる方法が一般的である。
【００４０】
図６に２次元データ(x1,x 2)に対する具体例を示す。同図に示すように、各次元の値に対する範囲をいくつかの区間に分割し、それぞれの区間を担当する子ノードを用意する。例えば、同図のrootノードAにおいて、[0-1,0-1]と記載しているが、これは、本ノードの担当する範囲が1次元目、２次元目とも0から1であることを意味する。ノードBは[0-0,5,0-1]の範囲を担当している。各子ノードは自身の担当する区間を分割し、各分割区間に対応する子ノードを用意する。
【００４１】
（１）objectの登録時には、自身の値(x1,x2)を担当するleafノード（図６の最下位層のノード）にobjectをエントリする。
【００４２】
（２）objectの検索時には、指定されたレンジに対応する子ノードを辿ることで、対象objectを特定する。例えば、0.1<x1<0.3, 0.1<x2<0.25を満たすobjectを探索する場合、rootノードA→ノードB→leafノードDと辿って、object=(0.2,0.2)を見つける。
【００４３】
このようなツリー型のデータ構造をネットワークへ応用した例として、例えば非特許文献６（木實, 戸辺他, "I-Tree: センシングデータの統合検索を支援する空間時系列索引機構,"報処理学会論文誌：データベース, March 2011.）ではセンサデータの空間時系列データを対象に、Tree構造でデータを管理し、例えば現在の時系列の様子が似ている過去の時系列を効率的に見つけることを可能にする。非特許文献７（石塚，木實，戸辺，瀬崎，"携帯端末で撮影した写真の利用を前提とする動的ストリート画像フロー生成機構の設計"，電子情報通信学会 論文誌 Vol. J94-D No.1，pp.178-190，2011年1月.）では、カメラ付き携帯電話で集めた街の写真をDBに蓄積し、道路に沿って画像列（＝ストリート画像フローと呼ぶ）を高速に検索できる方法として、KD-treeを改良している。非特許文献８（D. Papadias et al.,"Indexing spatio-temporal data warehouses," ICDE 2002.）は、複数のセンサから発せられる時空間データを効率よく検索するための索引機構として、様々なレンジ指定（時間方向と空間方向）に対する集約情報（sumなど）を管理可能とするR-treeの改良を提案している。
【００４４】
しかしながら、属性の数（＝次元数）が大きくなると、このようなツリー型のデータ構造を用いた検索では、全ノード探索に近づく問題が指摘されている（次元の呪いとよばれる）（非特許文献９：C. Bohm et al.,"Searching in high-dimensional spaces: Index structures for improving the performance of multimedia databases," ACM Computing Surveys, 2001.）。
【００４５】
一方、検索に関する先行技術として、webページの語彙の集合や画像のイメージデータなどをベクトルとして表現し、これら高次元ベクトルを対象に類似のwebページや画像データを検索する方法がある（例えば、非特許文献10：J. Zhai et al., "ATLAS: A Probabilistic algorithm for high dimensional similarity search," SIGMOD 2011.、非特許文献11：P. Indyk and R. Motwani. Approximate nearest neighbors: towards removing the curse of dimensionality. In STOC, 1998.、非特許文献12：A. Andoni and P. Indyk. Near-optimal hashing algorithms for approximate nearest neighbor in high dimensions. Communications of the ACM, 51:117-122, 2008.、非特許文献13：M. Datar, N. Immorlica, P. Indyk and V. S. Mirrokni, "Locality-Sensitive Hashing Scheme Based on p-Stable Distributions," ACM SCG 2004. (projection based LSH)、非特許文献14：V. Satuluri et al., "Bayesian Locality Sensitive Hashing for Fast Similarity Search," VLDB 2012.、非特許文献15：A. Das et al., "Google News Personalization: Scalable Online Collaborative Filtering," WWW 2007.、非特許文献16：P. Li and A. C. Konig, "b-Bit Minwise Hashing", Ping Li, Arnd Christian Konig," WWW 2010.、非特許文献17：K. Aoyama et al.,、"Fast approximate similarity search based on degree-reduced neighborhood graphs,"ACM KDD 2011.参照）。これらの方法の多くは、類似のitemを同じbucketに高い確率でマッピングするhashing (locality sensitive hashingと呼ばれる)を利用している。そのようなhashingを実現する方法の一つとしてminHash（非特許文献18：A. Z. Broder, M. Charikar, A. M. Frieze, M. Mitzenmacher, "Min-wise independent permutations (extended abstract)," ACM STOC 1998.、あるいはそれに類するもの（非特許文献19：M. Thorup et al., "Tabulation Based 4-Universal Hashing with Applications to Second Moment Estimation," SODA 2004.、非特許文献20：P. Indyk, "A Small Approximately Min-Wise Independent Family of Hash Functions," Journal of Algorithms 2001.等）がある。しかしながら、これらの方法は、類似データのクラスタ化などを主な目的としており、今回のようなあるレンジ指定された条件にマッチするobjectを特定することを実現するものではない。
【００４６】
それに対し、以下で述べる方法においては、各属性に対してレンジ指定された条件を満たすobjectを抽出することを可能にする。
【００４７】
属性i=1〜dの並び替えのパタンpermをS個準備する。例えばd=5とし、ランダムな並び替えのパタンをS=3個用意するとして、object管理サーバ３００のK次元ベクトル作成部３２０は、
perm1=[3，4，2，1，5]，
perm2=[2，5，1，3，4]，
perm３=[5，4，2，1，3]
を生成する。perms (s=1からS)を用いて、属性ベクトルv(j)を並び替えた後、先頭のK個の要素を抽出する。（Kは予め定める値で、K<dとする。）この操作により得られるK次元ベクトルをpermsK(v(j))と表すこととする。例えばd=5、 K=2とすると、
v(j)=[x(j)1,m1+x(j)2,…,m(i-1)+x(j)i,…,m４+x(j)５]
に対して、perm{s=1}K(v(j))=[m 2+x(j)3, m3+x(j)4]となる。以上を各objectに対して実施しておく。
【００４８】
一方、検索時にリゾルバ２００でクエリベクトルqを生成したら、object管理サーバ３００において、qに対してもK次元ベクトルpermsK(q)の操作を行う。例えばd=5の場合、
q=[xlow1〜xhigh1,m1+xlow2〜m1+xhigh2，…,
m(i-1)+xlowi〜m(i-1)+xhighi, …, m4+xlow5〜m4+xhigh5]
に対して、
perm{s=1}K(q)=[m2+xlow3〜m2+xhigh3, m3+xlow4〜m3+xhigh4]
となる。permsK(q)とpermsK(v(j))を比較し、ベクトルpermsK(v(j))=[pv1,pv2,…,pvK]のk番目(k=1からK)の要素pvkが、permsK(q)=[pq1,pq2,…,pqK]のk番目の要素pqkで指定されたレンジ内にあるかチェックし、レンジ内にある要素数を
|permsK(v(j))∧permsK(q)|
と表記する。前述の例だと、
pv1= m2+x(j)3, pv2=m3+x(j)4,pq1=m2+xlow3〜m2+xhigh3,
pq2=m3+xlow4〜m3+xhigh4
となる。全てのs (s=1からS)に対して|permsK(v(j))∧permsK(q)|=Kとなったobject v(j)を、検索条件を満たすobjectの候補として抽出する。
【００４９】
以上の方法において、Kを次元数dよりも小さい値に設定することで、objectベクトルv(j)を、低次元（K次元）ベクトルへ変換し、K次元空間上で探索することで次元の呪いを回避している。一方で、一部の属性のみを対象に検索するため、誤検出や見逃しの可能性がある。まず、見逃しの可能性について述べる。d次元全てにおいてレンジ指定条件を満たすobjectが、検出されるべきobjectとなる。それに対し、本発明では、K次元のみを検索するが、検出されるべきobjectはd次元全てにおいてレンジ指定条件を満たしているため、その一部であるK次元についても必ずレンジ指定条件を満たすため、見逃すことはないことになる。
【００５０】
一方、誤検出の可能性はあるため、誤検出率FPR（False Positive Rate）を考慮して、本発明のパラメータKやパターンの個数Sを設定する必要がある。FPRは、本来は検索条件にマッチしないobjectであるにも関わらず、誤って条件にマッチしたと判定される確率である。誤検出率FPRをSとKを用いて計算する例として、以下の数式を用いる。
【００５１】
【数１】
2014142808.tif 000003
ただし、Nはobject数、dは次元数、Hは検索条件を満たすobject数の期待値であり、p=(H/N)(1/d)とする。式（１）は、objectベクトルの各属性間の値は独立であり、かつ各属性に対する値が一様分布するとし、またクエリベクトルは、各属性iについてレンジ長T=(H/N) (1/d)を持ち、レンジの始点xlowは[0，mi-T]の間で一様分布に従い、レンジの終点xhigh=xlow+Tで与えられるという仮定の下で、導出される。上記の式（１）を用いることで、例えば、FPRをある一定値以下に抑えるようなSとKを決定することが可能となる。具体的な数値例については、第２の実施の形態で詳述する。
【００５２】
［第２の実施の形態］
本実施の形態では、R-treeやkd-treeと呼ばれる多次元データに対するツリー型のデータ構造を利用する例について説明する。
【００５３】
本実施の形態における装置構成は、第1の実施の形態と同様に図２、図３のリゾルバ２００とobject管理サーバ３００を用いる。
【００５４】
R-treeやkd-treeと呼ばれる多次元データに対するツリー型のデータ構造をs=1からS個用意しておき（これをtreesと呼ぶ）、object管理サーバ３００は、前述の第1の実施の形態におけるK次元ベクトルpermsK(v(j))をK次元ベクトルデータベース３３０のs番目のtreesにエントリする。これを各objectに対して実施しておく。
【００５５】
object管理サーバ３００は、検索時には、K次元ベクトルデータベース３３０のtreesに対して、permsK(q)を用いて検索を行う。その結果、permsKに関して、検索条件を満たすobjectの集合Lsが得られる。これをs=1〜Sに対して実施し、集合L1∧L 2∧…∧LS（なお記号∧は積集合を表し、例えばL1∧L 2であれば集合L1とL 2の積集合を意味する）に属するobjectを、特定したいobjectの候補として抽出する。
【００５６】
ツリー型のデータ構造を用いてレンジ検索を行う際、ツリーを構成するノードの担当範囲が、クエリでの指定範囲に包含されている場合は、該ノード配下のobjectは全て条件にマッチすると判定できるが、ノードの範囲とクエリでの指定範囲の一部が重なる場合には、該ノード配下のobjectが本当に条件を満たすかを調べる必要があり、探索に時間を要することになる。簡単な例として、１次元の場合と２次元の場合を比較する（図７(a)と図７(b)）。同図では、探索空間を１６個の区間に分割している場合を示している。このとき、レンジ長が全区間の半分であるクエリがあったとする。一次元の場合（図７−(a)）、該クエリの指定範囲とノードの範囲の一部が重なるノード数は２ノード（ノード１とノード９）となる。それに対して、２次元の場合（図７−(b)）、該クエリの指定範囲とノードの範囲の一部が重なるノード数は８ノード（ノード５，６，７，９，１１，１３，１４，１５）となる。このように次元が大きい方が、一部が重なるケースが大きくなると考えられる。図８は、探索空間を232個に分割したときに、各leafノードの担当範囲がクエリの指定範囲の一部と重なるようなleafノードの数Nnonoverlapを数値計算で計算した結果である。X軸は次元数d、Y軸はNnonoverlap/232としてプロットしている。これより、次元が小さいと該ノード数が少なくて済むことが分かる。
【００５７】
例えば、各次元i (i=1〜d)に対して、区間[0,1]の間で一様分布に従う値を属性値xiとし、d次元ベクトルのobject vがv=[x1,x 2,…,xi,…,xd]により構成されていると仮定し、object数N=232個、H=1、d=32とし、各ノードは256個の子ノードを持つようにツリーを構成したとする。また、クエリのレンジ長をT=(H/N)(1/d)=0.5となる。以上の条件の下、d=32次元の場合、一部と重なるノードの総数は4,311,810,304となる。それに対してK=8でK次元ツリーを構成した場合には、その0.00874倍のノード数の処理で済む。
【００５８】
そのようなK次元ツリーをS=1個用意して、本実施の形態の方法の手順を実施すると、FPR=3.91×10-3となる（第1の実施の形態の式（１）より）。そのときの計算コストはd次元の場合の0.00874倍となる。またS=2とした場合は、FPR=1.53×10-5となり、そのときの計算コストは0.00874×S+{L1∧L 2の積集合演算分}となる。K次元ツリーでの一ノードでの処理コストは1object当りK次元分の比較演算が必要と考えられるため、{L1∧L 2の積集合演算}における1object当りの計算コストのα倍（α≧1）の計算コストを要するとする。また、L1、L2それぞれから出力される候補object数をn1,n2とすると、L1∧L2の積集合演算にO(n1+n2)の計算コストがかかるとする。なお、n1,n2は、以下で計算されるPdetect(S,K)を用いてn1=n2=Pdetect (1,K)×Nにより計算される。
【００５９】
【数２】
2014142808.tif 000004
Pdetect(S,K)は、パラメータをSとKに設定したときに、あるobjectが候補として選ばれる確率を表す。以上より、仮にα=1とした場合に、計算コストはd次元の場合の0.0253倍と計算される。
【００６０】
［第３の実施の形態］
本実施の形態は、objectがある属性iに対する値を持たない場合、xi=0とする（0は、値を持たないことを意味するというルールにする）。かつ、クエリqが属性iについてレンジ指定を行わない場合は、指定範囲を0≦xi≦mi（すなわち全区間）とする。
【００６１】
［第４の実施の形態］
本実施の形態は、objectがある属性iに対する値を持たない場合、リゾルバ２００において、その属性iを除外して、ベクトルv(j)を構成するものである。すなわち、
v(j)=[x(j)1, m1+x(j)2, …, m (i-2)+x(j)(i-1), mi+x(j)(i+1), …, m(d-1)+x(j)d]
とする。
【００６２】
また、クエリqが属性iについてレンジ指定を行わない場合は、その属性を除外してクエリベクトルqを構成してもよい。すなわち、
q=[xlow1〜xhigh1, m1+xlow2〜m1+xhigh2, 
..., m(i-2)+xlow(i-1)〜m(i-2)+xhigh(i-1), mi+xlow(i+1)〜mi+xhigh(i+1), 
…, m(d-1)+xlowd〜m(d-1)+xhighd]
とする。
【００６３】
この場合、第１の実施の形態において、object検出条件を
|permsK(v(j))∧permsK(q)|=K
としていた代わりに、以下のように変更する。すなわち、ベクトルpermsK(v(j))=[pv1,pv2,…,pvK]のk番目の要素pvkが、permsK(q)=[pq1,pq2,…,pqK]のk'=1からK番目のいずれかの要素pqk'で指定されたレンジ内にあるかチェックし、それを各k(k=1からK)に対して実施し、その結果レンジ内にあった要素数を
|permsK(v(j))∧permsK(q)|
と表記し、|permsK(v(j))∧permsK(q)|≧K' (K'は予め定める値であり、K'≦K)であれば特定したいobjectの候補として抽出する。
【００６４】
システムにおいて、第１の実施の形態と異なる検出条件を導入した理由を述べる。objectおよびクエリに関して、図９のような場合分けを考える。それぞれのケースについて、第３の実施の形態の方法によりobjectまたはクエリを構成した上で、第1の実施の形態の方法を適用した場合と比べて、図９にまとめたように誤検出率が減少する一方で、見逃しが生じる可能性がある。そのため、検出条件を|permsK(v(j))∧permsK(q)|≧K'（ただしK'<K）とすることで、より検出されやすくなるように調整可能にしている。
【００６５】
ここで、各ケースにおける誤検出・見逃しについて説明する。
【００６６】
第３の実施の形態の方法で、object／クエリを構成した上で第１の実施の形態の検出条件を適用した場合と比べて、第４の実施の形態の方法でobject／クエリを構成した上で第３の検出条件を適用すると、誤検出率・見逃し率がどのように変化するかを考察する（以下で具体例を示している場合には、d=5, mi=10, K=3を仮定している。）。なお、第２の実施の形態の方法の説明時に述べたように、第３の実施の形態の方法を適用した場合は図９のいずれのケースにおいても見逃しは発生しない。
【００６７】
＜ケース1＞  ベクトルv(j)が属性iの値を持たない場合に除外し、qが属性i'のレンジ指定を行わない場合に全区間を指定：
(1-1) v(j)が除外属性iをもち、qの該属性iは全区間指定の場合：
○誤検出のケース
・第４の実施の形態の方法：i=3番目の属性を持たないベクトルv(j)=[1,12,32,45]と、同じくi'=3番目の属性を全区間指定するクエリq=[1〜3, 11〜15, 20〜30, 32〜35, 41〜44]を例に考える。perms=[1,2,3,4,5]とすると、
permsK(v(j))=[1,12,32]，
permsK(q)=[1〜3, 11〜15, 20〜30]
となり、|permsK(v(j))∧permsK(q)|=2<Kとなって、正しく対象外と判定できる。
【００６８】
・第３の実施の形態の方法：v(j)=[1,12,20,32,45]，permsK(v(j))=[1,12,20]となるため、|permsK(v(j))∧permsK(q)|=Kとなり誤検出される。
【００６９】
以上より、第３の実施の形態の方法よりも誤検出率が減るケースがある。
【００７０】
○見逃しのケース：
・第４の実施の形態の方法：v(j)が属性iの値を持たず、クエリqがi=i'番目の属性を全区間指定する場合、見逃しが発生するケースがある。例として、v(j)=[1,12,32,45]、q=[1〜3,11〜15,20〜30,32〜35,40〜48]を考える。このクエリqは、3番目の属性に対してはレンジ指定区間＝全区間(＝20〜30)となっているため、これは3番目の属性に対してレンジ指定を行わない（＝条件指定なし）場合を意味している。したがって、ベクトルv(j)はクエリqに含まれる、という判定が正解となる。perms=[1,2,3,4,5], K=3とすると、
permsK(v(j))=[1,12,32]，
permsK(q)=[1〜3, 11〜15, 20〜30]
となり、|permsK(v(j))∧permsK(q)|=2<Kとなって、誤って対象外と判定する、つまり見逃すことになる。
【００７１】
以上をまとめると、誤検出および見逃しのいずれのケースにおいても、第３の実施の形態の方法では、ベクトルv(j)のn番目の要素の属性とqのそれは同じ属性に対応しているのに対して、第４の実施の形態の方法ではその対応関係がずれることで、検出条件にマッチする可能性が減り、誤検出率が減る一方で見逃し率が増加する可能性があると考えられる。
【００７２】
(1-2) (1-1)以外の場合：
○誤検出のケース：
i=3番目の属性に対する値を持たないobjectとして、v(j)=[1,12,32,45]を考える。一方、i'=5番目の属性を全区間指定するクエリとして、
q=[1〜3, 11〜15, 22〜24, 32〜35, 40〜50]
とする。この例では、ベクトルv(j)はクエリqに含まれない、という判定が正解となる（22〜24という条件指定を満たさないため）。
【００７３】
perms=[1,2,3,4,5]とする。このとき、permsK(v(j))=[1,12,32]となる。この場合、
permsK(q)=[1〜3, 11〜15, 22〜24]
となり、|permsK(v(j))∧permsK(q)|=2<Kとなって、正しく対象外と判定できる。つまり、第３の実施の形態の方法のようにi=3番目の属性に対する値をxi=0としてv(j)をv(j)=[1,12,20,32,45]と構成しても、第４の実施の形態の方法のようにその属性を除外してv(j)=[1,12,32,45]としても、permsの最初のK個の中にi=3が含まれれば、正しく対象外と判定できる。つまり、第３の実施の形態の手順から第４の実施の形態の手順に変更することによって誤検出率が増加することはないと考えられる。一方、先頭のK個に属性iが含まれないpermsに対しては、第３と第４の実施の形態の方法は同じ動作となるため、誤検出率は変化しない。
【００７４】
○見逃しのケース：
ベクトルv(j)の属性iが除外であっても、クエリqの該属性iは全区間指定でない（つまりレンジ指定）場合には、v(j)がqに含まれることはない。なぜなら、v(j)がqに含まれるためには、『qでレンジ指定されている各属性iに対して、v(j)が該属性iの値を持つ』という必要条件があるからである。したがって、(1-1)以外のケースでv(j)がqに含まれる可能性がある場合は、v(j)が全属性に対して値を持つ場合のみである。その場合、qがレンジ指定のない属性を全区間指定するという条件の下では、どのようなpermsに対しても、permsK()で選択されるv(j)の属性の組は、permsK()で選択されるqの属性の組に必ず一致する。従って、見逃しが発生することはない。
【００７５】
＜ケース2＞：   ベクトルv(j)が属性iの値を持たない場合にxi=0とし、クエリqが属性i'のレンジ指定を行わない場合に除外：
(2-1) ベクトルv(j)が属性iをxi=0とし、クエリqの該属性iは除外：
○誤検出のケース
・第４の実施の形態の方法：i=3番目の属性を持たないv(j)=[1,12,20,32,45]と、同じくi'=3番目の属性を除外するクエリq=[1〜3, 11〜15, 32〜35, 41〜44]を例に考える。perms=[1,2,3,4,5]とすると、
permsK(v(j))=[1,12,20]，
permsK(q)=[1〜3, 11〜15, 32〜35]
となり、|permsK(v(j))∧permsK(q)|=2<Kとなって、誤検出されない。
【００７６】
・第３の実施の形態の方法：permsK(q)=[1〜3, 11〜15, 20〜30]となるため、|permsK(v(j))∧permsK(q)|=Kとなり誤検出される。
【００７７】
以上より、誤検出率が減るケースがある。
【００７８】
○見逃しのケース：
・第４の実施の形態の方法：例として、v(j)=[1,12,20,32,45]，q=[1〜3,11〜15,32〜35,40〜48]を例に考える。この場合、ベクトルv(j)はクエリqに含まれる、という判定が正解となる。perms=[1,2,3,4,5], K=3とすると、
permsK(v(j))=[1,12,20]，
permsK(q)=[1〜3, 11〜15, 32〜35]
となり、|permsK(v(j))∧permsK(q)|=2<Kとなって、誤って対象外と判定する、つまり見逃すことになる。
【００７９】
(2-2) (2-1)以外の場合：
○誤検出のケース：
i=3番目の属性に対する値をxi=0とするobjectとして、v(j)=[1,12,20,32,45]の例を考える。一方、i'=5番目の属性を指定しないクエリとして、q=[1〜3, 11〜15, 22〜24, 32〜35]とする。この例では、ベクトルv(j)はクエリqに含まれない、という判定が正解となる（22〜24という条件指定を満たさないため）。
【００８０】
・第４の実施の形態の方法：先頭のK個にi'=5が含まれるpermsとして、perms=[1,2,5,3,4]を考える。このとき、
permsK(v(j))=[1,12,45]，
permsK(q)=[1〜3, 11〜15, 22〜24]
となり、|permsK(v(j))∧permsK(q)|=2<Kとなって、誤検出されない。
【００８１】
・第３の実施の形態の方法：permsK(q)=[1〜3, 11〜15, 40〜50]となり誤検出される。つまり、第３の実施の形態の方法では、属性i'=5が全区間指定されるため検出されやすくなるのに対して、第４の実施の形態の方法では、その属性を除外することで検出されにくくなっている。
【００８２】
○見逃しのケース：
・第４の実施の形態の方法：ベクトルv(j)の属性iがxi=0であり、クエリqの該属性iはレンジ指定される場合には、v(j)がqに含まれることはない。なぜなら、v(j)がqに含まれるためには、qでレンジ指定されている各属性iに対して、v(j)が該属性iの値を持つ、という必要条件があるからである。したがって、(2-1)以外のケースでv(j)がqに含まれる可能性がある場合は、v(j)が全属性に対して値を持つ場合のみである。その場合、qにて除外されている属性i'がpermsの先頭K個に含まれる場合、ベクトルv(j)のn番目の要素の属性とqのそれの対応関係がずれるため、見逃しが発生する。
【００８３】
例として、v(j)=[1,12,22,32,45], q=[1〜3, 11〜15, 22〜24, 32〜35], perms=[1,2,5,3,4]を考える。このとき、
permsK(v(j))=[1,12,45]，
permsK(q)=[1〜3, 11〜15, 22〜24]
となり、|permsK(v(j))∧permsK(q)|=2<Kとなって見逃しが生じる。
【００８４】
＜ケース3＞：  ベクトルv(j)が属性iの値を持たない場合に除外し、クエリqが属性i'のレンジ指定を行わない場合に除外：
(3-1) v(j)が除外属性iをもち、qの該属性iを除外の場合：
○誤検出のケース：
クエリqの除外属性がiのみであれば、ベクトルv(j)のn番目の要素の属性とqのそれは同じ属性に対応するので、第３の実施の形態の方法と第４の実施の形態の方法は同じ結果になる。qの除外属性がi以外にも存在する場合には、第４の実施の形態の方法ではその対応関係がずれることで、検出条件にマッチする可能性が減り、誤検出率が減る場合がある。例として、i=3番目の属性を持たないv(j)=[1,12,32,45]と、i'=3,4番目の属性を除外するクエリq=[1〜3, 11〜15, 41〜44]を例に考える。perms=[1,2,3,4,5]とすると、
permsK(v(j))=[1,12,32]，
permsK(q)=[1〜3, 11〜15, 41〜45]
となり、|permsK(v(j))∧permsK(q)|=2<Kとなって、誤検出しない。一方、第３の実施の形態の方法では、v(j)=[1,12,20,32,45]，q=[1〜3, 11〜15, 20〜30, 30〜40, 41〜44]となり、
permsK(v(j))=[1,12,20]，
permsK(q)=[1〜3, 11〜15, 20〜30]
となるため、|permsK(v(j))∧permsK(q)|=Kとなり誤検出される。
【００８５】
○見逃しのケース：
・第４の実施の形態の方法：クエリqが、ベクトルv(j)での除外属性i以外には除外属性i'を持たない場合（つまりv(j)とqの除外属性が１対１対応している場合）、いずれのpermsに対しても、perms(v(j))のn番目の要素の属性とperms(q)のそれは同じになるため、見逃しは生じない。一方、qが、v(j)での除外属性i以外に除外属性i'を持つ場合には見逃しが生じる場合がある。例として、v(j)=[1,12,32,45]，q=[1〜3,11〜15,40〜48]を考える。この場合、v(j)はqに含まれる、という判定が正解となる。perms=[1,2,3,4,5], K=3とすると、
permsK(v(j))=[1,12,32]，
permsK(q)=[1〜3, 11〜15, 40〜48]
となり、|permsK(v(j))∧permsK(q)|=2<Kとなって、誤って対象外と判定する。つまり見逃すことになる。 
(3-2) (3-1)以外の場合：
○誤検出のケース：
第４の実施の形態の方法：i=3番目の属性が除外されたobjectとして、v(j)=[1,12,32,45]を考える。一方、i'=5番目の属性を指定しないクエリとして、q=[1〜3, 11〜15, 22〜24, 32〜35]とする。この例では、v(j)はqに含まれない、という判定が正解となる。先頭のK個にi'=5が含まれるpermsとして、perms=[1,2,5,3,4]を考える。このとき、
permsK(v(j))=[1,12,45]，
permsK(q)=[1〜3, 11〜15, 22〜24]
となり、|permsK(v(j))∧permsK(q)|=2<Kとなって、誤検出されない。
【００８６】
・第３の実施の形態の方法：permsK(q)=[1〜3, 11〜15, 40〜50]となり、誤検出される。つまり、ケース(2-2)と同様に、第３の実施の形態の方法では、属性i'=5が全区間指定されるため検出されやすくなるのに対して、第４の実施の形態の方法では、その属性を除外することで検出されにくくなっている。
【００８７】
○見逃しのケース：
ベクトルv(j)の属性iが除外され、クエリqの該属性iはレンジ指定される場合には、v(j)がqに含まれることはない。なぜなら、v(j)がqに含まれるためには、qでレンジ指定されている各属性iに対して、v(j)が該属性iの値を持つ、という必要条件があるからである。したがって、(3-1)以外の場合でv(j)がqに含まれる可能性がある場合は、v(j)が全属性に対して値を持つ場合のみである。その場合、qにて除外されている属性i'がpermsの先頭K個に含まれる場合、ベクトルv(j)のn番目の要素の属性とqのそれの対応関係がずれるため、見逃しが発生する。例として、v(j)=[1,12,22,32,45], q=[1〜3, 11〜15, 22〜24, 32〜35], perms=[1,2,5,3,4]を考える。このとき、
permsK(v(j))=[1,12,45]，
permsK(q)=[1〜3, 11〜15, 22〜24]
となり、|permsK(v(j))∧permsK(q)|=2<Kとなって見逃しが生じる。
【００８８】
［第５の実施の形態］
本実施の形態では、object管理サーバ３００において、第４の実施の形態の手順によって、各perms（s=1〜S）において抽出されたobjectの集合をAsとし、(I[v(j)∈A1]+ I[v(j)∈A 2]+…+ I[v(j)∈As])≧Sth（ただし、I[ ]は[ ]内の条件を満たすとき１、そうでない場合０を返す関数、Sthは予め定める閾値で、1≦Sth≦S）を満たすv(j)を特定したいobjectの候補として抽出する。
【００８９】
［第６の実施の形態］
本実施の形態では、object管理サーバ３００において、並び替えのパタンを選択する手順について説明する。
【００９０】
K次元ベクトルデータベース３３０にエントリされているobject集合に対する属性iに関する累積分布関数Fi (x)=P[objectの属性iの値xi≦x]を作成しておき、クエリqにおいて属性iについてのレンジ指定がxlowi〜xhighiの場合、fi (q)=Fi (xhighi)-Fi (xlowi)を計算する。
【００９１】
一方、並び替えのパタンpermsをs=1からS'(>S)個用意しておき、permsK(q)により抽出されたK個の属性i1,i2,…,iKに対して、f{i1}(q), f{i 2}(q), …, f{iK}(q)を計算し、その積P(s,q)= f{i1}(q)×f{i 2}(q)×…× f{iK}(q)を計算し、それを各s=1〜S'に対して実施する。得られたP(s,q)の値が小さいものからS個permsを選択し、第1、第２、第４の実施の形態の手順を実施する。
【００９２】
ここでのP(s,q)は、該クエリqにマッチするobjectの割合に対応するため、該P(s,q)が小さくなるようなpermsを優先的に利用することで、より該当objectを絞り込めることになる。
【００９３】
なお、上記のリゾルバ２００、object管理サーバ３００の動作をプログラムとして構築し、リゾルバ、object管理サーバとして利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【００９４】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
【符号の説明】
【００９５】
１００  object
２００  リゾルバ
２１０  登録・検索要求受付部
２２０  object・クエリベクトル生成部
３００  object管理サーバ
３１０  object・クエリベクトル受付部
３２０  K次元ベクトル作成部
３３０  K次元ベクトルデータベース
４００  IPネットワーク
【図１】
2014142808.tif 000005
【図２】
2014142808.tif 000006
【図３】
2014142808.tif 000007
【図４】
2014142808.tif 000008
【図５】
2014142808.tif 000009
【図６】
2014142808.tif 000010
【図７】
2014142808.tif 000011
【図８】
2014142808.tif 000012
【図９】
2014142808.tif 000013