(57)【特許請求の範囲】
【請求項１】
複数のノードがネットワークを介して互いに接続され、前記各ノードは、前記ノード上で実行されるプログラムにより生成され、自身を表すキーワードを保持するオブジェクトを０個以上（複数個可）有するオブジェクト発見ネットワークであって、
クエリメッセージの発信元オブジェクトは、ノードから初期リンク情報として、リンク先オブジェクトの識別子とキーワードとを含むリンク情報を取得して記録する第１の手段と、
自身のキーワードを検索条件として設定したクエリメッセージを生成する第２の手段と、
前記第２の手段で生成したクエリメッセージを初期リンクで繋がっている全てのオブジェクトに対して送信する第３の手段と、
クエリヒットメッセージを受信し、クエリヒットメッセージの発信元オブジェクトに関するリンクを生成するか否かを判定する第４の手段と、
前記第４の手段でリンクを生成すると判定した場合に、クエリヒットメッセージの発信元オブジェクトに関するリンク情報を生成する第５の手段とを有し、
他のオブジェクトから転送されてきたクエリメッセージを受信したオブジェクトは、自身のキーワードとクエリメッセージに設定されているキーワードの類似度Ｓｓｅｌｆを算出する第１の手段と、
前記第１の手段で算出した類似度Ｓｓｅｌｆに応じてクエリヒットを判定する第２の手段と、
前記第２の手段でクエリヒットと判定した場合に、メッセージ内に自身のキーワードを設定したクエリヒットメッセージを生成する第３の手段と、
前記第３の手段で生成したクエリヒットメッセージをクエリメッセージ発信元オブジェクトに対して送信する第４の手段と、
オブジェクトが保持するリンク情報の総数をｎとするとき、ｉ（ｉ＝１‥ｎ）番目のリンク情報に記憶されているキーワードと、前記クエリメッセージに設定されているキーワードの類似度Ｓｌｉｎｋ（ｉ）（ｉ＝１‥ｎ）を算出する第５の手段と、
前記第１の手段で算出した類似度Ｓｓｅｌｆと、前記第５の手段で算出した類似度Ｓｌｉｎｋ（ｉ）との値に基づいて、ｉ番目のリンク情報に記憶されている識別子で表されるリンク先オブジェクトにクエリメッセージを転送するか否かを判定する第６の手段と、
前記第６の手段で転送すると判定した場合に、ｉ番目のリンク情報に記憶されている識別子で表されるリンク先オブジェクトに対してクエリメッセージを転送する第７の手段とを有することを特徴とするオブジェクト発見ネットワーク。
【請求項２】
複数のノードがネットワークを介して互いに接続され、前記各ノードは、前記ノード上で実行されるプログラムにより生成され、自身を表すキーワードを保持するオブジェクトを０個以上（複数個可）有するオブジェクト発見ネットワークであって、
クエリメッセージの発信元オブジェクトは、初期リンク情報の取得方法として、（１）ノードから初期リンク情報を取得する、または、（２）自身が保持しているリンク情報の中から選択する、あるいは、（３）１、２の両方により初期リンク情報を取得する方法の中から１つの方法を選択し、選択した方法を用い、初期リンク情報として、リンク先オブジェクトの識別子とキーワードとを含むリンク情報を取得して記録する第１の手段と、
任意のキーワードを検索条件として設定したクエリメッセージを生成する第２の手段と、
前記第２の手段で生成したクエリメッセージを初期リンクで繋がっている全てのオブジェクトに対して送信する第３の手段と、
クエリヒットメッセージを受信し、クエリヒットメッセージの発信元オブジェクトに関するリンクを生成するか否かを判定する第４の手段と、
前記第４の手段でリンクを生成すると判定した場合に、クエリヒットメッセージの発信元オブジェクトに関するリンク情報を生成する第５の手段とを有し、
他のオブジェクトから転送されてきたクエリメッセージを受信したオブジェクトは、自身のキーワードとクエリメッセージに設定されているキーワードの類似度Ｓｓｅｌｆを算出する第１の手段と、
前記第１の手段で算出した類似度Ｓｓｅｌｆに応じてクエリヒットを判定する第２の手段と、
前記第２の手段でクエリヒットと判定した場合に、メッセージ内に自身のキーワードを設定したクエリヒットメッセージを生成する第３の手段と、
前記第３の手段で生成したクエリヒットメッセージをクエリメッセージ発信元オブジェクトに対して送信する第４の手段と、
オブジェクトが保持するリンク情報の総数をｎとするとき、ｉ（ｉ＝１‥ｎ）番目のリンク情報に記憶されているキーワードと、前記クエリメッセージに設定されているキーワードの類似度Ｓｌｉｎｋ（ｉ）（ｉ＝１‥ｎ）を算出する第５の手段と、
前記第１の手段で算出した類似度Ｓｓｅｌｆと、前記第５の手段で算出した類似度Ｓｌｉｎｋ（ｉ）との値に基づいて、ｉ番目のリンク情報に記憶されている識別子で表されるリンク先オブジェクトにクエリメッセージを転送するか否かを判定する第６の手段と、
前記第６の手段で転送すると判定した場合に、ｉ番目のリンク情報に記憶されている識別子で表されるリンク先オブジェクトに対してクエリメッセージを転送する第７の手段とを有することを特徴とするオブジェクト発見ネットワーク。
【請求項３】
複数のノードがネットワークを介して互いに接続され、前記各ノードは、前記ノード上で実行されるプログラムにより生成され、自身を表すキーワードを保持するオブジェクトを０個以上（複数個可）有するオブジェクト発見ネットワークであって、
オブジェクトの検索を希望するユーザが任意のノードをアクセスすることにより、任意のノード上に生成されるユーザオブジェクトは、ノードから初期リンク情報として、リンク先オブジェクトの識別子とキーワードとを含むリンク情報を取得して記録する第１の手段と、
メッセージ内にユーザにより入力された検索対象とするオブジェクトのキーワードが設定されたクエリメッセージを生成する第２の手段と、
前記第２の手段で生成したクエリメッセージを初期リンクで繋がっている全てのオブジェクトに対して送信する第３の手段と、
クエリヒットメッセージを受信し、前記クエリヒットメッセージの内容を表示する第４の手段とを有し、
他のオブジェクトから転送されてきたクエリメッセージを受信したオブジェクトは、自身のキーワードとクエリメッセージに設定されているキーワードの類似度Ｓｓｅｌｆを算出する第１の手段と、
前記第１の手段で算出した類似度Ｓｓｅｌｆに応じてクエリヒットを判定する第２の手段と、
前記第２の手段でクエリヒットと判定した場合に、メッセージ内に自身のキーワードを設定したクエリヒットメッセージを生成する第３の手段と、
前記第３の手段で生成したクエリヒットメッセージをクエリメッセージ発信元オブジェクトに対して送信する第４の手段と、
オブジェクトが保持するリンク情報の総数をｎとするとき、ｉ（ｉ＝１‥ｎ）番目のリンク情報に記憶されているキーワードと、前記クエリメッセージに設定されているキーワードの類似度Ｓｌｉｎｋ（ｉ）（ｉ＝１‥ｎ）を算出する第５の手段と、
前記第１の手段で算出した類似度Ｓｓｅｌｆと、前記第５の手段で算出した類似度Ｓｌｉｎｋ（ｉ）との値に基づいて、ｉ番目のリンク情報に記憶されている識別子で表されるリンク先オブジェクトにクエリメッセージを転送するか否かを判定する第６の手段と、
前記第６の手段で転送すると判定した場合に、ｉ番目のリンク情報に記憶されている識別子で表されるリンク先オブジェクトに対してクエリメッセージを転送する第７の手段とを有することを特徴とするオブジェクト発見ネットワーク。
【請求項４】
複数のノードがネットワークを介して互いに接続され、前記各ノードは、前記ノード上で実行されるプログラムにより生成され、自身を表すキーワードを保持するオブジェクトを０個以上（複数個可）有するオブジェクト発見ネットワークにおけるネットワーク構築方法であって、
クエリメッセージの発信元オブジェクトが、ノードから初期リンク情報として、リンク先オブジェクトの識別子とキーワードとを含むリンク情報を取得して記録する第１のステップと、
自身のキーワードを検索条件として設定したクエリメッセージを生成する第２のステップと、
前記第２のステップで生成したクエリメッセージを初期リンクで繋がっている全てのオブジェクトに対して送信する第３のステップと、
他のオブジェクトから転送されてきたクエリメッセージを受信したオブジェクトが、自身のキーワードとクエリメッセージに設定されているキーワードの類似度Ｓｓｅｌｆを算出する第４のステップと、
前記第４のステップで算出した類似度Ｓｓｅｌｆに応じてクエリヒットを判定する第５のステップと、
前記第５のステップでクエリヒットと判定した場合に、メッセージ内に自身のキーワードを設定したクエリヒットメッセージを生成する第６のステップと、
前記第６のステップで生成したクエリヒットメッセージをクエリメッセージ発信元オブジェクトに対して送信する第７のステップと、
オブジェクトが保持するリンク情報の総数をｎとするとき、ｉ（ｉ＝１‥ｎ）番目のリンク情報に記憶されているキーワードと、前記クエリメッセージに設定されているキーワードの類似度Ｓｌｉｎｋ（ｉ）（ｉ＝１‥ｎ）を算出する第８のステップと、
前記第４のステップで算出した類似度Ｓｓｅｌｆと、前記第８のステップで算出した類似度Ｓｌｉｎｋ（ｉ）との値に基づいて、ｉ番目のリンク情報に記憶されている識別子で表されるリンク先オブジェクトにクエリメッセージを転送するか否かを判定する第９のステップと、
前記第９のステップで、転送すると判定した場合にｉ番目のリンク情報に記憶されている識別子で表されるリンク先オブジェクトに対してクエリメッセージを転送する第１０のステップと、
クエリヒットメッセージを受信したクエリメッセージ発信元オブジェクトが、クエリヒットメッセージの発信元オブジェクトに関するリンクを生成するか否かを判定する第１１のステップと、
前記第１１のステップで生成すると判定した場合に、クエリヒットメッセージの発信元オブジェクトに関するリンク情報を生成する第１２のステップとを有することを特徴とするネットワーク構築方法。
【請求項５】
前記クエリメッセージの発信元オブジェクトが、オブジェクトの生成時、またはノード間の移動時、またはリンク数を追加したい要求が発生した時に、前記第１ないし第１２のステップを実行することを特徴とする請求項４に記載のネットワークの構築方法。
【請求項６】
複数のノードがネットワークを介して互いに接続され、前記各ノードは、前記ノード上で実行されるプログラムにより生成され、自身を表すキーワードを保持するオブジェクトを０個以上（複数個可）有するオブジェクト発見ネットワークにおけるオブジェクト発見方法であって、
クエリメッセージの発信元オブジェクトが、初期リンク情報の取得方法として、（１）ノードから初期リンク情報を取得する、または、（２）自身が保持しているリンク情報の中から選択する、あるいは、（３）１、２の両方により初期リンク情報を取得する方法の中から１つの方法を選択し、選択した方法を用い、初期リンク情報として、リンク先オブジェクトの識別子とキーワードとを含むリンク情報を取得して記録する第１のステップと、
任意のキーワードを検索条件として設定したクエリメッセージを生成する第２のステップと、
前記第２のステップで生成したクエリメッセージを初期リンクで繋がっている全てのオブジェクトに対して送信する第３のステップと、
他のオブジェクトから転送されてきたクエリメッセージを受信したオブジェクトが、自身のキーワードとクエリメッセージに設定されているキーワードの類似度Ｓｓｅｌｆを算出する第４のステップと、
前記第４のステップで算出した類似度Ｓｓｅｌｆに応じてクエリヒットを判定する第５のステップと、
前記第５のステップでクエリヒットと判定した場合に、メッセージ内に自身のキーワードを設定したクエリヒットメッセージを生成する第６のステップと、
前記第６のステップで生成したクエリヒットメッセージをクエリメッセージ発信元オブジェクトに対して送信する第７のステップと、
オブジェクトが保持するリンク情報の総数をｎとするとき、ｉ（ｉ＝１‥ｎ）番目のリンク情報に記憶されているキーワードと、前記クエリメッセージに設定されているキーワードの類似度Ｓｌｉｎｋ（ｉ）（ｉ＝１‥ｎ）を算出する第８のステップと、
前記第４のステップで算出した類似度Ｓｓｅｌｆと、前記第８のステップで算出した類似度Ｓｌｉｎｋ（ｉ）との値に基づいて、ｉ番目のリンク情報に記憶されている識別子で表されるリンク先オブジェクトにクエリメッセージを転送するか否かを判定する第９のステップと、
前記第９のステップで、転送すると判定した場合にｉ番目のリンク情報に記憶されている識別子で表されるリンク先オブジェクトに対してクエリメッセージを転送する第１０のステップと、
クエリヒットメッセージを受信したクエリメッセージ発信元オブジェクトが、クエリヒットメッセージの発信元オブジェクトに関するリンクを生成するか否かを判定する第１１のステップと、
前記第１１のステップで生成すると判定した場合に、クエリヒットメッセージの発信元オブジェクトに関するリンク情報を生成する第１２のステップとを有することを特徴とするオブジェクト発見方法。
【請求項７】
複数のノードがネットワークを介して互いに接続され、前記各ノードは、前記ノード上で実行されるプログラムにより生成され、自身を表すキーワードを保持するオブジェクトを０個以上（複数個可）有するオブジェクト発見ネットワークにおけるオブジェクト発見方法であって、
オブジェクトの検索を希望するユーザが任意のノードをアクセスすることにより、任意のノード上に生成されるユーザオブジェクトが、ノードから初期リンク情報として、リンク先オブジェクトの識別子とキーワードとを含むリンク情報を取得して記録する第１のステップと、
メッセージ内にユーザにより入力された検索対象とするオブジェクトのキーワードを設定したクエリメッセージを生成する第２のステップと、
前記第２のステップで生成したクエリメッセージを初期リンクで繋がっている全てのオブジェクトに対して送信する第３のステップと、
他のオブジェクトから転送されてきたクエリメッセージを受信したオブジェクトが、自身のキーワードとクエリメッセージに設定されているキーワードの類似度Ｓｓｅｌｆを算出する第４のステップと、
前記第４のステップで算出した類似度Ｓｓｅｌｆに応じてクエリヒットを判定する第５のステップと、
前記第５のステップでクエリヒットと判定した場合に、メッセージ内に自身のキーワードを設定したクエリヒットメッセージを生成する第６のステップと、
前記第６のステップで生成したクエリヒットメッセージをクエリメッセージ発信元オブジェクトに対して送信する第７のステップと、
オブジェクトが保持するリンク情報の総数をｎとするとき、ｉ（ｉ＝１‥ｎ）番目のリンク情報に記憶されているキーワードと、前記クエリメッセージに設定されているキーワードの類似度Ｓｌｉｎｋ（ｉ）（ｉ＝１‥ｎ）を算出する第８のステップと、
前記第４のステップで算出した類似度Ｓｓｅｌｆと、前記第８のステップで算出した類似度Ｓｌｉｎｋ（ｉ）との値に基づいて、ｉ番目のリンク情報に記憶されている識別子で表されるリンク先オブジェクトにクエリメッセージを転送するか否かを判定する第９のステップと、
前記第９のステップで転送すると判定した場合にｉ番目のリンク情報に記憶されている識別子で表されるリンク先オブジェクトに対してクエリメッセージを転送する第１０のステップと、
クエリヒットメッセージを受信したユーザオブジェクトが、前記クエリヒットメッセージの内容を表示する第１１のステップとを有することを特徴とするオブジェクト発見方法。
【請求項８】
複数のノードがネットワークを介して互いに接続され、前記各ノードは、前記ノード上で実行されるプログラムにより生成され、自身を表すキーワードを保持するオブジェクトを０個以上（複数個可）有するオブジェクト発見ネットワークにおけるノードであって、
前記ノードは、クエリメッセージの発信元となるオブジェクトを有し、
前記クエリメッセージの発信元オブジェクトは、ノードから初期リンク情報として、リンク先オブジェクトの識別子とキーワードとを含むリンク情報を取得して記録する第１の手段と、
自身のキーワードを検索条件として設定したクエリメッセージを生成する第２の手段と、
前記第２の手段で生成したクエリメッセージを、初期リンクで繋がっている全てのオブジェクトに対して送信する第３の手段と、
クエリヒットメッセージを受信し、クエリヒットメッセージの発信元オブジェクトに関するリンクを生成するか否かを判定する第４の手段と、
前記第４の手段でリンクを生成すると判定した場合に、クエリヒットメッセージの発信元オブジェクトに関するリンク情報を生成する第５の手段とを有することを特徴とするノード。
【請求項９】
複数のノードがネットワークを介して互いに接続され、前記各ノードは、前記ノード上で実行されるプログラムにより生成され、自身を表すキーワードを保持するオブジェクトを０個以上（複数個可）有するオブジェクト発見ネットワークにおけるノードであって、
前記ノードは、クエリメッセージの発信元となるオブジェクトを有し、
前記クエリメッセージの発信元オブジェクトは、初期リンク情報の取得方法として、（１）ノードから初期リンク情報を取得する、または、（２）自身が保持しているリンク情報の中から選択する、あるいは、（３）１、２の両方により初期リンク情報を取得する方法の中から１つの方法を選択し、選択した方法を用い、初期リンク情報として、リンク先オブジェクトの識別子とキーワードとを含むリンク情報を取得して記録する第１の手段と、
任意のキーワードを検索条件として設定したクエリメッセージを生成する第２の手段と、
前記第２の手段で生成したクエリメッセージを、初期リンクで繋がっている全てのオブジェクトに対して送信する第３の手段と、
クエリヒットメッセージを受信し、クエリヒットメッセージの発信元オブジェクトに関するリンクを生成するか否かを判定する第４の手段と、
前記第４の手段でリンクを生成すると判定した場合に、クエリヒットメッセージの発信元オブジェクトに関するリンク情報を生成する第５の手段とを有することを特徴とするノード。
【請求項１０】
複数のノードがネットワークを介して互いに接続され、前記各ノードは、前記ノード上で実行されるプログラムにより生成され、自身を表すキーワードを保持するオブジェクトを０個以上（複数個可）有するオブジェクト発見ネットワークにおけるノードであって、
前記ノードは、オブジェクトの検索を希望するユーザがアクセスすることにより生成されるユーザオブジェクトを有し、
前記ユーザオブジェクトは、ノードから初期リンク情報として、リンク先オブジェクトの識別子とキーワードとを含むリンク情報を取得して記録する第１の手段と、
メッセージ内にユーザにより入力された検索対象とするオブジェクトのキーワードが設定されたクエリメッセージを生成する第２の手段と、
前記第２の手段で生成したクエリメッセージを初期リンクで繋がっている全てのオブジェクトに対して送信する第３の手段と、
クエリヒットメッセージを受信し、前記クエリヒットメッセージの内容を表示する第４の手段とを有することを特徴とするノード。
【請求項１１】
複数のノードがネットワークを介して互いに接続され、前記各ノードは、前記ノード上で実行されるプログラムにより生成され、自身を表すキーワードを保持するオブジェクトを０個以上（複数個可）有するオブジェクト発見ネットワークにおけるノードであって、
前記ノードは、他のオブジェクトから転送されてきたクエリメッセージを受信するオブジェクトを有し、
前記他のオブジェクトから転送されてきたクエリメッセージを受信するオブジェクトは、自身のキーワードとクエリメッセージに設定されているキーワードの類似度Ｓｓｅｌｆを算出する第１の手段と、
前記第１の手段で算出した類似度Ｓｓｅｌｆに応じてクエリヒットを判定する第２の手段と、
前記第２の手段でクエリヒットと判定した場合に、メッセージ内に自身のキーワードを設定したクエリヒットメッセージを生成する第３の手段と、
前記第３の手段で生成したクエリヒットメッセージをクエリメッセージ発信元オブジェクトに対して送信する第４の手段と、
オブジェクトが保持するリンク情報の総数をｎとするとき、ｉ（ｉ＝１‥ｎ）番目のリンク情報に記憶されているキーワードと、前記クエリメッセージに設定されているキーワードの類似度Ｓｌｉｎｋ（ｉ）（ｉ＝１‥ｎ）を算出する第５の手段と、
前記第１の手段で算出した類似度Ｓｓｅｌｆと、前記第５の手段で算出した類似度Ｓｌｉｎｋ（ｉ）との値に基づいて、ｉ番目のリンク情報に記憶されている識別子で表されるリンク先オブジェクトにクエリメッセージを転送するか否かを判定する第６の手段と、
前記第６の手段で転送すると判定した場合に、ｉ番目のリンク情報に記憶されている識別子で表されるリンク先オブジェクトに対してクエリメッセージを転送する第７の手段とを有することを特徴とするノード。
【請求項１２】
複数のノードがネットワークを介して互いに接続され、前記各ノードは、前記ノード上で実行されるプログラムにより生成され、自身を表すキーワードを保持するオブジェクトを０個以上（複数個可）有するオブジェクト発見ネットワークにおけるオブジェクトのクエリメッセージ転送方法であって、
前記クエリメッセージの発信元オブジェクトが、ノードから初期リンク情報として、リンク先オブジェクトの識別子とキーワードとを含むリンク情報を取得して記録する第１のステップと、
自身のキーワードを検索条件として設定したクエリメッセージを生成する第２のステップと、
前記第２のステップで生成したクエリメッセージを初期リンクで繋がっている全てのオブジェクトに対して送信する第３のステップと、
クエリヒットメッセージを受信し、クエリヒットメッセージの発信元オブジェクトに関するリンクを生成するか否かを判定する第４のステップと、
前記第４のステップで生成すると判定した場合には、クエリヒットメッセージの発信元オブジェクトに関するリンク情報を生成する第５のステップとを有することを特徴とするオブジェクトのクエリメッセージ転送方法。
【請求項１３】
複数のノードがネットワークを介して互いに接続され、前記各ノードは、前記ノード上で実行されるプログラムにより生成され、自身を表すキーワードを保持するオブジェクトを０個以上（複数個可）有するオブジェクト発見ネットワークにおけるオブジェクトのクエリメッセージ転送方法であって、
前記クエリメッセージの発信元オブジェクトが、初期リンク情報の取得方法として、（１）ノードから初期リンク情報を取得する、または、（２）自身が保持しているリンク情報の中から選択する、あるいは、（３）１、２の両方により初期リンク情報を取得する方法の中から１つの方法を選択し、選択した方法を用い、初期リンク情報として、リンク先オブジェクトの識別子とキーワードとを含むリンク情報を取得して記録する第１のステップと、
任意のキーワードを検索条件として設定したクエリメッセージを生成する第２のステップと、
前記第２のステップで生成したクエリメッセージを初期リンクで繋がっている全てのオブジェクトに対して送信する第３のステップと、
クエリヒットメッセージを受信し、クエリヒットメッセージの発信元オブジェクトに関するリンクを生成するか否かを判定する第４のステップと、
前記第４のステップで生成すると判定した場合には、クエリヒットメッセージの発信元オブジェクトに関するリンク情報を生成する第５のステップとを有することを特徴とするオブジェクトのクエリメッセージ転送方法。
【請求項１４】
複数のノードがネットワークを介して互いに接続され、前記各ノードは、前記ノード上で実行されるプログラムにより生成され、自身を表すキーワードを保持するオブジェクトを０個以上（複数個可）有するオブジェクト発見ネットワークにおけるオブジェクトのクエリメッセージ転送方法であって、
オブジェクトの検索を希望するユーザが任意のノードをアクセスすることにより、任意のノード上に生成されるユーザオブジェクトが、ノードから初期リンク情報として、リンク先オブジェクトの識別子とキーワードとを含むリンク情報を取得して記録する第１のステップと、
メッセージ内にユーザにより入力された検索対象とするオブジェクトのキーワードを設定したクエリメッセージを生成する第２のステップと、
前記第２のステップで生成したクエリメッセージを初期リンクで繋がっている全てのオブジェクトに対して送信する第３のステップと、
クエリヒットメッセージを受信し、前記クエリヒットメッセージの内容を表示する第４のステップとを有することを特徴とするオブジェクトのクエリメッセージ転送方法。
【請求項１５】
複数のノードがネットワークを介して互いに接続され、前記各ノードは、前記ノード上で実行されるプログラムにより生成され、自身を表すキーワードを保持するオブジェクトを０個以上（複数個可）有するオブジェクト発見ネットワークにおけるオブジェクトのクエリメッセージ転送方法であって、
他のオブジェクトから転送されてきたクエリメッセージを受信したオブジェクトが、自身のキーワードとクエリメッセージに設定されているキーワードの類似度Ｓｓｅｌｆを算出する第１のステップと、
前記第１のステップで算出した類似度Ｓｓｅｌｆに応じてクエリヒットを判定する第２のステップと、
前記第２のステップでクエリヒットと判定した場合に、メッセージ内に自身のキーワードを設定したクエリヒットメッセージを生成する第３のステップと、
前記第３のステップで生成したクエリヒットメッセージをクエリメッセージ発信元オブジェクトに対して送信する第４のステップと、
オブジェクトが保持するリンク情報の総数をｎとするとき、ｉ（ｉ＝１‥ｎ）番目のリンク情報に記憶されているキーワードと、前記クエリメッセージに設定されているキーワードの類似度Ｓｌｉｎｋ（ｉ）（ｉ＝１‥ｎ）を算出する第５のステップと、
前記第１のステップで算出した類似度Ｓｓｅｌｆと、前記第５のステップで算出した類似度Ｓｌｉｎｋ（ｉ）との値に基づいて、ｉ番目のリンク情報に記憶されている識別子で表されるリンク先オブジェクトにクエリメッセージを転送するか否かを判定する第７のステップと、
前記第７のステップで転送すると判定した場合にｉ番目のリンク情報に記憶されている識別子で表されるリンク先オブジェクトに対してクエリメッセージを転送する第８のステップとを有することを特徴とするオブジェクトのクエリメッセージ転送方法。
【請求項１６】
複数のノードがネットワークを介して互いに接続されるオブジェクト発見ネットワークのノードに、オブジェクトのクエリメッセージ転送方法を実行させるプログラムであって、
前記プログラムは、前記任意のノード上に、自身を表すキーワードを保持し、クエリメッセージの発信元となるオブジェクトを生成させ、
前記生成させたクエリメッセージの発信元オブジェクトに、ノードから初期リンク情報として、リンク先オブジェクトの識別子とキーワードとを含むリンク情報を取得させて記録させる手順と、
自身のキーワードを検索条件として設定したクエリメッセージを生成させる手順と、
前記生成させたクエリメッセージを初期リンクで繋がっている全てのオブジェクトに対して送信させる手順と、
受信したクエリヒットメッセージの発信元オブジェクトに関するリンクを生成するか否かを判定させる手順と、
前記手順で生成すると判定させた場合に、クエリヒットメッセージの発信元オブジェクトに関するリンク情報を生成させる手順とを、ノードに実行させること特徴とするプログラム。
【請求項１７】
複数のノードがネットワークを介して互いに接続されるオブジェクト発見ネットワークのノードに、オブジェクトのクエリメッセージ転送方法を実行させるプログラムであって、
前記プログラムは、前記任意のノード上に、自身を表すキーワードを保持し、クエリメッセージの発信元となるオブジェクトを生成させ、
前記生成させたクエリメッセージの発信元オブジェクトに、初期リンク情報の取得方法として、（１）ノードから初期リンク情報を取得する、または、（２）自身が保持しているリンク情報の中から選択する、あるいは、（３）１、２の両方により初期リンク情報を取得する方法の中から１つの方法を選択させ、選択させた方法を用い、初期リンク情報として、リンク先オブジェクトの識別子とキーワードとを含むリンク情報を取得して記録させる手順と、
任意のキーワードを検索条件として設定したクエリメッセージを生成させる手順と、
前記生成させたクエリメッセージを初期リンクで繋がっている全てのオブジェクトに対して送信させる手順と、
受信したクエリヒットメッセージの発信元オブジェクトに関するリンクを生成するか否かを判定させる手順と、
前記手順で生成すると判定させた場合に、クエリヒットメッセージの発信元オブジェクトに関するリンク情報を生成させる手順とを、ノードに実行させること特徴とするプログラム。
【請求項１８】
複数のノードがネットワークを介して互いに接続されるオブジェクト発見ネットワークのノードに、オブジェクトのクエリメッセージ転送方法を実行させるプログラムであって、
前記プログラムは、オブジェクトの検索を希望するユーザのアクセスにより、任意のノード上にユーザオブジェクトを生成させ、
前記生成させた前記ユーザオブジェクトに、ノードから初期リンク情報として、リンク先オブジェクトの識別子とキーワードとを含むリンク情報を取得して記録させる手順と、
メッセージ内にユーザにより入力された検索対象とするオブジェクトのキーワードを設定したクエリメッセージを生成させる手順と、
前記生成させた前記クエリメッセージを初期リンクで繋がっている全てのオブジェクトに対して送信させる手順と、
受信したクエリヒットメッセージの内容を表示させる手順とを、ノードに実行させることを特徴とするプログラム。
【請求項１９】
複数のノードがネットワークを介して互いに接続されるオブジェクト発見ネットワークのノードに、オブジェクトのクエリメッセージ転送方法を実行させるプログラムであって、
前記プログラムは、前記任意のノード上に、自身を表すキーワードを保持し、他のオブジェクトから転送されてきたクエリメッセージを受信するオブジェクトを生成させ、
前記生成させた他のオブジェクトから転送されてきたクエリメッセージを受信したオブジェクトに、自身のキーワードとクエリメッセージに設定されているキーワードの類似度Ｓｓｅｌｆを算出させる手順と、
前記算出させた類似度Ｓｓｅｌｆに応じてクエリヒットを判定させる手順と、前記手順でクエリヒットと判定させた場合に、メッセージ内に自身のキーワードを設定したクエリヒットメッセージを生成させる手順と、
前記生成させたクエリヒットメッセージをクエリメッセージ発信元オブジェクトに対して送信させる手順と、
オブジェクトが保持するリンク情報の総数をｎとするとき、ｉ（ｉ＝１‥ｎ）番目のリンク情報に記憶されているキーワードと、前記クエリメッセージに設定されているキーワードの類似度Ｓｌｉｎｋ（ｉ）（ｉ＝１‥ｎ）を算出させる手順と、
前記算出させた類似度Ｓｓｅｌｆと類似度Ｓｌｉｎｋ（ｉ）との値に基づいて、ｉ番目のリンク情報に記憶されている識別子で表されるリンク先オブジェクトにクエリメッセージを転送するか否かを判定させる手順と、
前記手順で転送すると判定させた場合にｉ番目のリンク情報に記憶されている識別子で表されるリンク先オブジェクトに対してクエリメッセージを転送させる手順とを、ノードに実行させることを特徴とするプログラム。
【請求項２０】
請求項１６ないし請求項１９のいずれか１項に記載のプログラムが記録された記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、オブジェクト発見ネットワーク、ネットワークの構築方法、オブジェクト発見方法、ノード、オブジェクトのクエリメッセージ転送方法、プログラム、および記録媒体に係わり、特に、ネットワーク上のオブジェクトが、自律的に類似性のあるオブジェクトを探してリンクを生成することで、「似た者同士」が繋がったネットワークを構築し、オブジェクト自身が他のオブジェクトを検索するため、あるいは、ユーザがオブジェクトを検索するためのクエリメッセージを、この構築されたネットワーク上で転送することにより、オブジェクトを効率的に発見する際に有効な技術に関する。
【０００２】
【従来の技術】
ネットワーク上のオブジェクトが、ピア・ツー・ピア（Ｐ２Ｐ）環境で、キーワードを用いてあるオブジェクトあるいはファイルを発見する技術として、Gnutella（文献１参照）とYenta（文献２参照）が知られている。
Gnutellaは、コンピュータ上のファイルを管理するオブジェクト間のリンクを用いて、オブジェクト間でファイル検索のためのクエリメッセージを転送することにより、所望のファイルを発見する。
具体的なサービスとして、音楽ファイルのファイル名をクエリメッセージに設定することによる、音楽ファイル検索サービスがある。
Yentaは、自律的なオブジェクトが、類似したキーワードを持つ相手を探して、リンクを生成する。
文献１；Gnutella website,http://www.Gnutella.com
文献２；"Yenta:A Multi-Agent,Referral Based Matchmaking System",
http://foner.www.media.mit.edu/people/foner/yenta-brief.html
【０００３】
【発明が解決しようとする課題】
Gnutellaでは、オブジェクトは、自身とリンクのある全てのオブジェクトに対して等しくクエリメッセージを送信するため、オブジェクト数に応じて転送されるクエリメッセージの総数が爆発的に増加する。
これは、Gnutellaにおけるリンク情報は、相手オブジェクトの識別子とアドレスしか含まないため、クエリメッセージの転送先を絞り込む基準となる情報を保持することはできないためである。
このように、Gnutellaは、通信コストが高く、ネットワークの規模に依存して通信コストが増加するため、スケーラピリティに欠け、また、検索キーワードをファイル名に限定しているため、検索の柔軟性が低いという問題点がある。
また、Yentaでは、オブジェクトは単一のキーワードしか持たないため、オブジェクトの表現方法が制限され、結果的に検索方法の柔軟性が低くなるという問題点がある。
また、Yentaでは、発見した相手とは必ずリンクを生成するため、類似したオブジェクト同士がメッシュ状にリンクを生成する。そのため、当然、リンク数はオブジェクトの数の増加に伴い増えるため、リンクの維持コストが高くなるという問題点もある。
ネットワーク環境が動的に変化する場合は、リンク情報を更新するためのコストも考慮する必要があるため、この問題は深刻である。
さらに、Yentaでは、深さ優先でオブジェクトを検索するが、ネットワークが大規模になるにつれ、ターゲットが発見できないまま探索がどんどん深くなってしまう可能性があり、効率的な探索が困難となり、検索の即応性に欠けるという問題点もある。
【０００４】
本発明は、前記従来技術の問題点を解決するためになされたものであり、本発明の目的は、通信コストやリンク維持コストを軽減しつつ、高速な検索および十分な発見率を達成可能なオブジェクト発見ネットワーク、およびオブジェクト発見ネットワークの構築方法、並びにオブジェクト発見方法を提供することにある。
また、本発明の他の目的は、ノード数、オブジェクト数の増加に対してスケーラブルであり、かつ、柔軟な検索が可能なオブジェクト発見ネットワーク、およびオブジェクト発見ネットワークの構築方法、並びにオブジェクト発見方法を提供することにある。
また、本発明の他の目的は、前述のオブジェクト発見ネットワークに適用されるノード（コンピュータ）と、オブジェクトのクエリメッセージ転送方法を提供することにある。
また、本発明の他の目的は、前述のノード（コンピュータ）に、オブジェクトのクエリメッセージ転送方法を実行させるプログラム、並びに、前記プログラムを記録した記録媒体を提供することにある。
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述及び添付図面によって明らかにする。
【０００５】
【課題を解決するための手段】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、下記の通りである。
即ち、本発明は、自身と類似したオブジェクトを探し、類似性のあるオブジェクト間でリンクを生成することにより、オブジェクト発見のクエリメッセージを類似性のリンクに基づいて転送することで効率的にオブジェクトを発見することを可能とするオブジェクト発見ネットワークであり、クエリメッセージ発信元オブジェクトが、オブジェクトの生成時、移動時、その他リンク数を追加する要求が発生した場合に、類似したオブジェクトの検索を起動し、その際に、ノードから初期リンクを取得し、自身のキーワードを設定したクエリメッセージを全ての初期リンク先オブジェクトに送付し、前記クエリメッセージを受信したオブジェクトが、クエリメッセージのキーワードと自身のキーワードの類似度を算出し、類似度に応じてクエリヒットメッセージをクエリメッセージ発信元オブジェクトに送信するとともに、クエリメッセージのキーワードと自身の各リンク情報のキーワードの類似度を算出し、類似度に応じてクエリメッセージをリンク先オブジェクトに転送し、クエリヒットメッセージを受信したクエリメッセージ発信元オブジェクトが、クエリヒットメッセージ送信元オブジェクトとリンクを生成するか否かを判定し、リンク生成を判定した場合にリンクを生成する。
【０００６】
また、本発明は、前述のオブジェクト発見ネットワークを用いて、ユーザがオブジェクトを検索するものであり、ユーザが任意のノードにアクセスして初期リンクを取得し、検索条件のキーワードをクエリメッセージに設定し、初期リンク先のオブジェクトに送付し、クエリメッセージを受信したオブジェクトが、前述と同様な方法により、クエリヒットの判定およびクエリ転送を行なうことで、ユーザにクエリヒットメッセージが返される。
また、本発明は、前述のオブジェクト発見ネットワークを用いて、オブジェクト自身が任意のキーワードによって他のオブジェクトを検索するものであり、オブジェクトがノード、または自身の保持するリンク情報、あるいはその両方から初期リンクを取得し、検索条件のキーワードをクエリメッセージに設定し、初期リンク先のオブジェクトに送付し、クエリメッセージを受信したオブジェクトが、前述と同様な方法により、クエリヒットの判定およびクエリ転送を行なうことで、クエリメッセージ発信元オブジェクトにクエリヒットメッセージが返される。
また、本発明は、前述のオブジェクト発見ネットワークに適用されるノード（コンピュータ）と、オブジェクトのクエリメッセージ転送方法である。
また、本発明は、前述のノード（コンピュータ）に、オブジェクトのクエリメッセージ転送方法を実行させるプログラム、並びに、前記プログラムを記録した記録媒体である。
【０００７】
本発明によれば、ファイル名に限らず、任意かつ複数個のキーワードを使ってオブジェクトを検索することができるので、柔軟性が高く、また、本発明では、近隣のオブジェクトとのリンクに加えて、類似性のあるオブジェクト間にもリンクを生成するため、ネットワークの規模に依存せずに、ある一定回数のクエリメッセージの転送により、ターゲットを発見することが可能となる。
これは、類似性のリンクが、オブジェクトの内容的な近さによるショートカットとして働くためである。また、リンク情報に、相手オブジェクトのキーワードが記録されているため、クエリメッセージに含まれるキーワードとリンク情報に含まれるキーワードの類似度に基づいて、クエリ転送先を絞り込むことで、より少ない通信コストでターゲットオブジェクトの発見が可能となる。
以上から、本発明により、ネットワークの規模に対してスケーラビリティを確保することができる。
【０００８】
本発明によれば、オブジェクトが複数のキーワードを定義することができ、複数のキーワードをつかって検索することができるため、検索の柔軟性が高く、また、検索の際には、クエリメッセージを複数のリンクに並列で送信しつつ（広さ優先）、類似性によるリンクを活用して、各オブジェクトが類似性に基づいて有効な転送先を絞り込むため、オブジェクトの効率的な発見が可能となる。
また、本発明では、類似性のあるオブジェクト同士が疎に繋がっているため、各オブジェクトの保持するリンク数は、オブジェクト数が増加に伴い無制限に増加することはない。
このため、ネットワークの規模が大きい場合でも、各オブジェクトのリンク維持コストをある一定範囲に抑えることが可能であるため、スケーラビリティを確保することができる。
【０００９】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
なお、実施の形態を説明するための全図において、同一機能を有するものは同一符号を付け、その繰り返しの説明は省略する。
［実施の形態１］
本明細書では、ノード、オブジェクト、リンクを以下のように定義する。
（１）オブジェクトの動作環境を提供するコンピュータをノードと呼ぶ。
（２）ノード上で実行可能な実体をオブジェクトと呼び、オブジェクトは、自身を表すキーワードを複数持つ。
（３）２つのオブジェクト間の繋がりをリンクと呼び、各オブジェクトは、リンク先の相手オブジェクトに関する情報をリンク情報として記録する。リンク情報には、相手のオブジェクトのキーワードを記録する。
図１は、本発明の実施の形態１のオブジェクト発見ネットワークの全体構成を示すブロック図である。
図１に示すように、本実施の形態のオブジェクト発見ネットワークは、無線または有線のネットワーク１１０を介して、複数のノード（コンピュータ）１０３が互いに接続されて構成さえる。
各ノード１０３は、それぞれのノード上で実行されるプログラムにより生成されるオブジェクト１００を０個以上（複数個可）有する。なお、図１では、各ノード１０３が２つのオブジェクト１００を有する場合を図示している。
【００１０】
図２は、図１に示すノード１０３の概略構成を示すブロック図である。
図２に示すように、オブジェクト１００は、自身のキーワード、リンク情報、およびデータおよびアルゴリズムを記憶するテーブル１０１と、テーブル１０１を参照してオブジェクトの動作を制御する制御部１０２により構成される。
テーブル１０１は、オブジェクトのキーワード情報１０１１、オブジェクトが保持するリンク情報１０１２、クエリ転送時に記録されるクエリメッセージＩＤとクエリメッセージ送信元オブジェクトＩＤを含むクエリ記録１０１３、検索開始判定アルゴリズム１０１４、クエリ転送アルゴリズム１０１５、クエリヒット判定アルゴリズム１０１６、リンク生成判定アルゴリズム１０１７、リンク削除アルゴリズム１０１８により構成される。
ノード１０３は、ノード間通信を行なうための通信部１０４、オブジェクトに送付する初期リンク情報の選択アルゴリズム、ノード上に存在するオブジェクト情報、および隣接ノード情報を格納したテーブル１０５、テーブル情報を参照してオブジェクトおよびノードの動作を制御する制御部１０６により構成される。
テーブル１０５は、ノード上に存在するオブジェクトに関する情報１０５１、隣接ノード情報１０５２、初期リンク選択アルゴリズム１０５３により構成される。
【００１１】
以下、本実施の形態のオブジェクト発見ネットワークのネットワーク構築方法について説明する。
図３は、本実施の形態の一事例を示す図であり、図３では、オブジェクト（ＩＤ＝０１１１）が、自身と類似したオブジェクトを探してリンクを生成する場合の事例である。
図４は、クエリメッセージを発信するオブジェクト（ＩＤ＝０１１１）の処理手順を示すフローチャートである。
オブジェクト１００の生成、移動、リンク数追加要求発生に伴い、クエリメッセージを発信するオブジェクト（ＩＤ＝０１１１）は、初めにノード１０３から初期リンク情報を取得する（ステップ５００）。
以下、ステップ５００の動作を説明する。
オブジェクト（ＩＤ＝０１１１）からの初期リンク要求に対して、ノードは、オブジェクト情報１０５１を参照して、自ノード上に存在する他のオブジェクト（ＩＤ＝０７７７、０５５５）のリンク情報を生成して、リンク要求元オブジェクトに返す。
自ノード上にオブジェクトが存在しない場合は、隣接ノード情報１０５２を参照して、隣接ノードに初期リンク情報生成依頼を出す。
依頼を受けた隣接ノードは、自ノード上のオブジェクトのリンク情報を生成して、依頼元ノードに送付し、依頼元ノードからオブジェクトに送付される。
表１に、オブジェクト（ＩＤ＝０１１１）の持つテーブル１０１内のリンク情報１０１２の一例を示す。ちなみに、表２に、図３に示すオブジェクト（ＩＤ＝０７７７）の持つテーブル１０１内のリンク情報１０１２の一例を示す。
この表１、表２において、オブジェクトＩＤは、リンク先オブジェクトの識別子、ノードアドレスは、リンク先オブジェクトのノードアドレス、キーワードは、リンク先オブジェクトの持つキーワード（複数可）である。
【００１２】
【表１】
0003947018.tif 000002
【００１３】
【表２】
0003947018.tif 000003
【００１４】
次に、初期リンクを取得したオブジェクト（ＩＤ＝０１１１）は、クエリメッセージ（ＩＤ＝９９９９）を生成し、キーワード情報１０１１から自身のキーワードを取得してセットした後、初期リンク先オブジェクト（ＩＤ＝０７７７、０５５５）に前記クエリメッセージを送信する（ステップ５０１）。
表３に、図３に示すオブジェクト（ＩＤ＝０１１１）の発信するクエリメッセージ（ＩＤ＝９９９９）の一例を示す。
表３に示すように、クエリメッセージ（ＩＤ＝９９９９）には、送信元オブジェクトＩＤ、送信元オブジェクトのノードアドレス、クエリＩＤ、クエリメッセージの転送回数（ホップ数）、キーワードが設定される。
発信元ＩＤ、発信元ノードアドレスには、クエリメッセージ発信元オブジェクトのオブジェクトＩＤ、ノードアドレスが設定され、これは、いったん設定されるとその後クエリメッセージの転送の間は変更されないものとする。
オブジェクト（ＩＤ＝０１１１）は、送信したクエリメッセージ（ＩＤ＝９９９９）を、クエリ記録１０１３に記録する（ステップ５０２）。その後、クエリヒットメッセージ受信待機状態に入ることで終了する。
【００１５】
【表３】
0003947018.tif 000004
【００１６】
表４に、クエリ記録１０１３に記録される、オブジェクト（ＩＤ＝０１１１）の記録内容を示す。
表４のクエリＩＤ、キーワードには、表３に示すクエリメッセージのクエリＩＤおよびキーワードが設定される。
また、同オブジェクトは、クエリメッセージ発信元であるため、送信元オブジェクトＩＤ、送信元ノードアドレスには、nu11を記録する。クエリ記録の送信元オブジェクトＩＤ、送信元ノードアドレスがnullの場合は、そのオブジェクト自身がクエリメッセージの発信元オブジェクトであることを示す。
表５に、クエリメッセージを中継するオブジェクト（ＩＤ＝０７７７）が、表３のクエリメッセージを受信した場合に、クエリ記録１０１３に記録される、オブジェクト（ＩＤ＝０７７７）のクエリ記録１０１３の内容の一例を示す。
表５の送信元オブジェクトＩＤおよび送信元ノードアドレスには、表３のクエリメッセージの送信元オブジェクトＩＤおよび送信元ノードアドレスが記録される。
【００１７】
【表４】
0003947018.tif 000005
【００１８】
【表５】
0003947018.tif 000006
【００１９】
図５は、クエリメッセージ（ＩＤ＝９９９９）を受信したオブジェクト（ＩＤ＝０７７７）の処理手順を示すフローチャートである。
クエリメッセージ（ＩＤ＝９９９９）を受信したオブジェクト（ＩＤ＝０７７７７）は、該クエリメッセージのクエリＩＤを使ってクエリ記録１０１３を検索し、既に同じクエリメッセージを受信していないかを調べる（ステップ６００）。
ステップ６００で、同じクエリＩＤの記録が既に登録されている場合には、受信したクエリメッセージを破棄して終了する。
新規のクエリメッセージの場合には、該クエリメッセージをクエリ記録１０１３に記録する（ステップ６０１）。
オブジェクト（ＩＤ＝０７７７）は、受信したクエリメッセージのキーワードと、自身のキーワードの類似度Ｓｓｅｌｆを算出し（ステップ６０２）、Ｓｓｅｌｆの値に基づいてクエリヒットを返すか否かを判定する（ステップ６０３）。
Ｓｓｅｌｆは、０≦Ｓｓｅｌｆ≦１を満たすものとし、値が大きいほど類似度が高いとする。
このとき、Ｓｓｅｌｆの算出方法としては、例えば、以下の２つの方法がある。
（ａ）クエリメッセージのキーワードの数をＫｑとし、そのうちオブジェクトが満たしているキーワードの数をＫｍとしたとき、Ｓｓｅｌｆ＝Ｋｍ／Ｋｑとする。
クエリメッセージ（ＩＤ＝９９９９）とオブジェクト（ＩＤ＝０７７７）の場合は、Ｓｓｅｌｆ＝１／２である。
（ｂ）類義語辞書を用いて、２つのキーワードの意味の近さを算出する手法を用いることにより、クエリメッセージのキーワードとオブジェクトのキーワードの意味の近さの平均値をＳｓｅｌｆとする。
【００２０】
類似度Ｓｓｅｌｆに応じて、クエリヒットの返信を判定する方法としては、例えば、以下の方法がある。
（ａ）Ｓｓｅｌｆの値が大きいほどクエリヒットを返す確率が高くなるように、関数ｆを用いて、クエリヒットを返す確率を算出する。
例えば、ｆ（ｘ）＝ｘ２の場合は、Ｓｓｅｌｆ２の確率でクエリヒットが判定される。
ステップ６０３で、クエリヒットを返さないと判定した場合は、ステップ６０５に進み、クエリメッセージを次のオブジェクトに転送する。
この例では、オブジェクト（ＩＤ＝０７７７）は、クエリヒットは返さず、次のオブジェクト（ＩＤ＝０１２３）に転送する。
ステップ６０３で、クエリヒットを返すと判定したオブジェクト（ＩＤ＝０１２３）は、クエリヒットメッセージを生成し、クエリメッセージ（ＩＤ＝９９９９）のクエリＩＤ、およびクエリヒットメッセージの送信先オブジェクトＩＤ、送信先ノードアドレスをセットし、送信する（ステップ６０４）。
表６に、オブジェクト（ＩＤ＝０１２３）が発信するクエリヒットメッセージ（ＩＤ＝９９９９）の一例を示す。
表６のクエリＩＤは、応答するクエリメッセージ（ＩＤ＝９９９９）をコピーする。また、自身のオブジェクトＩＤ、ノードアドレスを、送信元オブジェクトＩＤ、送信元ノードアドレスに設定する。
即ち、発信元ＩＤ、発信元ノードアドレスには、クエリヒットメッセージの発信元オブジェクト（ＩＤ＝０１２３）のオブジェクトＩＤ、ノードアドレスが設定される。これは、いったん設定されると、その後クエリヒットメッセージの転送の間は変更されないものとする。
【００２１】
キーワードとしては、クエリヒットメッセージ発信元のオブジェクトの持つキーワード（バイオリン、コンサート、クラッシック）をセットする。これは、一旦設定されるとその後クエリヒットメッセージの転送の間は変更されないものとする。
送信先オブジェクトＩＤ、送信先ノードアドレスの設定方法には、以下の２通りの設定方法がある。
（ａ）クエリメッセージ（ＩＤ＝９９９９）の送信元オブジェクトＩＤ、送信元ノードアドレスを、クエリヒットメッセージの送信先オブジェクトＩＤ、送信先ノードアドレスにコピーする。表６は、方法（ａ）でセットした場合を示している。
（ｂ）クエリメッセージ（ＩＤ＝９９９９）の発信元オブジェクトＩＤ、発信元ノードアドレスを、それぞれ、送信先オブジェクトＩＤ、送信先ノードアドレスに設定する。
方法（ａ）の場合は、クエリヒットメッセージは、クエリメッセージの転送経路を逆順に辿ることでクエリメッセージ発信元オブジェクト（ＩＤ＝０１１１）に到達する。
一方、方法（ｂ）の場合は、クエリヒットメッセージの発信元オブジェクトから直接クエリメッセージの発信元オブジェクト（ＩＤ＝０１１１）に対してクエリヒットメッセージが送付される。
【００２２】
【表６】
0003947018.tif 000007
【００２３】
ステップ６０３で、クエリヒットを返さないと判定したオブジェクト（ＩＤ＝０７７７）、およびステップ６０４でクエリヒットを返したオブジェクト（ＩＤ＝０１２３）は、続いてクエリメッセージ転送に関する処理を行なう。
以下の説明では、オブジェクト（ＩＤ＝０７７７）による処理手順を説明する。
オブジェクト（ＩＤ＝０７７７）は、受信したクエリメッセージに設定されているホップ数を１つ増やし、増やした後のホップ数がクエリメッセージの転送回数の上限値以下であるかを調べ、上限値を越えている場合は終了する（ステップ６０５）。
そして、自身が保持しているリンク情報ｉ（ｉ＝１..ｎ）について、クエリメッセージの１つ前の送信元オブジェクトと、リンクｉのリンク先オブジェクトの識別子が等しい場合を除いて（ステップ６０６）、自身が受信したクエリメッセージのキーワードと、自身の保持しているリンク情報ｉのキーワードの類似度Ｓｌｉｎｋ（ｉ）を算出する（ステップ６０７）。
なお、このリンク情報ｉは、オブジェクト１００の生成、移動、リンク数追加要求発生等に伴い、オブジェクト１００が、初めにノード１０３から初期リンク情報を取得して記録しているものである。
ステップ６０２で算出した自身のキーワードとクエリメッセージのキーワードの類似度Ｓｓｅｌｆと、ステップ６０７で算出したリンク情報ｉのキーワードとクエリメッセージのキーワードの類似度Ｓｌｉｎｋ（ｉ）の値に基づいて、クエリメッセージをリンクｉのリンク先オブジェクトに転送するか否かを判定する（ステップ６０８）。Ｓｌｉｎｋ（ｉ）の算出方法は、Ｓｓｅｌｆの算出方法と同様とする。
【００２４】
類似度ＳｓｅｌｆとＳｌｉｎｋ（ｉ）に応じて、リンクｉのリンク先オブジェクトヘのクエリメッセージの転送を判定する方法としては、例えば、以下の方法がある。
Ｓｓｅｌｆ＜Ｓｌｉｎｋ（ｉ）なら、確率１で転送する。
Ｓｓｅｌｆ＝Ｓｌｉｎｋ（ｉ）、かつ、Ｓｓｅｌｆ≠０なら、クエリメッセージの発信元オブジェクトからのホップ数が増えるほど、転送確率が低くなるような関数ｇ（例えば、ｇ（ｘ）＝１／ｘ、または、ｇ（ｘ）＝１／√ｘなどの関数）を用いて、転送確率を算出する。
Ｓｓｅｌｆ＞Ｓｌｉｎｋ（ｉ）、あるいは、Ｓｓｅｌｆ＝０なら、確率０で転送する（転送しない）。
例えば、オブジェクト（ＩＤ＝０７７７）が持つ、オブジェクト（ＩＤ＝０１２３）に関するリンク情報の場合、クラシックとコンサートのキーワードが、クエリメッセージのキーワードと一致するので、Ｓｌｉｎｋ＝２／２となり、確率１で転送する。
ステップ６０８で、リンクｉのリンク先オブジェクトに対して、クエリメッセージを転送すると判定した場合、クエリメッセージを生成し、送信する（ステップ６０９）。
ステップ６０８で、リンクｉのリンク先オブジェクトに対して、クエリメッセージを転送しないと判定した場合は、ｉ＝ｉ＋１とし（ステップ６１０）、ステップ６０６に戻る。
全てのリンク情報ｉについて、ステップ６０６からステップ６１０までを実施する。
【００２５】
図６は、クエリヒットメッセージを受信した場合の、オブジェクト（ＩＤ＝０７７７あるいはＩＤ＝０１１１）の処理手順を示すフローチャートである。
オブジェクト（ＩＤ＝０７７７）は、クエリヒットメッセージをすると、クエリヒットメッセージをクエリ記録１０１３に照合することで、自身が発信したクエリメッセージに対する応答であるのか、他のオブジェクトが発信したクエリメッセージに対する応答であるのかを判別する（ステップ５０５）。
この場合、クエリヒットメッセージのクエリＩＤ（９９９９）をキーとして、テーブル１０１内のクエリ記録１０１３を検索し、該当するクエリ記録１０１３の送信元オブジェクトＩＤがnullであれば、自身が発信したクエリメッセージに対する応答であり、非nullであれば、他のオブジェクトが発信したクエリメッセージに対する応答であると判定する。また、該当するクエリ記録テーブルが得られない場合は、エラーとする。
オブジェクト（ＩＤ＝０７７７）の場合は、表５に示すクエリ記録１０１３と照合することにより、自身が発信元でないことが判明する。
オブジェクト（ＩＤ＝０１１１）の場合は、表４に示すクエリ記録１０１３と照合することにより、自身が発信元であることが判明する。
【００２６】
ステップ５０５において、自身が出したクエリメッセージに対するクエリヒットメッセージである場合には、リンクを生成するか否かを判断し（ステップ５０６）、生成すると判定した場合はクエリヒットメッセージの発信元オブジェクトに関するリンク情報を生成する（ステップ５０７）。
ステップ５０６における、リンク生成判定方法としは、以下の方法がある。
（ａ）クエリヒットメッセージに設定されている、クエリヒットメッセージ発信元オブジェクトのキーワードと、自身のキーワードの類似度Ｓ’ｓｅｌｆを算出し、この値が高いほど高確率でリンクを生成する。なお、類似度Ｓ’ｓｅｌｆの算出方法は、類似度Ｓｓｅｌｆの算出方法と同様とする。
（ｂ）ある一定の確率で、ランダムにリンクを生成する。
（ｃ）自身の保持しているリンク数に応じてリンクを生成する。例えば、ある上限値以下であればリンクを生成する。（（ｃ）は、（ａ）、（ｂ）と組み合わせることもできる。）
（ｄ）全くリンクを作らない。
そして、リンク先オブジェクトに対して、新規にリンクを生成生成したことを通知する。この結果、相手オブジェクトも、該オブジェクトに関するリンクを生成する（ステップ５０８）。
一方、ステップ５０６で、リンクを生成しないと判定した場合は、終了する。
オブジェクト（ＩＤ＝０１１１）の場合、オブジェクト（ＩＤ＝０１２３）との間に新たにリンクを生成する。
ステップ５０５において、他のオブジェクトが発信したクエリメッセージに対する応答である場合は、クエリ記録１０１３から、クエリヒットメッセージの転送先オブジェクトのＩＤとノードアドレスを取得し、クエリヒットメッセージを送付する（ステップ５０９）。
オブジェクト（ＩＤ＝０７７７）の場合、オブジェクト（ＩＤ＝０１１１）にクエリヒットメッセージを送付する。ステップ５０５において、エラーであった場合は、終了する。
【００２７】
なお、図６に示すフローチャートでは、オブジェクト間のリンクは双方向の場合について説明したが、本実施の形態では、片方向のリンクでも良い。この場合、図６のステップ５０８を削除する。
以上説明したように、本実施の形態では、オブジェクト１００が、初期リンク情報を元に自律的に自身と似たオブジェクトを検索し、類似度に応じてリンク情報を生成することで、「似た者同士」が緩やかに繋がったネットワークを構築し、このネットワークを用いてクエリメッセージの転送先を絞り込むことで、少ないメッセージ数、リンク維持コストで、十分高い発見率を達成することができる。
さらに、リンクが総メッシュに比べて十分疎であるため、ネットワーク環境の動的な変化の際にもリンク情報の更新コストが比較的少なくてすむ。
また、ネットワークの規模が大きくなっても、通信コスト、リンク維持コストがある程度抑えることができるため、スケーラビリティを確保することができる。
【００２８】
［実施の形態２］
本実施の形態は、ユーザが、所望のオブジェクトを探すために、クエリメッセージを発信する実施の形態である。
図７は、本実施の形態の一事例を示す図である。
図８は、ユーザの要求によりクエリメッセージを発信するオブジェクトの処理手順を示すフローチャートである。
ユーザは、任意のノードにアクセスすることができ、ユーザがアクセスしているノードを、アクセスノードと呼ぶ。
ユーザが、オブジェクトを検索する際に、ユーザのアクセスノードが、ユーザオブジェクトを生成し、ユーザが検索対象オブジェクトのキーワードをユーザオブジェクトに入力する（ステップ７００）。
なお、ユーザオブジェクトは、ノード１０３により実行されるオブジェクト１００の１種であるが、ユーザとの入出力処理を起動することができる点と、初期リンク以外のリンクを生成しない点が異なる。
ユーザオブジェクトは、アクセスノードから、前述の図４に示すステップ５００と同様の手法で、初期リンクを取得する（ステップ７０１）。
この例では、オブジェクト（ＩＤ＝０１１１）への初期リンクを獲得するものとする。
ユーザオブジェクトは、ステップ７００でユーザから取得したキーワードを用いてクエリメッセージ（ＩＤ＝１０１０）を生成し、初期リンク先オブジェクト（ＩＤ＝０１１１）に送信する（ステップ７０２）。
ユーザオブジェクトは、送信したクエリを、クエリ記録１０１３に、前述の図４に示すステップ５０２と同様の手法で記録する（ステップ７０３）。
【００２９】
図９は、ユーザオブジェクトによるクエリヒットメッセージの受信処理の処理手順のフローチャートである。
ユーザオブジェクトは、クエリヒットメッセージ（ＩＤ＝１０１０）を受信すると、これをクエリ記録１０１３に照合することで、自身が発信したクエリメッセージに対する応答であるのか、エラーであるのかを判別する（ステップ７０５）。
この場合、クエリヒットメッセージのクエリＩＤ（１０１０）をキーとして、クエリ記録１０１３を検索して、自身が発信したクエリメッセージに対する応答であるのか、エラーであるのかを判別する。
クエリ記録１０１３の送信元オブジェクトＩＤがnullであれば、自身が発信したクエリメッセージに対する応答であり、非null、あるいは該当するクエリ記録１０１３が得られない場合は、エラーとする。
ステップ７０５において、自身が出したクエリメッセージに対するクエリヒットメッセージである場合には、クエリヒットメッセージの情報をユーザに表示する（７０６）。ステップ７０５において、エラーであった場合は、終了する。
【００３０】
なお、本実施の形態における、ユーザオブジェクト以外の一般のオブジェクトによるクエリヒットメッセージの受信処理、クエリメッセージ受信処理は、前述の実施の形態１と同様である。
以上説明したように、本実施の形態によれば、ユーザが所望のオブジェクトを発見する際に、任意かつ複数個のキーワードをクエリメッセージに設定して送信すれば、前述の実施の形態１と同一の論理を用いて検索サービスを提供することができる。
オブジェクトのリンク生成のための検索のフェーズと、ユーザによるオブジェクト検索のフェーズにおける、クエリメッセージ受信処理、ユーザオブジェクト以外のオブジェクトによるクエリヒットメッセージ受信処理が同一であるため、本発明を実施するプログラムの開発が容易である。
【００３１】
［実施の形態３］
本実施の形態は、オブジェクト自身が他のオブジェクトを探すために、クエリメッセージを発信する実施の形態である。
図１０は、本発明の実施の形態３において、任意のキーワードによって他のオブジェクトを検索するためのクエリメッセージを発信するオブジェクトの処理手順を示すフローチャートである。
あるキーワードを持つオブジェクトの検索要求の発生に伴い、オブジェクト１００は、初期リンクの取得方法を、１．ノード１０３から初期リンク情報を取得する（ステップ８００１）、２．自身が保持しているリンク情報の中から選択する（ステップ８００２）、３．（１）と（２）の両方により初期リンク情報を取得する（ステップ８００３）、の中から１つの方法を選択し（ステップ８００）、選択した方法を用いて初期リンク情報を取得し、記録する。既に同じリンク情報が記録済みの場合は記録しない。
ステップ８００１の動作は、前述の図４のステップ５００における動作である。
【００３２】
ステップ８００２において、リンク情報を選択する方法としては、以下の方法がある。
（ａ）前述の図５に示すステップ６０８，６０７と同様な方法を用いる。即ち、オブジェクトは、自身の各リンク情報（ｉ＝０..ｎ）について、リンク情報（ｉ＝０..ｎ）のキーワードと、自身の検索キーワードの類似度Ｓｌｉｎｋ（ｉ）を算出し、類似度Ｓｌｉｎｋ（ｉ）に応じてクエリを転送するか否かを判定し、クエリを転送すると反対したリンク（ｉ）を初期リンクに加える。
（ｂ）ある一定の確率でランダムに選択する。
（ｃ）全てのリンクを選択する。
次に、初期リンクを取得したオブジェクトは、クエリメッセージを生成し、任意の検索キーワードをセットした後、初期リンク先オブジェクトに前記クエリメッセージを送信する（ステップ８０１）。
オブジェクトは、送信したクエリメッセージをクエリ記録１０１３に、前述の図４に示すステップ５０２と同様な手法で記録する（ステップ８０２）。
なお、本実施の形態における、クエリメッセージ受信処理、クエリヒットメッセージ受信処理は、前述の実施の形態１と同様である。
【００３３】
以上説明したように、本実施の形態によれば、オブジェクトが所望のオブジェクトを発見する際に、任意かつ複数のキーワードをクエリメッセージに設定して送信すれば、前述の実施の形態１と同一の論理を用いて検索サービスを提供することが可能となる。
オブジェクトのリンク生成のための検索のフェーズと、オブジェクトによるオブジェクト検索のフェーズにおける、クエリメッセージ受信処理、クエリヒットメッセージ受信処理が同一であるため、本発明を実施するプログラムの開発が容易である。
なお、前述の説明において、ノード上に生成されるオブジェクト、およびオブジェクトのクエリメッセージ転送方法は、コンピュータ内のハードディスクなどに格納されるプログラムを、コンピュータが実行することにより行われる。このプログラムは、ＣＤ−ＲＯＭ、あるいは、ネットワークを介したダウンロードにより供給される。
以上、本発明者によってなされた発明を、前記実施の形態に基づき具体的に説明したが、本発明は、前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは勿論である。
【００３４】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば、下記の通りである。
（１）本発明によれば、ピア・ツー・ピア（Ｐ２Ｐ）ネットワーク環境において、通信コストやリンク維持コストを軽減しつつ、十分な発見率を達成できる、効率的なオブジェクト検索サービスを実現することが可能となる。
（２）本発明によれば、複数のキーワードによる柔軟な検索をサポートし、ネットワーク環境の動的な変動への適応性や、スケーラビリティを備えるオブジェクト検索サービスを実現することが可能となる。
（３）本発明によれば、オブジェクトのリンク生成のための検索のフェーズと、ユーザによるオブジェクト検索のフェーズの動作論理が等しいため、メカニズムが単純であり、サービスの開発行程も削減することが可能となる。
【図面の簡単な説明】
【図１】本発明の実施の形態１のオブジェクト発見ネットワークの全体構成を示すブロック図である。
【図２】図１に示すノードの概略構成を示すブロック図である。
【図３】本発明の実施の形態１の一事例を示す図である。
【図４】本発明の実施の形態１において、クエリメッセージを発信するオブジェクト（ＩＤ＝０１１１）の処理手順を示すフローチャートである。
【図５】本発明の実施の形態１において、クエリメッセージ（ＩＤ＝９９９９）を受信したオブジェクト（ＩＤ＝０７７７）の処理手順を示すフローチャートである。
【図６】本発明の実施の形態１において、クエリヒットメッセージを受信した場合の、オブジェクト（ＩＤ＝０７７７あるいはＩＤ＝０１１１）の処理手順を示すフローチャートである。
【図７】本発明の実施の形態２の一事例を示す図である。
【図８】本発明の実施の形態２において、ユーザの要求によりクエリメッセージを発信するオブジェクトの処理手順を示すフローチャートである。
【図９】本発明の実施の形態２において、ユーザオブジェクトによるクエリヒットメッセージの受信処理の処理手順のフローチャートである。
【図１０】本発明の実施の形態３において、任意のキーワードによって他のオブジェクトを検索するためのクエリメッセージを発信するオブジェクトの処理手順を示すフローチャートである。
【符号の説明】
１００…オブジェクト、１０１，１０５…テーブル、１０２…制御部、１０３…ノード、１０４…通信部、１０６…制御部、１１０…ネットワーク、１０１１…キーワード情報、１０１２…リンク情報、１０１３…クエリ記録、１０１４…検索開始判定アルゴリズム、１０１５…クエリ転送アルゴリズム、１０１６…クエリヒット判定アルゴリズム、１０１７…リンク生成判定アルゴリズム、１０１８…リンク削除アルゴリズム、１０５１…ノード上に存在するオブジェクトに関する情報、１０５２…隣接ノード情報、１０５３…初期リンク選択アルゴリズム。
【図１】
0003947018.tif 000008
【図２】
0003947018.tif 000009
【図３】
0003947018.tif 000010
【図４】
0003947018.tif 000011
【図５】
0003947018.tif 000012
【図６】
0003947018.tif 000013
【図７】
0003947018.tif 000014
【図８】
0003947018.tif 000015
【図９】
0003947018.tif 000016
【図１０】
0003947018.tif 000017