(57)【要約】【課題】  全object探索を行うことなく、条件にマッチするobjectを特定し、該objectのIPアドレスを特定する。【解決手段】  本発明は、object管理サーバが、各属性と該属性の値の階層に対して該属性と該属性の値の階層を組み合わせ、階層毎にobjectを管理するためのノードを有するツリーである組み合わせ管理ツリーを格納したobjectデータベースを有し、リゾルバが属性の階層の値を用いて生成したobjectベクトルに基づいて、組み合わせ管理ツリーを参照してobjectデータベースのノードにobjectのアドレスを登録する。また、リゾルバが各属性に関する条件が指定された属性の階層の値を用いて生成したクエリベクトルに基づいて、組み合わせ管理ツリーを参照して、objectデータベースのノードで管理しているobjectのアドレスを取得する。【選択図】  図３
2014225113.tif 000002
【特許請求の範囲】
【請求項１】
情報通信ネットワークに接続されているobjectが、複数の属性に対する値を有し、該属性の値の組み合わせにより条件指定を行うことでobjectを検索し、該objectのアドレスを特定するアドレス解決システムであって、
リゾルバとobject管理サーバを有し、
前記リゾルバは、
各objectのアドレス及び多属性情報を含む登録要求を取得し、該登録要求に含まれる属性の階層の値を用いて、属性i=i1, i2, …, ik, …, iKとし、属性ikに対して階層mk番目まで値を有するものとし、属性iの階層mにおける値xi,mを用いて、objectの名前となる
【数９】
2014225113.tif 000011
という値の組から構成されるobjectベクトルを生成し、該objectのアドレスと共に前記object管理サーバに送出する名前付与手段と、
取得した検索要求に含まれる各属性に関する条件が指定された属性の階層の値を用いてクエリベクトルを生成して、前記object管理サーバに送出するクエリベクトル生成手段と、
を有し、
前記object管理サーバは、
各属性と該属性の値の階層に対し、該属性と該属性の値の階層を組み合わせ、階層毎にobjectを管理するためのノードを有するツリーである組み合わせ管理ツリーを格納したobjectデータベースと、
前記リゾルバから前記objectベクトルを取得し、該objectベクトルに基づいて該組み合わせ管理ツリーを参照して、該組み合わせ管理ツリーのノードに対応付けてobjectのアドレスを登録するobject登録手段と、
前記リゾルバから前記クエリベクトルを取得し、該クエリベクトルに基づいて、前記組み合わせ管理ツリーを参照して、該組み合わせ管理ツリーのノードに対応するobjectのアドレスを取得するobject検索手段と、
を有することを特徴とするアドレス解決システム。
【請求項２】
前記object登録手段は、
前記組み合わせ管理ツリーに沿って、前記名前ベクトルで指定された値を担当する全てのノードにobjectのアドレスを登録する手段、
または、
前記組み合わせ管理ツリーのrootから、
【数１０】
2014225113.tif 000012
の順に辿っていき、到達した最後のノードのみに前記objectのアドレスを登録する手段、のいずれかを含む請求項１記載のアドレス解決システム。
【請求項３】
前記object検索手段は、
前記組み合わせ管理ツリーにおいて、rootから
【数１１】
2014225113.tif 000013
の順に辿っていき、最後に到達したノードで管理しているobjectを読み出す手段、
または、
前記組み合わせ管理ツリーに沿って、前記クエリベクトルで指定された値を担当するノードを全て訪問し、それらのノードを頂点とした部分木に属するノードで管理しているobjectを読み出す手段、
のいずれかを含む請求項１記載のアドレス解決システム。
【請求項４】
前記object検索手段は、
前記組み合わせ管理ツリーの前記ノードが、該組み合わせ管理ツリーを構築する際に用いた属性（１次属性）以外の属性（２次属性）の情報も保持している場合に、
前記リゾルバから取得した前記１次属性に関するクエリベクトルに基づいて、前記組み合わせ管理ツリーのrootから
【数１２】
2014225113.tif 000014
の順に辿っていき、最後に到達したノードで管理しているobjectを読み出し、該objectが前記リゾルバから取得した前記２次属性に関する条件を満たすかチェックする手段、
または、
前記リゾルバから取得した前記１次属性に関するクエリベクトルに基づいて、前記組み合わせ管理ツリーに沿って、前記クエリベクトルで指定された値を担当するノードを全て訪問し、それらのノードを頂点とした部分木に属するノードで管理しているobjectを読み出し、該objectが前記リゾルバから取得した前記２次属性に関する条件を満たすかチェックする手段、
のいずれかを含む請求項１記載のアドレス解決システム。
【請求項５】
前記組み合わせ管理ツリーを、
属性i(i=1からd)の値の階層構造として、1階層目の値としてLi,1通り、1から2階層目までの値としてLi,2通り、1からMi階層目の値としてLi,Mi通りの値を取りうるものとし、該属性iの階層1からmまでにおいて取りうる値の集合をUi,mとし、
1階層目には、属性iに対する1階層目の各値x i,1∈U i,1を担当するノードを用意し、
２階層目においては、前記１階層目のノードx i,1を親とし、属性iの２階層目までの値がx i,1/x i,2∈U i,2となる子ノード、ならびに属性j(>i)の１階層目の値がx j,1∈Uj,1となる子ノードを生成し、
３階層目には、前記２階層目のノードがノードx i,1/x i,2の配下にノードx i,1/x i,2/x i,3および属性j (j>i)の1階層目の値がx j,1であるノードが子ノードとして生成され、かつ該２階層目のノードがノードx i,1/x j,1の配下には属性jの2階層目までの値がx j,1/x j,2となるノード、および属性k (k>j）の1階層目の値がxk,1となる子ノードを生成する処理を繰り返すことにより生成する第１の組み合わせ管理ツリー生成手段を更に有する
請求項１記載のアドレス解決システム。
【請求項６】
前記組み合わせ管理ツリーを、
属性間で優先順位付けを行い、優先度が高い順に属性を並び替え、
１階層目には、属性1の1階層目の値のみを列挙し、
２階層目には、属性1の2階層目の値、または属性2の1階層目の値を列挙し、属性3以降の1階層目の値は含めず、
３階層目には、属性1の3階層目の値、または属性2の1階層目または2階層目の値、または属性3の1階層目の値を列挙し、属性4以降の1階層目の値は含めない、処理を繰り返し実施して生成する第２の組み合わせ管理ツリー生成手段を更に有する
請求項１記載のアドレス解決システム。
【請求項７】
情報通信ネットワークに接続されているobjectが、複数の属性に対する値を有し、該属性の値の組み合わせにより条件指定を行うことでobjectを検索し、該objectのアドレスを特定するアドレス解決方法であって、
リゾルバとobject管理サーバを有するシステムにおいて、
前記object管理サーバが
各属性と該属性の値の階層に対して該属性と該属性の値の階層を組み合わせ、階層毎にobjectを管理するためのノードを有するツリーである組み合わせ管理ツリーを格納したobjectデータベースを有し、
前記リゾルバにおいて、
各objectのアドレス及び多属性情報を含む登録要求を取得し、該登録要求に含まれる属性の階層の値を用いて、属性i=i1, i2, …, ik, …, iKとし、属性ikに対して階層mk番目まで値を有するものとし、属性iの階層mにおける値xi,mを用いて、objectの名前となる
【数１３】
2014225113.tif 000015
という値の組から構成されるobjectベクトルを生成し、該objectのアドレスと共に前記object管理サーバに送出する名前付与ステップと、
前記object管理サーバにおいて、
前記リゾルバから前記objectベクトルを取得し、該objectベクトルに基づいて前記組み合わせ管理ツリーを参照して、該組み合わせ管理ツリーのノードに対応付けてobjectのアドレスを登録するobject登録ステップと、
を行う登録過程と、
前記リゾルバにおいて、
取得した検索要求に含まれる各属性に関する条件が指定された属性の階層の値を用いてクエリベクトルを生成して、前記object管理サーバに送出するクエリベクトル生成ステップと、
前記object管理サーバにおいて、
前記リゾルバから前記クエリベクトルを取得し、該クエリベクトルに基づいて、前記組み合わせ管理ツリーを参照して、該組み合わせ管理ツリーのノードに対応するobjectのアドレスを取得するobject検索ステップと、
を行う検索過程と、
からなることを特徴とするアドレス解決方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アドレス解決システム及び方法に係り、特に、情報通信ネットワークにおいて、いくつかの条件指定によって、ネットワークに接続されているobject（通信機能もつ家電品や端末などを指す）を特定し、通信できるようにするためのアドレス解決システム及び方法に関する。
【背景技術】
【０００２】
従来の情報通信ネットワークは、論理空間上のアドレスにより通信対象を指定している。固定電話では電話番号、インターネットではIPアドレスがそれにあたり、これらはネットワーク上の位置とも対応しているので、その位置に接続することで通信が可能となる。
【０００３】
一方で、携帯電話の電話番号やインターネットでのURLは、より上位の論理アドレスまたは名前と解釈できる。つまり、これらは通信相手や情報の論理位置を示すが、ネットワーク上の接続位置は示していないため、前者ではLR(ロケーションレジスタ)、後者ではDNS(ドメインネームサーバ)により、ネットワーク上の接続位置を示すアドレスへの変換（いわゆる名前解決）が必要となる。後者の場合であれば、URLから変換後のIPアドレスを用い、接続する（例えば、非特許文献１，２参照）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】弓場英明監修、未来ねっと技術シリーズ  ユビキタスネットワーク技術、電気通信協会、2003.
【非特許文献２】http://www.nic.ad.jp/ja/newsletter/No22/080.html
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、今後、非常に多数のobjectがネットワークに接続されるようになった時に、個々のobjectに一意に付与された名前をユーザが把握した上で通信を行う代わりに、例えば、ユーザが目の前で落し物をした自転車に乗っている人と通信したい、あるいは、ある地域である時間帯に温度が２０度以上を示したセンサと通信したい、といったユーザの通信要求条件（様々な属性に対する検索条件の組み合わせ）を直接指定することでobjectを特定して通信できるようにしたい場合が想定される。
【０００６】
しかし、既存のシステムでは、個々のobjectに一意に付与された名前をユーザが把握した上でその名前を指定して通信を行う。例えば、携帯電話であれば電話番号をユーザが指定することで通信を行う。そのため、上述のような利用形態を実現することは困難である。
【０００７】
また、object毎に属性（値の情報とIPアドレス）を管理しておき、属性（値の組み合わせ）で指定された条件を満たすobjectを一つずつ調べていき、条件を満たすobjectを特定してそのIPアドレスを特定するという方法も考えられるが、全objectの探索が必要となり、object数や属性数が膨大になってしまうという問題がある。
【０００８】
本発明は、上記の点に鑑みなされたもので、objectが有する様々な属性（場所や端末種別など）に対する条件指定を行うことで、全object探索を行うことなく、条件にマッチするobjectを特定し、該objectのIPアドレスを特定可能なアドレス解決システム及び方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記の課題を解決するため、一態様によれば、情報通信ネットワークに接続されているobjectが、複数の属性に対する値を有し、該属性の値の組み合わせにより条件指定を行うことでobjectを検索し、該objectのアドレスを特定するアドレス解決システムであって、
リゾルバとobject管理サーバを有し、
前記リゾルバは、
各objectのアドレス及び多属性情報を含む登録要求を取得し、該登録要求に含まれる属性の階層の値を用いて、属性i=i1, i2, …, ik, …, iKとし、属性ikに対して階層mk番目まで値を有するものとし、属性iの階層mにおける値xi,mを用いて、objectの名前となる
【００１０】
【数１】
2014225113.tif 000003
という値の組から構成されるobjectベクトルを生成し、該objectのアドレスと共に前記object管理サーバに送出する名前付与手段と、
取得した検索要求に含まれる各属性に関する条件が指定された属性の階層の値を用いてクエリベクトルを生成して、前記object管理サーバに送出するクエリベクトル生成手段と、
を有し、
前記object管理サーバは、
各属性と該属性の値の階層に対し、該属性と該属性の値の階層を組み合わせ、階層毎にobjectを管理するためのノードを有するツリーである組み合わせ管理ツリーを格納したobjectデータベースと、
前記リゾルバから前記objectベクトルを取得し、前記組み合わせ管理ツリーを参照して、該objectベクトルに基づいて該組み合わせ管理ツリーのノードに対応付けてobjectのアドレスを登録するobject登録手段と、
前記リゾルバから前記クエリベクトルを取得し、該クエリベクトルに基づいて、前記組み合わせ管理ツリーを参照して、該組み合わせ管理ツリーのノードに登録されているobjectのアドレスを取得するobject検索手段と、を有するアドレス解決システムを提供される。
【発明の効果】
【００１１】
上述のように、本発明によれば、objectが有する様々な属性（場所や端末種別など）に対する条件指定を行うことで、全object探索を行うことなく条件にマッチするobjectを特定し、該objectのIPアドレスを特定可能な名前解決を提供することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】本発明が適用されるIPネットワークの基本構成例である。
【図２】本発明のリゾルバの構成例である。
【図３】本発明のobject管理サーバの構成例である。
【図４】本発明の第１の実施の形態における組み合わせ管理ツリーの例である。
【図５】本発明の第１の実施の形態における名前付与・登録時のフローチャートである。
【図６】本発明の第１の実施の形態における検索（名前解決）時のフローチャートである。
【発明を実施するための形態】
【００１３】
以下、図面と共に本発明の実施の形態を説明する。
【００１４】
図１は、本発明が適用されるIPネットワークの基本構成例である。
【００１５】
同図に示すシステムは、IPネットワーク１にobject１０、リゾルバ２０、object管理サーバ３０が接続されている。なお、同図では、IPネットワーク１を例に記載しているが、IPアドレス以外の論理アドレスを用いた他のネットワークであってもよい（つまり、論理アドレスがネットワーク上の位置を指し、かつその論理アドレスを指定すれば所望の宛先までデータやパケットを転送することが可能であれば他のネットワークであってもよい）。ここで、object１０はobjectを識別するID、IPアドレスに加え、多属性情報（場所、端末種別、時刻等）有するものとする。
【００１６】
リゾルバ２０は、登録・検索要求受付部２１、object名前付与・クエリベクトル生成部２２を有し、object名前付与・クエリベクトル生成部２２はobject管理サーバ３０に接続されている。
【００１７】
object管理サーバ３０は、object・クエリベクトル受付部３１、object登録・検索部３２、objectデータベース３３、ツリー構築部３４を有し、object・クエリベクトル受付部３１はリゾルバ２０に接続されている。
【００１８】
上記の構成に基づいて以下に本発明の実施の形態を説明する。
【００１９】
［第１の実施の形態］
本実施の形態では、管理サーバ３０へ、属性の値、ツリー構造、objectのIPアドレスの登録、及び属性に対する値を指定して検索する処理について説明する。
【００２０】
情報通信ネットワーク１に接続されているobject１０（例えば、通信機能を持つ家電品や端末、センサなどを指し、IPアドレスを持つとする）が、複数の属性（例えば、時刻や場所など）に対する値（時刻＝2013／1／31、場所＝東京／武蔵野市など）を有するとする。ここで、各属性に対する値が階層構造を持つとする。例えば、「場所」という属性に対する値は、都道府県／市町村という２階層からなるものとし、具体的な値としては、例えば、あるobjectは、"東京都／武蔵野市"、という値をもつとする。このように、属性に対する値に関して、階層構造を定義する。object１０は、これらの属性のうち、いくつかに対する値を持つものとする。
【００２１】
リゾルバ２０の登録・検索要求受付部２１がobject１０から属性、属性に対する値、階層構造を含む登録要求のパケットを受信し、object名前付与・クエリベクトル生成部２２が、その属性と属性に対する値の組をobjectの名前として付与する（以下、「名前付与」と記す）。
【００２２】
object管理サーバ３０のobjectデータベース３３には、上記で定義した各属性、値の階層に対し、それらの属性、値の階層の組み合わせがツリー構造で表現され保持されている。このツリーを「組み合わせ管理ツリー」と呼ぶ。object管理サーバ３０のツリー構築部３４は、組み合わせ管理ツリーと属性と当該属性の値を対応付けてobjectデータベース３３に登録する。当該処理を"indexing"と呼ぶ。
【００２３】
検索時には、object１０において、いくつかの属性に対する値を指定し、それら属性と属性の値の組を入力し、リゾルバ２０の登録・検索要求受付部２１において、object１０で指定された値を含む検索要求パケットを受信し、object名前付与・クエリベクトル生成部２２において、当該検索要求パケットの値に基づいてクエリベクトルを生成し、object管理サーバ３０に送り、object管理サーバ３０のobject登録・検索部３２においてobjectデータベース３３を検索してその結果として特定のobjectのアドレスを、リゾルバ２０を介してobject１０に通知する。当該処理を"名前解決"と呼ぶ。
【００２４】
このように、本発明では、属性と属性の値の組とツリー構造をobjectデータベース３３に管理しておき、属性と属性の値の組で指定された条件を満たすobjectをツリーに沿って探索することで、全object探索することなく、objectの特定を可能にしている。
【００２５】
＜indexing＞
上記の組み合わせ管理ツリーの具体的な構成方法（indexing）を以下に示す。
【００２６】
ツリー構築部３４は、予め、以下で述べる組み合わせ管理ツリーを生成し、objectデータベース３３に保持する。
【００２７】
以下にツリー構築部３４の処理について説明する。
【００２８】
属性i(i=1からd)の値の階層構造として、1階層目の値としてLi,1通り、1から2階層目までの値としてLi,2通り、1からMi階層目の値としてLi,Mi通りの値を取りうるとする。また、属性iの階層1からmまでにおいて取りうる値の集合をUi,mとする。このとき、ツリー構築部３４は、上記の組み合わせ管理ツリーを以下のように構成する。
【００２９】
当該組み合わせ管理ツリーの1階層目には、属性iに対する1階層目の各値x i,1∈U i,1を担当するノードを用意する。（以下では、例えば値x i,1を担当するノードをノードx i,1と呼ぶことがある。）つまり、属性iに対して、1階層目で取りうる値のパタン数Li,1個のノードを用意する。属性i=1〜d全体で、
【００３０】
【数２】
2014225113.tif 000004
個のノードとなる。
【００３１】
次に、ツリーの２階層目においては、ツリー１階層目のノードx i,1（例えば属性iが場所名なら、x i,1=東京）を親とし、属性iの２階層目までの値がx i,1/x i,2∈U i,2（例えば、x i,1/x i,2=東京/武蔵野市）となる子ノード、ならびに属性j(>i)の１階層目の値がx j,1∈Uj,1となる子ノードを生成する。つまり、ノードx i,1の配下に、同じ属性iの子ノード以外に、
【００３２】
【数３】
2014225113.tif 000005
個の子ノードが生成される。ツリーの３階層目には、２階層目のノードがノードx i,1/x i,2の配下にノードx i,1/x i,2/x i,3および属性j (j>i)の1階層目の値がx j,1であるノードが子ノードとして生成され、かつ２階層目のノードがノードx i,1/x j,1の配下には属性jの2階層目までの値がx j,1/x j,2となるノード、および属性k (k>j）の1階層目の値がxk,1となる子ノードが生成される。
【００３３】
以上を繰り返し実施することで組み合わせ管理ツリーを構成し、各ノードは自身が担当する値を有するobjectを管理する。
【００３４】
なお、上記の組み合わせ管理ツリーノードは、１つのノードあるいは幾つかのノードをまとめたものが一つの物理サーバ上に存在して、そのようなサーバが地理的に分散配置されていてもよい。
【００３５】
具体例を用いて上記のindexingの手順を詳しく説明する。
【００３６】
例として、属性1=場所名、属性2=端末種別名、の２つを考える。また、場所名については、都道府県名/市町村名のように２階層から成るとする。端末種別名も、大分類名/小分類名の２階層から成るとする。大分類名の値の例としては、OA機器、家電、センサ、などとする。小分類名の値の例としては、大分類名＝OAの配下に、プリンタ、サーバ、などが存在し、家電の配下に、冷蔵庫、TV、エアコンなどが存在するとする。
【００３７】
本発明の手順に従って組み合わせ管理ツリーを構成すると図４のようになる。本図の構成について説明する。 
・１階層目：
(1)左側の点線枠内には、場所名1階層目（つまり都道府県名）の値（つまり、北海道、沖縄など）がL1,1（＝４７個）個列挙されている。
【００３８】
(2)右側の点線枠内には、端末種別名１階層目（つまり大分類名）の値（つまり、OA機器、家電など）がL2,1個列挙されている。
【００３９】
・２階層目：
(1)左側の点線枠内には、場所名１階層目の値を持つ親ノードの配下に、場所名２階層目（つまり市町村名）の値（札幌市など）が列挙される。従って、本枠内には、L1,2個の都道府県・市町村名の組が列挙される。
【００４０】
(2)真ん中の点線枠内には、端末種別名１階層目の値が列挙されている。従って、本枠内には、L1,1*L2,1個の都道府県名・端末種別大分類名の組が列挙される。
【００４１】
(3)右側の点線枠内には、端末種別名２階層目（つまり小分類名）の値（つまり、プリンタ、サーバなど）が列挙されている。従って、本枠内には、L2,2個の端末種別大分類・小分類名の組が列挙される。
【００４２】
・３階層目：
(1)左側の点線枠内には、端末種別名１階層目の値が列挙される。従って、本枠内には、L1,2*L2,1個の都道府県名・市町村名・端末種別大分類名の組が列挙される。
【００４３】
(2)右側の点線枠内には、端末種別名２階層目の値が列挙される。従って、本枠内には、L1,1*L2,2個の都道府県名・端末種別大分類名・端末種別小分類名の組が列挙される。
【００４４】
・４階層目：端末種別名２階層目の値が列挙される。従って、本枠内には、L1,2* L2,2個の都道府県名・市町村名・端末種別大分類名・端末種別小分類名の組が列挙される。
【００４５】
以上のように、属性と属性の値の組を、object管理サーバ３０のobjectデータベース３３のツリーに登録することで、属性と属性の値の階層の組み合わせによるいずれの条件指定に対しても、対応するノードが存在するため、検索時にツリーに沿って条件指定を満たすノードを特定して該ノードで管理されているobjectを読み出すことで、条件を満たすobjectの特定が可能となる。
【００４６】
次に、図４の例を用いて、objectデータベース３３内の組み合わせ管理ツリーにobjectを格納する際の具体例を説明する。
【００４７】
例として、object={場所＝北海道／札幌，端末種別＝OA／サーバ}の場合を考える。
【００４８】
object格納法方法として２通りを考える。
【００４９】
手順（１）として、まずツリー１階層目左側の枠線内の「北海道」ノードと、右側の枠線内の「OA」ノードに登録する。次に、２階層目では、左側の枠線内の「札幌」ノード、中央の枠線内の「OA」ノード、右側の枠線内の「サーバ」に登録する。３階層目では、左側の枠線内の「OA」ノード、右側の枠線内の「サーバ」に登録する。４階層目では「サーバ」ノードに登録する。すなわち、計８ノードに登録されることになる。
【００５０】
手順（２）として、北海道/札幌/OA/サーバと辿った４階層目の「サーバ」ノードにのみ登録する。
【００５１】
＜登録処理＞
以下にobject名前付与とobjectデータベース３３への登録処理について説明する。
【００５２】
なお、予めobjectデータベース３３には、組み合わせ管理ツリーが格納されているものとして説明する。
【００５３】
図５は、本発明の第１の実施の形態における登録時のフローチャートである。
【００５４】
ステップ１０１）object１０がネットワーク１に接続されたら、object１０は、object登録要求パケットをリゾルバ２０内の登録・検索要求受付部２１に送信する。その際、object自身のIPアドレス（＝IP#A）、objectID、多属性情報を通知する。
【００５５】
ステップ１０２）object１０からの登録要求パケットがリゾルバ２０の登録・検索要求受付部２１に到着したら、当該object１０の各種情報を読み出し、object名前付与・クエリベクトル生成部２２に通知する。object名前付与・クエリベクトル生成部２２では、多属性情報から当該objectの名前ベクトルＶを生成する（名前付与）。
【００５６】
具体的な手順は以下の通りである。
【００５７】
object１０が値を有する属性ｉがi=i1, i2, …, ik, …, iKとし、属性ikに対して階層mk番目まで値を有するものとし、属性iの階層mにおける値xi,mを用いて、objectの名前となるobjectベクトル
【００５８】
【数４】
2014225113.tif 000006
を生成する。
【００５９】
生成したベクトルVとIP#Aの組を、object管理サーバ３０へ通知する。
【００６０】
ステップ１０３）  object管理サーバ３０内のobject・クエリベクトル受付部３１が、objectベクトルVとIP#Aの組を受信したら、それをobject登録・検索部３２に通知する。object登録・検索部３２では、以下の(1)または(2)の手順により、objectデータベース３３に登録する。
(1)objectデータベース３３のツリーに沿ってVで指定された値を担当する全てのノードに該objectを登録する。
(2) objectデータベース３３のツリーにおいて、rootから、
【００６１】
【数５】
2014225113.tif 000007
の順に辿っていき、到達した最後のノードのみに該objectを登録する。
以下に、図４を用いてobject登録時の処理を具体的に示す。
【００６２】
例えば、V={場所名:北海道/札幌，端末種別名:OA/プリンタ}の登録を考える。
【００６３】
(1)の手順の場合、図４のツリーの１階層目左側の枠線内の「北海道」ノード，１階層目右側枠線内の「OA」ノード，2階層目左側枠線内の「札幌」ノード，2階層目中央枠線内の「OA」ノード，2階層目右側枠線内の「プリンタ」ノード，3階層目左側枠線内の「OA」ノード，3階層目右側枠線内の「プリンタ」ノード，4階層目枠線内の「プリンタ」ノード，の計８ノードに該objectを登録する． 
(2)の手順の場合、4階層目枠線内の「プリンタ」ノードのみに該objectを登録する．
＜検索処理＞
以下に、object検索（名前解決）時の処理について説明する。
【００６４】
図６は、本発明の第１の実施の形態における検索（名前解決）時のフローチャートである。
【００６５】
ステップ２０１）ユーザは端末から各属性に関する条件指定をした情報（例えば{場所名=北海道，端末種別名=OA}）を検索要求パケットとしてリゾルバ２０に送信する。
【００６６】
ステップ２０２）検索要求パケットをリゾルバ２０内の登録・検索要求受付部２１にて受信したら、各属性に対する条件指定を読み出し、object名前付与・クエリベクトル生成部２２へ通知する。object名前付与・クエリベクトル生成部２２では、以下の手順により、クエリベクトルqを生成する。
【００６７】
検索時に条件指定された属性i1, i2, …, ik, …, iKについて、各ikに対して階層1からmkに対する値が指定されているとする。これら値が指定された各階層の値を用いてクエリベクトル
【００６８】
【数６】
2014225113.tif 000008
を生成し、object管理サーバ３０へ通知する。
【００６９】
ステップ２０３）クエリベクトルqをobject管理サーバ３０内のobject・クエリベクトル受付部３１にて受信したら、それをobject登録・検索部３２に通知する。object登録・検索部３２では、以下の(1)または(2)の手順により、objectデータベース３３を検索する。
(1) objectデータベース３３の組み合わせ管理ツリーにおいて、rootから、
【００７０】
【数７】
2014225113.tif 000009
と辿って行き、最後に到達したノードで管理しているobjectを読み出す。
(2) object登録・検索部３２は、objectデータベース３３から、ツリーに沿ってqで指定された値を担当するノードを全て訪問し、それらノードを頂点とした部分木に属する全てのノードで管理しているobjectを読み出す。 
ステップ２０４）object登録・検索部３２は、以上の(1)または(2)の手順で特定されたobjectの集合に対し、該objectのIPアドレスをリゾルバ２０に通知する。
【００７１】
なお、登録処理時に上記の(1)の方法を用いてVで指定された値を担当する全てのノードにobject登録している場合には、検索時には、(1)の方法によりobjectを検索し、また、登録処理時に上記の(2)の方法を用いて１つのノードのみにobjectを登録している場合には、検索時には(2)の方法を用いてobjectを検索することとする。
【００７２】
以下に、図４を用いてobject検索時の処理を具体的に示す。
【００７３】
例えば、{場所名=北海道}のみの条件指定を考える。
【００７４】
(1)の手順の場合、図４のツリーの１階層目左側の枠線内の「北海道」ノードで管理されているobjectを読み出せばよい。
【００７５】
(2)の手順の場合、該「北海道」ノードを頂点とした部分木に属する全てのノードにアクセスし、それらノードで管理されているobjectを読み出す。
【００７６】
別の例として、{場所名=北海道，端末種別名=OA}という条件指定を考える。
【００７７】
(1)の手順の場合、図４のツリーの２階層目中央の枠線内の「OA」ノードで管理されているobjectを読み出せばよい。
【００７８】
(2)の手順の場合、図４のツリーにおいて、北海道/OA（＝２階層目の中央の枠線内）、および、北海道/(市町村名指定なし)/OA/（＝２階層目で北海道内の各市町村ノード全てを対象として、それぞれの配下の「OA」ノードを頂点とした部分木に属する全てのノード）にアクセスし、それらノードで管理されているobjectを読み出す。
【００７９】
［第２の実施の形態］
本実施の形態では、object検索を行う際に、第１の実施の形態のように組み合わせ管理ツリーで該当するノードを特定したら、そのノードで管理しているobject(の集合)に対して組み合わせ管理ツリーで管理している属性（１次属性とよぶ）以外の属性（２次属性と呼ぶ）に関する条件を指定することで通信したいobjectを絞り込む。
【００８０】
例えば、属性の値が階層構造で表現されないような属性（センサの気温や端末の大きさなど値が連続値を取る属性の場合など）に対してobjectが値を有するとし、そのような属性についても条件指定してobjectを特定したい場合（例：気温≧２０度）は、まず、組み合わせ管理ツリーを用いてそこで管理される階層の組について条件指定を行ってobjectの集合を特定し、その集合の中から、さらに気温≧２０度を満たすobjectに絞り込む。あるいは、本発明で述べた組み合わせ管理ツリーには条件指定される可能性の高い属性のみを用いることとし、それら属性と当該属性値の組で該当objectの集合をまず抽出し、それ以外の属性に対する指定条件については、２次属性としてもよい。
【００８１】
本実施の形態では、上記の図６のステップ２０３の処理が異なる。以下、ステップ２０３'として説明する。
【００８２】
本実施の形態では、組み合わせ管理ツリーを構成する際に用いた１次属性情報のみならず２次属性情報についても、object１０を管理するノードが保有しているものとする。また、検索時には１次属性ならびに２次属性に対する条件指定があったとし、その指定条件がリゾルバ２０を介して、object管理サーバ３０内のobject・クエリベクトル受付部３１に通知されているとする。なお，クエリベクトルは１次属性に対する条件指定により構成されているとする．
ステップ２０３'）クエリベクトルqをobject管理サーバ３０内のobject・クエリベクトル受付部３１にて受信したら、それをobject登録・検索部３２に通知する。object登録・検索部３２では、以下の(1)または(2)の手順により、objectデータベース33を検索する。
(1) objectデータベース３３の組み合わせ管理ツリーにおいて、rootから、
【００８３】
【数８】
2014225113.tif 000010
と辿って行き、最後に到達したノードで管理しているobjectを読み出す。
(2) objectデータベース３３の組み合わせ管理ツリーに沿ってqで指定された値を担当するノードを全て訪問し、それらノードを頂点とした部分木に属する全てのノードで管理しているobjectを読み出す。
【００８４】
上記手順で特定された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）と呼ばれるツリー型のデータ構造で各objectの値を管理しているとする。例えば２次属性として、気温という属性と、端末の大きさという属性があったとする。その際、objectは２次元空間上にマッピングされる。この２次元空間を複数のエリアに分割してそれをroot配下の各ノードがそれぞれのエリアを担当するとし、更にそのエリアを分割して自身の子ノードが担当するというツリー構造を構築する。検索時には、この例では１次元目と２次元目それぞれに対してレンジを指定し、そのレンジと重なるノードを辿って行くことで条件を満たすobjectを特定する。
【００８６】
このように２次属性についても検索処理を行い、その結果特定されたobjectを読み出す。
【００８７】
［第３の実施の形態］
第１の実施の形態では、組み合わせ管理ツリーの１階層目において、各属性iに対する１階層目の値を列挙して、各々に対するノードを生成していたが、本実施の形態では、そうする代わりに、以下の手順で組み合わせ管理ツリーを構成する。
【００８８】
まず属性間で優先順位付けを行い、優先度が高い順に属性が並び替えられているとする。つまり、属性iは属性j（j>i）より高優先とする。ツリーの１階層目には、属性1の1階層目の値のみを列挙する。ツリーの２階層目には、属性1の2階層目の値、または属性2の1階層目の値を列挙し、属性3以降の1階層目の値は含めない。ツリーの３階層目には、属性1の3階層目の値、または属性2の1階層目または2階層目の値、または属性3の1階層目の値を列挙し、属性4以降の1階層目の値は含めない。
【００８９】
以上を繰り返し実施して組み合わせ管理ツリーを構成する。
【００９０】
object検索時には、第１の実施の形態では任意の属性に対して条件指定有無を選択できたのに対して、ここでは属性1からJまでは条件指定を行うこととし、検索手順は第１の実施の形態の方法と同じとする。
【００９１】
図４の例の場合、例えば、属性１＝場所名、属性２＝端末種別名とし、検索時には場所名については条件指定を必須とし、端末種別名については条件指定の有無は選択可能とする。その場合、図４の１階層目の右側の枠線内のノードと２階層目の右側の枠線内のノードは不要となる。こうすることで、管理すべきノード数を削減できる。
【００９２】
以上、第１〜第３の実施の形態で説明したように、本発明によれば、objectが有する様々な属性（場所や端末種別など）に対する条件指定を行うことで、全object探索を行うことなく条件にマッチするobjectを特定し、該objectのIPアドレスを特定可能な名前解決を提供することが可能となる。
【００９３】
数値例を示す。２つの属性i(i=1,2)があるとし、いずれも２階層の値を持つとし、１階層目ではLi,1=24通り、２階層目まではLi,2=210通りの値を持つとする。これら属性の組に対して図４の組み合わせ管理ツリーを構成したとする。また、これら２つの属性以外に８個の２次属性（各属性は連続値を値として持つ）を各objectは有するとする。また、object数N=228とする。また各objectはいずれの属性に対しても一様に分布した値を持つとする。
【００９４】
以下に検索の例として、例１、例２を示す。
【００９５】
例１）
もし検索条件として属性1に対して２階層目まで、属性２に対しても２階層目まで指定があった場合には、図４のツリーを辿る探索コストのみ（属性iの各階層の値をチェックするのみ）で、N=228個（約2.7億）のobjectの中から、N×(1/210)2=256個のobjectに絞り込むことが可能となる。
【００９６】
例２）
属性1の1階層目のみ条件指定を行い、２次属性に対する範囲指定でobjectをさらに絞り込みたい場合を考える。なお２次属性に対しては、各objectは各属性に対し0から1の間の一様分布に従う値を有するとする。また、２次属性に対する検索条件は、各属性に対しレンジ長0.5のレンジ指定を行うとする。この場合、属性1での検索により、objectはN×1/16=224(=N'とおく)に絞り込まれる。次に２次属性での検索にkd-treeのようなツリー構造を用いてレンジ指定検索を行ったとする。８つの各属性に対してレンジ長0.5のレンジ指定を行った場合、object数はN'×(0.5) 8=216（約6.5万）個に絞り込まれる。この２次属性検索（レンジ指定検索）の計算量に関し、本発明の第１の実施の形態の方法で述べた(1)の方法と(2)の方法それぞれについて計算量を評価する。
【００９７】
(1)の方法の場合、組み合わせ管理ツリーの属性1の1階層目に位置するノードにN'個のobjectが存在する。このN'個のobjectに対してレンジ指定による検索を行ったときの計算量を以下のように評価する。
【００９８】
レンジ指定用のツリーとして、各ノードが28個の子ノードを持ち、各子ノードは親ノードが担当する８次元空間上のエリアを1/28個に分割した一つのサブエリアを担当するとする。このとき、検索条件で指定された範囲と、子ノードの担当範囲の一部が重なった場合、該子ノード以降をさらに探索する必要があるため、この一部重なったノード数を計算量として評価した（それを全object数Nで正規化した）。このとき、(1)の方法の場合、計算量は9.10e-05であった。
(2)の方法の場合、条件を満たす属性1の1階層目のあるノードを頂点として、その配下にある該ツリーのleafノード216個各々が管理するobjectに対して、レンジ指定検索を行うことになる。この場合、各leafノード１個当り、N'/216=256個のobjectが存在する。1leafノード当りでの計算量を216倍した値が全体での計算量となり、その計算量は3.91e-03であった。
【００９９】
以上のように、計算量を全object探索よりも小さくできていることが分かる。特に、例２のように最初の条件指定で特定されるobject数N'が大きく、２次属性での検索を行う場合には、(1)の方法がより効果的であると考えられる。
【０１００】
なお、上記のリゾルバ２０及びobject管理サーバ３０の各構成要素の動作をプログラムとして構築し、リゾルバ、object管理サーバとして利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【０１０１】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
【符号の説明】
【０１０２】
１  IPネットワーク
１０  object
２０  リゾルバ
２１  登録・検索要求受付部
２２  object名前付与・クエリベクトル生成部
３０  object管理サーバ
３１  object・クエリベクトル受付部
３２  object登録・検索部
３３  objectデータベース
３４  ツリー構築部
【図１】
2014225113.tif 000016
【図２】
2014225113.tif 000017
【図３】
2014225113.tif 000018
【図４】
2014225113.tif 000019
【図５】
2014225113.tif 000020
【図６】
2014225113.tif 000021