(57)【要約】  相互通信可能な複数のコンピューティングシステムを取り込むコンピューティング環境において、コンピューティングシステムは、他のコンピューティングシステムにより提供されるサービスの発見を支援する。例えば、発見すべきサービスのスコープを表す問合せを受信すると、その問合せにおいて表されるスコープをコンパイルスコープ情報と比較することができる。そのコンパイルスコープの各々のスコープは、様々なマッチング規則を用いてコンパイルされる。次いでサービスのプロバイダを、その比較に基づいて発見することができる。さらに、サービスプロバイダを特定することができる。
2009540462.tif 000002
【特許請求の範囲】
【請求項１】
相互接続可能な複数のコンピューティングシステムを備えるコンピューティング環境において、前記複数のコンピューティングシステムの１つまたは複数により提供されるサービスの発見をコンピューティングシステムが支援する方法であって、
発見すべきサービスのスコープを表す問合せを受信するステップと、
前記問合せにおいて表される前記スコープをコンパイルスコープ情報と比較するステップであって、前記コンパイルスコープ情報は、少なくとも１つの複数のスコープの各々に対して、夫々を様々なマッチング規則を用いてコンパイルした複数のコンパイルスコープを含むステップと、
前記複数のコンピューティングシステムの少なくとも１つを、前記比較ステップに基づいて発見した前記サービスを提供するものとして特定するステップと、
前記問合せに応答を提供するステップであって、前記応答は、前記複数のコンピューティングシステムの少なくとも１つのうち１つまたは複数の識別子を含むステップと
を含むことを特徴とする方法。
【請求項２】
前記複数のコンパイルスコープはテキスト文字列を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記問合せはユーザが入力した検索基準を含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記サービスはウェブサービスを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記マッチング規則は、ＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）、ＵＵＩＤ（Ｕｎｉｖｅｒｓａｌｌｙ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒ）、ＬＤＡＰ（Ｌｉｇｈｔｗｅｉｇｈｔ  Ｄｉｒｅｃｔｏｒｙ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ）、および文字列比較（ＳＴＲＣＭＰ０）のうち１つまたは複数を含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記複数のコンパイルスコープを、前記複数のコンピューティングシステムの１つまたは複数の上で局所的にコンパイルしたことを特徴とする請求項１に記載の方法。
【請求項７】
前記問合せにおいて表した前記スコープはプレコンパイルスコープ情報を含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記プレコンパイルスコープ情報を様々なマッチング規則を用いてコンパイルしたことを特徴とする請求項７に記載の方法。
【請求項９】
コンピューティングシステムの１つまたは複数のプロセッサが実行する時に、複数のコンピューティングシステムのうち１つまたは複数が提供するサービスを発見するコンピューティングシステムのための方法を、前記コンピューティングシステムが実施するコンピュータ実行可能命令を自身の上に有する１つまたは複数のコンピュータ可読媒体を備えるコンピュータプログラム製品であって、前記方法は、
ユーザ入力を用いて、発見すべきサービスの複数スコープのスコープを特定するステップと、
前記の特定したスコープの複数のコンパイルにアクセスするステップであって、前記複数のスコープの各々のうち少なくとも幾つかを様々なマッチング規則を用いてコンパイルするステップと、
前記複数のコンパイルのうち少なくとも１つを含む問合せを送信させるステップと、
前記問合せへの応答を受信したことを検出するステップと、
前記検出ステップに応じて、前記問合せへの前記応答にアクセスするステップであって、前記応答は、前記サービスを提供する前記複数のコンピューティングシステムのうち少なくとも１つを特定するのに十分な情報を含むステップと
を備えることを特徴とするコンピュータプログラム製品。
【請求項１０】
前記ユーザ入力は１つまたは複数の検索基準を備えることを特徴とする請求項９に記載のコンピュータプログラム製品。
【請求項１１】
前記１つまたは複数の検索基準に基づいて前記スコープを特定するステップをさらに備えることを特徴とする請求項１０に記載のコンピュータプログラム製品。
【請求項１２】
前記複数のコンパイルにリモートでアクセスすることを特徴とする請求項９に記載のコンピュータプログラム製品。
【請求項１３】
前記複数のコンパイルをプレコンパイルしたことを特徴とする請求項９に記載のコンピュータプログラム製品。
【請求項１４】
前記のプレコンパイルした複数のコンパイルにリモートにアクセスすることを特徴とする請求項１３に記載のコンピュータプログラム製品。
【請求項１５】
相互接続可能な複数のコンピューティングシステムを備えるコンピューティング環境において、前記複数のコンピューティングシステムの１つまたは複数により提供されるサービスをプロキシが発見する方法であって、
発見すべきサービスのスコープを表す第１の問合せを受信するステップと、
前記第１の問合せにおいて表される前記スコープをコンパイルスコープ情報と比較するステップであって、前記コンパイルスコープ情報は、少なくとも１つの複数のスコープの各々に対して、夫々を様々なマッチング規則を用いてコンパイルした複数のコンパイルスコープを含むステップと、
第２の問合せを送信するステップであって、前記第２の問合せは前記複数のコンパイルスコープのうち少なくとも１つを含むことを特徴とするステップと
を含むことを特徴とする方法。
【請求項１６】
前記プロキシは１つまたは複数の検索基準を受信し、前記検索基準に基づいて前記スコープを計算することを特徴とする請求項１５に記載の方法。
【請求項１７】
前記第１の問合せは、プレコンパイルスコープ情報を含むことを特徴とする請求項１５に記載の方法。
【請求項１８】
前記プレコンパイルスコープ情報を様々なマッチング規則を用いてコンパイルしたことを特徴とする請求項１７に記載の方法。
【請求項１９】
前記第２の問合せはユーザが入力した検索基準を含むことを特徴とする請求項１５に記載の方法。
【請求項２０】
前記第２の問合せはプレコンパイルスコープ情報を含むことを特徴とする請求項１５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
現代社会において、通信装置の使用が増えている。これらの装置が急速に採用されたことにより、円滑な相互運用性が要求されている。多数の企業が通信装置を製造し、それらの装置の多くは独自の通信規則集合を有している。これらの装置の利用者は、接続された装置により提供されるサービスに効率的にアクセスするために、装置間の相互運用性と装置で実行されるアプリケーション間の相互運用性との両方を要求する。
【背景技術】
【０００２】
例えば、或るサービスカテゴリは、本件特許出願人、ＩＢＭ、および他社が共同で開発したウェブサービスプロトコルに準拠することができるが、それに加えて、またはその代わりとして、装置はウェブサービスプロトコルに準拠しないサービスを提供してもよい。ウェブサービスはアプリケーションを統合する標準的な方法である。標準的なＸＭＬ文書をＳＯＡＰ（Ｓｉｍｐｌｅ  Ｏｂｊｅｃｔ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ）メッセージおよびＷＳＤＬ（Ｗｅｂ  Ｓｅｒｖｉｃｅｓ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）記述で使用して、統合されているアプリケーションを広く知らなくてもアプリケーションを統合することができる。また、ウェブサービスを使用して装置間の通信を可能にできる。ウェブサービスを様々な種類の装置上で実装することができ、「ＷＳ−Ｄｉｓｃｏｖｅｒｙ」プロトコルを用いて発見することができる。
【０００３】
一般に、ウェブサービスプロトコルを実装する場合、クライアントはＷＳ−Ｄｉｓｃｏｖｅｒｙプロトコルを用いてマルチキャストメッセージを送信して所望のウェブサービスを発見することになる。マルチキャストメッセージには、所望のウェブサービスを特定するために使用する「スコープ」が含まれる。例えば、ユーザがビルの１０階にいて１０階にあるカラープリンタを用いて文書を印刷したい場合は、この場合においては、スコープはビルの階数と、カラー印刷である所望のプリンタ機能とを含むであろう。別の例として、ユーザが、５５５−８０００から５５５−８０１０までの電話番号を有するウェブ可能な携帯電話と通信したい場合は、スコープはウェブ可能であり且つその電話番号の範囲内にあった携帯電話のみを含むであろう。
【０００４】
マルチキャストメッセージを受信する夫々の装置は、次いで、与えられたスコープを用いて適切な処理を実施し、その装置が所望のウェブサービスを含むかどうかを決定することができる。その処理を実施した後、装置はマルチキャストメッセージに応答し、それにより、要求をしているクライアントは、スコープにより特定される要求サービスを提供可能な装置を特定することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
これらのマルチキャストメッセージと、それにより生成される多数の応答は、大量のネットワークトラフィックと輻輳の原因となる。さらに、サービスを提供する装置に計算能力が殆ど無く、多数のマルチキャスト要求の処理に不適当であることがよくある。
【０００６】
本明細書で主張する主題は、欠点を解決するか、または上述したような環境でのみ動作する実施形態に限定されない。むしろ、この背景技術は、本明細書で説明する幾つかの実施形態を実践できる１つの例示的な技術を例示するために与えたに過ぎない。
【課題を解決するための手段】
【０００７】
本発明の一実施形態では、ユーザはサービスを提供するネットワークまたはシステムに大きな負荷を必ずしもかけることなく、サービスを発見することができる。例えば、ユーザは１つまたは複数の検索基準を入力することができ、その後、ユーザのコンピュータシステムは１つまたは複数のマッチング規則を用いてスコープをコンパイルすることができる。このコンパイルスコープを使用することによりサービスを特定することができる。ユーザは、コンパイルスコープを含む問合せを送信し、その問合せは、サービスを提供するコンピュータシステムにより受信される。一事例では、コンパイルスコープによりコンピュータシステムは、システムが所望のサービスを提供するかどうかを決定するために、複雑なアルゴリズムを処理する必要はなく、代わりに単純な文字列マッチを実施することができる。
【０００８】
別の実施形態では、ユーザは問合せをプロキシに送信することで、ネットワークにマルチキャストメッセージを大量送信することを回避することができる。そのプロキシは、その問合せを一連のプレコンパイルスコープと比較する。その問合せを比較した後、プロキシはメッセージを、所望のサービスを提供するシステムのリストとともにユーザに返す。このように、リソースへの負荷が減少することにより、ネットワークの帯域幅とコンピュータシステムの処理能力とが恩恵を受けることができる。
【０００９】
本要約は選択した概念を簡潔な形で導入するために与える。その概念を以下の「発明を実施するための最良の形態」でさらに詳細に説明する。本要約は請求項主題の主要な特徴または本質的な特徴を特定するようには意図しておらず、請求項主題の範囲を決定する際の補助として使用するようにも意図していない。
【００１０】
上述した利点および特徴ならびに他の利点および特徴を得ることができる方法を説明するため、簡潔に上述した主題のより具体的な説明を、添付図面に示す具体的な実施形態を参照して与える。これらの図面は典型的な実施形態を示すに過ぎず、従って範囲を限定するように考えるべきではないことを理解して、添付図面を用いて実施形態をさらに具体的且つ詳細に記述および説明することとする。
【発明を実施するための最良の形態】
【００１１】
本発明の実施形態は、コンピューティングシステム内のサービスを特定および発見するためのスコープをコンパイルすることに及ぶ。本明細書の実施形態には、以下でさらに詳細に議論するように、様々なコンピュータハードウェアを含む専用または汎用コンピュータを含めることができる。図１は、本発明の特徴を実装するために使用できるコンピューティングシステムの例１００の概略図を示す。説明するコンピューティングシステムはこのような適切なコンピューティングシステムの１例に過ぎず、本発明の使用範囲または機能範囲に関する限定を示唆するようには意図していない。また、本発明が、図１に示す構成要素の任意の１つまたは組合せに関する依存性または要件を有するとして解釈すべきでもない。
【００１２】
コンピューティングシステムは、今や益々多様な形態を取っている。例えば、コンピューティングシステムは、ハンドヘルド装置、機器、ラップトップコンピュータ、デスクトップコンピュータ、メインフレーム、分散コンピューティングシステム、あるいは従来はコンピューティングシステムとは考えられていなかった装置またはシステムが可能となってきている。この説明および請求項では、用語「コンピューティングシステム」は、少なくとも１つのプロセッサと、そのプロセッサにより実行可能なコンピュータ実行可能命令を有することができるメモリとを含む任意の装置またはシステム（またはそれらの組合せ）を含むとして広範囲に定義する。メモリは任意の形態を取ることができ、コンピューティングシステムの性質と形態に依存することができる。コンピューティングシステムはネットワーク環境上で分散してもよく、複数の構成コンピューティングシステムを含んでもよい。
【００１３】
図１を参照する。その最も基本的な構成では、コンピューティングシステム１００は一般に少なくとも１つの演算装置１０２とメモリ１０４とを含む。メモリ１０４はシステムメモリで可能で、揮発性、不揮発性、またはその２つの何らかの組合せで可能である。揮発性メモリの例にはＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）が含まれる。不揮発性メモリの例にはＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、等が含まれる。本明細書では用語「メモリ」を、物理記憶装置のような不揮発性の大容量記憶を指すように使用することもできる。上記記憶装置は取り外し可能または取り外し不可能でも可能であり、ＰＣＭＣＩＡカード、磁気および光ディスク、磁気テープ、等を含むことができる（がこれらに限らない）。
【００１４】
本明細書で使用するとき、用語「モジュール」または「コンポーネント」は、コンピューティングシステム上で実行されるソフトウェアオブジェクトまたはルーチンを指すことができる。本明細書で説明する別のコンポーネント、モジュール、エンジン、およびサービスを、コンピューティングシステム上で（例えば、別々のスレッドとして）実行されるオブジェクトまたはプロセスとして実装することができる。本明細書で説明するシステムおよび方法をソフトウェアで実装することができる一方、ハードウェアでの実装、ソフトウェアとハードウェアの組合せでの実装も可能であり考慮されている。
【００１５】
以下の説明では、本発明の実施形態を、１つまたは複数のコンピューティングシステムにより実施される動作を参照して説明する。その動作をソフトウェアで実現する場合、その動作を実施する関連コンピューティングシステムの１つまたは複数のプロセッサにより、コンピューティングシステムの動作をコンピュータ実行可能命令の実行結果に応じて方向付ける。上記動作の例にはデータの操作が含まれる。コンピュータ実行可能命令（および操作されるデータ）をコンピューティングシステム１００のメモリ１０４に記憶または含めることができる。
【００１６】
コンピューティングシステム１００は通信チャネル１０８を含むこともできる。通信チャネル１０８により、コンピューティングシステム１００は他のコンピューティングシステムと、例えば、ネットワーク１１０上で通信することができる。通信チャネル１０８は通信媒体の例である。通信媒体は一般にコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを搬送波または他の伝送媒体のような変調データ信号で具現化し、任意の情報配信媒体を含む。限定ではなく例として、通信媒体には、有線ネットワークおよび直接配線接続のような有線媒体、ならびに音響、ラジオ、赤外線、および他の無線媒体のような無線媒体が含まれる。
【００１７】
本発明の範囲内にある実施形態には、記憶したコンピュータ実行可能命令またはデータ構造を伝送または有するコンピュータ可読媒体も含まれる。上記コンピュータ可読媒体は、汎用または専用コンピュータによりアクセスできる任意の利用可能な媒体となりえる。限定ではなく例として、上記コンピュータ可読媒体は物理記憶装置および／またはメモリ媒体を備えることができる。その物理記憶および／またはメモリ媒体には、例えば、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶装置、あるいはコンピュータ実行可能命令またはデータ構造の形で所望のプログラムコード手段を保持または記憶するために使用でき、汎用または専用コンピュータによりアクセス可能な任意の他の媒体がある。情報をネットワークまたは別の通信接続（ハードワイヤード、無線、あるいはハードワイヤードまたは無線の組合せの何れか）上で送信または提供すると、コンピュータはその接続を正しくコンピュータ可読媒体として見なす。従って、任意の上記接続を正しくコンピュータ可読媒体と称する。上の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
【００１８】
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理装置に或る特定の機能または機能グループを実施させる命令およびデータを備える。本主題を構造的特徴および／または方法論的動作に固有の言葉で説明してあるが、添付請求項で定義した主題は必ずしも本明細書で説明する特定の特徴または動作に限定されないことは理解されるべきである。むしろ、本明細書で説明する特定の特徴および動作は、請求項を実現する形態の例として開示してある。
【００１９】
図２は、本発明の原理を使用可能な環境２００を示す。環境２００は１つまたは複数のサービスコンシューマコンピューティングシステム２１０と、１つまたは複数のサービスブローカコンピューティングシステム２２０とを含む。サービス２５１〜２５５は、三角形２５１、平行四辺形２５２、円２５３、台形２５４、または六角形２５５を含む様々な形状で表してある。夫々の形状タイプは異なる種類のサービスに対応することができる。例えば、ウェブサービスを台形２５４で示すことができる。同種のサービスの複数のインスタンスがある場合、別々のサービスのインスタンスに対し、例えば、２５３Ａ、２５３Ｂ、２５３Ｃ、等のように、上で示した適切な数字に文字を続けてラベル付けする。
【００２０】
サービスはコンピュータコードまたはソフトウェアアプリケーション、または幾つかの所望の機能に対するアクセスを提供する他の手段で可能である。例えば、プリンタは印刷サービスを提供することができる。ＶＰＮ（Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）サーバはＶＰＮサービスを提供することができる。ウェブサービスは一種のサービスであり、コンピューティングシステムが例えばＳＯＡＰ（Ｓｉｍｐｌｅ  Ｏｂｊｅｃｔ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ）メッセージを用いて相互通信することを可能とする。ウェブサービスは、さらに、ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）およびＷＳＤＬ（Ｗｅｂ  Ｓｅｒｖｉｃｅｓ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）記述の機能を与えることで、アプリケーションの統合を促進する。サービス２５１〜２５５のうち任意のものはウェブサービスまたは他種のサービスが可能である。
【００２１】
サービスコンシューマコンピューティングシステム２１０のうち任意のものは、サービスを使用するか、または使用サービスを探しているコンピューティングシステムが可能である。サービスブローカコンピューティングシステム２２０のうち任意のものは、サービスを直接提供するか、または別のサービスプロバイダ２３０へのリンクを提供するかの何れかであるコンピューティングシステムが可能である。コンピューティングシステム２１０および２２０はコンピューティングネットワーク２４０を介して相互通信することができる。コンピューティングネットワーク２４０は有線または無線ネットワークが可能である。
【００２２】
コンピューティング環境２００において、複数のサービスコンシューマコンピューティングシステム２１１〜２１４が存在することができる。例えば、図２では、サービスコンシューマコンピューティングシステム２１０を、３つのサービスコンシューマコンピューティングシステム２１１、２１２および２１３を含むとして示してある。しかしながら、縦方向の楕円２１４は、サービスコンシューマコンピューティングシステム２１０が図示した３つのサービスコンシューマコンピューティングシステムよりさらに多くのものを含みうることを表し、ここでは本発明の原理に影響を及ぼさずに、唯一または恐らく２つのサービスコンシューマコンピューティングシステムが存在しうることを表すためにも用いられる。
【００２３】
同様に、複数のサービスブローカコンピューティングシステム２２１〜２２４が環境２００内に存在することもできる。例えば、図２では、サービスブローカコンピューティングシステム２２０を、３つのサービスコンシューマコンピューティングシステム２２１、２２２および２２３を含むとして示してある。しかしながら、縦方向の楕円２２４は、サービスブローカコンピューティングシステム２１０が図示した３つのサービスブローカコンピューティングシステムよりさらに多くを含みうることを表し、ここでは本発明の原理に影響を及ぼさずに唯一または恐らく２つのサービスブローカコンピューティングシステムが存在しうることを表すためにも用いられる。
【００２４】
夫々のサービスコンシューマコンピューティングシステム２１１〜２１４は任意のサービスブローカコンピューティングシステム２２１〜２２４と通信することができ、次に、サービスブローカコンピューティングシステム２２１〜２２４のうち任意のものにより接続した任意のサービスプロバイダ２３０と通信することができる。コンピューティング環境２００では、サービスブローカコンピューティングシステム２２１はサービスを直接提供することはせず、３つのサービスプロバイダ２３１、２３２、および２３３に接続される。サービスプロバイダ２３１、２３２、および２３３は、夫々、サービス２５３Ｂ、２５２Ａ、ならびに２５３Ａおよび２５１Ｂを提供する。サービスブローカコンピューティングシステム２２２はサービス２５３Ｃおよび２５１Ａを直接提供するが、どのサービスプロバイダ２３０にも接続されない。サービスブローカコンピューティングシステム２２３は３つのサービス２５３Ｅ、２５５、および２５２Ｂを直接提供し、夫々サービス２５３Ｄおよび２５４を提供する他のサービスプロバイダ２３４および２３５に接続される。サービスブローカコンピューティングシステムは任意数のサービスまたはリンクをサービスプロバイダ２３０に直接提供することができる。
【００２５】
図３は、１つまたは複数のサービスブローカコンピューティングシステム２２０またはサービスプロバイダ２３０により提供されるサービスの発見をサービスコンシューマコンピューティングシステム２１０が支援する方法３００のフローチャートを示す。方法３００を図２の環境２００のコンテキストで実施できるので、図２を頻繁に参照して図３の方法３００を説明することとする。サービスコンシューマコンピューティングシステムにより実施されるかまたは実施できる動作を、図３の左の列で「サービスコンシューマコンビューティングシステム−２１０」の見出しの下に示す。サービスブローカコンピューティングシステムにより実施されるかまたは実施できる動作を、図３の右の列で「サービスブローカコンピューティングシステム（群）−２２０」の見出しの下に示す。
【００２６】
方法３００は、発見すべきサービスのスコープを表す問合せの生成動作（動作３１１）を含む。スコープは項目をコンテキストに応じて識別したものであり、例えば、サービスのロケーションの識別子である。例えば、ユーザがビルの４階にあるカラー印刷のようなサービスを要求する場合、スコープは要求したカラー印刷サービス、および要求したロケーション、即ち４階を含むであろう。この例を続けると、そのスコープ（カラー印刷サービス、４階）を表す問合せが生成されるであろう（動作３１１）。その間合せはスコープのテキスト表現を含むことができ、および／あるいはユーザが入力した検索基準または恐らく単純な通知メッセージを含むことができる。ユーザが入力した検索基準は、例えば、所望のサービスに関する一般情報を含むことができる。
【００２７】
例えば、ユーザが４階にある全てのスキャナまたはファクシミリ機を探したい場合、検索基準は４階にあるスキャナおよびファクシミリ機を含むであろう。検索基準を使用してスコープを生成することができる。幾つかの実施形態では、スコープはＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）である。スコープの生成方法に関わらず、スコープをマッチング規則でコンパイルして、コンパイルスコープを生成することができる（動作３３１）。動作３３１は、図４のデータ構造とフロー４００（以降、「データフロー４００」と称する）で示す複数のステップを含むことができる。
【００２８】
図４のデータフローは、動作３１１により特定したようにコンパイルスコープを生成する動作（図３を参照）を示す。スコープ４１０をマッチング規則４３０でコンパイル（動作４２０を参照）して結果のコンパイルスコープ情報４４０を生成することができる。この説明および請求項では、マッチング規則４３０を、環境２００内のサービスを分類および／または発見するためのメカニズムとして定義する。
【００２９】
一実施形態では、例えば、４階のカラープリンタに対するＬＤＡＰ（Ｌｉｇｈｔｗｅｉｇｈｔ  Ｄｉｒｅｃｔｏｒｙ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ）のスコープ（例えば、「ｌｄａｐ：／／／ｐｆ＝４ｔｈｆｌｏｏｒ，ｐｔ＝ｃｏｌｏｒ」）をＬＤＡＰ４３１のマッチング規則でコンパイルすることができる。その場合、「ｌｄａｐｍａｔｃｈ：：ｌｄａｐ：／／／ｐｆ＝４ｔｈｆｌｏｏｒ，ｐｔ＝ｃｏｌｏｒ」というコンパイルスコープ情報が生ずるであろう。ここで、「ｐｆ」は適切なＬＤＡＰスキーマ内で「プリンタ階」を意味すると知られており、「ｐｔ」は「プリンタタイプ」を意味するとして知られる。
【００３０】
図４を再度参照する。別のマッチング規則はＳＴＲＣＭＰ０（文字列比較）４３２のマッチング規則を含むことができ、この規則によりスコープを用いてテキスト文字列を生成する。例えば、４階にある同じカラープリンタのスコープ（例えば、「ｕｒｎ：４ｔｈｆｌｏｏｒ．ｐｒｉｎｔｅｒｓ．ｃｏｌｏｒｐｒｉｎｔｅｒｓ」は、文字列比較を用いてコンパイルすると「ｓｔｒｃｍｐ０ｍａｔｃｈ：：ｕｒｎ：４ｔｈｆｌｏｏｒ．ｐｒｉｎｔｅｒｓ．ｃｏｌｏｒｐｒｉｎｔｅｒｓ」となるであろう。
【００３１】
ＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）４３３のマッチング規則を使用することもできる。ＵＲＩマッチング規則はスコープをＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）のようなＵＲＩの形で定式化する。４階のカラープリンタの例に対する結果のコンパイルスコープ情報は、ＵＲＩ４３３のマッチング規則を用いてコンパイルすると、「ｒｆｃ２９３６ｍａｔｃｈ：：ｈｔｔｐ：／／ｗｗｗ．ｄｏｍａｉｎ．ｃｏｍ／４ｔｈｆｌｏｏｒ／ｐｒｉｎｔｅｒｓ／ｃｏｌｏｒ」のように表すことができる。
【００３２】
ＵＵＩＤ（Ｕｎｉｖｅｒｓａｌｌｙ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒ）４３４のマッチング規則を使用することもでき、その規則によりスコープは単純な一意な識別子として表される。例えば、４階のカラープリンタのスコープを単純に識別子「５００ｆ０４００−ｅ３１ａー１１ｄ４−ａ７１６−４５００１００２０３００」により表すことができる。ここで、識別子の一部をスコープの特定の態様に相互に関連付けることができる（またはできない）。コンパイルスコープを「ｕｕｉｄｍａｔｃｈ：：５００ｆ０４００−ｅ３１ａ―１１ｄ４−ａ７１６−４５００１００２０３００」のように表すことができる。
【００３３】
幾つかの実施形態では、スコープを、全てには満たない種類のマッチング規則および場合によっては（例えば、互換性のため）１種類のマッチング規則でコンパイルする。従って、スコープ４１０を１つまたは複数のマッチング規則４３０でコンパイル４２０することができ、および／または図４には示していない他のマッチング規則でコンパイルすることができる。例えば、ＬＤＡＰスコープをＵＵＩＤ規則ではなくＬＤＡＰ規則でコンパイルできる。さらに、他の実施形態では、コンパイルスコープ情報は、コンピューティングシステム環境２００内で利用可能な全てのサービスのコンパイルスコープを含むことができる（図２を参照）。
【００３４】
図３を参照する。サービスコンシューマコンピューティングシステム２１０はスコープを用いて問合せを生成する（動作３１１）。スコープを用いて問合せを生成すること（動作３１１）は、単純にスコープを含む問合せを生成することを含むことができ、その後、問合せをサービスブローカコンピューティングシステムに送信することができる。あるいは、サービスコンシューマコンピューティングシステム２１０はさらなるオプションステップを実施して、動作３３１および３３２を含む問合せを生成することができる。図３では、点線を用いてオプションステップを表してある。もしあれば、サービスコンシューマコンピューティングシステム２１０が実施する追加ステップに依存して、サービスブローカコンピューティングシステムは問合せおよびスコープを評価するときにオプションステップを完了することができる（動作３２１）。
【００３５】
一実施形態では、例えば、サービスコンシューマコンピューティングシステム２１０がスコープを用いて問合せを生成するとき（動作３１１）、サービスコンシューマコンピューティングシステム２１０はスコープを用いて問合せを生成する際に追加のステップを任意に実施することができる。サービスコンシューマコンピューティングシステム２１０は、コンパイルスコープを生成する追加のオプションステップ（動作３３１）またはスコープをコンパイルスコープ情報と比較する追加のオプションステップ（動作３３２）の両方を実施できるか、またはどちらも実施できないかの何れかである。
【００３６】
例えば、サービスコンシューマコンピューティングシステム２１０は、単純にスコープを含む問合せを生成することにより、スコープを用いた問合せを生成でき、その問合せを送信することができる（動作３１１）。あるいは、サービスコンシューマコンピューティングシステム２１０は、代わりにコンパイルスコープを生成し（動作３３１）、次いで問合せをコンパイルスコープとともに送信することができる。あるいは、サービスコンシューマコンピューティングシステムは、コンパイルスコープを生成するオプションステップ（動作３３１）とスコープをコンパイルスコープ情報と比較するオプションステップ（動作３３２）との両方を実施し、次いでその問合せを動作３３２の比較結果とともに送信するオプションステップを実施することができる。
【００３７】
図３を参照してこの例を続けると、サービスブローカコンピューティングシステム２２０は、問合せおよびスコープを評価する（動作３２１）際に、問合せで受信した情報に依存して以下のうち任意のものを実施することができる。即ち、１）問合せがスコープを含む場合、サービスブローカコンピューティングシステム２２０はコンパイルスコープを生成するオプションステップ（動作３３１）とスコープをコンパイルスコープ情報と比較するオプションステップ（動作３３２）とを実施することができる。２）問合せがコンパイルスコープを含む場合、サービスブローカコンピューティングシステム２２０は動作３３１（コンパイルスコープの生成）を省略して、スコープをコンパイルスコープ情報と比較するオプションステップを実施することができる。または３）スコープをコンパイルスコープ情報と比較した結果を問合せが含む場合、サービスブローカコンピューティングシステム２２０は単純に問合せとスコープを評価（動作３２１）することができ、オプションステップ３３１または３３２を実施しなくともよい。
【００３８】
サービスを特定する動作（動作３２２）は、スコープのコンパイルスコープ情報に対する比較に基づいてサービスを特定すること（動作３３２）を含むことができる。コンパイルスコープ情報４４０（図４を参照）は、１つまたは複数のマッチング規則４３０を用いてコンパイルした、１つまたは複数のコンパイルスコープの組合せで可能である。一実施形態では、コンパイルスコープ情報４４０を１つまたは複数のテキスト文字列として配置することができる。上記の実施形態では、サービスブローカコンピューティングシステム２２０は、単純にテキスト文字列をマッチすることで所望のサービスを特定することができる。これにより、サービスブローカコンピューティングシステムの処理能力２２０に対する潜在的な負荷を幾らか軽減させることができる。サービスブローカコンピューティングシステム２２０が複雑な処理（例えば、携帯電話、プリンタ、ファクシミリ機、等）の実施に不適当であることがよくある。テキスト文字列マッチが必要とする処理能力はマッチング規則によるスコープのコンパイルより大幅に少ないので、多数のサービスブローカコンピューティングシステム２２０は恩恵を受けるであろう。
【００３９】
問合せに応答する動作（動作３２３）は、１つあるいは複数のサービスおよび／またはサービスプロバイダ２３０のロケーションを送信することを含むことができる。問合せへの応答を受信した（動作３１２）後、サービスコンシューマコンピューティングシステム２１０は、次いでその応答からの識別情報にアクセスしてその情報を抽出することができる（動作３１３）。サービスコンシューマコンピューティングシステム２１０は、次いで、抽出した識別情報を用いてサービスを発見することができる（動作３１４）。識別情報には、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレス、ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｏｒｏｌ）アドレス、ＵＵＩＤ、ドメイン名、電話番号、シリアル番号、スコープ、コンパイルスコープ、あるいはサービスまたはサービスプロバイダを特定する任意の他の手段を含めることができるがこれらに限らない。何らかの理由でサービスブローカコンピューティングシステム２１０が所望のサービスを発見できなかった場合、所望のサービスが発見されなかったことを問合せへの応答で示すことができる。
【００４０】
図５は、本発明の原理を使用できる環境５００を示す。環境５００は１つまたは複数のサービスコンシューマコンピューティングシステム２１０、プロキシコンピューティングシステム５１０、および他のサービスプロバイダ２３０に接続できる１つまたは複数のサービスブローカコンピューティングシステム２２０を含む。環境５００は図２と十分に類似しているので、図２を頻繁に参照して図５の環境５００を説明することとする。
【００４１】
一実施形態では、環境５００は、サービスコンシューマコンピューティングシステム２１０とサービスブローカコンピューティングシステム２２０の間の中継として動作するプロキシコンピューティングシステムを使用する。プロキシコンピューティングシステム５１０は、問合せと、その問合せに含まれるプロセス情報とを受信し、問合せを送信するよう少なくとも構成されるコンピューティングシステムである。一実施形態では、サービスコンシューマコンピューティングシステム２１０は、問合せをプロキシコンピューティングシステム５１０に送信する。プロキシコンピューティングシステム５１０はその問合せ内の情報に従ってその問合せを処理し、別の問合せをサービスブローカコンピューティングシステム２２０に送信する。
【００４２】
図６は、サービスコンシューマコンピューティングシステム２１０およびプロキシコンピューティングシステム５１０が、１つまたは複数のサービスブローカコンピューティングシステム２２０またはサービスプロバイダ２３０により提供されるサービスの発見を支援する方法６００のフローチャートを示す。方法６００を図２の環境２００および図５の環境５００のコンテキストで実施できるので、図６の方法６００を図２および図５を頻繁に参照して説明することとする。サービスコンシューマコンピューティングシステムにより実施されるかまたは実施できる動作を、図６の左の列で「サービスコンシューマコンビューティングシステム（群）−２１０」の見出しの下に示す。プロキシコンピューティングシステムにより実施されるか、または実施できる動作を、図６の中央の列で「プロキシコンピューティングシステム−５１０」の見出しの下に示す。サービスブローカコンピューティングシステムにより実施されるかまたは実施できる動作を、図６の右の列で「サービスプロ−カコンピューティングシステム（群）−２２０」の見出しの下に示す。
【００４３】
一実施形態では、方法６００はサービスコンシューマコンピューティングシステム２１０、プロキシコンピューティングシステム５１０およびサービスブローカコンピューティングシステム２２０を使用して、所望のサービスを発見する。関与する方法およびステップは、図３の方法３００で概説したものと十分に類似している。方法３００でのように、オプションステップを点線で示してある。サービスコンシューマコンピューティングシステム２１０、プロキシコンピューティングシステム５１０、およびサービスブローカコンピューティングシステム２２０の各々は、両方のオプションステップを実施できるか、またはどちらのオプションステップも実施できないかの何れかである。同様に、方法３００の一実施形態でのように、オプションステップ（動作３３１および動作３３２）を問合せの受信前に実施した場合は、それらのオプションステップを省略してもよい。
【００４４】
例えば、サービスコンシューマコンピューティングシステム２１０がスコープで問合せを生成する場合、その問合せを送信する前に、サービスコンシューマコンピューティングシステム２１０は、追加のオプションステップ（動作３３１および動作３３２）の両方を実施できるか、またはどちらも実施できないかの何れかである。サービスコンシューマコンピューティングシステム２１０が動作３３１を実施する場合、サービスコンシューマコンピューティングシステムは、次いでその問合せをコンパイルスコープとともに送信することができる。あるいは、サービスコンシューマコンピューティングシステム２１０が両方のオプションステップを実施する場合、サービスコンシューマコンピューティングシステム２１０は動作３３２からの比較結果とともにその問合せを送信できる。あるいは、サービスコンシューマコンピューティングシステム２１０がどちらのオプションステップも実施しない場合、サービスコンシューマコンピューティングシステム２１０は、単純にその問合せをプロキシコンピューティングシステム５１０に送信することができる。
【００４５】
次に、プロキシコンピューティングシステム５１０は、両方の追加のオプションステップ（動作３３１および動作３３２）を任意に実施して、そのオプションステップの結果に基づいて問合せを送信することができる。あるいは、プロキシコンピューティングシステム５１０は、どの追加のステップが既に実施されたとその問合せが示すかに依存して、追加のオプションステップの何れかを実施できるか、またはそのどちらも実施することができない。プロキシコンピューティングシステム５１０は、次いで別の問合せをサービスブローカコンピューティングシステム２２０に送信することができる。
【００４６】
サービスブローカコンピューティングシステム２２０は次いでプロキシコンピューティングシステム５１０からの問合せを評価できる。プロキシコンピューティングシステム５１０からの問合せを評価する間に、サービスブローカコンピューティングシステム２２０は、プロキシコンピューティングシステム５１０からのどの問合せが既に実施されたと示されるかに依存して、追加のオプションステップ（動作３３１および動作３３２）の両方を実施できるか、またはそのどちらも実施できないかの何れかである。
【００４７】
方法３００でのように、スコープはプレコンパイルスコープが可能であり、この場合、プレコンパイルスコープは１つまたは複数の様々なマッチング規則で生成されたか、あるいは、スコープはユーザが入力した検索基準の可能性がある。問合せをサービスブローカコンピューティングシステム２２０の全てではなく、プロキシコンピューティングシステム５１０に送信することで、ネットワーク２４０上のトラフィックを大幅に削減することができる。
【００４８】
プロキシコンピューティングシステム５１０からの問合せを評価（動作３２１）した後、サービスブローカコンピューティングシステム２２０はサービスのロケーションを特定することができる（動作３２２）。サービスブローカコンピューティングシステム２２０は次いで問合せへの応答を送信することができ（動作３２３）、その応答はサービスコンシューマコンピューティングシステム２１０により受信され（動作３１２）、その後、サービスコンシューマコンピューティングシステム２１０はその応答から識別子を抽出し（動作３１３）、その識別子を使用してサービスを発見する（動作３１４）。
【００４９】
幾つかの実施形態では、スコープを検索基準にコンパイルして問合せに含めることができる。サービスブローカコンピューティングシステム２２０は、そのコンパイルスコープを使用して、それをサービスブローカコンピューティングシステム２２０のコンパイルスコープと比較して可能なマッチを特定することができる。サポートされない、または互換性のないコンパイルスコープは無視することができる。コンパイルスコープに対するスコープ情報を、様々な方法があれば多様に表現することができる。幾つかの実施形態では、コンパイルスコープに対するスコープ情報を、ＸＭＬスキーマに従って定義したＸＭＬ命令で表す。以下の命令は、コンパイルスコープに対するスコープ情報を表すために用いる、ＸＭＬスキーマで定義したデータフォーマットの例を表す。
【００５０】
【表１】
2009540462.tif 000003
【００５１】
【表２】
2009540462.tif 000004
【００５２】
次の命令は、ＸＭＬスキーマに従って定義したコンパイルスコープに対するスコープ情報を含む、ＳＯＡＰメッセージを表す。
【００５３】
【表３】
2009540462.tif 000005
【００５４】
【表４】
2009540462.tif 000006
【００５５】
これらの例で、
【００５６】
／ｓ：Ｅｎｖｅｌｏｐｅ／ｓ：Ｂｏｄｙ／ｄ：Ｐｒｏｂｅ／ｘ：ＣｏｍｐｉｌｅｄＳｃｏｐｅｓは、／ｓ：Ｅｎｖｅｌｏｐｅ／ｓ：Ｂｏｄｙ／ｄ：Ｐｒｏｂｅ／ｄ：Ｓｃｏｐｅｓ／＠ＭａｔｃｈＢｙにより指定したマッチングアルゴリズムに対する、／ｓ：Ｅｎｖｅｌｏｐｅ／ｓ：Ｂｏｄｙ／ｄ：Ｐｒｏｂｅ／ｄ：Ｓｃｏｐｅｓ／による要求内で指定したスコープの各々から成るコンパイルスコープのリストである。
【００５７】
コンパイルスコープのリストは、サービスのコンパイルスコープとマッチできる文字列のリストである。サービスは、Ｐｒｏｂｅ内のコンパイルスコープがサービスのコンパイルスコープとマッチするときに応答することができる。
【００５８】
／ｓ：Ｅｎｖｅｌｏｐｅ／ｓ：Ｂｏｄｙ／ｄ：Ｐｒｏｂｅ／ｘ：ＣｏｍｐｉｌｅｄＳｃｏｐｅｓ／＠ＳｔａｒｔｓＷｉｔｈＭａｔｃｈは、Ｐｒｏｂｅ内のコンパイルスコープをサービスのコンパイルスコープとどのようにマッチできるかを示す。偽であれば、Ｐｒｏｂｅ内のコンパイルスコープをコンパイルサービススコープの１つとマッチすることができる。真であれば、Ｐｒｏｂｅ内のコンパイルスコープを、サービススコープがそれで始まる場合でもマッチすることができる。
【００５９】
このように、上述した実施形態は、スコープ情報を用いて１つまたは複数のサービスブローカコンピューティングシステム上でサービスを発見するためのシステムおよび方法を示す。コンパイルスコープ情報を用いてサービスを発見するので、上記のシステムおよび方法は、ネットワークトラフィック量の削減と、サービスプロバイダの処理能力に対する負荷の減少とに潜在的に寄与することができる。
【００６０】
本発明を、その趣旨または本質的な特性から逸脱せずに、他の特定の形態で具現化することができる。説明した実施形態は、全ての点において例に過ぎないとして考えるべきであり、限定的ではないと考えるべきである。本発明の範囲は、従って、前述の説明によってではなく添付請求項によって示される。請求項の等価物の意味および範囲内にある全ての変更は、その範囲内に包含されるべきである。
【図面の簡単な説明】
【００６１】
【図１】本発明の原理の実施形態を動作させることが可能なコンピューティングシステムを示す図である。
【図２】本発明の実施形態を動作させることが可能な、サービスの発見に用いる問合せを生成する幾つかのサービスコンシューマコンピューティングシステムと、応答を問合せに与える幾つかのサービスブローカコンピューティングシステムとを含む実施形態を概略的に示す図である。
【図３】本発明の実施形態に従ってサービスを発見するための方法を示すフローチャートである。
【図４】本発明の実施形態に従う様々なマッチング規則に従ってコンパイルしたスコープの例を示すフロー図である。
【図５】本発明の実施形態を動作させることが可能な、サービスの発見に用いる問合せを生成する幾つかのサービスコンシューマコンピューティングシステムと、プロキシコンピューティングシステムと、応答を問合せに与える幾つかのサービスブローカコンピューティングシステムとを含む、実施形態の環境を概略的に示す図である。
【図６】本発明の実施形態に従ってサービスを発見するための方法を示すフローチャートである。
【図１】
2009540462.tif 000007
【図２】
2009540462.tif 000008
【図３】
2009540462.tif 000009
【図４】
2009540462.tif 000010
【図５】
2009540462.tif 000011
【図６】
2009540462.tif 000012
【国際調査報告】
2009540462.tif 000013
2009540462.tif 000014